AI 客服上线后的第一周通常风平浪静,第二周开始,运营那边会积累起同一种抱怨:机器人答非所问,还在硬答。这时候工程团队才会意识到,转人工不是 AI 客服的可选增强项,是交付边界——没有兜底链路的 AI 客服,不配上生产。

这篇按工程阶段把转人工链路拆成四段:触发、接管、排队、兜底,每段给设计和产出物。

一、触发条件:四层判断,按成本从低到高

转人工的触发不是单个 if,是四层过滤器,逐层成本升高:

  1. 显式请求:命中“转人工”“人工客服”“找你们领导”这类意图词,直接触发,无争议。词表放配置里,别写死
  2. 应答质量信号:模型侧给出低置信标记,或连续两轮命中兜底话术(“我不太明白”连出现两次,第三轮就该转了)
  3. 情绪信号:同一用户短时间内的消息频率突增、感叹号密度上升、重复发送同一问题——不用上模型,规则就能判
  4. 业务规则:标记了高价值标签的用户直接走人工优先(标签接口全量覆盖语义记得先核对,别把客户的“VIP”标洗掉)

四层的产出物是一张触发配置表,评审时运营和工程一起过——哪层开多严,是业务决策不是技术决策。

二、接管状态机:四个状态,三条流转规则

会话在“机器人服务”和“人工接待”之间的切换,用一个显式状态机管理,状态存 Redis 带 TTL:

# WTAPI 微信机器人接口平台 | 文档: https://weiti.apifox.cn
# 本文依赖:
#   - 收消息: Webhook 回调 AddMsg (去重键=Appid+Data.NewMsgId)
#   - 发消息: postText (appId/toWxid/content)
import enum, time
from dataclasses import dataclass

class SessionState(enum.Enum):
    BOT = "bot"          # 机器人服务中
    QUEUED = "queued"    # 已进人工队列
    HUMAN = "human"      # 人工接待中
    COOLDOWN = "cooldown" # 人工结束后的静默期

@dataclass
class Session:
    wxid: str
    state: SessionState
    since: float          # 当前状态起始时间戳
    handoff_reason: str = ""

def transition(sess: Session, target: SessionState, ttl: int) -> None:
    # 流转规则三条: QUEUED 超时回 BOT; HUMAN 结束进 COOLDOWN;
    # COOLDOWN 到期(或用户再发言)回 BOT —— 防止人工刚说完机器人立刻插话
    sess.state = target
    sess.since = time.time()
    redis.setex(f"sess:{sess.wxid}", ttl, target.value)

三条流转规则里最容易漏的是 COOLDOWN:人工客服刚回复完“不客气”,机器人一秒后弹出满意度调查——用户视角这就是精神分裂。人工结束后的会话要静默几分钟,期间机器人只记录不发言。

三、排队:微信侧没有“排队页”,只能靠消息演

Web 客服能在页面渲染一个排队进度条,微信做不到。用户进了 QUEUED 状态后,他能感知到的只有对话框。所以排队体验要靠三条消息补:

  1. 进队时立刻回:“已为您转接人工,当前前面还有 N 位”——N 要真实,虚报会在人工接入时穿帮
  2. 排队超过阈值时插一条安抚:“人工稍忙,您还可以先描述问题,客服接入后可以减少重复沟通”——这句话同时完成了排队期内信息收集
  3. QUEUED 超时(比如五分钟)未接入,状态机回 BOT 并明确告知:“人工暂时排不上,我先记下您的问题,人工上线后会第一时间回复您”——注意这条消息后进入的是留言模式,不是装作无事发生继续机器人服务

分配策略用最简单版:人工客服池按“当前接待数最少”分配。别上复杂算法,客服就三五个人,轮询够用。

四、超时兜底:机器人不许假装人工

整条链路的合规底线在这一条:留言模式的后续回复,必须表明机器人身份。人工上线后补回复时说“抱歉刚看到”没问题,但如果人工始终没接入、系统用预设话术续命,话术里必须带“我是智能助手”的自标识——让用户误以为在和真人对话,翻车后的客诉等级完全不一样。

降级链的完整形态:QUEUED 超时 → 留言模式(收集问题+自标识)→ 留言入库 → 工单提醒人工 → 人工回复。每一环的产出物入库,第二天要能回答“昨天多少会话转人工、多少没接上、平均等待多久”——这组数字是下个迭代调触发阈值的依据。

五、上线前评审项

  1. 触发配置表的每一层,运营有没有签字确认?——触发过严,人工被打爆;过松,硬答投诉
  2. COOLDOWN 时长定了几分钟?谁定的?——这是体验决策,别让开发拍
  3. 排队超时的时间值和话术,是否和人工侧的真实 SLA 对齐?——说五分钟结果十分钟没人,比不说更糟
  4. 留言模式的话术里,“智能助手”自标识有没有?——合规底线,一票否决项
  5. 转人工的统计口径定了吗?——触发数、接入数、超时数三个数字每天出,没有数据就没有下一版

接口路径、回调字段与标签接口语义以 WTAPI 文档为准。


Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐