Appearance
指定由哪个技能组接待
你的系统知道这个客户是谁,把接待归属交给你来定。
开始之前
什么时候用得上
合从自己的分配规则只知道「这通对话从哪个渠道来」,不知道「这个客户是谁」。而这件事你的系统往往一清二楚:他买的是哪条产品线、是不是签了年框的大客户、上一单还在售后流程里。
setRouting() 就是把这个判断交给你:咨询发起前,由你的代码指定这次由哪个技能组接待。
常见的几种用法:
- 会员等级不同走不同的组,白金客户直接进专属组
- 按产品线分流,买 A 产品的进 A 组,不用客户自己在菜单里选
- 帮助中心的不同栏目挂不同的组,退换货页面进售后组
怎么用
拿到命令对象 hc 之后,传技能组的名字,和工作台里建的那个名字一模一样,中文照写:
js
hc.setRouting('售后组')要细配指定不到人时怎么办,传对象:
js
hc.setRouting({
skillGroup: '售后组',
fallback: 'group',
fallbackGroup: '综合组'
})| 字段 | 必填 | 说明 |
|---|---|---|
skillGroup | 是 | 技能组名称。传 null 或空串等于清除 |
fallback | 否 | 指定的组没人能接时怎么办,见下表。默认 normal |
fallbackGroup | fallback 为 group 时必填 | 兜底技能组的名称 |
传 null 是清除,不传是保持原样,两者不一样:
js
hc.setRouting(null) // 清除,之后按系统规则正常分配
hc.setRouting() // 什么也没做,之前设的值还在指定的组没人能接,怎么办
技能组是绝对隔离的:指定了售后组,就只在售后组里挑人,组里没人能接不会扩散到组外。这时按你配的 fallback 走:
fallback | 行为 |
|---|---|
normal(默认) | 当作没指定过,在全公司范围内正常分配 |
group | 换到 fallbackGroup 这个组再挑一次 |
leave_message | 不再尝试,直接进留言 |
「没人能接」指的是组里没有一个人在线
客服都在线但接待量满了,不算没人能接 —— 客户按渠道的排队设置等着,仍然由这个组接待。降级只在组里一个在线的人都没有时才发生。
所以选 normal 之外的档位之前,先确认这个组的排班能覆盖客户来咨询的时段,见在线规则。
只降一级,不会连环找下去
兜底组里也没人能接,对话就进留言,不会再往下找第三个组。兜底组的名字打错、或者那个组后来被删了,同样直接进留言。
三条路的终点其实是同一个:都不会让客户没人管。差别只在于你愿不愿意让他被组外的人接待。
生效范围与优先级
值绑这一通对话,对话结束就自然失效,下次咨询重新算。所以你不需要在客户登出时清理,也不用担心存量数据,想停用不再传这个值即可。
它的优先级最高,压过渠道设置里的默认技能组。两边都配了,以代码里的为准,不取交集。
它只管自动分配。主管改派、客服转给同事,都是活人当场看着现场做的决定,不受这个值影响。
组名匹配不上就当没指定过:打错字、组被改名、组被删掉,对话照常按系统规则分配,客户那边毫无影响,浏览器控制台会打一条警告。它不会报错,也不会拦住客户的消息。
如果这通对话已经由人工接待,而当前这位客服不在你指定的组里,合从会在聊天窗里问客户一句愿不愿意转,客户同意才转过去。客户拒绝就维持原样。
怎么确认生效了
客服在对话详情右栏的 对话动态 里能看到这通对话的分配过程:指定了哪个组、是直接生效还是走了降级、组名有没有匹配上,逐条记着。配完走一遍完整流程,对照这里确认。
什么时候调
setRouting() 要在客户发出第一条消息之前调好,之后再调只对下一通对话生效。
拿到命令对象就可以调,不用等聊天窗打开——客户还没点开咨询按钮时,命令会先存下来:
js
window.hecong((hc) => {
// 页面上已经知道客户身份时,可以和 identify 一起调
hc.identify({ id: currentUser.id, profile: { name: currentUser.name } })
hc.setRouting(currentUser.level === 'platinum' ? '白金客户组' : '综合组')
})同一个页面里多次调用,最后一次生效。
下一步
- 传客户资料给客服 —— 让客服打开对话就知道对方是谁
- 让不同渠道的咨询分给指定客服 —— 不写代码,在工作台里配默认技能组