目录
当点击“保存”提交开发配置信息时,企业微信会发送一条验证消息到填写的URL,发送方法为GET。
智能机器人的接收消息服务器接收到验证请求后,需要作出正确的响应才能通过URL验证。
获取请求参数时需要做Urldecode处理,否则会验证不成功
假设接收消息地址设置为:https://api.3dept.com/,企业微信将向该地址发送如下验证请求:
请求方式:GET
请求地址:https://api.3dept.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323&echostr=ENCRYPT_STR
参数说明
| 参数 | 必须 | 说明 |
|---|---|---|
| msg_signature | 是 | 企业微信加密签名,msg_signature结合了开发者填写的token、请求中的timestamp、nonce参数、加密的消息体 |
| timestamp | 是 | 时间戳 |
| nonce | 是 | 随机数,两个小时内保证不重复 |
| echostr | 是 | 加密的字符串。需要解密得到消息内容明文,解密后有random、msg_len、msg三个字段,其中msg即为消息内容明文 |
智能机器人后台收到请求后,需要做如下操作:
以上2~3步骤可以直接使用验证URL函数一步到位。
之后接入验证生效,接收消息开启成功。
企业内部智能机器人场景中,ReceiveId为""
智能机器人的回调格式为json,参考接收数据格式说明。开发者可以直接使用企业微信为应用提供的加解密库(目前已有c++/python/php/java/c#等语言版本)解密encrypt字段,获取事件明文json报文。需要注意的是,加解密库要求传 receiveid 参数,企业自建智能机器人的使用场景里,receiveid直接传空字符串即可;。
加密数据格式 :
{
"encrypt": "msg_encrypt"
}
参数说明
| 参数 | 是否必填 | 说明 |
|---|---|---|
| encrypt | 是 | 消息结构体加密后的字符串 |
开发者解密数据得到用户消息内容后,可以选择直接回复空包,也可以在响应本次请求的时候直接回复消息。回复的消息需要先按明文协议构造json数据包,然后对明文消息进行加密,然后填充到下述协议中的encrypt字段中,之后再回复最终的密文json数据包。加密过程参见“明文msg的加密过程”。
加密数据格式:
{
"encrypt": "msg_encrypt",
"msgsignature": "msg_signaturet",
"timestamp": 1641002400,
"nonce": "nonce"
}
参数说明:
| 参数 | 是否必须 | 说明 |
|---|---|---|
| encrypt | 是 | 加密后的消息内容 |
| msgsignature | 是 | 消息签名 |
| timestamp | 是 | 时间戳,要求为秒级别的 |
| nonce | 是 | 随机数,需要用回调url中的nonce |
