你们用easywechat开发企业微信的客服功能时,cursor和external_userid是怎样获取的呢?
我用的环境
- PHP 版本: “php”: “^7.3|^8.0”,
- overtrue/wechat 版本: “w7corp/easywechat”: “^5.30”
- 是否使用了框架?框架名称:”laravel/framework”: “^8.75”,
问题及现象
public function serve()
{
$config = config('wechat.work');
$app = Factory::work($config);
$app->server->push(function($message){
Log::warning($message);
});
$response = $app->server->serve();
return $response;
}
执行后写入日志有这些内容
[2022-11-14 09:22:44] local.WARNING: array (
'ToUserName' => '3771108b0',
'CreateTime' => '1668417764',
'MsgType' => 'event',
'Event' => 'kf_msg_or_event',
'Token' => 'ENC8SgHsWogZdFDom1StKe3iYBc8Sf3M7uLtgcmCJhjMjD',
)
我想调用这里的接口把,拿到客户发的文字内容进行一些关键字回复,比如,回复微信,我就把个人微信号推送过去。做一些定制化的操作。
其中有一个externalUserId 参数,我没有找到在哪里获取呢?
微信的官方文档上这里和上面得到的$message是一致的。
<xml>
<ToUserName><![CDATA[78910]]></ToUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[kf_msg_or_event]]></Event>
<Token><![CDATA[ENCApHxnGDNAVNY4AaSJKj4Tb5mwsEMzxhFmHVGcra996NR]]></Token>
</xml>
在微信官方文档中的读取消息接口有这样的说明。
但这个cursor参数又在哪获取呢?
在这里看到有这个externalUserId但就需要上一步的cusor。
{
"errcode": 0,
"errmsg": "ok",
"next_cursor": "4gw7MepFLfgF2VC5npN",
"has_more": 1,
"msg_list": [
{
"msgid": "from_msgid_4622416642169452483",
"open_kfid": "FhToWMFea0xAFfd3Q",
"external_userid": "wmAJ2GCAAAme1XQRC-NI-q0_ZM9ukoAw",
"send_time": 1615478585,
"origin": 3,
"servicer_userid": "Zhangsan",
"msgtype": "MSG_TYPE"
}
]
}
cursor 就是你上一次请求返回的 next_cursor,其实和我们平时对接的分页、偏移量一样的。
external_userid 有获取条件和入口场景,忘记需要不需要在后台绑定什么了,你直接在企业微信文档里面看接口介绍,很详细的,看完整个页面,有很多注意事项