国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Doubango的座席控件的設(shè)計(jì)與實(shí)現(xiàn)

2015-11-08 08:32:36田海
關(guān)鍵詞:座席控件調(diào)用

田海

(江西九江供電公司,江西九江332000)

基于Doubango的座席控件的設(shè)計(jì)與實(shí)現(xiàn)

田海

(江西九江供電公司,江西九江332000)

為了實(shí)現(xiàn)將發(fā)送及接收SIP Message消息的功能封裝成一個(gè)供第三方調(diào)用的獨(dú)立模塊,在使用Doubango庫的基礎(chǔ)之上,通過ActiveX控件及動(dòng)態(tài)鏈接庫等關(guān)鍵技術(shù),設(shè)計(jì)了良好緊湊的軟件架構(gòu),封裝了SIP Message消息的發(fā)送及接收功能,并充分考慮用戶體驗(yàn),完成了C/S和B/S架構(gòu)均可調(diào)用的座席控件。通過預(yù)定義SIP消息ID及消息體格式,用戶可以發(fā)送并響應(yīng)服務(wù)器支持的所有消息,指出了本控件的不足之處并說明了以后的研究方向。

座席控件SIP Doubango ActiveX

1 引言

座席端軟件在一個(gè)完整的會(huì)議控制系統(tǒng)中占有十分重要的地位。座席操作員通過座席端軟件與CDMS(呼叫調(diào)度管理服務(wù)器,用于管理與座席控件之間的信息交互,執(zhí)行系統(tǒng)邏輯功能)服務(wù)器進(jìn)行交互,完成對(duì)通訊設(shè)備的控制和相關(guān)信息的交換,如座席的登錄、注銷、呼出、應(yīng)答、形成會(huì)議和釋放會(huì)議等動(dòng)作,以上操作都是通過座席端軟件與CDMS的通信完成的[1]。

為了加快座席端軟件的開發(fā)速度,同時(shí)減少軟件模塊間的耦合度,通常把座席端軟件分為業(yè)務(wù)模塊和通信模塊。由于用戶需求經(jīng)常變化,業(yè)務(wù)模塊也會(huì)隨著變更,所以該模塊一般都需要進(jìn)行定制開發(fā)。而通信模塊的功能則相對(duì)固定,所以可以將通信模塊封裝為一個(gè)獨(dú)立的控件,供上層業(yè)務(wù)模塊調(diào)用[2]。業(yè)務(wù)模塊開發(fā)者不必掌握Socket通信相關(guān)技術(shù),更不用了解座席端與服務(wù)器間的通信協(xié)議,開發(fā)者只需訪問控件的屬性和方法并響應(yīng)控件的事件,就能夠?yàn)樽塑浖砑酉鄳?yīng)的通信控制功能[3]。

2 關(guān)鍵技術(shù)

2.1SIP

會(huì)話初始化協(xié)議(Session Initiation Protocol,SIP)是由因特網(wǎng)工程任務(wù)組(Internet Engineering Task Force,IETF)制定的多媒體通信協(xié)議。它是一個(gè)基于文本的應(yīng)用層控制協(xié)議,用于創(chuàng)建、修改和釋放一個(gè)或多個(gè)參與者的會(huì)話[4]。廣泛應(yīng)用于下一代網(wǎng)絡(luò)(Next Generation Network,NGN)以及IP多媒體子系統(tǒng)(IP Multimedia Subsystem,IMS)的網(wǎng)絡(luò)中,可以支持并應(yīng)用于語音、視頻和數(shù)據(jù)等多媒體業(yè)務(wù),同時(shí)也可以應(yīng)用于呈現(xiàn)和即時(shí)消息等特色業(yè)務(wù)。

2.2Doubango

Doubango是一個(gè)開源的VOIP基礎(chǔ)平臺(tái),并能用于桌面系統(tǒng)和嵌入式的開源框架,該框架底層和中間層使用ANSI-C編寫,它是一系列API的集合,實(shí)現(xiàn)多種協(xié)議功能。TinyWRAP是一個(gè)由C++實(shí)現(xiàn)的包裝類,封裝Doubango工程所有API,并使用SWIG技術(shù)提供了C#接口。TinySIP實(shí)現(xiàn)了SIP協(xié)議,定義了SIP事件的參數(shù),該框架還包含TinyMedia、TinyRTP、TinyDAV、TinySDP、TinyMSRP和TinyXCAP等子項(xiàng)目[5]。

2.3ActiveX

ActiveX控件是微軟IE支持的一種軟件組件或?qū)ο?,可以將其插入到Web頁面中,實(shí)現(xiàn)在瀏覽器端執(zhí)行動(dòng)態(tài)程序功能,以增強(qiáng)瀏覽器端的動(dòng)態(tài)處理能力。作為針對(duì)Internet應(yīng)用開發(fā)的技術(shù),ActiveX被廣泛應(yīng)用于Web服務(wù)器以及客戶端的各個(gè)方面。

3 設(shè)計(jì)方案

3.1系統(tǒng)設(shè)計(jì)

座席控件以動(dòng)態(tài)鏈接庫的形式存在,供C/S、B/S客戶端調(diào)用(B/S調(diào)用時(shí)需將控件封裝成.cab包,首次訪問控件時(shí)瀏覽器會(huì)自動(dòng)安裝該控件),通過SIP信令與軟交換進(jìn)行交互,使用時(shí)需要占用軟交換系統(tǒng)中的一個(gè)號(hào)碼資源。

座席業(yè)務(wù)功能通過本控件收發(fā)Sip Message消息來實(shí)現(xiàn)。座席端軟件與CDMS之間的通信是建立在TCP/IP的基礎(chǔ)上,具體的通信包為發(fā)送自定義格式的SIP Message消息,不同類型的消息具有唯一的消息ID以及相應(yīng)的格式。

上層調(diào)用者要實(shí)現(xiàn)某項(xiàng)功能時(shí),調(diào)用接口函數(shù)發(fā)送相應(yīng)的Sip消息。該函數(shù)首先創(chuàng)建私有消息對(duì)象,然后根據(jù)AGENT消息格式生成Sip Message Body字符串,發(fā)送至軟交換服務(wù)器,再由軟交換服務(wù)器轉(zhuǎn)發(fā)至CDMS處理。接收CDMS服務(wù)器返回的消息結(jié)果后,首先解析其消息字符串生成私有消息對(duì)象,然后根據(jù)消息的ID調(diào)用已經(jīng)定義的事件,將消息結(jié)果傳給上層調(diào)用者,如圖1所示。

圖1 座席控件系統(tǒng)結(jié)構(gòu)

4 系統(tǒng)實(shí)現(xiàn)

4.1控件接口

ISeatCtrl接口類定義了供第三方調(diào)用的屬性、接口函數(shù)及事件。調(diào)用者只需使用這些公開的信息即可調(diào)用該控件所用功能。

屬性為座席的各項(xiàng)信息,座席通過改變屬性值來設(shè)置應(yīng)急指揮/呼叫中心平臺(tái)和自己相關(guān)的各項(xiàng)參數(shù),如AgentID、AgentPassword、AgentName和綁定的分機(jī)號(hào)碼等信息,以及服務(wù)端的各項(xiàng)參數(shù),如服務(wù)器地址和端口號(hào)等。

接口函數(shù)即是提供給調(diào)用者的各個(gè)功能,如注冊(cè)SipRegister()、組請(qǐng)求GroupReq()和登錄LogIn()等接口函數(shù),事件用來通知調(diào)用者調(diào)用某接口函數(shù)后的結(jié)果。因?yàn)楸究丶捎卯惒讲僮?,調(diào)用者調(diào)用某接口后不會(huì)阻塞,控件的接收消息線程捕獲服務(wù)器返回的操作結(jié)果后,通過事件通知調(diào)用者。如注冊(cè)結(jié)果事件OnSipRegisterResult、組請(qǐng)求結(jié)果事件OnGroupReqResult和登錄結(jié)果事件OnLoginResult等。

4.2具體實(shí)現(xiàn)

SeatCtrl實(shí)現(xiàn)了ISeatCtrl接口,提供了對(duì)接口及事件的具體實(shí)現(xiàn),定義了常量、消息結(jié)構(gòu)和若干私有工具函數(shù)。此外,該類還實(shí)現(xiàn)了IObjectSafety接口,用來以ActiveX形式加載至瀏覽器中,該控件主要UML類圖如圖2所示。

消息結(jié)構(gòu)定義:

其中消息IDwMessageID定義了消息的類型,取值范圍為事先定義的常量集合。如

GroupAsk代表AGENT請(qǐng)求組消息。同時(shí)定義該消息內(nèi)容sMessage為“座席標(biāo)識(shí)(6)”,(6)代表6個(gè)字符。

圖2 主要UML類圖

GroupAns代表AGENT請(qǐng)求組結(jié)果。同時(shí)定義該消息內(nèi)容sMessage為“座席標(biāo)識(shí)(6)+組標(biāo)識(shí)(4)+組名(20)+…”,“…”代表若干個(gè)“組標(biāo)識(shí)”和“組名”的集合。

以上說明了消息的結(jié)構(gòu)及主要字段的含義,下面介紹Sip注冊(cè)、發(fā)送SIP Message消息等功能的實(shí)現(xiàn)過程。

控件的核心類是SipService類。該類主要成員變量為SIP協(xié)議棧sipStack、回調(diào)函數(shù)sipCallback、注冊(cè)會(huì)話regSession,這些成員變量的類定義依賴于Doubango庫。主要成員函數(shù)為開啟服務(wù)Start()、停止服務(wù)Stop()、注冊(cè)Register()和注銷UnRegister()等。此外還定義了注冊(cè)事件onRegistrationEvent和消息事件onMessagingEvent等。

控件的注冊(cè)接口SipRegister最終調(diào)用SipService的注冊(cè)接口Register()。注冊(cè)函數(shù)首先依據(jù)控件各屬性初始化SIP協(xié)議棧sipStack,并將該協(xié)議棧和回調(diào)函數(shù)sipCallback綁定,然后調(diào)用sipStack.start()啟動(dòng)SIP協(xié)議棧,最后根據(jù)該協(xié)議棧初始化注冊(cè)會(huì)話regSession,并且調(diào)用regSession.register()注冊(cè)控件,完成控件的注冊(cè)操作。

控件的注銷接口SipUnRegister最終調(diào)用SipService的注銷接口UnRegister()。注銷時(shí)采用新的線程調(diào)用SIP協(xié)議棧的sipStack.stop()即可完成注銷操作。服務(wù)器返回的注冊(cè)結(jié)果被sipCallback捕獲,然后觸發(fā)SipService的onRegistrationEvent事件。用戶只要監(jiān)聽該事件,即可獲得注冊(cè)結(jié)果。

控件發(fā)送座席命令是通過發(fā)送SIP Message消息完成的。各命令接口中發(fā)送的SIP Message以消息ID和消息內(nèi)容區(qū)分。下面以組請(qǐng)求命令為例介紹發(fā)送SIP Message的過程。

生成消息字符串分為3步。首先,創(chuàng)建消息結(jié)構(gòu)SendMessage,并為各字段賦值,消息ID和消息內(nèi)容如消息結(jié)構(gòu)中所述。然后,將SendMessage轉(zhuǎn)化為字節(jié)數(shù)組,并添加校驗(yàn)字節(jié)碼。最后,為了避免傳輸過程中解析內(nèi)容出錯(cuò),將字節(jié)數(shù)組轉(zhuǎn)化為十六進(jìn)制表示的字符串,每個(gè)字節(jié)占用2個(gè)字符,所以生成的字符串長度為字節(jié)數(shù)組長度的2倍。

接下來是發(fā)送消息。首先通過SipService的SipStack生成發(fā)送消息會(huì)話MyMessagingSession,該會(huì)話類依賴于Doubango庫。然后為該會(huì)話添加自定義的"Content-Type"屬性:AGENT_OCX。最后將字符串轉(zhuǎn)化為UTF8編碼的字節(jié)數(shù)組,調(diào)用send函數(shù)發(fā)送消息。

服務(wù)器返回處理消息命令的結(jié)果被sipCallback捕獲,然后觸發(fā)SipService的onMessagingEvent事件。用戶只要監(jiān)聽該事件,即可獲取處理結(jié)果。

加載控件時(shí),在控件的構(gòu)造函數(shù)中,實(shí)例化SeatCtrlServiceManager類,該類作為全局服務(wù)的管理類,所以采用單例模式實(shí)現(xiàn),保證只被實(shí)例化一次。該類實(shí)現(xiàn)了Sip相關(guān)服務(wù)的初始化以及提供全局訪問的SipService屬性。實(shí)例化SeatCtrlServiceManager時(shí)初始化SipStack,調(diào)用了依賴于Doubango庫的SipStack.initialize(),然后調(diào)用該類的Start()接口,其中調(diào)用SipService的Start()接口,啟動(dòng)SipService服務(wù)。同時(shí)為SeatCtrlServiceManager的SipService屬性的onRegistrationEvent和onMessagingEvent事件分別添加監(jiān)聽函數(shù)。

在注冊(cè)事件onRegistrationEvent的監(jiān)聽函數(shù)中,根據(jù)參數(shù)注冊(cè)事件類型RegistrationEventArgs的值判斷注冊(cè)結(jié)果。如返回REGISTRATION_OK,則調(diào)用自定義事件OnSipRegisterResult,告知第三方調(diào)用者注冊(cè)結(jié)果。

在消息事件onMessagingEvent的監(jiān)聽函數(shù)中,當(dāng)接收到Message消息后,則創(chuàng)建新的線程執(zhí)行解析收到的字節(jié)數(shù)組,完成和發(fā)送SIP Message時(shí)相反的一系列操作,即將字節(jié)數(shù)組先轉(zhuǎn)化為對(duì)應(yīng)的字符串,然后解析字符串生成長度減半的字節(jié)數(shù)組,最后根據(jù)字節(jié)數(shù)組轉(zhuǎn)化為消息結(jié)構(gòu)體,并作為參數(shù)傳至MessageComCase函數(shù)。根據(jù)消息ID及預(yù)定義的格式解析消息內(nèi)容,生成調(diào)用事件時(shí)的參數(shù)并觸發(fā)相應(yīng)的事件。如消息ID為GroupAns,則從消息內(nèi)容中提取出組標(biāo)識(shí)和組名,并觸發(fā)OnGroupReqResult事件。

5 結(jié)束語

用戶通過使用該座席控件可以在桌面軟件和瀏覽器中發(fā)送座席命令,完成呼叫、群呼、形成會(huì)議、釋放會(huì)議、會(huì)議控制、磋商呼叫、強(qiáng)插、強(qiáng)拆和搶接等操作。經(jīng)測試,控件響應(yīng)快速、穩(wěn)定性強(qiáng)和API調(diào)用方式友好,滿足對(duì)座席功能的需求。但是由于只有IE支持ActiveX插件,所以在以B/S方式加載該控件時(shí),只能使用IE瀏覽器。其他瀏覽器訪問時(shí)還需安裝支持ActiveX的插件,用戶使用時(shí)不夠方便,所以開發(fā)更為通用的插件可以作為以后的研究方向。

[1]孫晶波.機(jī)場呼叫中心座席系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].濟(jì)南:山東大學(xué),2012.

[2]馮帥.交通銀行信用卡座席系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2013.

[3]董恭甫.基于ActiveX的呼叫中心座席驅(qū)動(dòng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2012.

[4]張友波,張煥強(qiáng),孫利民.基于SIP的視頻會(huì)議系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2005(21):167-169.

[5]姜懿恒,孫勇,溫向明.統(tǒng)一框架Doubango下的IMS客戶端元素[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(10):86-90,113.

[6]劉立峻.基于ActiveX控件的Internet功能實(shí)現(xiàn)[J].武漢工業(yè)學(xué)院學(xué)報(bào),2004(2):14-17.

Design and Implementation of Agent Control Based on Doubango

TIAN Hai
(State Grid Jiujiang Power Supply Company,Jiujiang Jiangxi 332000,China)

In order to encapsulate the function of sending and receiving SIP Message into an independent module for third party invoking,on the basis of Doubango library,a kind of compact software architecture is designed through Active X control,dynamic link library and other key technologies.In such software architecture,the function of sending and receiving SIP Message is encapsulated,the user experience is fully considered and the agent control that can be invoked by both C/S and B/S is completed.By predefining the ID and message content formulate of SIP message,the user can send and respond to all messages supported by the server.Finally,the disadvantages of the control are pointed out,and the future development direction is indicated.

agent control;SIP;Doubango;Active X

TP311.1

A

1008-1739(2015)19-68-4

定稿日期:2015-09-12

猜你喜歡
座席控件調(diào)用
考慮顧客耐心和實(shí)時(shí)座席轉(zhuǎn)移的聯(lián)絡(luò)中心運(yùn)營指標(biāo)優(yōu)化研究
小小座席卡作用大
新班主任(2020年6期)2020-06-22 13:19:18
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
關(guān)于.net控件數(shù)組的探討
軟件(2018年7期)2018-08-13 09:44:42
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
為什么飛機(jī)座位編號(hào)沒有I,動(dòng)車座位沒有E
人民周刊(2015年5期)2015-09-10 07:22:44
為什么飛機(jī)座位編號(hào)沒有I,動(dòng)車座位沒有E
壹讀(2014年16期)2014-09-04 09:21:50
利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
就這樣玩會(huì)VBA中常見的自定義控件
電腦迷(2012年24期)2012-04-29 00:44:03
略阳县| 马鞍山市| 衡阳县| 城口县| 调兵山市| 华亭县| 南靖县| 宁陕县| 集贤县| 思茅市| 新安县| 黄骅市| 德州市| 宁陕县| 子长县| 彰化市| 辉南县| 凤山县| 文昌市| 白玉县| 上思县| 湖北省| 沅江市| 泰来县| 武川县| 甘南县| 乌鲁木齐县| 安吉县| 陈巴尔虎旗| 新民市| 江达县| 新余市| 南投市| 株洲市| 龙岩市| 榆林市| 克山县| 资源县| 株洲县| 亳州市| 木兰县|