为什么别人的园区已经做到 7×24 自动巡逻,你的安防还在靠人海战术?
2026/6/10 9:52:29
微信小程序智能客服接入实战:从零搭建高可用智能体系统
摘要:本文针对微信小程序接入智能客服系统的技术难点,提供一套完整的实战解决方案。通过对比主流智能体框架的优缺点,详细讲解基于云开发的接入流程,包含会话管理、意图识别和上下文保持等核心功能实现。读者将获得可直接复用的代码模板,并掌握处理高并发请求、敏感词过滤等生产环境关键问题的能力。
先吐槽一下传统方案:
一句话:没有“智能体”加持的小程序客服,就是 24h 的留言板,不是服务。
| 维度 | Dialogflow ES | 腾讯云 TI 平台 | 自建 NLP |
|---|---|---|---|
| 语言支持 | 中英日西等 20+ | 中英粤 | 任意,需自训 |
| 意图识别准确率 | 85-90%(通用) | 88-93%(电商场景预训练) | 看数据量 |
| 调用延迟 | 250-400 ms(北美节点) | 80-120 ms(广州/上海) | 50-100 ms(同机房) |
| 价格 | 0.002 美元/次,但走外网流量≈0.02 美元/次 | 0.006 元/次,内网免流 | 机器成本+算法工程师 |
| 小程序合规 | 需跨境,用户敏感数据出境 | 国内备案,合规 | 完全自控 |
| 开发效率 | 控制台拖拽即可 | 控制台+云函数模板 | 标注+训练+部署 |
结论:
下文以“腾讯云 TI 平台 + 云开发”为例,代码可直接复用。
chat-core:统一收口,做鉴权、敏感词、上下文、重试、降级。chat_session:存上下文、用户画像、兜底次数。// cloudfunctions/chat-core/index.ts import { cloud } from '@cloudbase/node-sdk' import { filterSensitive } from './middleware/sensitive' import { callTI } from './service/tiBot' import { SessionRepo } from './repo/session' const app = cloud.init({ env: cloud.SYMBOL_CURRENT_ENV }) const db = app.database() exports.main = async (event: IChatEvent, ctx: any) => { const { openid, msg } = event // 0. 敏感词过滤 if (filterSensitive(msg)) return { reply: '包含敏感内容,已屏蔽', code: 403 } // 1. 取会话(15 min 过期) const repo = new SessionRepo(db, openid) const session = await repo.get() // 2. 调 TI const tiRes = await callTI({ msg, session }) // 3. 更新上下文 session.turn += 1 session.lastContext = tiRes.context await repo.set(session, 900) // 15 min // 4. 组装回包 return { reply: tiRes.answer, sid: session.sid, turn: session.turn } }// pages/bot/bot.ts async sendMsg(text: string) { wx.showLoading({ title: '思考中...' }) try { const { result } = await wx.cloud.callFunction({ name: 'chat-core', data: { openid: this.data.openid, msg: text } }) this.setData({ msgList: [...this.data.msgList, { role: 'bot', text: result.reply }] }) } catch (e) { this.showErr('网络开小差,请重试') } finally { wx.hideLoading() } }// middleware/sensitive.ts const DFATree = buildDFA(['暴力', '退款', '政治']) // 业务词库 export function filterSensitive(text: string): boolean { let node = DFATree for (const ch of text) { node = node[ch] || node['*'] // 通配 if (node.end) return true } return false }openid+scene做 key,存chat_session集合。context(object)、turn(number)、expireAt(timestamp)。session.context给 TI,实现多轮槽位继承。tcb-admin-node实例放全局作用域,避免重复初始化。code=504自动重试一次,仍失败则推送“人工客服入口”卡片,实现柔性降级。agreeTime到user_profile表,防审核驳回。code=429,前端自动切换“留言模式”,把消息落库,后台客服稍后人工回复,保证不丢单。strict: true。{code, reply, sid, turn},前端无需多重判断。上线两周后,我们拿到 3.2 万轮真实对话,发现:
迭代方案:
整套方案从 0 到灰度上线,两人两周搞定,目前日活 1.2 w,平均响应 380 ms,人工客服量下降 68%。云开发按量计费,日均费用 4.3 元,比买一台 2C4G 的 ECS 还便宜。
如果你也在为小程序客服头疼,不妨直接 fork 代码模板,跑通第一个“Hello Bot”,再逐步把业务意图、兜底策略、数据闭环补齐。智能体这东西,先让它“能说话”,再让它“懂业务”,最后“会成长”,节奏对了,其实一点也不玄乎。祝各位少踩坑,早上线。