一、VOIP介紹
VOIP即網(wǎng)絡(luò)電話(huà),Voice over Internet Protocol,通過(guò)把語(yǔ)音信號(hào)經(jīng)過(guò)數(shù)字化處理、壓縮編碼打包、通過(guò)網(wǎng)絡(luò)傳輸,然后解壓、把數(shù)字信號(hào)還原成聲音,讓通話(huà)對(duì)方聽(tīng)到。 話(huà)音從源端到達(dá)目的端的基本過(guò)程是: 聲 – 電轉(zhuǎn)換:通過(guò)壓電陶瓷等類(lèi)似裝置將聲波變換為電信號(hào)。
量化采樣:將模擬電信號(hào)按照某種采樣方法(比如脈沖編碼調(diào)制,即PCM)轉(zhuǎn)換成數(shù)字信號(hào);
封包:將一定時(shí)長(zhǎng)的數(shù)字化之后的語(yǔ)音信號(hào)組合為一幀,隨后,按照國(guó)際電聯(lián)(ITU-T)的標(biāo)準(zhǔn),這些話(huà)音幀被封裝到一個(gè)RTP(即實(shí)時(shí)傳輸協(xié)議,Realtime Transport Protocol)博主weixin@yuyinjiqiren報(bào)文中,并被進(jìn)一步封裝到UDP報(bào)文和IP報(bào)文中。
傳輸:IP報(bào)文在IP網(wǎng)絡(luò)由源端傳遞到目的端 去抖動(dòng):去除因封包在網(wǎng)絡(luò)中傳輸速度不均勻所造成的抖動(dòng)音 拆包 電聲轉(zhuǎn)換 一個(gè)完整的、可以大規(guī)模商用運(yùn)營(yíng)的IP電話(huà)系統(tǒng)包括如下一些技術(shù)(暫不完全):尋址 話(huà)音編解碼 回聲消除和回聲抑制 傳輸 IP報(bào)文時(shí)延控制功能 去抖動(dòng) IP報(bào)文的去抖動(dòng)(de-jitter)功能 。
二、VOIP與傳統(tǒng)電話(huà)的比較
簡(jiǎn)單地來(lái)說(shuō),VOIP網(wǎng)絡(luò)電話(huà)免費(fèi)(流量、wifi),傳統(tǒng)電話(huà)更穩(wěn)定點(diǎn)。不過(guò)現(xiàn)在網(wǎng)絡(luò)電話(huà)行業(yè)發(fā)展快,很多產(chǎn)品穩(wěn)定性都超過(guò)了傳統(tǒng)電話(huà),好比mimicall、vp3000等,所以現(xiàn)在越來(lái)越多的人習(xí)慣了使用網(wǎng)絡(luò)電話(huà)去進(jìn)行溝通。
三、開(kāi)源軟PBX(軟交換)的選擇
國(guó)內(nèi)比較流行和擁有活躍用戶(hù)群的是FreeSwitch和Asterisk,由于之前對(duì)Asterisk有一定的應(yīng)用經(jīng)驗(yàn),所以選擇了Asterisk。二者都基于sip協(xié)議。
四、客戶(hù)端開(kāi)源sip協(xié)議庫(kù)的選取
目前比較流行的開(kāi)源的SIP協(xié)議庫(kù)是PJSIP,它實(shí)現(xiàn)了SIP、SDP、RTP、STUN、TURN和ICE。PJSIP作為基于SIP的一個(gè)多媒體通信框架提供了非常清晰的API,以及NAT穿越的功能。PJSIP具有非常好的移植性,幾乎支持現(xiàn)今所有系統(tǒng):從桌面系統(tǒng)、嵌入式系統(tǒng)到智能手機(jī)。PJSIP同時(shí)支持語(yǔ)音、視頻、狀態(tài)呈現(xiàn)和即時(shí)通訊。PJSIP具有非常完善的文檔,對(duì)開(kāi)發(fā)者非常友好支持。
五、調(diào)研評(píng)估和Demo搭建
目前市場(chǎng)上對(duì)于voip的應(yīng)用已經(jīng)比較成熟,好多公司都在做。微信電話(huà)本等的推出說(shuō)明voip完全可行。相對(duì)于去哪兒呼叫中心更好的服務(wù)于去哪兒用戶(hù)解決海外用戶(hù)撥打人工服務(wù)的困難,盡最大努力降低用戶(hù)的成本,voip完全可行。
1)Demo的快速搭建
找一臺(tái)linux機(jī)器首先下載安裝pjsip軟件 安裝過(guò)程這里不做過(guò)細(xì)講解
用ldconfig命令 驗(yàn)證pjsip的動(dòng)態(tài)鏈接是否創(chuàng)建
ldconfig -p | grep pj
安裝Asterisk 13(注意只有12以上才支持了pjsip)
這里注意在編譯的時(shí)候其實(shí)可以查詢(xún)系統(tǒng)的位數(shù),我的是64位所以直接指定了64,查詢(xún)指定的命令如下:
ARCH=$(getconf LONG_BIT | grep “64”)
./configure –libdir=/usr/lib${ARCH}
用make menuselect命令選擇安裝的模塊
做選擇需要編譯安裝的modules,查看確保pjsip相關(guān)的module已選擇
然后make config 命令是將asterisk作為linux service的服務(wù)
還有一點(diǎn)就是Asterisk 13 requires pjsip >= 2.4. 所以選取版本的時(shí)候也 需要注意。
2)demo客戶(hù)端軟件選取
PjSua是開(kāi)源的客戶(hù)端代碼,同時(shí)支持ios和android等主流操作系統(tǒng),做測(cè)試用的話(huà)eyeBeam,X-Lite,Blink 都可以作為PC客戶(hù)端,Blink PC客戶(hù)端做tls測(cè)試的時(shí)候比較方便。
這里可以同時(shí)下載eyeBeam,X-Lite兩臺(tái)互撥便于測(cè)試。
3)Asterisk的配置
Demo可以配置兩個(gè)測(cè)試的分機(jī)號(hào)(可以認(rèn)為是用戶(hù)名和密碼)
配置是在 /etc/asterisk/pjsip.conf 中
監(jiān)聽(tīng)地址端口配置為本機(jī)ip和5061端口,協(xié)議配置成udp
分別再配置兩個(gè)號(hào) 8005和8006
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5061
[8005]
type=endpoint
context=from-external
disallow=all
allow=ulaw
transport=transport-udp
auth=8005
aors=8005
[8005]
t