扣子智能体快速部署微信客服系统指南
摘要
通过部署云函数解密微信密文并转发给扣子智能体,完成密钥校验、消息格式转换与加密回
要让扣子智能体真正接管微信客服消息流,不是只在扣子后台配好对话逻辑就完事——必须打通企业微信或公众号的最新消息通道,把用户发来的每一条文本、事件、甚至图片,准确转给扣子处理,并把响应原样送回。这中间涉及密钥校验、加解密、会话上下文维持和消息格式转换四个不可跳过的环节。

先说几个核心判断:如果你只是想快速验证,直接用扣子官方的Webhook是走不通的——微信那边的消息是密文,扣子只认明文JSON。所以需要一手搭好中转层,把两边的协议和格式对齐。下面一步一步拆开讲。
确认接入渠道与权限准备
首先要搞清楚,你用的是企业微信客服,还是微信公众号客服?这俩的凭证和配置逻辑不太一样。企业微信需要开通「客户联系」和「接收消息」权限,拿到corp_id和secret;公众号则必须是已认证的服务号,在「功能设置→客服消息」中开启接口,获取appid和appsecret。这两套凭证后面都要填进云函数配置,填错任意一个字符都会导致签名验证失败,消息直接被微信服务器丢弃——别问怎么知道的,查日志查到你怀疑人生。
同时,在扣子平台创建智能体时,必须勾选「支持 Webhook 调用」并保存,否则无法对外暴露回调地址。这一步很基础,但不少人栽在这里。
部署云函数作为消息中转适配层
这一步不能跳过本地开发:微信消息加密后是AES密文,扣子只认明文JSON。你需要一个运行在腾讯云开发(CloudBase)上的Node.js函数来完成解密→转发→加密→回传全流程。
具体操作:进入腾讯云控制台 → 云开发 → 新建环境(推荐按量付费,省得月底账单吓人)→ 在「云函数」中新建函数,名称随便起,比如wechat-callback,运行时选 Node.js 18。
粘贴预置的适配代码(含微信加解密SDK和扣子Webhook调用逻辑),重点修改三处:token(公众号/企微后台填写的Token)、encoding_aes_key(后台生成的43位Base64密钥)、coze_webhook_url(扣子智能体详情页复制的Webhook地址)。这三处错一处,后面调试就得抓瞎。
部署前务必检查 package.json 中是否已声明 crypto 和 axios 依赖,缺失会导致函数启动失败,错误日志里只显示“require failed”而无具体模块名——那感觉就像车打不着火,却只告诉你“发动机有问题”。
配置微信侧消息服务器地址
方法一(企业微信):进入「管理后台→应用管理→自建应用→接收消息」,将云函数的HTTPS访问地址(形如 https://xxx.tcloudbase.com/wechat-callback)填入「URL」栏,Token 和 EncodingAESKey 必须与云函数代码中完全一致,点击「验证」按钮,系统会自动发起GET请求测试连通性。如果返回数据不对,微信端会直接报错,连日志都看不到——所以建议先在云函数里打桩输出请求参数,确认后再点击验证。
方法二(公众号):进入「公众号平台→设置与开发→公众号设置→功能设置→服务器配置」,同样填入云函数URL、Token 和 EncodingAESKey,启用「安全模式」并保存。此时微信会向你的云函数发送一次GET验证请求,只有返回正确echostr参数,才算通过。
注意:企业微信的「接收消息」开关默认关闭,公众号的「服务器配置」启用后旧接口立即失效,所有客服消息将不再推送给原人工客服系统。换句话说,这个开关一打开,原来的客服系统就下岗了——除非你提前做了衔接方案。
在扣子中设置会话状态与兜底策略
第一步:进入扣子智能体「设置→对话设置→会话状态」,启用「基于用户ID维护上下文」,并选择「用户ID字段映射为微信的FromUserName(公众号)或ExternalUserID(企微)」。这一步是为了让扣子知道同一个用户连续发的几条消息属于同一轮对话,而不是每次都是新客人。
第二步:在「技能→新增技能」中添加「转人工」节点,触发条件设为「当用户发送‘转人工’‘找客服’或情绪关键词(如‘投诉’‘生气’)时」,动作设为「调用Webhook」,目标URL填你自建的人工客服工单系统API或企业微信「客户联系」接口。别指望扣子能自动识别所有意图——那些语气差、带愤怒情绪的消息,最好直接扔给真人处理,不然容易把用户惹毛。
第三步:在「知识库→FAQ」中上传最新版客服SOP文档(Word/PDF),并手动标注3~5个高频问题的标准问法,比如「怎么修改绑定手机号」要同时录入「手机号绑错了」「换手机号」「重新绑定手机」三种表达——扣子靠这些示例泛化语义,不标够数量,意图识别率会断崖下跌。很多团队图省事直接上传文档,结果识别准确率不到30%,就是这个原因。
真实消息流压测与上线
压测是必须的,别跳过。建议按以下顺序逐个验证:
① 使用微信测试号向你的公众号/企微发送「你好」,观察云函数日志:若出现 decrypt success → forward to coze → encrypt and send back 三段日志,说明链路通了。如果只出现前两段,说明扣子那边没响应或者回调地址不对。
② 发送带特殊符号的消息(如「订单#A123-456??」),检查扣子返回是否保留标点——如果全部变成「订单A123456」,说明云函数解密后未做XML/JSON原始字段提取,而是错误地用了正则清洗。这个问题很隐蔽,但用户一旦发现标点丢失,就会觉得这客服不靠谱。
③ 模拟用户连续发3条消息(「查订单」「A123-456」「发货了吗」),确认扣子能识别这是同一会话的多轮追问,而不是三次独立提问。若第三条被当成新会话,检查Redis缓存是否启用,或云函数中用户ID提取逻辑是否写死为req.body.FromUserName而没兼容企微的req.body.Userid字段——这种坑,踩过一次就记住了。
④ 最后,在企业微信后台「客户联系→配置客户联系」中,将该应用分配给指定客服成员,并开启「自动回复」开关。此时真实用户消息就会进入扣子处理流程。如果前期压测没发现问题,这一步基本就稳了。
顺带提一句:上线后最好保留一周的日志监控,重点关注用户抱怨“答非所问”的反馈——那往往是FAQ标注不够或者会话状态丢失的信号。
来源:互联网
本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。