docs/src/6.x/work/server.md
企业微信服务端推送和公众号一样,请参考:公众号:服务端
企业微信数据推送的有以下事件:
change_contact
create_userupdate_userdelete_usercreate_partyupdate_partydelete_partyupdate_tagbatch_job_result$server->handleContactChanged(function($message, \Closure $next) {
// ...
return $next($message);
});
$server->handleBatchJobsFinished(function($message, \Closure $next) {
// ...
return $next($message);
});
// 新增成员
$server->handleUserCreated(function($message, \Closure $next) {
// ...
return $next($message);
});
// 更新成员
$server->handleUserUpdated(function($message, \Closure $next) {
// ...
return $next($message);
});
// 删除成员
$server->handleUserDeleted(function($message, \Closure $next) {
// ...
return $next($message);
});
// 新增部门
$server->handlePartyCreated(function($message, \Closure $next) {
// ...
return $next($message);
});
// 更新部门
$server->handlePartyUpdated(function($message, \Closure $next) {
// ...
return $next($message);
});
// 删除部门
$server->handlePartyDeleted(function($message, \Closure $next) {
// ...
return $next($message);
});
$server->handleUserTagUpdated(function($message, \Closure $next) {
// ...
return $next($message);
});
因智能机器人消息变更为JSON格式,需要在获取 server 对象时指定消息格式为json:
// 指定消息格式 JSON
$server = $app->getServer(messageType: 'json');
// 获取解密后的机器人消息
$message = $server->getDecryptedMessage();
// 回复消息
$server->with(function($message, \Closure $next) {
return [
'msgtype' => 'stream',
'stream' => [
'id' => 'id00001',
'finish' => true,
'content' => '信息已收到',
],
];
});
回复消息具体格式请参考官方文档:企业微信智能机器人文档
以上便捷方法都只处理了特定事件,其它状态,可以通过自定义事件处理中间件的形式处理:
$server->with(function($message, \Closure $next) {
// $message->event_type 事件类型
return $next($message);
});
你可以通过下面的方式获取来自微信服务器的推送消息:
$message = $server->getRequestMessage(); // 原始消息
你也可以获取解密后的消息 <version-tag>6.5.0+</version-tag>
$message = $server->getDecryptedMessage();
$message 为一个 EasyWeChat\Work\Message 实例。
你可以在处理完逻辑后自行创建一个响应,当然,在不同的框架里,响应写法也不一样,请自行实现。