资讯详情

个人微信机器人二次开发教程:教你用 API 接口搭建 24 小时自动客服

📅 2026/10/24 4:08:19 | 华诺云谱 👁 阅读
个人微信机器人二次开发教程:教你用 API 接口搭建 24 小时自动客服
24 小时自动客服的核心不是能自动回消息是对话有头有尾——用户半夜来咨询机器人要能引导他说清需求、给答案、确认解决没有解决不了挂起到早上转人工。这篇讲客服机器人的对话状态机设计。一、为什么需要状态机客服对话不是一问一答简单问答机器人是来一条回一条用户换个说法就断了。真实客服对话有流程开场→确认意图→解答→追问是否解决→结束或转人工。状态机把对话抽象成有限个状态和状态间的跳转条件机器人知道现在聊到哪一步了不会用户说再问一下就蒙掉。二、五个状态的设计welcome——新会话开场发欢迎语加功能引导回复数字选服务。collect——收集意图用户描述问题机器人提取关键词归类。answer——按归类给答案命中知识库直接回没命中进模型生成。confirm——问解决了吗用户说解决了进 done没解决转 collect 再来一轮或进 pending。pending——挂起等人工记录完整上下文上班后客服接手。三、会话超时半夜的会话早上怎么收用户聊到一半睡着了会话不能一直挂着。超时策略30 分钟无消息发一条还在吗60 分钟无消息自动关闭会话并记录。关闭的会话用户再发消息时重新开但带上之前的上下文摘要不用从头再聊。超时检测用定时任务扫会话表找出最后活跃时间超阈值的会话执行对应动作。四、转人工交接要有上下文pending 状态的会话转给人工时不能只说有个人找你。交接包要包含用户基本信息wxid、昵称、来源、对话摘要意图、已给的答案、卡在哪、原始聊天记录链接。人工接手后机器人的状态机暂停人工发完处理结果再关闭。客服状态机对照状态进入条件核心动作下一状态welcome新会话欢迎语引导collectcollect用户描述意图归类answeranswer已归类知识库/模型回答confirmconfirm已回答确认是否解决done/collect/pendingpending未解决挂起交接包人工关闭状态机实现import time class SupportBot: TIMEOUT_REMIND 1800 # 30分钟提醒 TIMEOUT_CLOSE 3600 # 60分钟关闭 def __init__(self, api, kb, model, store): self.api, self.kb, self.model, self.store api, kb, model, store def on_message(self, event): sess self.store.get_session(event[from]) if not sess: sess self.store.new_session(event[from], statewelcome) handler getattr(self, fst_{sess[state]}) sess handler(sess, event) sess[last_active] time.time() self.store.save_session(sess) def st_welcome(self, sess, event): self.reply(sess, 你好回复数字1 查订单 2 售后 3 其他问题) sess[state] collect return sess def st_collect(self, sess, event): intent self.classify(event[content]) sess[intent] intent sess[state] answer return self.st_answer(sess, event) # 直接进入解答 def st_answer(self, sess, event): hit self.kb.search(sess[intent]) answer hit[answer] if hit else self.model.chat( [{role: user, content: event[content]}]) sess[last_answer] answer self.reply(sess, answer[:500]) time.sleep(1) self.reply(sess, 以上解决你的问题了吗回复 是/否) sess[state] confirm return sess def st_confirm(self, sess, event): text event[content] if any(k in text for k in [是, 解决, 谢谢]): self.reply(sess, 好的随时再来) sess[state] done elif sess.get(retry, 0) 2: # 两轮没解决挂起转人工 sess[state] pending self.store.handoff(sess[user], { intent: sess[intent], tried: sess[last_answer], }) else: sess[retry] sess.get(retry, 0) 1 sess[state] collect self.reply(sess, 能再描述一下具体哪里没解决吗) return sess def timeout_scan(self): # 定时任务扫超时会话 now time.time() for sess in self.store.active_sessions(): idle now - sess[last_active] if idle self.TIMEOUT_CLOSE: self.store.close_session(sess[user], keep_summaryTrue) elif idle self.TIMEOUT_REMIND and not sess.get(reminded): self.reply(sess, 还在吗有问题可以继续说) sess[reminded] True self.store.save_session(sess)落地建议客服对话要用状态机管理——welcome、collect、answer、confirm、pending 五个状态覆盖大部分场景confirm 状态两轮没解决就挂起转人工别无限循环。会话超时两级处理——30 分钟提醒、60 分钟关闭留摘要用户回来不用从头聊。转人工交接包带意图、已给答案和聊天记录人工接手状态机暂停。微信侧的消息接口由Eyun这类个人微信API平台 提供状态机和超时管理在自建服务实现具体字段以平台开发文档为准。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑