本人基於VOIP項目實踐的經驗,從技術上對VOIP電話系統的開發思路進行總結,希望對大家開發VOIP電話系統有所幫助。
以下是總體思路:
利用Asterisk作爲VOIP電話的服務器,pjsip作爲客戶端,UI端通過socket(java,C,vc,etc)和pjsip進行通訊。結構圖如下
Asterisk<===============>pjsip<====socket(java)===================>UI
| | | |
mysql pjsua(1.x orlater) WSASocket(Win) Java(SWING)
電話配置 更改pjsua_app.c等 Socket(Linux) JAVA<->Flex
電話計費 Softphone
Callcenter(frontdesk)
1,Asterisk
1.1) 需要把賬號的配置信息存入數據庫,可以通過Web application進行方便的管理和配置
1.2) 產生通話記錄歷史(cdr),爲計費和通話統計服務
1.3) 適當的情況下,可以擴展到多Asterisk服務器來支持擴充
2,pjsip
2.1) pjsip是客戶端和服務端通訊的核心
2.2) 需要適當修改pjsip的源代碼,支持Socket通訊(Server Socket/ Client Socket).pjsip擔當ServerSocket的角色,監聽來自UI端的請求;同時把來自UI端的請求發往電話服務器(Asterisk).
3,Socket
Socket 可以用使Java,C等來實現。它作爲UI和pjsip之間的橋接。
4,UI
4.1) UI客戶端是客戶真正看到的東西。比如Skype界面就是UI的一種展現。
我們可以根據實際情況,用不同的程序語言來實現UI端的開發。
4.2)Java:如果採用JAVA,我們可以用SWING來勾畫界面,通過偵聽器、回調等方式來響應來自socket通道的返回信息。
4.3)Flex:利用Flex作爲電話系統的UI端,是一種比較新的想法和嘗試。本人還沒有把這種想法付諸實踐。大家都知道,Flex可以構建強壯和豐富的富客戶端,可以展現出各種效果,如果加以合理的設計,一定可以給用戶帶來全新的體驗和留下深刻的印象。
Flex的實現思路:分爲兩層。
第一層:Flex描繪界面展現
第二層:通訊層(可以用Java語言來實現,作爲Flex UI 和 Socket 之間的通訊)
結束語:VOIP這些年的發展非常迅速,應用前景廣闊。基於TCP/IP協議的因特網革命還遠遠沒有結束,它所帶來的VOIP革命也一樣遠遠沒有結束。