企业微信智能机器人对接指南
概述
本模块实现了企业微信智能机器人(AI Bot)的消息回调处理。注意:智能机器人与普通企业微信应用机器人的协议完全不同。架构设计
核心组件
WeChatRobotEndpoint- 处理企业微信回调的 REST 接口RobotChatService- 统一的机器人聊天服务(支持 App 和 Workflow)WeChatCpChannelConfig- 渠道配置(token, encodingAesKey)
回调地址格式
apiKey 是在 LangChat 平台创建的 API 密钥,用于关联具体的 App 或 Workflow。
智能机器人 vs 普通应用机器人
| 特性 | 普通应用机器人 | 智能机器人 (AI Bot) |
|---|---|---|
| 请求格式 | 加密 XML | 加密 JSON |
| 解密后格式 | XML | JSON(嵌套结构) |
| 响应消息类型 | text | stream |
| 响应格式 | 加密 XML | 加密 JSON |
消息处理流程
1. 接收请求
智能机器人发送的请求体为 JSON 格式:2. 解密消息
使用WxCpCryptUtil.decrypt() 解密后得到:
- 用户ID 在
from.userid(嵌套结构) - 消息内容在
text.content(嵌套结构) - 需要移除
@机器人名前缀
3. 构建响应
智能机器人只能使用stream 类型回复用户消息:
4. 加密响应(关键)
响应必须加密并签名,格式如下:踩坑记录
1. SDK 返回 XML 而非纯 Base64
WxCpCryptUtil.encrypt() 返回完整 XML:
<Encrypt> 标签的内容。
2. 消息类型限制
text类型:仅支持”进入会话”欢迎语场景stream类型:支持回复用户消息(必须使用此类型)
3. 签名算法
必须使用微信 SDK 提供的SHA1.gen() 方法,确保排序和拼接逻辑一致。
4. Nonce 来源
响应中的nonce 必须使用回调 URL 参数中的 nonce,不能自己生成。
配置说明
在 LangChat 管理后台创建 API 密钥时,选择”企业微信”渠道,配置以下信息:| 配置项 | 说明 | 获取位置 |
|---|---|---|
| token | 消息校验Token | 智能机器人配置 → 回调配置 |
| encodingAesKey | 消息加密密钥 | 智能机器人配置 → 回调配置 |

