涂繼輝
(長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州434023)
楊彬
(鶴壁職業(yè)技術(shù)學(xué)院電子信息工程學(xué)院,河南 鶴壁458030)
呼叫中心系統(tǒng)作為企業(yè)與客戶溝通的渠道,越來(lái)越受到人們的關(guān)注和重視。基于Asterisk的呼叫中心系統(tǒng)以其低廉的價(jià)格、完善的系統(tǒng)功能和靈活的系統(tǒng)架構(gòu),已經(jīng)成為研究的熱點(diǎn),并廣泛的應(yīng)用于各個(gè)行業(yè)[1-3]。所謂呼叫中心中的彈屏技術(shù)是指當(dāng)客戶打電話給客服人員時(shí),客服人員的計(jì)算機(jī)上可以彈出CRM系統(tǒng)中用戶資料的網(wǎng)頁(yè),此功能可以讓客服人員快速的了解來(lái)電客戶信息,或者快速的錄入客戶信息,這為客服人員更好的服務(wù)客戶提供了一種重要的幫助。
目前基于Asterisk的彈屏技術(shù)主要利用的是推送模式,即后臺(tái)啟動(dòng)一個(gè)進(jìn)程通過(guò)tel net的方式登錄Asterisk,然后輪詢Asterisk通道模塊的狀態(tài),如果發(fā)現(xiàn)有振鈴?fù)ǖ溃言撏ǖ赖恼疋徯畔懭霐?shù)據(jù)庫(kù)表中。前臺(tái)Web頁(yè)面通過(guò)Ajax模式輪詢數(shù)據(jù)庫(kù),如果發(fā)現(xiàn)數(shù)據(jù)庫(kù)有新的振鈴記錄,就向客服發(fā)出彈屏。這種方式不但效率低、可靠性差,也不利于系統(tǒng)的集成。為此,筆者利用Asterisk的模塊化的架構(gòu)思想和URL協(xié)議原理,設(shè)計(jì)了一種新的客戶資料彈屏方式。
Asterisk是Digiu m公司贊助開源開發(fā)的,運(yùn)行在Linux環(huán)境下的軟交換解決方案,是為企業(yè)通信量身定做的 “媒體交換機(jī)”[4-6]。
包括會(huì)話初始協(xié)議(SIP-Session Initiation Protocol)、H.323(國(guó)際電信工業(yè)會(huì)的一種標(biāo)準(zhǔn))、IAX(Inter-Asterisk x-Change)、媒體網(wǎng)關(guān)控制協(xié)議(MGCP-Media Gateway Control Protocol)等其他協(xié)議。
Asterisk可以連接普通電話機(jī)、IP電話機(jī)和軟電話等多種不同的電話終端,支持多種主流的IP電話協(xié)議的語(yǔ)音網(wǎng)關(guān),提供如語(yǔ)音信箱、會(huì)議電話、交互式語(yǔ)音提示和自動(dòng)電話轉(zhuǎn)接等以前只有昂貴的專業(yè)PBX系統(tǒng)才支持的功能。
Asterisk提供了豐富的底層接口函數(shù)和二次開發(fā)的框架,用戶能很方便在此基礎(chǔ)上進(jìn)行靈活的二次開發(fā),實(shí)現(xiàn)極具個(gè)性的軟交換增值業(yè)務(wù)功能。
基于Asterisk的呼叫中心系統(tǒng)的通用架構(gòu)如圖1所示?;贏sterisk開發(fā)的呼叫中心系統(tǒng)存放于公網(wǎng)服務(wù)器中,通過(guò)Web頁(yè)面進(jìn)行遠(yuǎn)程控制??头藛T的網(wǎng)絡(luò)電話和電腦通過(guò)網(wǎng)絡(luò)接入到呼叫中心系統(tǒng)中,用戶方對(duì)應(yīng)的PSTN網(wǎng)絡(luò)通過(guò)IP網(wǎng)關(guān)接入到呼叫中心系統(tǒng)。
彈屏模塊的流程如圖2所示。服務(wù)端是利用Asterisk的模塊化原則開發(fā)了1個(gè)插件模塊嵌入其中,它的核心主要是3個(gè)線程:第1個(gè)線程接受客戶端發(fā)過(guò)來(lái)的信息,得到客戶端的座機(jī)號(hào)碼和員工號(hào)以及網(wǎng)絡(luò)的IP地址等;第2個(gè)線程通過(guò)輪詢Asterisk的通道,得到正在振鈴的客服號(hào)碼,利用第1個(gè)線程保存的信息向客戶端發(fā)送正在振鈴的客戶號(hào)碼;第3個(gè)線程主要防止多次彈屏,由于客戶端振鈴會(huì)持續(xù)一段時(shí)間,因此線程2在輪詢的時(shí)候會(huì)多次檢測(cè)到同一個(gè)通道振鈴,因此需要通過(guò)線程3防止線程2對(duì)同一個(gè)客戶端發(fā)送多次彈屏消息。
圖1 基于Asterisk的呼叫中心系統(tǒng)的通用架構(gòu)圖
圖2 彈屏模塊的流程圖
客戶端啟動(dòng)后會(huì)首先向服務(wù)端發(fā)送相關(guān)的信息,然后啟動(dòng)線程準(zhǔn)備接受服務(wù)端發(fā)送來(lái)的彈屏消息,向CRM的服務(wù)器發(fā)送URL連接,彈出網(wǎng)頁(yè)。為了便于客戶端集成到各種應(yīng)用程序中,筆者采用了將應(yīng)用程序注冊(cè)為URL協(xié)議技術(shù)使客戶端可以通過(guò)URL被啟動(dòng),這樣便于客戶端的集成。
整個(gè)彈屏模塊分為服務(wù)端和客戶端2個(gè)部分:服務(wù)端設(shè)計(jì)成Asterisk動(dòng)態(tài)模塊,自動(dòng)加載到Asterisk系統(tǒng)中,主要由3個(gè)線程進(jìn)行處理;客戶端通過(guò)VC開發(fā)的托盤小應(yīng)用程序,通過(guò)注冊(cè)為URL協(xié)議的方式啟動(dòng)后隱藏在任務(wù)欄中。
Asterisk基于模塊化設(shè)計(jì),多數(shù)模塊都可以在運(yùn)行時(shí)通過(guò)動(dòng)態(tài)模塊加載器加載并初始化,用戶可以根據(jù)實(shí)際需要?jiǎng)討B(tài)增加相應(yīng)的模塊。彈屏服務(wù)端就是嵌入Asterisk中的一個(gè)插件,這樣不僅和Asterisk有很好的耦合度,而且可以方便監(jiān)控Asterisk呼叫通道的狀態(tài)。服務(wù)端模塊主要由接收客戶端注冊(cè)線程,輪詢振鈴?fù)ǖ谰€程和防止多次彈屏線程3個(gè)線程組成。
1)接收客戶端注冊(cè)線程 主要是記錄登錄的客服的位置和屬性信息,即記錄客服的客戶端的IP地址、端口、員工號(hào)和分機(jī)號(hào)。這些信息為后面發(fā)送彈屏消息提供了網(wǎng)絡(luò)位置信息,利用鏈表對(duì)這些信息進(jìn)行管理。
2)輪詢振鈴?fù)ǖ谰€程 主要是輪詢Asterisk所有正在通信的通道,當(dāng)有振鈴?fù)ǖ罆r(shí),利用振鈴?fù)ǖ乐械谋唤杏脩籼?hào)碼去信息鏈表查找,查找到后,向客戶端發(fā)送彈屏消息。
3)防止多次彈屏線程 主要是防止輪詢振鈴的線程多次對(duì)客戶端發(fā)送彈屏消息,因?yàn)檎谡疋彽耐ǖ罆?huì)保持長(zhǎng)時(shí)間的振鈴狀態(tài),因此輪詢振鈴線程會(huì)多次檢測(cè)到同一個(gè)通道的振鈴狀態(tài),這樣會(huì)多次向客戶端發(fā)送同一個(gè)彈屏的消息。為了避免這種現(xiàn)象,筆者在輪詢線程對(duì)客戶端發(fā)送了彈屏消息后,記錄這個(gè)通道的標(biāo)識(shí),每次輪詢振鈴?fù)ǖ赖臅r(shí)候,如果發(fā)現(xiàn)已經(jīng)有了記錄通道的標(biāo)識(shí),說(shuō)明已經(jīng)發(fā)送過(guò)消息,此時(shí)不發(fā)送消息;如果沒有記錄,說(shuō)明還沒有發(fā)送消息,那么就發(fā)送消息。防止多次彈屏線程用記錄的通道標(biāo)識(shí),然后用記錄的通道標(biāo)識(shí)在Asterisk中查找,然后判斷此通道的狀態(tài),如果狀態(tài)是振鈴,那么不作處理;如果此通道為非振鈴的狀態(tài),刪除記錄的通道標(biāo)識(shí)。
彈屏的客戶端是接收服務(wù)端發(fā)送的彈屏消息,然后向CRM系統(tǒng)發(fā)送消息,彈出客戶的Web頁(yè)面。為了讓服務(wù)端知道客戶端的位置,每次客戶端啟動(dòng)時(shí)候都會(huì)向服務(wù)端注冊(cè),即報(bào)告給服務(wù)端客戶端的IP地址和端口。為了便于客戶端集成到Web瀏覽器上,筆者采用了將應(yīng)用程序注冊(cè)為URL協(xié)議技術(shù)使客戶端可以通過(guò)URL被啟動(dòng)。應(yīng)用程序注冊(cè)為URL協(xié)議技術(shù)也稱為 “異步可插協(xié)議”(Asynchronous Pl uggable Protocols),主要描述如何為一個(gè)新的協(xié)議開發(fā)處理程序,即如何調(diào)用另外一個(gè)應(yīng)用程序來(lái)處理自定義協(xié)議,注冊(cè)已經(jīng)存在的應(yīng)用程序?yàn)橐粋€(gè)URL協(xié)議處理器即可。一旦應(yīng)用程序被成功地啟動(dòng),就可以使用命令行參數(shù)來(lái)重新找回URL來(lái)啟動(dòng)它。
實(shí)現(xiàn)的URL如圖3所示,實(shí)現(xiàn)的流程為:實(shí)現(xiàn)彈屏客戶端應(yīng)用程序FlashScreen.exe,并記錄下exe所在的全路徑;開始→運(yùn)行→輸入 “REGEDIT”確定,以啟動(dòng) “注冊(cè)表編輯器”;找到HKEY_CLASSES_ROOT節(jié)點(diǎn),右鍵新建項(xiàng),輸入的協(xié)議名Flash Screen Pr otocol;建立如圖3所示注冊(cè)表信息。啟動(dòng)Flash Screen的URL為:Flash Screen://cr mip=CRM的IP地址 &cr mport=CRM的端口&callcenterip=呼叫中心的IP地址 &callcenterport=呼叫中心的端口 &callnu m=客服的分機(jī)號(hào)&wor ker no=員工的工號(hào) &ser ver queue=員工分機(jī)所在的隊(duì)列號(hào) &;關(guān)閉啟動(dòng)Flash Screen的URL為:Flash Screen://close。
圖3 彈屏客戶端在注冊(cè)表信息圖
整個(gè)彈屏模塊的消息分為2類,分別是客戶端向服務(wù)端發(fā)送的注冊(cè)消息和服務(wù)端向客戶端發(fā)送的彈屏消息??蛻舳说淖?cè)消息為:
測(cè)試環(huán)境如圖4所示,2臺(tái)PC機(jī)和2個(gè)固定的IP電話分別對(duì)應(yīng)2個(gè)客服,分機(jī)號(hào)碼分別為121和122,座席的工號(hào)分別為1001和1002,對(duì)應(yīng)的座席隊(duì)列是200和201,PC機(jī)上裝有如圖5所示的彈屏客戶端,呼叫中心的號(hào)碼是8000。3個(gè)客戶的電話號(hào)碼是6001、6002和6003。當(dāng)客戶6001打呼叫中心號(hào)碼8000時(shí),系統(tǒng)會(huì)提示 “自動(dòng)服務(wù)請(qǐng)按1,人工服務(wù)請(qǐng)按2”。然后二次撥號(hào)撥 “2”時(shí),進(jìn)入座席號(hào)碼121,此時(shí)座席121的座機(jī)響鈴,同時(shí)彈出Web頁(yè)面,上面顯示如圖6(a)所示出客戶6001的相關(guān)信息。當(dāng)客戶6002打呼叫中心號(hào)碼8000時(shí),經(jīng)過(guò)同上的流程,最后彈出的頁(yè)面如圖6(b)所示W(wǎng)eb頁(yè)面。經(jīng)過(guò)測(cè)試,證明該模塊不僅具有很好的兼容性,而且性能穩(wěn)定,效率高,能滿足呼叫中心的業(yè)務(wù)需要。
圖4 測(cè)試環(huán)境網(wǎng)絡(luò)結(jié)構(gòu)圖
圖5 客戶端軟件啟動(dòng)示意圖
圖6 彈屏的結(jié)果圖
基于Asterisk的呼叫中心系統(tǒng)上設(shè)計(jì)了一種新的客戶資料彈屏模塊。該模塊經(jīng)過(guò)測(cè)試不僅具有性能穩(wěn)定和效率高的特點(diǎn),而且便于進(jìn)行系統(tǒng)的集成,充分滿足了客服人員對(duì)客戶資料進(jìn)行管理和與客戶進(jìn)行良好溝通的需要,使得客服與客戶之間的交互更加方便和及時(shí)。
[1]趙建濤,鄭永靜.基于軟交換平臺(tái)Asterisk的電力呼叫中心的設(shè)計(jì)與實(shí)現(xiàn) [J].電力科學(xué)與工程,2007,23(4):59-61.
[2]潘云良,楊觀賜,周應(yīng)權(quán).基于Asterisk與Open VPN的企業(yè)集團(tuán)IP分布式呼叫中心 [J].計(jì)算機(jī)應(yīng)用,2010,30(3):756-760.
[3]譚蓉.基于軟交換技術(shù)的分布式呼叫中心設(shè)計(jì)和開發(fā) [D].湖南:湖南大學(xué),2012.
[4]湯卓,凡欒杰.基于Asterisk的VoIP解決方案 [J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2005(7):79-81,26.
[5]鄧國(guó)棟,胡越明,自英彩.基于Asterisk的軟交換運(yùn)營(yíng)平臺(tái)設(shè)計(jì) [J].計(jì)算機(jī)工程,2007,23(33):145-147.
[6]張毅,詹艷.基于插件的軟交換實(shí)驗(yàn)系統(tǒng)的研究 [J].計(jì)算機(jī)工程與設(shè)計(jì),2011,6(32):2159-2162.