在呼叫中心系统中,有二类特殊的应用场景,即所谓的“群振”(也叫“共振”或“同振”)以及“顺振”。
群振的业务场景:
当客人电话进线时,希望呼叫中心的所有客服都能响应(即:假设呼叫中心有5个客服在接线,客人来电时,这5个客服的电话一起响),任何1个客服都可以接听(注:该客服接起来后,其它客服的分机就不再响了)
顺振的业务场景:
当客人电话进线时,可以指定一系列客服按优先级顺序接听(即:假设呼叫中心有2个客服A,B在接线,客人来电时,希望优先A的话机响,如果A一直没接或拒接,再呼客服B,让B的话机继续响)
下面我们以FreeSwitch (1.10.11版本),演示下如何实现:
默认情况下,FreeSwitch内置了几个账号(1000,1001...),默认密码是1234,我在自己的windows笔记本上,用开源的软电话终端MicroSIP,分别以1000,1001注册到本机的freeSwitch上
群振实现:
FS_Cli终端窗口输入:
originate user/1000,user/1001 &echo
即:在2个号码之间用英文半角逗号拼接
可以看到,2个软电话终端都弹出来电振铃窗口。可以分别测试下面几种接听情况:
顺振实现:
FS_Cli终端窗口输入:
originate user/1000,user|1001 &echo
即:在2个号码之间用管道符|拼接
这时只有1000会弹出来电提醒:可以分别测试下面几种接听情况:
第2种测试结果,1000振铃超时后,无法继续呼叫1001,这显示不满足业务要求,在FreeSwitch官方文档找到1个参数:originate_continue_on_timeout
看参数说明, 这个应该管用,验证一下:
originate {originate_continue_on_timeout=true}user/1000|user/1001 &echo
实际验证下来,确实有用。
振铃超时设置:
默认的振铃时间是60秒,如果想调整群振或顺振的超时时间,我们参考以前单号码呼叫的设置,比如:
originate {call_timeout=5}user/1000 &echo
将其套用到群振上:
originate {call_timeout=5}user/1000,user/1001 &echo
发现并不管用,仍然是振铃60秒
继续在官网上搜索相关信息,找到1个相关的参数leg_timeout:
尝试一下:
originate {originate_continue_on_timeout=true}[leg_timeout=15]user/1000|[leg_timeout=5]user/1001 &echo
结果符合预期:顺振模式下,1000的振铃超时为15秒,超时不接后,将继续呼叫1001(1001的振铃超时为5秒)
在群振模式下,也依然有效:
originate [leg_timeout=15]user/1000,[leg_timeout=5]user/1001 &echo
参考文档:
https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Dialplan/Variables-Archive/x__Variables_6587314/#origination_timeout