扣子智能体需通过解析消息元数据自动识别微信公众号、企业微信单聊/群聊、微信群聊四类场景并分流响应:第一步启用原始消息体解析;第二步用条件分支或正则匹配platform、is_group、chatid等字段精准判别;第三步按场景动态加载对应人设与知识库;第四步通过调试面板和OpenClaw验证响应隔离性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要让同一个扣子智能体在微信公众号私信、企业微信单聊、企微群聊、微信群聊四种场景下自动识别当前会话类型并切换响应策略,不能靠人工判断——必须让Bot自己读取消息元数据、解析上下文标识符、按平台规则分流处理,否则同一句话在群聊里发公告、在私聊里做客服,就会全乱套。
第一步:确认各平台消息结构差异
微信公众号消息带MsgType=“text”且无FromUserName字段;企业微信单聊含msgtype=text与to_user_id;企微群聊多出chatid和group_name;微信群聊则通过OpenClaw插件转发时携带is_group=true标识。这四类字段组合是后续分流的唯一依据,漏判任一字段将导致场景误识别。
进入扣子「工作流」→新建空白工作流→在第一个节点点击「+ 添加节点」→选择「接收消息」→展开「高级设置」→勾选「启用原始消息体解析」。这一步不开启,后续所有字段都拿不到。
第二步:用条件分支精准识别会话类型
方法一:基于消息来源字段硬匹配
拖入「条件分支」节点→点击「添加条件」→字段选platform→运算符选「等于」→值填wechat_mp(公众号);再加一条条件→字段选is_group→运算符选「等于」→值填true→分支命名为「微信群聊」;第三条条件→字段选chatid→运算符选「存在」→分支命名为「企微群聊」;最后默认分支为「企微单聊」。注意:【企微单聊必须放在默认分支,不能单独设条件】,因为chatid为空且is_group为false时才属于单聊,显式判断反而会漏掉部分旧版接口消息。
方法二:用正则提取上下文特征
在「条件分支」前插入「文本处理」节点→输入变量选raw_message→勾选「启用正则提取」→填写表达式(?i)@(.+?)\s+?→输出变量名设为at_target;再接「条件分支」→字段选at_target→运算符选「非空」→该分支即为群聊响应逻辑。这比依赖平台字段更鲁棒,尤其适配未更新的OpenClaw插件版本。
第三步:按场景动态加载不同人设与知识库
① 在「公众号」分支后接「设置变量」节点→将persona设为mp_customer_service→将knowledge_base_id设为kb_mp_faq;
② 在「微信群聊」分支后接同样节点→persona设为group_announcer→knowledge_base_id设为kb_group_rules;
③ 在「企微群聊」分支后,额外插入「数据库查询」节点→查表wxwork_chat_config→用chatid匹配获取该群预设的SOP阶段→结果写入sop_phase变量;
④ 所有分支最终汇聚到「调用Bot」节点→在「高级参数」中勾选「启用动态人设」→变量名填persona→知识库ID变量名填knowledge_base_id。这一步漏掉勾选,Bot将始终使用初始人设,无法实现场景切换。
进入Bot编辑页→左侧点「人设与回复逻辑」→确认已创建名为mp_customer_service、group_announcer的独立人设模板;每个模板开头必须包含明确指令,例如你正在服务微信公众号用户,禁止主动提及群功能。没有这条约束,Bot在私聊里可能突然推荐群聊入口。
第四步:验证不同场景下的响应隔离性
打开扣子调试面板→点击「模拟消息」→平台选「wechat_mp」→粘贴一段纯文本→发送→确认返回内容含服务话术且无群功能提示;
再切平台为「wxwork_group」→填入含chatid和group_name的JSON→发送→确认返回内容带群公告格式(如【XX群通知】前缀)且不出现私聊专属按钮;
最后用OpenClaw测试号发一条@bot hello→检查日志中is_group是否被正确识别为true→响应是否触发群聊分支。任意一环失败,需回溯第二步的条件配置。


















