IVR坐席功能指南

1. 示例说明

  • (1) 通过创建队列接口创建1和2队列;
  • (2) 通过坐席上班接口把坐席上班准备中,然后通过坐席准备就绪接口把坐席状态置为准备就绪;
  • (3) 用户呼入或者IVR外呼用户接听后放音提示按键,使用按键命令嵌套放音命令,放音循环播放并且设置按键超时时间,放音提示:欢迎致电,中文服务请按1,英文服务请按2;
  • (4) 用户按键1进入1队列转接1队列中的坐席,用户按键2进入2队列转接2队列中的坐席,设置进入排队超时时间。
  • (5) 增加进入排队的副命令调整,在用户等待中没有坐席接听的时候调整到副命令,然后放音提示:坐席正忙,继续等待请按1,结束请挂机。
  • (6) 用户按1继续进入排队,按其他键直接挂机。
  • (7) 当坐席接听并且坐席挂机后通过回调放音提示用户:请对我们的客服人员做评价,满意请按1,不满意请按2;
  • (8) 用户超时没按键挂机,用户按1或者2后提示用户:感谢您的来电,再见!挂机

2.业务流程图

3.开发指南

(1) 调用CreateQueue接口,分别创建1队列和2队列;
(2) 调用AgentOnWork接口,分别在1队列和2队列上班座席,座席号码可以写控制台里配置的测试号码,并且座席状态设置为1准备就绪状态
(3) 如果设置坐席状态0准备中,可以通过AgentReady接口设置坐席准备就绪;
(4) 调用IVR外呼接口发起rest请求/呼入接入号
(5) 呼叫成功云通讯平台会向客户创建应用时填写的ivr通知地址发送通知消息
(6) 第三方服务器获取到通知消息响应按键放音,响应包体:
  • <?xml version='1.0' encoding='UTF-8'?>
  •     <Response>
  •         <Get action='firstget' numdigits='1' timeout='30'>
  •             <Play>confmenu.wav</Play>
  •         </Get>
  •         <Play>timeout.wav</Play>
  •         <Redirect tag='1'>gettimeout</Redirect>
  •     </Response>
  • 说明:主命令为按键命令并且嵌套confmenu.wav的放音提示,在用户按键1就回调通知到'firstget'的地址,如果用户没有按键就会20秒超时后执行副命令,跳转通知gettimeout。
(7) 若用户按键超时播放timeout.wav语音,语音播放完或按键打断后业务流程重定向到Redirect指向的URL,重新执行按键放音的操作。
(8) 获取到通知消息继续3的流程提示用户按键,响应包体:
  • <?xml version='1.0' encoding='UTF-8'?>
  •                 <Response>
  •                         <Get action='firstget' numdigits='1' timeout='30'>
  •                                 <Play>confmenu.wav</Play>
  •                         </Get>
  •                         <Play>timeoutbye.wav</Play>
  •                         <Hangup/>
  •                 </Response> 
  • 说明:主命令为按键命令并且嵌套confmenu.wav的放音提示,在用户按键1就回调通知到'firstget'的地址,如果用户没有按键就会20秒超时后执行副命令,直接挂机。
(9) 用户按键完成向第三方服务器发送按键上报的通知
(10) 获取按键上报
  • a) 如果用户按1键,响应包体:

  • <?xml version='1.0' encoding='UTF-8' ?>
  •         <Response>
  •          <EnterCCS queuetype='1' timeout='30' queuetimes='1' agenthangupurl='agenthangup'>
  •          <Play>waitmusic.wav</Play>
  •          </EnterCCS>
  •          <Redirect tag='1'>transferAgentFail</Redirect>
  •         </Response>

  • b) 如果用户按2键,响应包体:

  • <?xml version='1.0' encoding='UTF-8' ?>
  •         <Response>
  •          <EnterCCS queuetype='2' timeout='30' queuetimes='1' agenthangupurl='agenthangup'>
  •          <Play>waitmusic.wav</Play>
  •          </EnterCCS>
  •          <Redirect tag='2'>transferAgentFail</Redirect>
  •         </Response>

  • c) 如果用户按其他键,响应包体:

  • <?xml version='1.0' encoding='UTF-8' ?>
  •         <Response>
  •          <Hangup/>
  •         </Response>
  • 说明:主命令为进入队列命令,用户按1进入1队列,按2进入2队列,嵌套waitmusic.wav放音,如果有座席空闲则转到座席,座席接听并挂机后回调agenthangup,座席超时未接听发话则跳转到transferAgentFail。
(11) 如果座席未接听则定向到Redirect指向的URL:transferAgentFail,响应包体:
  • <?xml version='1.0' encoding='UTF-8' ?>
  •     <Response>
  •         <Get action=' getchinesequeue ' numdigits='1' timeout='20'>
  •             <Play loop='-1'>menu.wav</Play>
  •         </Get>
  •         <Play>timeoutbye.wav</Play>
  •         <Hangup/></Response>
  • 说明:主命令为按键命令并且嵌套menu.wav的放音提示,提示用户是否继续排队,在用户按键一个就回调通知到dtmfreport的地址,如果用户没有按键就会20秒超时后执行副命令,播放timeoutbye.wav的提示放音后挂机,通过判断tag的值区分是1队列还是2队列,跳转到不同的地址继续排队。
(12) 如果用户按1键,则获取继续排队的按键上报通知并响应继续排队,响应包体:
  • <?xml version='1.0' encoding='UTF-8' ?>
  •         <Response>
  •          <EnterCCS queuetype='1' timeout='30' queuetimes='1' agenthangupurl='agenthangup'>
  •          <Play>waitmusic.wav</Play>
  •          </EnterCCS>
  •          <Hangup/>
  •         </Response>
  • 说明:通过此命令让用户继续排队
(13) 坐席成功接听后,座席挂机向第三方服务器发通知消息
(14) 第三方服务器收到通知响应按键评价,响应包体:
  • <?xml version='1.0' encoding='UTF-8' ?>
  •     <Response>
  •         <Get action='pingjia' numdigits='1' timeout='20'>
  •             <Play loop='-1'>pingjia.wav</Play>
  •         </Get>
  •         <Play>bye.wav</Play>
  •         <Hangup/>
  •         </Response>
  • 说明:获取用户按键,让用户对座席进行评价
(15) 获取到用户用户按键上报,并响应放音挂机,响应包体:
  • <?xml version='1.0' encoding='UTF-8' ?>
  •         <Response>
  •                 <Play>thank.wav</Play><Hangup/>
  •         </Response>
  • 说明:得到用户的按键,放音提示完成后挂机
(16) 用户挂机结束业务
(17) 挂机后响应空命令即可
  • <Response>
  •         <CmdNone/></Response>
  • 说明:主命令为空命令,因为结束业务了不需要返回其他的IVR命令。
(18) 坐席在被锁定到挂机的过程中都会有状态改变
(19) 挂机后响应空命令即可,响应包体:
  • <Response>
  •             <CmdNone/></Response>
  • 说明:坐席状态改变不需要后续命令,返回空命令即可,如果坐席接听后状态变化为0准备中需要通过AgentReady接口让坐席准备就绪。如果想实现坐席自动准备就绪,可以在坐席状态改变为0准备中的时候响应坐席准备就绪命令,坐席其他状态不需要后续业务直接返回空命令。
响应坐席准备就绪命令示例:
  • <Response>
  • <Appid>"+appid+"</Appid>
  • <AgentReady agentid='"+agentid+"'/>
  • </Response>

4. 注意事项

(1) 如果坐席是网络端,成功接听来电需要满足两点:
  • a)调用坐席上班接口将坐席状态置为准备就绪状态
  • b)客户端成功登陆sdk
(2) 坐席状态改变说明
  • 0→1 坐席上班后调用准备就绪接口,只有准备就绪在队列里才能被锁定
  • 1→2 进入队列,坐席外呼或坐席内呼锁定坐席
  • 注:坐席强制准备就绪(即 准备就绪命令force="true") 不管之前坐席什么状态都会把状态改为1
  • 3→0 坐席挂机会返回坐席0的状态
  • 4→0 拒接,或客户端不在线等状态之后直接返回4的状态,然后挂机都会变为0状态,坐席如需继续服务,需将坐席状态置为1的状态,如果不想每次手动改变状态,可以自动准备就绪。实现方法:收到坐席状态0的通知,响应ivr坐席命令里的准备就绪命令即可。
  • 注:坐席状态4到0状态中间间隔时长为10s
(3) 坐席通话时长是需客户自己通过坐席状态改变通知来实现的。

5. 参考文档