Skip to content

监听微信事件

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(公众号 IDFromUserName 发送方帐号(一个 OpenIDCreateTime   消息创建时间 (整型)
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