FreeSwitch:羣振、順振研究

在呼叫中心繫統中,有二類特殊的應用場景,即所謂的“羣振”(也叫“共振”或“同振”)以及“順振”。

羣振的業務場景:

當客人電話進線時,希望呼叫中心的所有客服都能響應(即:假設呼叫中心有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個軟電話終端都彈出來電振鈴窗口。可以分別測試下面幾種接聽情況:

  • 1000拒接掛掉,1001仍然繼續振鈴
  • 1000接聽,1001的來電振鈴將自動消失
  • 1000接起來,然後FS_Cli再發1次 originate user/1000,user/1001 &echo 這時候,1000話機已在通話中,將只有1001會彈出來電提醒

 

順振實現:

FS_Cli終端窗口輸入:

originate user/1000,user|1001 &echo
即:在2個號碼之間用管道符|拼接

這時只有1000會彈出來電提醒:可以分別測試下面幾種接聽情況:

  • 如果點Decline拒接,會繼續彈出1001的來電提醒。
  • 如果1000一直不接,振鈴超時後,1001並沒有按預期繼續彈出來電提醒 (後面會講到改進方法)
  • 如果1000正常接聽,然後掛斷了,FS_Cli短時間內再發1次 originate user/1000,user/1001 &echo,優先彈出來電提醒的將是1001(即:FS內部應該有號碼平均輪訓的機制,保證每個號碼都有機會雨露均沾,不知道這個特徵是否與FS的版本有關,非1.10.11版本建議大家以實際驗證結果爲準)
  • 如果1000正常接聽,持續通話中,FS_Cli再發1次 originate user/1000,user/1001 &echo,由於1000佔線通話中,將會彈出1001的來電提醒

第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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章