16 接收消息与回复
安正超 edited this page 2016-07-06 10:15:58 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

消息的监听再简单不过了,你不需要像其它 SDK 一样麻烦,这将会是前所未有的简单,你可以选择监听所有类型或者指定某种类型,以及作出相应的响应,比如回复一条应答消息。

在本 SDK 中,服务端的操作,例如:服务器认证,监听事件,接收用户消息等所有微信向我们自有服务器发起请求的,都交由 Overtrue\Wechat\Server 来处理。

获取服务端实例

<?php
use Overtrue\Wechat\Server;

$appId          = 'wx3cf0f39xxxxxxxxx';
$token          = 'hellotest'; 
$encodingAESKey = 'EJThPazwzO4k1cyXJnwQtL60zBdhWvFaHb4emv0dLVN'; // 可选

// $encodingAESKey 可以为空
$server = new Server($appId, $token, $encodingAESKey); 

接收消息

语法:

$server->on('message', callable $callback); // 全部类型
// or
$server->on('message', string $messageType, callable $callback); // 只监听指定类型

参数说明:

  • $messageType string, 指定要处理的消息类型eximage
  • $callback callable, 回调函数closure 匿名函数,或者一切可调用的方法或者函数

$callback 接收一个参数:$message 为用户发送的消息对象,你可以访问请求消息的所有属性,比如:$message->FromUserName 得到发送消息的人的 openid$message->MsgType 获取消息的类型如 text 或者 image 等,更多请参考:请求消息的属性

example:

<?php

use Overtrue\Wechat\Server;
use Overtrue\Wechat\Message;


$appId          = 'wx3cf0f39xxxxxxxxxx';
$secret         = 'f1c242f4f28f735d4687abb469072a29';
$token          = 'hellotest';
$encodingAESKey = 'EJThPazwzO4k1cyXJnwQtL60zBdhWvFaHb4emv0dLVN';

$server = new Server($appId, $token, $encodingAESKey);

// 监听所有类型
$server->on('message', function($message) {
    // 获取用户openId: $openId = $message->FromUserName;
    return Message::make('text')->content('您好!');
});

// 监听指定类型
$server->on('message', 'image', function($message) {
    return Message::make('text')->content('我们已经收到您发送的图片!');
});

$result = $server->serve();

echo $result;

关于更多消息内容请参考:消息的使用