# 服务器事件
# 接收回调消息
TIP
SDK 目前提供三种方法以方便你监听钉钉服务器的事件推送
你无需关心回调消息的加解密问题,直接使用如下实例即可
当然你可以多次调用 push
方法,实现多个消息处理器
# Closure 闭包
// 获取 server 实例
$server = $app->server;
$server->push(function ($payload) {
// 此处 $payload 为钉钉推送事件解密后的内容,为数组形式
/**
* 比如测试回调 URL 事件,$payload 内容为:
*
* $payload = [
* "EventType" => "check_url",
* ]
*/
$type = $payload['EventType'];
// ...
// 可根据内容处理你对应的业务逻辑
});
return $server->serve(); // 如 Laravel 框架中使用该语法
$server->serve()->send(); // ThinkPHP 等框架使用
# 自定义类
WARNING
自定义类中需要包含 __invoke
方法
DingTalkHandler.php
class DingTalkHandler
{
/**
* @param \EasyDingTalk\Application $app
*/
public function __construct($app)
{
// SDK 会注入当前 $app 实例到你自定义类的构造方法中,你可以根据业务情况使用
}
/**
* @param array $payload
*
* @return void
*/
public function __invoke($payload)
{
// 在此处处理你的业务逻辑
}
}
// 获取 server 实例
$server = $app->server;
$server->push(DingTalkHandler::class);
return $server->serve(); // 如 Laravel 框架中使用该语法
$server->serve()->send(); // ThinkPHP 等框架使用
# 传入已实例化对象
WARNING
自定义类中需要包含 __invoke
方法
DingTalkHandler.php
class DingTalkHandler
{
/**
* @param array $payload
*
* @return void
*/
public function __invoke($payload)
{
// 在此处处理你的业务逻辑
}
}
// 获取 server 实例
$server = $app->server;
$server->push(new DingTalkHandler('foo'));
return $server->serve(); // 如 Laravel 框架中使用该语法
$server->serve()->send(); // ThinkPHP 等框架使用
# 响应钉钉服务器
WARNING
当调用 $server->serve()
方法时(如上述示例)
SDK 会向钉钉服务器返回 success
的 JSON 数据,无需手动拼接返回数据 😃