💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 服务器事件 [TOC] ## 接收回调消息 ::: tip SDK 目前提供三种方法以方便你监听钉钉服务器的事件推送 你无需关心回调消息的加解密问题,直接使用如下实例即可 当然你可以多次调用 `push` 方法,实现多个消息处理器 ::: ### Closure 闭包 ```php {4-16} // 获取 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 ```php {11-19} class DingTalkHandler { /** * @param \EasyDingTalk\Application $app */ public function __construct($app) { // SDK 会注入当前 $app 实例到你自定义类的构造方法中,你可以根据业务情况使用 } /** * @param array $payload * * @return void */ public function __invoke($payload) { // 在此处处理你的业务逻辑 } } ``` ```php {4} // 获取 server 实例 $server = $app->server; $server->push(DingTalkHandler::class); return $server->serve(); // 如 Laravel 框架中使用该语法 $server->serve()->send(); // ThinkPHP 等框架使用 ``` ### 传入已实例化对象 ::: warning 自定义类中需要包含 `__invoke` 方法 ::: > DingTalkHandler.php ```php {3-11} class DingTalkHandler { /** * @param array $payload * * @return void */ public function __invoke($payload) { // 在此处处理你的业务逻辑 } } ``` ```php {4} // 获取 server 实例 $server = $app->server; $server->push(new DingTalkHandler('foo')); return $server->serve(); // 如 Laravel 框架中使用该语法 $server->serve()->send(); // ThinkPHP 等框架使用 ``` ## 响应钉钉服务器 ::: warning 当调用 `$server->serve()` 方法时(如上述示例) SDK 会向钉钉服务器返回 `success` 的 JSON 数据,无需手动拼接返回数据 :) :::