freeswitch筆記(5)-小型呼叫中心設計思路

這一篇用esl實戰一把,利用esl client來實現一個小型呼叫中心的原型,先看看下面這張圖:

 

企業通常會對外公佈一個400之類的服務電話,當用戶撥打這個電話時,實際上背後是一堆客服妹紙帶着耳麥通過電腦連着自己的電話分機。客人進線時,系統會根據一定的規則(比如挑1個當前空閒的客服),然後把電話轉接過去,當然轉接有可能不成功(比如目標客服沒接聽,或者當時走開了,或者誤操作按了掛機...),系統要監聽這些異常情況,然後再分配1個其它客服,直到接通(或客人等得不耐煩,主動掛機)

 

點擊查看原圖

這是大致的時序圖,解釋一下:

1、客人來電後,數據會到過freeswitch

2、fs上配置outbound規則(見之前的文章)後,會把一些關鍵信息(比如客人來電號碼),傳到esl client

3、esl client根據自己的業務規則,分配一個客服(即:分機號)

4、fs主動向該客服發起呼叫(originate命令) --問題1:爲啥這裏不直接用bridge命令?

5、考慮到客服可能正好離開位置(比如:起身去倒杯水),或者比較忙,直接掛斷了電話,步驟4的呼叫肯定失敗。這裏要用inbound模式,監聽目標客服的分機狀態,才能知道應答情況

6、如果目標客服無應答(掛機或一直振鈴不接),則掛斷客服這一頭的電話(注:uuid_kill 客服通話的uuid),然後重複步驟2,繼續分配另外一個客服 (注:這個重複分配的過程,客人是感知不到的)

7、如果目標客服接起了電話(即:應答),則先將客人來電應答(answer指令,否則客人那邊還會一直聽到等待音),然後將兩頭的電話接通(uuid_bridge uuid1 uuid2)

 

回答下剛纔提到的一個小問題:步驟4爲什麼不用bridge命令?

答案:bridge也可用於轉接,正常情況是沒問題的,但是bridge命令執行成功,並不代表對方一定就接通了(見上面未接聽情況的各種分析),如果對方掛斷了,客人會先聽到對方的振鈴聲,然後聽到掛斷,但是自己這一頭的電話並未斷,接下來又會聽到排隊的等待聲,體驗很不好,所以這個方式不推薦。

 

時序圖中涉及的freeswitch命令列一下:

1、originate 向客服發起呼叫

tips: 可以在發起呼叫時,就指定uuid(避免fs自動生成),方便後面uuid_kill或uuid_bridge,示例如下

originate {ignore_early_media=true,call_timeout=60,hangup_after_bridge=false,origination_uuid=新的uuid,origination_caller_id_number=主叫號碼,origination_caller_id_name=主叫號碼顯示名稱}user/目標號碼 &park()

注:最後的&park()不要忘了加,這個相當於系統自動應答,把客服端的電話先保持住,否則會超時自動掛斷;另外新的uuid,可以通過create_uuid先生成。

2、answer 自動應答

用於客服撥通後,自動應答客人電話,否則客人那邊一直播等待聲音,沒人接聽,最終會超時。

3、uuid_kill 結束某一些的通話

如果目標客服一直振鈴未接聽,可以用該命令直接掐掉。

4、uuid_bridge

接通二邊的電話

 

參考:

https://freeswitch.org/confluence/display/FREESWITCH/Originate+Example

https://freeswitch.org/confluence/display/FREESWITCH/mod_commands

https://freeswitch.org/confluence/display/FREESWITCH/Event+List#EventList-3.21CHANNEL_UUIDevent

原文出處:https://www.cnblogs.com/yjmyzz/p/how-to-design-a-small-callcenter-using-esl-client-and-freeswitch.html

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