-
Notifications
You must be signed in to change notification settings - Fork 22
监听微信事件
Stoneworld edited this page Mar 7, 2016
·
1 revision
所有的事件都可以很方便的监听与处理,与监听消息一样,同样支持监听全部类型或者指定类型。
在本 SDK 中,服务端的操作,例如:服务器认证,监听事件,接收用户消息等所有微信向我们自有服务器发起请求的,都交由 Stoneworld\Wechat\Server 来处理。
<?php
use Stoneworld\Wechat\Server;
$options = array(
'token'=>'stoneworld1992', //填写应用接口的Token
'encodingaeskey'=>'o1wze3492xoUVIc9ccTLJczO3BQ5pLfiHcKwtDEdqM9',//填写加密用的EncodingAESKey
'appid'=>'wx8ac123b21f53d7a7', //填写高级调用功能的appid
'appsecret'=>'4ZDHIETJ6e0oENlEkRhYwzWPTrkLdXedKcPcRjCkgQkuHtQTJ12ZhWHESowrJqS9', //填写高级调用功能的密钥
'agentid'=>'5', //应用的id
);
$server = new Server($options);
<?php
$server->on('event', callable $callback);
// or
$server->on('event', string $eventType, callable $callback);
- $eventType string, 指定要处理的消息类型,ex:image
- $callback callable, 回调函数,Closure 匿名函数,或者一切可调用的方法或者函数
$callback 接收一个参数 $event , $event 包含以下基本属性:
ToUserName 接收者 ID(公众号 ID)
FromUserName 发送方帐号(一个 OpenID)
CreateTime 消息创建时间 (整型)
MsgType event
Event 事件类型,ex: subscribe
EventKey 事件 Key 值,与自定义菜单接口中 Key 值对应
AgentID 应用ID
完整举例:
<?php
use Stoneworld\Wechat\Server;
use Stoneworld\Wechat\Message;
$options = array(
'token'=>'stoneworld1992', //填写应用接口的Token
'encodingaeskey'=>'o1wze3492xoUVIc9ccTLJczO3BQ5pLfiHcKwtDEdqM9',//填写加密用的EncodingAESKey
'appid'=>'wx8ac123b21f53d7a7', //填写高级调用功能的appid
'appsecret'=>'4ZDHIETJ6e0oENlEkRhYwzWPTrkLdXedKcPcRjCkgQkuHtQTJ12ZhWHESowrJqS9', //填写高级调用功能的密钥
'agentid'=>'5', //应用的id
);
$server = new Server($options);
// 监听所有事件
$server->on('event', function($event) {
error_log('收到取消关注事件,取消关注者openid: ' . $event['FromUserName']);
});
// 只监听指定类型事件
$server->on('event', 'subscribe', function($event) {
error_log('收到关注事件,关注者openid: ' . $event['FromUserName']);
return Message::make('text')->content('感谢您关注');
});
$res = $server->serve();
echo $res; // or return $res; 在某些框架中需要返回字符串
关于事件类型请参考微信官方文档:http://qydev.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E4%BA%8B%E4%BB%B6