企业微信二次开发:如何实现群聊消息监听与指定内容触发
发布时间:2026/10/11 21:52:17 锦皓数字建站

运维群里喊系统挂了值班同学半小时没看见客户群里客户问怎么退款群里没人应。把指定群的指定内容监听起来命中就触发动作——告警转发值班、常见问题自动应答——群消息才不至于淹没在刷屏里。群聊监听比单聊多几个坑机器人自己的消息、按群配置路由、同关键词刷屏防抖。这篇把这几个坑和触发链路讲清。我们用的是Eyun 平台开放的企微 API统一 POSTJSON请求头带Authorization: Bearer eyk_xxxx响应封套{code, data, detail, message, time}code 为 0 成功。监听入口群消息和单聊消息怎么分消息都从 Webhook 回调进来回调头X-Eyun-Event标 message。区分群聊还是单聊看消息体字段群消息带 roomId群 ID单聊带 userId。回调处理入口先按这个分叉app.route(/wx-api/webhook/, methods[POST]) def webhook(): data request.json[data] if data.get(roomId): return group_handler(data) return dm_handler(data)群消息体的 fromUin 是发言人的 uinroomId 是哪个群。这两个字段组合起来才能回答谁在哪个群里说了什么——监听配置的粒度就是按这个设计的按群配置规则按发言人过滤角色。第一道防线过滤机器人自己的消息群聊监听最大的坑是死循环。机器人回复触发动作动作又产生群消息群消息又被自己监听到再触发动作——当年一个告警群机器人一晚上发了四千条消息起因就是它监听的关键词包含在自己回复的文案里。过滤很简单回调里机器人自己发的消息带机器人身份标识直接跳过def group_handler(data): if data.get(fromUin) BOT_UIN: return ok # 自己的消息绝不处理 if not group_config.enabled(data[roomId]): return ok # 未配置监听的群直接跳过 match_rules(data[roomId], data[fromUin], data[content]) return ok双保险身份过滤加内容过滤——回复文案里避开自己监听的关键词。两道防线都上死循环才真正绝迹。按群配置不是所有群都监听全量监听既浪费又容易误触发。监听按群粒度配置一张配置表roomId、监听关键词、触发动作、生效开关。运维群配系统挂了P0触发告警转发客户群配退款发票触发应答闲聊群干脆不监听。配置表的好处是运营可自助——新加一个群、改一个关键词改表就行不碰代码。match_rules 按群加载配置逐条匹配def match_rules(room_id, from_uin, content): for rule in group_config.rules(room_id): if rule[keyword] in content: debounced_trigger(rule, room_id, from_uin, content) break # 命中第一条即止防多重触发命中即止很关键。一条消息同时含退款和发票两个关键词两个动作都触发客户收到两张卡片体验混乱。按规则优先级命中第一条就停。防抖同关键词刷屏别连环触发群里出事时往往一群人刷同一个词——挂了连刷二十条告警转发触发二十次值班群被二次刷屏。触发要防抖同一群同一规则5 分钟冷却期内只触发一次冷却期内的重复命中记数但不执行冷却结束把计数摘要发一次。实现按roomId rule_id做冷却键缓存命中时间戳。防抖粒度到规则级不是群级——同一条消息可能命中不同规则各防各的。触发动作转发和应答两类指定内容触发后的动作就两大类。告警转发类命中运维关键词调 message/sendText 把消息原文、发言人、群名转发到值班群值班人。自动应答类命中客户群常见问题调 message/sendRichText 发应答卡片卡片带问题对应的说明链接。应答类动作要克制。客户群里机器人逢词必答会刷屏惹人烦加两个约束同一客户同一问题 10 分钟内只答一次命中时先看群里最近 5 条消息调 message/getHistoryMessageList已有人工回复过就不再插话。这两个约束加上后客户群里机器人的存在感从话痨降到该出现时才出现。监听运行时看什么数据三个指标判断监听系统健不健康触发量按群按规则分布哪条规则触发最多、冷却拦截量防抖拦了多少重复触发、误触发数人工标记的误报。误触发多的规则要么关键词太宽——挂了会匹配别挂了——要么该挪到要求 机器人 的精确匹配。规则是养出来的每周看一次数据调一轮监听才越用越准。监听系统的三条命门群聊监听做稳就靠三条过滤自己的消息防死循环、按群配置控制监听范围、防抖防止刷屏连锁。条条都是事故换来的经验——四千条告警消息那晚之后这三条写进了团队的开发守则新功能上线前逐条过一遍。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。