企业微信二次开发:精准实现关键词自动回复

文档里的设置回调接口只登记一个 URL:之后该 Token 下设备收到的消息,会 POST 到这个地址。关键词自动回复不是回调接口的参数,是你在自己的服务里:先收下事件,再决定是否调用 /msg/sendText。

回调接口形态:

  • 方法:/client/setCallback

  • callbackUrl:公网可访问地址

  • authType:文档示例为 Authorization

  • authSecret:你自己定的密钥

配成功后没有「关键词」字段可填。规则表在你这边。

复制代码
{
  "method": "/client/setCallback",
  "params": {
    "callbackUrl": "https://你的域名/wecom/webhook",
    "authType": "Authorization",
    "authSecret": "自行保管的密钥"
  }
}

(正文里这是请求体示例,不是对外推广链接。)

功能怎么接在回调后面

  1. 平台 POST 事件到 callbackUrl

  2. 校验 authSecret,读出 guid、群 ID、发送人、文本

  3. 3 秒内返回 HTTP 200,事件写入队列;超时按丢弃

  4. Worker 用关键词表匹配

  5. 命中则用事件里的同一个 guid,toId 用群 roomId,调 /msg/sendText

    {
    "method": "/msg/sendText",
    "params": {
    "guid": "回调里的设备ID",
    "toId": "回调里的群roomId",
    "content": "发「报价」获取价目,发「工单」加单号查询进度。",
    "isNoNeedRead": true
    }
    }

事件里的 cmd、msgType、群 ID 字段名以回调结构说明为准,不要按猜测解析。接口自己发出去的消息不会再进回调,所以关键词匹配的是客户或手机端人工发的内容,不是机器人刚回的那句。

关键词表怎么设计才不像误触发

先做精确词或前缀,例如:报价、工单、发票、人工。不要一上来上正则扫整句。

同一条事件只回一条。优先级写死:人工 > 工单 > 报价。匹配不到就沉默,不要每条群聊都回「未识别」。

去重键用回调里的消息唯一标识;没有该字段时用 guid + 群ID + 发送人 + 时间戳 + 正文哈希。同一 JSON 被 POST 三次,群里只许出现一次回复。

多设备共用一个回调 URL 时,禁止写死某个 guid。谁收到的事件,谁负责回。同一群进了两个托管号,会有两路事件,必须用「该群主责 guid」过滤,否则客户会看到两个头像同时答。

回调侧必须遵守的约束

  • URL 要公网可达;本机 localhost 配不上

  • 先读完 Body 再 200,再入队,避免框架先结束请求导致 Body 丢失

  • 鉴权失败打日志;不要在回调线程里查库、调模型、调发送

  • 配置后会有一条校验请求,用来确认地址活着,不要把它当群消息去做关键词回复

登录不在线、areaCode 和省份不一致,是设备问题,关键词表再完整也发不出去。回复失败按发送接口的 code、isSendSuccess 记日志,不要在回调里重试发送。

上线时怎么验

配好回调后,在测试外部群分别发 报价、随便聊聊、连续三条 报价。预期:第一类有一条固定回复,第二类无回复,第三类三条事件对应三次业务回复且没有因重试变成六次。把校验用的那次 POST 从关键词逻辑里排除。改主责 guid 后再测,确认回消息的是新设备而不是旧号。

这个功能停在「指定词 → 指定句」。意图识别、知识库、转人工工单都是 Worker 里后续分支,不是 /client/setCallback 的参数扩展。

相关推荐
loulanyue_1 小时前
从个人提效到团队可验证交付:中宏保险AI Coding流水线重塑与Qoder实战——读中宏保险AI架构总监王志宇2026云栖专场演讲
人工智能·架构
Erishen3 小时前
Lume C11编译器内部架构:从树形解释器到双LLVM后端的设计之旅
架构·开源·编译器
沪上企服通3 小时前
历史账套科目重映射与规则版本重算:旧账梳理的“口径复位”工程
笔记·架构
亥时无人机管理系统4 小时前
无人机管理系统源码 | 私有化部署平台 航线规划飞行审批实时监控功能介绍
架构·私有化部署·无人机·低空经济·无人机巡检·无人机管理系统·一网统飞
这个DBA有点耶5 小时前
时序数据库InfluxDB高基数问题深度拆解:内存索引膨胀机制与OOM完整链路
数据库·架构·dba
木子n16 小时前
软件架构设计实战-架构15.ISO 26262 架构设计要求:安全机制在架构里的落点
架构·autosar·功能安全·iso 26262
这个DBA有点耶7 小时前
为什么UPDATE比SELECT危险得多?锁范围等于扫描行数
数据库·架构·代码规范
我不是阵雨8 小时前
分布式事务难题与实战解法全解析
分布式·微服务·架构
尤水就下8 小时前
🔥预热:在线文档的 block 架构是如何实现的(未完待续...)
前端·javascript·架构
Dawson Zhu8 小时前
《Agentic Design Patterns》第 13 章导读:人机协同(Human-in-the-Loop)
人工智能·语言模型·架构·aigc·agi