黃偉民,陳可新
(福州職業技術學院計算機系,福建福州350108)
呼叫中心是企業與客戶溝通的橋梁,它允許企業快捷地為客戶提供信息服務.近年來,隨著各類企業客戶服務需求的快速發展及企業信息化建設的不斷深入,呼叫中心已經在國內各行業,包括金融、保險、電信、政府、教育等行業得到廣泛應用.企業呼叫中心的呼叫分配機制可以把正在排隊的客戶呼叫按照一定的規則路由到相應的坐席代表處,把呼叫進行排隊并分配到具有恰當技能和知識的坐席代表處,使整個呼叫處理的過程合理化,使客戶獲得更好的服務[1].呼叫分配中的客戶排隊和座席分配策略決定了企業呼叫中心座席的人力資源使用效率,直接影響到呼叫中心管理和客戶服務水平[2].
Asterisk是一個開源的軟件VoIP(Voice over Internet Protocol)解決方案,它在中小企業預算可承受的范圍內提供了商業交換機的功能和伸縮性.Asterisk包含許多昂貴的商用交換機系統才具有的功能,例如:語音信箱、多方語音會議、交互式語音應答、電話選單與電話客服中心等機制[3].鑒于基于Asterisk的VOIP解決方案成為當前中小型企業呼叫中心的首選,通過對Asterisk進行呼叫分配策略定制,將較好提升基于Asterisk呼叫中心座席的人力資源使用效率.本文對基于Asterisk呼叫中心的定制呼叫分配策略進行研究,并探討其具體實現方法.
Asterisk軟交換系統基于模塊化進行設計,用戶可以根據自己的需要增加和改進以實現個性化功能,以便應用更加貼近企業實際業務需求.利用Asterisk系統的AGI(Asterisk Gateway Interface)編程接口開發通信應用,這些外部應用程序可以使用 PHP,Python,Perl,Java 等語言編寫[4].AGI應用程序包括EAGI、FastAGI和DeadAGI等多種方式.EAGI應用程序可以和Asterisk的撥號方案進行交互,還能訪問和控制Asterisk系統的語音通道.FastAGI可以通過一個TCP網絡連接實現呼叫控制.DeadAGI主要用于在線路掛斷時進行相應的處理.EAGI通過STDIN/STDOUT標準輸入輸出數據流和Asterisk進行交互,FastAGI傳遞數據的方式從 STDIN/STDOU方式轉為了TCP/IP Socket的方式.Asterisk的AGI應用程序可以在Asterisk的撥號方案中被調用,FastAGI應用程序的調用方式如下:
exten= >_X.,1,AGI(agi://ip_address:port/some_script_name.agi).
基于Asterisk的企業呼叫中心應用系統中,系統的內置客戶呼叫分配策略主要是基于客服電話響鈴規則,即根據座席當班和空閑算法,對座席分配呼入系統中的客戶呼叫.在Asterisk系統中,系統內置的客服電話響鈴規則包括:Ringall、Random、Roundrobin、Leastrecent、Fewestcalls、RRMemory,以下分別對各個規則進行簡要描述.Ringall:呼叫所有可到達的分機直到有座席接聽,即剔除不在線和在通話中的全部響鈴;Random:剔除不在線和在通話中的隨機選擇一個座席分配給呼入用戶;RoundRobin:輪流呼叫每一個可以達到的分機,剔除不在線和在通話中的響鈴;Leastrecent:呼叫最近被這個隊列呼叫最少的分機;Fewestcalls:呼叫這個隊列完成電話數最少的分機;RRMemory:先按RoundRobin排序,讀取內存里記錄隊列上次呼叫人的位置,從這個人的位置的下一個開始呼叫響鈴,如果到隊列尾部,從頭再來.
Asterisk系統的內置呼叫策略雖然能滿足企業呼叫中心的一般應用需求,但針對呼叫中心不同的業務場景,如果單一應用某項策略時,難免存在一定的局限性.如:Ringall策略未考慮座席人員的技能差異,Leastrecent策略可能會造成隊列不停地把呼入的電話分配到某個座席上,如果該座席分機處于通話中并且通話時間比較長的話,會造成很大的電話損失.為此可針對企業呼叫中心的不同業務場景,選擇應用不同的定制呼叫分配策略.
為實現對客戶呼叫的高效處理,Asterisk基于隊列構建并處理客戶呼叫.Asterisk系統在呼叫分配隊列模型中定義了隊列結構call_queue,該結構體中包含head和members等多個數據成員(如圖1所示),其中head成員表示呼入的呼叫隊列隊首位置,members成員表示處于等待中的空閑座席.Asterisk系統針對每一個客戶呼入均開啟一個隊列線程Queue來處理呼叫.當一個呼叫呼入系統時,系統的Queue線程創建一個queue-ent結構并將其加入到呼叫隊列head中,進入等待狀態,同時Queue線程不停檢測members列表中的空閑成員,一旦檢測到空閑座席,則排在呼叫隊列head隊首的呼叫就退出等待,并向空閑座席發出呼叫邀請[5].針對企業呼叫中心的不同應用需求,可以定義不同的策略及級別,對座席進行呼叫分配.
通過上述對于Asterisk的呼叫分配策略分析,以下以FastAGI為例說明Asterisk呼叫策略的具體實現過程,FastAGI通過TCP/IP Socket連接替代標準輸入輸出作為溝通媒介.通過FastAGI運行基于Java的應用程序,可以結合Java多線程支持構建快捷響應的腳本.針對上述呼叫策略的Fast-AGI具體實現,主要包含以下4個部分:AGI腳本代碼,Asterisk撥號方案,AGI腳本映射和AGI服務器端[6].為完成呼叫策略定義與獲取,可以編寫java腳本程序實現策略定義和接口實現,現假設相關的接口實現包含于QueueLogic.java文件,QueueLogic繼承BaseAgiScript基類,并在QueueRingAll中實現具體的功能調用.相關的AGI應用程序的主要實現代碼如下:


在實現呼叫中心不同業務場景的呼叫策略接口后,可以通過調用一個工廠方法,向上述接口傳遞數據.當一個呼叫中心客戶呼入系統時,系統IVR(Interactive Voice Response)提示客戶選擇其所需的業務場景,通過在Asterisk撥號方案中的AGI應用調用QueueLogic腳本,就可以將客戶呼入引向包含不同策略的座席隊列,從而實現針對基于Asterisk的企業呼叫中心不同業務場景的定制呼叫分配策略.
本文簡要闡述了Asterisk的AGI編程接口功能,對基于Asterisk的企業呼叫中心系統的呼叫分配機制進行簡要分析,研究了Asterisk定制呼叫分配策略實現方法,最后給出了針對不同業務場景的定制呼叫分配策略的代碼實現方法.通過Asterisk的AGI編程接口實現客戶呼叫分配策略定制,允許根據企業的不同業務需求定制呼叫分配策略,從而實現對企業呼叫座席人力資源的更好管理和配置,以最大程度發揮企業呼叫中心功能.
[1]梅濤,羅裕梅.呼叫中心ACD模型的改進與實現[J].信息技術,2014,(5):135-138.
[2]于淼,宮俊.帶排隊信息提示的呼叫中心人力資源分配方法[J].東北大學學報(自然科學版),2014,(1):1-4.
[3]張平波,高承志.基于Asterisk的VoIP軟電話系統的設計與實現[J].信息化研究,2013,(4):35-39.
[4]陳可新.基于Asterisk軟交換的電話口譯系統開發與應用[J].現代電子技術,2012,(14):55-58.
[5]王寧.基于云計算的呼叫中心業務研究與實現[J].電子質量,2014,(4):44-47.
[6]Madsen L,Meggelen J,Bryant R.Asterisk:The Definitive Guide,Third Edition[M].O’Reilly,2011.