基于A(yíng)sterisk的電話(huà)會(huì)議系統(tǒng)研究與設(shè)計(jì)
近年來(lái),通信行業(yè)的開(kāi)源項(xiàng)目不斷涌現(xiàn),打破了傳統(tǒng)電信設(shè)備制造商對(duì)電信技術(shù)的壟斷,為下一代網(wǎng)絡(luò)(NGN)的發(fā)展注入了無(wú)限活力。 Asterisk是一個(gè)由Digium公司發(fā)起的開(kāi)放源代碼軟件,以通用公共許可證(GNU GPL)的授權(quán)方式發(fā)行。Asterisk運(yùn)行在Linux上,以軟件的方式實(shí)現(xiàn)了(專(zhuān)用分組交換機(jī),PBX)的大部分功能,是一個(gè)較全面的通信平臺(tái),既支持傳統(tǒng)的模擬電話(huà)設(shè)備和數(shù)字電話(huà)設(shè)備,也支持新興的基于網(wǎng)絡(luò)的VoIP語(yǔ)音系統(tǒng)。Asterisk在小企業(yè)預(yù)算可承受的范圍內(nèi)提供了商業(yè)交換機(jī)的功能和可伸縮性。
1 基于Asterisk技術(shù)的電話(huà)會(huì)議系統(tǒng)研究
1.1 Asterisk特點(diǎn)
Asterisk是一款完全用軟件實(shí)現(xiàn),可以運(yùn)行在Linux,BSD,MacOS X等操作系統(tǒng)上的IP分組交換機(jī)產(chǎn)品,是世界上最著名的開(kāi)源VoIP服務(wù)器軟件之一,為各國(guó)的VoIP愛(ài)好者所癡迷。實(shí)際上,Asterisk已經(jīng)成為開(kāi)源項(xiàng)目中語(yǔ)音交換和PBX的標(biāo)準(zhǔn),而且基于Asterisk的VoIP解決方案也已成為許多中小企業(yè)的首選方案。Asterisk可以使用目前流行的編解碼器和協(xié)議將VoIP電話(huà)系統(tǒng)與傳統(tǒng)的公共交換電話(huà)系統(tǒng)集成起來(lái),以較低的通話(huà)費(fèi)用,提供較高的語(yǔ)音質(zhì)量。
Asterisk可以連接數(shù)目眾多的接口類(lèi)型,包括模擬接口、數(shù)字線(xiàn)路,也可以透明地橋接VoIP之間的一些協(xié)議,包括SIP,H.323,IAX,MGCP等協(xié)議。
1.2 Asterisk體系結(jié)構(gòu)
Asterisk體系結(jié)構(gòu)簡(jiǎn)單,與傳統(tǒng)電話(huà)技術(shù)的不同之處在于本質(zhì)上扮演著一個(gè)中間件的角色,連接底層不同的電話(huà)技術(shù)到上層應(yīng)用,創(chuàng)建了一個(gè)部署異構(gòu)電話(huà)技術(shù)互通的持久性通信環(huán)境。
Asterisk是基于模塊化設(shè)計(jì)的,多種模塊都可以在運(yùn)行中通過(guò)動(dòng)態(tài)模塊加載并初始化,用戶(hù)可以根據(jù)實(shí)際需要?jiǎng)討B(tài)增加相應(yīng)的模塊。As-terisk提供了四種基本的API函數(shù)集,以便于不同組件的交互,如信道API、Codec轉(zhuǎn)換器API、文件格式API及應(yīng)用程序API。對(duì)于應(yīng)用程序API允許第三方廠(chǎng)商開(kāi)發(fā)基于A(yíng)sterisk的應(yīng)用程序,本文正是通過(guò)這些接口,完成在電話(huà)呼叫階段與Asterisk的交互,實(shí)現(xiàn)電話(huà)會(huì)議系統(tǒng)。
1.3 系統(tǒng)開(kāi)發(fā)環(huán)境
在開(kāi)發(fā)系統(tǒng)時(shí),由于A(yíng)sterisk源碼便于在Linux中編譯和運(yùn)行,相對(duì)比較安全,對(duì)中小型軟件的研發(fā)中,Linux可成為開(kāi)發(fā)的首選操作系統(tǒng)。因此本系統(tǒng)選擇Redhat Linux 9.0服務(wù)器版,在此基礎(chǔ)上安裝Asterisk軟件包,該設(shè)計(jì)系統(tǒng)使用Asterisk開(kāi)源平臺(tái)。Asterisk的核心主要由三個(gè)包組成:Asterisk主程序(Asterisk)、Zapate電話(huà)驅(qū)動(dòng)(Zaptel)和PRI庫(kù)(libpri),還有一些其他軟件,如語(yǔ)音附加包等。要實(shí)現(xiàn)電話(huà)會(huì)議,只需在A(yíng)sterisk上對(duì)zaptel.conf,zapata.conf,sip.conf,extensions.conf和meetme.conf進(jìn)行配置,就可以通過(guò)固定模擬電話(huà)、SIP電話(huà)完成常規(guī)呼叫和電話(huà)會(huì)議等功能。開(kāi)發(fā)語(yǔ)言采用PHP/MySQL/Apache。
2 基于A(yíng)sterisk技術(shù)的電話(huà)會(huì)議系統(tǒng)設(shè)計(jì)
2.1 設(shè)計(jì)方案
該系統(tǒng)是基于Web的電話(huà)會(huì)議業(yè)務(wù),用戶(hù)可以通過(guò)軟終端、普通話(huà)機(jī)、SIP硬終端、手機(jī)等參加Web會(huì)議。會(huì)議管理員通過(guò)Web頁(yè)面預(yù)約會(huì)議,并對(duì)會(huì)議進(jìn)行實(shí)時(shí)管理,會(huì)議信息通過(guò)Web頁(yè)面顯示。
Web電話(huà)會(huì)議系統(tǒng)的功能包括預(yù)約會(huì)議、創(chuàng)建會(huì)議、呼叫成員、會(huì)議結(jié)束后處理一些計(jì)費(fèi)等一些基本的步驟。當(dāng)許多用戶(hù)并發(fā)開(kāi)會(huì)時(shí),如何保證用戶(hù)間的獨(dú)立性;大部分API都是異步調(diào)用,如何同步整個(gè)邏輯流程;這些都是在此設(shè)計(jì)中重點(diǎn)考慮的問(wèn)題。
(1)業(yè)務(wù)邏輯與Web服務(wù)器的通信。后臺(tái)業(yè)務(wù)需要接收并處理Web頁(yè)面發(fā)來(lái)的請(qǐng)求,同時(shí)向頁(yè)面反饋處理結(jié)果。后臺(tái)要響應(yīng)所有頁(yè)面Sess-ion發(fā)來(lái)的請(qǐng)求,因此這個(gè)問(wèn)題可以分解為兩個(gè)問(wèn)題,一個(gè)是通信機(jī)制;另一個(gè)是頁(yè)面Session與后臺(tái)會(huì)議的對(duì)應(yīng)關(guān)系。這個(gè)問(wèn)題涉及到Web電話(huà)會(huì)議系統(tǒng)的架構(gòu),Web Conference業(yè)務(wù)是基于Web的業(yè)務(wù),通過(guò)Asterisk軟件平臺(tái)提供的API/AGI實(shí)現(xiàn)。
(2)業(yè)務(wù)邏輯對(duì)呼叫會(huì)話(huà)的管理。在開(kāi)會(huì)過(guò)程中每個(gè)會(huì)議都要對(duì)應(yīng)一個(gè)會(huì)議呼叫會(huì)話(huà)(CCSession),通過(guò)這些呼叫會(huì)話(huà)向AGI網(wǎng)關(guān)發(fā)API調(diào)用請(qǐng)求,接收AGI網(wǎng)關(guān)的響應(yīng),區(qū)分響應(yīng)該交給哪個(gè)業(yè)務(wù)處理,是對(duì)什么請(qǐng)求的響應(yīng)。
(3)業(yè)務(wù)邏輯對(duì)會(huì)議的管理。后臺(tái)要并發(fā)處理多個(gè)會(huì)議,必須把這些會(huì)議組織起來(lái)。向上要提供會(huì)議狀態(tài),向下能夠區(qū)分接收的API響應(yīng)屬于哪個(gè)會(huì)議或成員。
2.2 設(shè)計(jì)思路
經(jīng)過(guò)分析可以得出,Web電話(huà)會(huì)議系統(tǒng)的設(shè)計(jì)思路是:通過(guò)用戶(hù)登錄到Web服務(wù)器啟動(dòng)業(yè)務(wù),頁(yè)面通過(guò)PHPAGI調(diào)用Asterisk Manager API Action實(shí)現(xiàn)與Asterisk平臺(tái)的交互。Asterisk調(diào)用AGI來(lái)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)讀取相應(yīng)數(shù)據(jù),并通過(guò)撥號(hào)方案、Meetme達(dá)到會(huì)議呼叫、會(huì)議管控與會(huì)議計(jì)費(fèi)等功能,如圖1所示。
評(píng)論