Skip to content
thenbsp edited this page Sep 5, 2016 · 13 revisions

事件列表

微信中有很多种事件,比如收接文字事件,关注事件,扫码关注事件等,每一种事件都可以被监听,SDK 中默认包含以下 13 种事件(当然,也可以扩展自定义事件):

事件 类型 说明
Thenbsp\Wechat\Event\Event\Text 消息事件 文本消息事件
Thenbsp\Wechat\Event\Event\Image 消息事件 图片消息事件
Thenbsp\Wechat\Event\Event\Voice 消息事件 语音消息事件
Thenbsp\Wechat\Event\Event\ShortVideo 消息事件 小视频消息事件
Thenbsp\Wechat\Event\Event\Location 消息事件 地理位置消息事件
Thenbsp\Wechat\Event\Event\Link 消息事件 链接消息事件
Thenbsp\Wechat\Event\Event\Subscribe 事件推送 关注事件
Thenbsp\Wechat\Event\Event\Unsubscribe 事件推送 取消关注事件
Thenbsp\Wechat\Event\Event\ScanSubscribe 事件推送 扫描二维码关注事件
Thenbsp\Wechat\Event\Event\ScanSubscribed 事件推送 扫描二维码时已关注,直接进入会话事件
Thenbsp\Wechat\Event\Event\UserLocation 事件推送 上报地理位置事件
Thenbsp\Wechat\Event\Event\MenuClick 事件推送 自定义菜单点击拉取消息事件
Thenbsp\Wechat\Event\Event\MenuView 事件推送 自定义菜单跳转链接事件

事件监听

要监听一个事件,只需注册事件的命名空间至监听器即可,第二个参数接收一个 callableclosure 类型:

use Thenbsp\Wechat\Event\EventListener;

$listener = new EventListener();
$listener->addListener('Thenbsp\\Wechat\\Event\\Event\\Text', callable $callable);

或者使用短语法:

use Thenbsp\Wechat\Event\Event\Text;

$listener->addListener(Text::class, callable $callable);

也可以链式调用:

use Thenbsp\Wechat\Event\Event\Text;
use Thenbsp\Wechat\Event\Event\Image;
use Thenbsp\Wechat\Event\Event\Voice;

$listener
    ->addListener(Text::class, callable $callable)
    ->addListener(Image::class, callable $callable)
    ->addListener(Voice::class, callable $callable);

事件处理器

use Thenbsp\Wechat\Event\EventHandler;

$handler = new EventHandler();
$handler->handle($listener);

指定 Request 对象

use Symfony\Component\HttpFoundation\Request;
// 指定 Request 对象
$handler->setRequest(Request::createFromGlobals());

调试 Request

// 获取事件中的 Request 对象
$request = $handler->getRequest();
$content = $request->getContent();

// 将 Request 同容输出到日志
$logger->debug($content);
Clone this wiki locally