開源項目中小云計算平臺應用:呼叫中心
【IT168信息化】以Digium公司開源的軟交換軟件Asterisk為基礎使用Freepbx作為交換機&呼叫中心 Web管理系 統管理語音交互樹和呼叫中心各個隊列座席策略等,基于AsteriskJavaAMI接口自行開發一套CtiProxy座席代理軟件,使用Flex技術實 現座席端隊列動態顯示控件,實現座席動態登錄,退出。使用WEB集成本企業的CRM實現來電彈屏,電話來顯記錄及日常呼叫操作,降低了集成成本。使用快捷 鍵實現呼叫轉移,三方呼叫,臨時退出(恢復進入)隊列,強插,監聽等基本呼叫中心功能,基本滿足了30座席400呼叫中心基本日常運作。
4.1 所用開源項目介紹
Asterisk( www.asterisk.org)
“Asterisk是一款實現電話用戶交換機(PBX)功能的自由軟件、開源軟件。Asterisk提供完善PBX功能,可以連接多種不同的電話終 端, 包括普通電話機,IP電話機,軟電話等,支持多種主流的IP電話協議和系統接口。Asterisk軟件提供很多以前只有昂貴的專業PBX系統才支持的功 能,比如:語音信箱,會議電話,交互式語音應答和自動電話轉接等。由于該軟件開放的性質,用戶可以靈活的配置方便的擴展系統的功能,甚至編程開發自己所需 功能的模塊。”摘自-中文維基百科。這里采用asterisk作為方案的基礎是因為asterisk不但是VOIP CALLCENTER應用用戶最多的開源平臺,而且Digium公司提供了一系列的硬件設備為系統搭建提供穩定的支撐。這里作為模擬PSTN接入卡,采用 的是DIGIUM公司原裝的TDM2400P轉接卡實現24口FXS接入,為30座席模擬進線提供支持。
FreePBX( www.freepbx.org)
“FreePBX 是一個最強大的 GUI(基于網頁的)配置Asterisk 的工具。FreePBX 之前被稱為 Asterisk Management Portal,是 IP 電話工具 Asterisk 的標準化實現,可提供 Web 配置界面和其他工具。”摘自-中文維基百科。FreePBX作為最好的Asterisk配置工具,已經有超過300萬個下載,截至本文發布版本也已經發展 到3.0。下圖為FreePBX監控Asterisk工作狀態的狀態面板,能夠顯示相關的運行信息。
▲圖4-1
AsteriskJava (www.asterisk-java.org)
AsteriskJava 是一個使用java語言編寫的一套通過使用Fast-CGI(基于tcp的asterisk 代理接口快速實現)或AMI(asterisk 管理接口)協議和asterisk進行通訊的一套SDK(基礎開發類庫)。使用AsteriskJava 能夠實現監聽Asterisk平臺呼叫事件(實現客戶端彈屏通知),座席登錄退出,呼出或掛機等語音操作,實現了一個客戶端通過網絡操作Asterisk 的一個代理接口,為對Asterisk進行二次應用集成開發提供了很友好的跨平臺解決方案。
4.2 30座席純軟交換呼叫中心系統搭建
上圖為系統基本架構,首先使用安裝有TDM2400P的一臺服務器安裝FreePBX和Asterisk搭建呼叫中心系統,然后開發 CallCenterProxy(呼叫中心座席網關)及Flex座席控件集成WebCrm。具體搭建過程(IVR,ACD,QUEUE)請參考相關項目文 檔或其他互聯網公開發表文章,本文不再累述,本文著重強調在搭建過程中需要注意到的一些事項以及關鍵開發過程中遇到的一些技術問題解決方案。
4.2.1 動態座席
一個24*7正常運作的呼叫中心一般都是采用多班人次進行倒班來交替工作的,不可避免多個座席人員使用同一個座席來進行工作,也不可避免采用其他人 的工 位進行臨時工作,這時候座席動態化的需求就顯而易見。動態座席是指座席人員使用客戶端軟件在登錄的時候,指定自己的座席工號登錄座席,座席人員本身通訊可 以使用純電話軟件,也可以采用座席所在的固定接入分機,有了動態座席的支持,那么座席人員可以靈活的機動選擇臨時工位辦公。
本方案動態座席,主要使用Asterisk本身所支持的agent特性,在多個隊列(Queue)中設置Agent登錄作為座席識別標識,只有使用 AgentLogin指令(AMI協議)登錄到指定的隊列才能真正實現座席在線,并可在隨時使用AgentLogoff退出隊列。下面介紹具體在 FreePBX中的配置。
首先配置Device,Users,Agent,全部使用分機號碼進行關聯。
其次在Queue配置中,使用Agent進行配置,這樣只有登錄的agent才作為有效座席。
這里我們舉例隊列600為客服座席隊列,811,812,813,823為客服座席,這里配置上使用的是A811-823來配置使用座席作為隊列中的成員,并且當隊列成員為空能夠進行跳轉到其他指定分機或隊列,當座席成員為忙狀態能夠自動分配到空閑的座席。
4.2.2 自動報讀座席工號
座席工號是為了方便統計客戶服務質量而設計的,一方面為了在于客戶溝通過程中能夠方便用戶能夠投訴或反映座席工作態度質量,一方面在后臺進行工作分 配的 時候有能夠快速標識座席人員。所以在客戶被接聽的第一時間首先自動報讀座席工號,是一個呼叫中心運營水平的基本體現。這里我們使用asterisk- 1.4.23.2版本作為基礎進行定制修改,采用自定義撥號規則和修改QUEUE源代碼實現。
首先在extention_custorm.conf 增加自定義的語音讀報工號的撥號規則,同時把錄制好的queue-report-agentid-1和2都要防止在默認錄音文件存儲目錄,然后再修改 asterisk-1.4.23.2/apps/app-queue.c,在callqueue定義部分首先定義參數,默認開啟報讀工號功能 unsigned int baohao:1; 在trycalling函數內部/* Stop music on hold */和/* If appropriate, log that we have a destination channel */中間處增加如下調用自定義的報號規則代碼:
修改完代碼,需要編譯安裝一遍定制的asterisk。
4.2.3座席端Flex控件集成WebCrm
要想實現座席端控件的基本功能,必須首先實現代理服務器作為AMI呼叫事件的動作偵聽,同時實時與座席端控件進行通訊。
CallCenterProxy服務器端使用java開發一個FlashCtiBarServer服務器,偵聽flexsocket認證端口 843,如 果有flex客戶端連接就產生一個Adapter,通知客戶端的通訊安全策略認證通過,proxy通過實現 AsteriskServerListener,ManagerEventListener來偵聽asterisk本身的各種事件動作,底層基于 AsteriskJava實現。
客戶端控件使用Flex開發,基于Flex sockt技術,直連CallCenterProxy,并維持心跳通訊保持在線。Webcrm使用一個url來直接集成座席控件,使用url通知座席上 線,服務器端根據座席端通訊在一段時間內沒有通訊自動下線退出隊列。客戶端控件使用flex向上呼叫javascript來實現url參數和自定義方法的 綁定,包括彈屏的url等信息可以實現動態設置。
//set the javascript can callback method set the parameter
ExternalInterface.addCallback("setAgentid",setMonitorAgentid);
ExternalInterface.addCallback("setPopBase",setPopBaseUrl);
ExternalInterface.addCallback("setMornitorQueues",setMornitorQueues);
ExternalInterface.addCallback("connect",connectToServer);
//call the javascript method to set parms And start connect server
ExternalInterface.call("startclient");
▲
以下為WEBCRM呼叫彈屏界面
▲
在本方案中著重描述了關于web控件集成,動態座席等一些特定應用場景,其他一些通用呼叫中心功能特性配置,請自行配置,包括錄音文件的按日期分目 錄轉 存成mp3等請參考作者博客。本系統開發完成在2009年7月,最開始只有12座席,發展到目前30座席10并發話路,曾經連續穩定運營4個月未服務器重 新啟動,只是用一臺奔騰雙核cpu的pc機,cpu平均使用率只有5%,峰值30%左右,來去電彈屏和座席登錄只做了非常小的修改就完成系統集成,為以后 擴充高一個數量級的呼叫中心提供有了一定的借鑒意義。
作者介紹:
·Tony湯文志 目前供職于中衛萊康任 系統研發部總監兼IT支持部總監10年無線互聯網軟件研發經驗,曾供職于多家無線互聯網企業包括華友世紀(Nasdq:HRAY),搜狐 (Nasdq:SOHU)負責無線互聯網研發工作,參與多個電信級的運營商無線增值平臺的開發。2007年進入遠程健康管理企業中衛萊康負責遠程心電監護 平臺的研發和系統支持工作,在遠程健康管理平臺建設過程中應用各種開源項目,積極推動開源項目的推廣使用,倡導中小企業優先應用開源項目搭建支撐平臺。點擊作者微博 博客 郵件
·Frank 趙杰 目前供職于中衛萊康 任it支持經理 參與本文郵件方案和監控方案編寫