陳曉冬,李煒,王晶
(1 北京郵電大學(xué)網(wǎng)絡(luò)與交換技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,北京 100876;2 東信北郵信息技術(shù)有限公司,北京 100191)
IVDR(Interactive Voice and Data Response,交互式話音數(shù)據(jù)應(yīng)答)面向TD-SCDMA網(wǎng)絡(luò),將傳統(tǒng)電路域IVR(Interactive Voice Response,交互式話音應(yīng)答)業(yè)務(wù)和數(shù)據(jù)域多媒體融合的一種業(yè)務(wù)。手機(jī)終端使用IVDR客戶端軟件,可以實(shí)現(xiàn)CS(Circuit Switching,電路交換)域與PS(Packet Switching,分組交換)域的并發(fā)。這種并發(fā)彌補(bǔ)了傳統(tǒng)IVR業(yè)務(wù)[1]或者數(shù)據(jù)域業(yè)務(wù)通信方式單一的缺點(diǎn),提升了客戶使用體驗(yàn)與服務(wù)質(zhì)量,降低了企業(yè)營運(yùn)成本。話言和數(shù)據(jù)的結(jié)合也成為了移動增值市場的“亮點(diǎn)”業(yè)務(wù)[2]。本文提出的IVDR-12580訂票系統(tǒng),基于IVDR平臺,與現(xiàn)有12580系統(tǒng)進(jìn)行融合,針對TD-SCDMA用戶提供IVDR形式的電影票預(yù)訂業(yè)務(wù)。
JavaEE(Java Platform,Enterprise Edition)作為優(yōu)秀的多層次分布式企業(yè)應(yīng)用的解決方案,它以組件為基礎(chǔ)的設(shè)計開發(fā)理念能夠有效降低開發(fā)成本,提高開發(fā)速度。SSH(Spring、Struts and Hibernate)框架作為輕量級的JavaEE框架,具有高性能、可維護(hù)性以及可重用性的特點(diǎn)[3]。
本論文在提出基于IVDR的12580電影訂票平臺解決方案的基礎(chǔ)上,對業(yè)務(wù)子系統(tǒng)進(jìn)行了設(shè)計和實(shí)現(xiàn)。業(yè)務(wù)子系統(tǒng)作為一個JavaEE應(yīng)用發(fā)布,基于SSH框架構(gòu)建,并根據(jù)系統(tǒng)需要與外界不同實(shí)體的交互對業(yè)務(wù)邏輯層進(jìn)行了擴(kuò)展。最后,以數(shù)據(jù)推送為核心闡述了IVDR-12580訂票業(yè)務(wù)的關(guān)鍵流程及實(shí)現(xiàn)技術(shù)。
12580是中國移動為用戶提供的一個綜合信息服務(wù)平臺。12580主要基于話音通話(包括自助IVR語音以及人工語音)為用戶服務(wù),同時以短信和彩信服務(wù)作為輔助(通常是將用戶的查詢結(jié)果以短信或者彩信方式下發(fā)給用戶)。
受話音通話的限制,12580業(yè)務(wù)存在服務(wù)流程僵硬、操作單一繁瑣以及用戶交互單向性等方面的瓶頸。通信媒介的擴(kuò)充是解決這些瓶頸的思路之一:IVDR將通信媒介由單一的話音擴(kuò)充到話音和數(shù)據(jù)并發(fā),很好地解決了這個問題。從表1列出了訂電影票業(yè)務(wù)在使用IVDR前后業(yè)務(wù)場景的對比。這種采用IVDR方式的12580業(yè)務(wù),稱為IVDR-12580業(yè)務(wù)。
圖1是IVDR-12580電影訂票平臺的系統(tǒng)總體結(jié)構(gòu),其中白色部分為原有功能實(shí)體,灰色部分為新增實(shí)體??梢钥闯鯥VDR-12580能在原有平臺上進(jìn)行較好的擴(kuò)展而不影響原有的功能。下面簡要說明新增實(shí)體的功能。
手機(jī)客戶端軟件:包含手機(jī)瀏覽器,可以通過HTTP(HyperText Transfer Protocol)消息進(jìn)行頁面訪問;可以調(diào)用手機(jī)呼叫模塊發(fā)起12580呼叫;支持TCP(Transmission Control Protocol)消息,建立與業(yè)務(wù)子系統(tǒng)直接的鏈接從而接收坐席側(cè)的數(shù)據(jù)推送。
圖1 IVDR-12580整體解決方案
IVDR插件:以插件形式安裝在坐席側(cè)瀏覽器(目前僅支持IE),可以接收12580呼叫插件的呼叫信息,從而建立用戶話音和數(shù)據(jù)的對應(yīng);支持TCP消息,可以接受用戶側(cè)發(fā)起的數(shù)據(jù)推送。
IVDR-12580業(yè)務(wù)子系統(tǒng):作為平臺的核心子系統(tǒng),支持手機(jī)側(cè)和座席側(cè)的頁面訪問;支持與手機(jī)側(cè)、座席側(cè)建立TCP數(shù)據(jù)鏈接進(jìn)行數(shù)據(jù)推送;與12580原有數(shù)據(jù)服務(wù)器如FTP(File Transfer Protocol)服務(wù)器、Web服務(wù)器等進(jìn)行數(shù)據(jù)交互。
表1 傳統(tǒng)12580和IVDR-12580的訂電影票業(yè)務(wù)場景比較
根據(jù)圖1的系統(tǒng)總體結(jié)構(gòu),業(yè)務(wù)子系統(tǒng)和外界實(shí)體主要有6個接口,各接口的數(shù)據(jù)交互設(shè)計如表2所示。
表2 業(yè)務(wù)子系統(tǒng)接口設(shè)計說明表
基于以上數(shù)據(jù)交互接口,業(yè)務(wù)子系統(tǒng)應(yīng)該具有以下主要模塊:
Web服務(wù)器模塊:提供一個Web容器,根據(jù)HTTP請求實(shí)例化Servlet或者JSP(Java Server Pages)并產(chǎn)生HTTP響應(yīng)給瀏覽器。
邏輯處理模塊:根據(jù)業(yè)務(wù)流程提供頁面跳轉(zhuǎn)的邏輯,調(diào)用不同的模塊完成相應(yīng)的功能。
DAO(Data Access Object)模塊:封裝數(shù)據(jù)源的訪問操作,為邏輯處理模塊等其他模塊提供數(shù)據(jù)庫訪問API。
TCP模塊:與手機(jī)客戶端或者座席瀏覽器插件建立TCP鏈接,處理用戶的登錄、注銷以及數(shù)據(jù)推送請求。
FTP模塊:完成FTP客戶端功能,可以遠(yuǎn)程登錄FTP進(jìn)行文件上傳下載等操作。
SOAP(Simple Object Access Protocol)模塊:完成SOAP客戶端功能,根據(jù)SOAP協(xié)議請求Web服務(wù)器的數(shù)據(jù)。
3.3.1 業(yè)務(wù)邏輯層的封裝與擴(kuò)展
如前文所述,業(yè)務(wù)子系統(tǒng)采用了JavaEE作為技術(shù)解決方案。JavaEE應(yīng)用通常包含4個層次[4]:客戶層、Web層、業(yè)務(wù)層以及EIS(Enterprise Information System,企業(yè)信息系統(tǒng))層。傳統(tǒng)的業(yè)務(wù)層是由EJB(Enterprise Java Bean)作為服務(wù)器組件,來實(shí)現(xiàn)企業(yè)應(yīng)用的業(yè)務(wù)邏輯。然而正如Rod Johnson所說,EJB笨重、臃腫而且并不是真正意義上面向?qū)ο骩5]。SSH框架整合了Spring、Struts以及Hibernate技術(shù),提供了一個輕量級并真正實(shí)現(xiàn)了MVC(Modle-View-Controller)設(shè)計模式的JavaEE架構(gòu)。與傳統(tǒng)采用SSH框架的JavaEE應(yīng)用通常只與數(shù)據(jù)庫進(jìn)行交互不同的是,IVDR-12580業(yè)務(wù)子系統(tǒng)需要與整個組網(wǎng)環(huán)境中的多種設(shè)備進(jìn)行各種方式的消息交互。根據(jù)上文提供的解決方案,這些交互主要包括:
(1)通過JDBC對數(shù)據(jù)庫進(jìn)行訪問;
(2)通過TCP協(xié)議與手機(jī)客戶端、座席瀏覽器插件進(jìn)行通信;
(3)通過SOAP協(xié)議與Web服務(wù)器進(jìn)行通信;
(4)通過FTP協(xié)議與FTP服務(wù)器上傳下載文件。
通過Spring和Hibernate對DAO組件的支持,可以輕易地實(shí)現(xiàn)子系統(tǒng)對數(shù)據(jù)庫的邏輯訪問,這也是SSH框架的優(yōu)勢功能之一。但是,SSH框架并未對如上所列的其他交互功能提供支持。因此,為實(shí)現(xiàn)這些多元化的交互功能,需要對業(yè)務(wù)邏輯層進(jìn)行擴(kuò)展。
圖2所示的SSH架構(gòu)中,對于每一個外界實(shí)體,業(yè)務(wù)邏輯層都提供一個組件進(jìn)行交互,然后通過封裝一個或者幾個組件完成一個相對完整的業(yè)務(wù)邏輯Service;那么我們就可以得到一個功能完備的業(yè)務(wù)邏輯層。對Web層來說,只需要調(diào)用相應(yīng)的Service方法,而無需擔(dān)心組網(wǎng)結(jié)構(gòu)和通信協(xié)議等細(xì)節(jié)。
圖2 具備擴(kuò)展業(yè)務(wù)邏輯層的軟件架構(gòu)
3.3.2 基于依賴注入思想的交互設(shè)計
依賴注入是Spring的一個核心思想。依賴注入解除了調(diào)用者與被調(diào)用者之間的深度耦合。借助依賴注入,Spring容器用來生成和管理對象[6]。對其他對象的依賴,由第三方的Spring容器“注入”;這樣,與“面向接口編程”的思想結(jié)合,就可以構(gòu)建一個松耦合、易擴(kuò)展的多層次軟件結(jié)構(gòu)。
從圖2可以看出,業(yè)務(wù)邏輯層與EIS層的交互基于DAO、TCP、FTP以及SOAP 4類組件。每個組件各有一個實(shí)現(xiàn)類來實(shí)現(xiàn)與外部實(shí)體的交互細(xì)節(jié)。這些實(shí)現(xiàn)類通過配置文件交給Spring容器處理。與業(yè)務(wù)邏輯層的“模型”Service類關(guān)聯(lián)的是這些組件實(shí)現(xiàn)類的接口,通過“注入”這些組件實(shí)際實(shí)現(xiàn)的對象,完成自身的業(yè)務(wù)邏輯。得益于這種設(shè)計,無論組件的具體實(shí)現(xiàn)如何變化,只要遵守接口約束的“契約”,業(yè)務(wù)邏輯層就無需更改:依賴注入實(shí)現(xiàn)了調(diào)用與被調(diào)用之間依賴的倒置[7]。Web層與業(yè)務(wù)邏輯層的交互遵循同樣的道理:Web層關(guān)聯(lián)業(yè)務(wù)邏輯的Service接口,實(shí)現(xiàn)類封裝具體實(shí)現(xiàn)并交由Spring容器控制。
如前文所述,用戶接入IVDR-12580業(yè)務(wù)是通過定制的手機(jī)客戶端接入。手機(jī)客戶端開啟后,會發(fā)送一個登錄消息給業(yè)務(wù)子系統(tǒng),后者解析這個TCP消息得到用戶的手機(jī)號、IP(Internet Protocol)、端口、手機(jī)操作系統(tǒng)以及手機(jī)分辨率等信息,并將這些信息保存在數(shù)據(jù)庫的phoneuserlogin表中。作為登錄消息的響應(yīng),業(yè)務(wù)子系統(tǒng)將IVDR-12580業(yè)務(wù)的首頁URL(Uniform Resource Locator)回復(fù)給用戶。用戶通過這個URL并攜帶手機(jī)號發(fā)送HTTP訪問業(yè)務(wù)首頁,業(yè)務(wù)子系統(tǒng)根據(jù)手機(jī)號查詢該用戶手機(jī)系統(tǒng)和屏幕分辨率從而選擇合適的首頁回復(fù)給用戶,最終顯示在用戶的手機(jī)客戶端。圖3表現(xiàn)了用戶登錄并獲得首頁的流程。
客服在打開IVDR-12580頁面之后,瀏覽器的IVDR插件也會進(jìn)行與手機(jī)客戶端相同的登錄模式:通過TCP將客服ID(IDentity)以及IP端口信息發(fā)送給業(yè)務(wù)子系統(tǒng),后者將信息保存在servuserlogin表中。與手機(jī)側(cè)不同的是,業(yè)務(wù)子系統(tǒng)無需在TCP響應(yīng)消息中攜帶首頁URL。
圖3 用戶登錄流程(尖括號內(nèi)標(biāo)注消息協(xié)議和消息主要內(nèi)容)
用戶在登錄手機(jī)客戶端后,用戶可以瀏覽選擇網(wǎng)頁提供的影院影片等信息。在每一個頁面都有一個“呼叫客服”的按鈕。用戶可以在瀏覽任何頁面的時候呼叫客服,尋求查詢、協(xié)助操作等服務(wù)??头诮油ㄓ脩艉艚兄?,在自己的瀏覽器上可以看到用戶呼叫時瀏覽的頁面。這樣,用戶和客服之間就建立了話音和數(shù)據(jù)兩種溝通媒介,這正是IVDR的業(yè)務(wù)形態(tài)。
圖4詳細(xì)描述了這個流程。可以看出,用戶觸發(fā)“呼叫客服”后,業(yè)務(wù)子系統(tǒng)通過向手機(jī)客服端發(fā)送TCP消息告知手機(jī)要撥打的電話號碼。然后手機(jī)客戶端直接調(diào)用手機(jī)的呼叫模塊進(jìn)行呼叫。另外,為了保證客服能得到用戶呼叫時瀏覽的頁面,業(yè)務(wù)子系統(tǒng)實(shí)時記錄用戶的訪問記錄。這樣,客服的瀏覽器插件在收到呼叫請求后,會將用戶手機(jī)號碼和客服ID以HTTP請求發(fā)送給業(yè)務(wù)子系統(tǒng)。業(yè)務(wù)子系統(tǒng)一方面記錄用戶手機(jī)號與客服ID的對應(yīng)關(guān)系(方便后續(xù)進(jìn)行數(shù)據(jù)推送);另一方面根據(jù)用戶手機(jī)號查到用戶當(dāng)前訪問頁面,并將頁面內(nèi)容以HTTP響應(yīng)回復(fù)給客服瀏覽器,保證了客服在接通用戶電話的同時能夠看到用戶當(dāng)前瀏覽頁面。
圖4 客服接通用戶來電流程
如同對話之于語音媒介,數(shù)據(jù)推送是用戶和客服在數(shù)據(jù)媒介上的通信手段。用戶可以將當(dāng)前頁面推送給客服請求協(xié)助處理,客服可以將處理結(jié)果頁面推送給用戶。利用這種方式完成數(shù)據(jù)域的請求和應(yīng)答。圖5表現(xiàn)了客服推送頁面到用戶手機(jī)客戶端的處理流程。
從圖5可以看出,完成數(shù)據(jù)推送主要由兩個Action類執(zhí)行:PushAction類和AcceptAction類。PushAction類是當(dāng)座席側(cè)客服點(diǎn)擊頁面上的“推送給用戶”按鈕觸發(fā);首先將客服瀏覽器的頁面數(shù)據(jù)保存,然后在數(shù)據(jù)庫中查詢客服ID對應(yīng)的用戶手機(jī)號碼,最后調(diào)用tcpService的方法發(fā)送TCP。tcpService通過用戶手機(jī)號碼可以得到用戶手機(jī)的IP和端口,然后發(fā)送TCP消息。TCP消息的內(nèi)容是手機(jī)客戶端將要訪問的URL。
無論客服推送何種類型的頁面,業(yè)務(wù)子系統(tǒng)發(fā)給手機(jī)客戶端的URL都是一樣的。攜帶這個URL的HTTP請求(同時攜帶用戶的手機(jī)號)都會觸發(fā)AcceptAction類:根據(jù)手機(jī)號取出保存的頁面數(shù)據(jù);分析頁面數(shù)據(jù)中的頁面類型決定前轉(zhuǎn)到相應(yīng)的JSP。JSP根據(jù)AcceptAction對象提供的數(shù)據(jù)形成HTTP響應(yīng)回復(fù)給手機(jī)客戶端。最終用戶在手機(jī)客戶端上看到客服推送的頁面。
在手機(jī)用戶和客服之間建立IVDR通信之后,IVDR-12580訂票平臺能夠?yàn)橛脩籼峁┴S富多樣的服務(wù)方式。用戶的每一步操作都可以由客服協(xié)助完成,然后查看操作結(jié)果。圖6展現(xiàn)了用戶請求客服協(xié)助完成訂單確認(rèn)的流程。坐席通過與用戶的語音溝通以及頁面的相互推送確認(rèn)訂單,業(yè)務(wù)子系統(tǒng)收到請求后觸發(fā)相應(yīng)Action,然后調(diào)用soapClient組件請求Web服務(wù)器處理訂單,將處理結(jié)果前轉(zhuǎn)到訂票結(jié)果頁面。最后客服將頁面推送給用戶。用戶查看訂票結(jié)果。
圖5 客服向用戶進(jìn)行數(shù)據(jù)推送流程
IVDR業(yè)務(wù)相對于傳統(tǒng)話音通信融合了話音和數(shù)據(jù)兩種通信媒介,提供了豐富的應(yīng)用場景。
圖6 用戶IVDR訂票流程
進(jìn)一步研究可以發(fā)現(xiàn),IVDR業(yè)務(wù)不僅局限于訂票業(yè)務(wù),甚至不僅局限于電信運(yùn)營系統(tǒng)。它可以為任何具有呼叫中心的客戶服務(wù)系統(tǒng)提供解決方案。
[1] Wang J, Liao J X, Zhu X M, Shen Q W. The development and key technology of mobile intelligent peripheral in China[J]. Chinese Journal of Electronics, 2002,(4):238.
[2] 廖建新. 移動增值業(yè)務(wù)發(fā)展趨勢[J]. 電信工程技術(shù)與標(biāo)準(zhǔn)化,2004,(05):3-5.
[3] 戚琦,廖建新,王純. 基于敏捷方法的輕量級J2EE架構(gòu)的應(yīng)用[J]. 計算機(jī)系統(tǒng)應(yīng)用,2007,(02):56.
[4] 孫衛(wèi)琴. Tomcat與Java Web開發(fā)技術(shù)詳解[M]. 北京:電子工業(yè)出版社,2009.
[5] Johnson R, hoeller J. Expert One-on-one J2EE Development without EJB[M], Wiley Publishing.Inc, 2004.
[6] Walls C, Breidenbach R著,畢慶紅,王軍譯. Spring in Action(第二版)中文版[M]. 北京:人民郵電出版社,2008.
[7] 彭家恒,廖建新,王純,阮友森. 基于MVC的WV網(wǎng)關(guān)系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J]. 北京工商大學(xué)學(xué)報(自然科學(xué)版),2007,(02):38.