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