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