• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁(yè) > 資訊 > 文章精選 >
     首頁(yè) > 資訊 > 文章精選 >

    在CentOS環(huán)境下編譯asterisk和WebRTC實(shí)現通過(guò)網(wǎng)關(guān)呼入呼出

    2019-08-01 09:15:29   作者:james.zhu   來(lái)源:Asterisk開(kāi)源派   評論:0  點(diǎn)擊:


      本文章介紹如何在Centos環(huán)境下配置Asterisk,WebRTC和網(wǎng)關(guān),實(shí)現通過(guò)WebRTC呼叫外部手機號碼,外部電話(huà)呼入,WebRTC接聽(tīng)的功能。同時(shí),內部SIP分機和WebRTC之間實(shí)現互打撥號。很多用戶(hù)可以通過(guò)WebRT
    實(shí)現和企業(yè)內部應用集成,方便企業(yè)用戶(hù)對業(yè)務(wù)方面的支持,同時(shí)極大降低了業(yè)務(wù)集成的開(kāi)發(fā)難度。
      測試環(huán)境:
    • 系統CentOS-7
    • 環(huán)境asterisk-15.7.2
    • 客戶(hù)端 sipML5網(wǎng)頁(yè)端、eyeBeam
    • 谷歌瀏覽器
    • 內網(wǎng)呼叫:SIP,WebRTC在同一內網(wǎng)環(huán)境
      安裝步驟:
      CentOS安裝asterisk依賴(lài)包和附加支持包:
      yum install -y gcc gcc-c++ lynx bison mysql-devel mysql-server php php-mysql php-pear php-mbstring tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git subversion kernel-devel php-process crontabs cronie cronie-anacron wget vim php-xml uuid-devel libtool sqlite-devel unixODBC mysql-connector-odbc bzip2 patch libedit-devel
      下載環(huán)境包:
      cd/usr/local/src  //選擇下載路徑
      wget   //使用wget + 下載鏈接,下載asterisk包
      完成后如上圖表示,以下下載圖省略
      wget //下載srtp包,WebRTC加密通話(huà)需要
      wget //asterisk編譯需要
      wget //下載opus包,為WebRTC提供高質(zhì)量的通話(huà)編碼
      注:上述鏈接不確定長(cháng)久有效,在鏈接失效的情況下,請自行查找下載鏈接。
      在下載完成后,你的usr/local/src目錄下應該有這幾個(gè)壓縮包,接下來(lái)就是要解壓縮和編譯。
    • //tar -zxvf +壓縮包名,進(jìn)行解壓操作
    • tar -zxvf  asterisk-15-current.tar.gz
    • tar -zxvf  jansson-2.11.tar.gz
    • tar -zxvf  opus-1.3.1.tar.gz
    • tar -zxvf  v1.5.4.tar.gz
      解壓完成后,在文件夾/usr/local/src目錄下應該成功的多出了4個(gè)文件夾,使用ls查看,大概如下圖所顯示
      接下來(lái)進(jìn)行編譯步驟,必須先編譯除asterisk以外的包,再對asterisk進(jìn)行編譯
      在/usr/local/src目錄下:
    • cd libsrtp-1.5.4
    • ./configure
    • make
    • ake install
      在/usr/local/src目錄下:
    • cd opus-1.3.1
    • ./configure
    • make
    • make install
      在/usr/local/src目錄下:
    • cd jansson-2.11
    • ./configure
    • make
    • make install
      現在已經(jīng)安裝好了Asterisk前置包,接下來(lái)進(jìn)行asterisk的安裝
      在/usr/local/src目錄下:
    • cd asterisk-15.7.3
    • ./configure
      注意:在編譯過(guò)程中,會(huì )下載一個(gè)。bz2格式包,下載時(shí)間可能會(huì )比較長(cháng),等待時(shí)間由網(wǎng)速而定
      出現asterisk的星號標識,就代表asterisk編譯的第一步成功了,接下來(lái)在該目錄下使用
      make
      make install
      make samples
      一步一步的進(jìn)行編譯
      在編譯完成后通過(guò)命令我們就可以啟動(dòng)asterisk了
      asterisk -vvvvvvvvvvvvvvvvgc   //v代表等級,v越多顯示信息越多
      接下來(lái),我們檢查一下asterisk模塊的加載是否正常,其中最重要的模塊主要有以下幾個(gè),
    • res_crypto.so
    • res_http_websocket.so
    • res_pjsip_transport_websocket.so
    • codec_opus.so
      在CentOS下使用asterisk -r進(jìn)入asterisk cil頁(yè)面,cli頁(yè)面下輸入“!”退出
      進(jìn)入前
      進(jìn)入后
      使用module show like + 模塊名 查看模塊
      注:筆者在安裝完asterisk發(fā)現,oups模塊沒(méi)能正常的加載上,發(fā)現是在/usr/lib/asterisk/modules路徑下沒(méi)有oups.so的語(yǔ)言格式模塊,于是手動(dòng)下載codec_opus.so模塊并加載,加載成功的可以省略該步驟。
      轉到鏈接, http://downloads.digium.com/pub/telephony/codec_opus/ 在這里尋找所對應asterisk版本的opus模塊。在本次測試環(huán)境中使用的是codec_opus-15.0_1.3.0-x86_64.tar.gz
      cd /usr/local/src/
      wget
      tar -zxvf codec_opus-15.0_1.3.0-x86_64.tar.gz //解壓
      cd codec_opus-15.0_1.3.0-x86_64 //進(jìn)入文件夾
      cp codec_opus.so  /usr/lib/asterisk/modules
      //將codec_opus.so文件復制到Asterisk模塊目錄中
      cp codec_opus_config-en_US.xml /var/lib/asterisk/documentation/thirdparty
      //將codec_opus_config-en_US.xml文件復制到Asterisk外部文檔目錄中
      asterisk -r  //進(jìn)入asterisk
      core restart now  //重啟asterisk
      asterisk -r
      core reload  //重新加載模塊
      module show like codec_opus.so  //查看模塊狀態(tài)
      到此,asterisk環(huán)境正常搭建
      創(chuàng )建證書(shū):
      在測試中,我們在網(wǎng)頁(yè)使用的是自簽證書(shū),現在進(jìn)行證書(shū)的創(chuàng )建以及http服務(wù)器的搭建。Asterisk  在其  contrib / scripts  源目錄中提供了一個(gè)實(shí)用腳本ast_tls_cert。我們將使用它為我們的新權限簽署的Asterisk制作自簽名證書(shū)頒發(fā)機構和服務(wù)器證書(shū)。
      mkdir /etc/asterisk/keys                    //創(chuàng )建證書(shū)存放路徑,請記住你的證書(shū)路徑!
      cd /usr/local/src/asterisk-15.7.3             //進(jìn)入asterisk源目錄
      contrib/scripts/ast_tls_cert -C 192.168.1.49 -O hiastar -d /etc/asterisk/keys/
      //創(chuàng )建證書(shū) -C 后接asterisk的IP地址 -O后接組織名 -d后接存放路徑。
      注意:腳本運行成功時(shí),系統將提示您為CA密鑰設置密碼,之后系統會(huì )要求您重復輸入相同的密碼短語(yǔ)幾次。出現下圖提示后,證書(shū)創(chuàng )建成功
      cd /etc/asterisk/keys/
      ls  //查看證書(shū)是否創(chuàng )建,你的文件夾中應該有這幾個(gè)文件
      接下來(lái)配置Asterisk的內置HTTP守護進(jìn)程
      cd /etc/asterisk/
      vim http.conf
      //配置文件如下
      [general]
      enabled=yes
      bindaddr=0.0.0.0
      bindport=8088
      tlsenable=yes
      tlsbindaddr=0.0.0.0:8089
      tlscertfile=/etc/asterisk/keys/asterisk.crt          //你的證書(shū)路徑
      tlsprivatekey=/etc/asterisk/keys/asterisk.key        //你的證書(shū)路徑
      現在我們將asterisk重新啟動(dòng),之后查看tls服務(wù)器是否運行
      asterisk -vvvvgc
      http show status
      出現了紅框內的提示,則代表tls服務(wù)器正常運行
      之后驗證是否能訪(fǎng)問(wèn)證書(shū)頁(yè)面:
      點(diǎn)擊高級
      點(diǎn)擊繼續前往
      到現在,證書(shū)的創(chuàng )建,及瀏覽器加載完成
      接下來(lái),我們將創(chuàng )建wss的通道以及pjsip.conf的賬號,供sipML5登陸:
      現在,我們需要創(chuàng )建一個(gè)pjsip的通道,以及PJSIP賬號
      注意:“//”及后接內容記得刪除
      cd /etc/asterisk
      vim pjsip.conf
      //配置文件如下
      [transport-wss]
      type=transport
      protocol=wss
      bind=0.0.0.0
      [600]
      type=aor
      max_contacts=5
      remove_existing=yes
      [600]
      type=auth
      auth_type=userpass
      username=600     //分機賬號
      password=600     //分機密碼
      [600]
      type=endpoint
      aors=600
      auth=600
      use_avpf=yes
      webrtc=yes
      media_encryption=dtls
      dtls_ca_file=/etc/asterisk/keys/ca.crt
      dtls_cert_file=/etc/asterisk/keys/asterisk.pem
      dtls_verify=fingerprint
      dtls_setup=yes
      ice_support=yes     //ice功能確保打開(kāi)
      use_avpf=yes
      force_avp=yes
      media_use_received_transport=yes
      rtcp_mux=yes
      context=li3         //這邊選擇引用的extension撥號規則
      allow=opus,ulaw
      //在官網(wǎng),有對各參數進(jìn)行詳細說(shuō)明,請自行查閱
      配置完成圖
      sipML5客戶(hù)端登陸:
      點(diǎn)擊后,進(jìn)入下一個(gè)頁(yè)面
      在配置完成后,點(diǎn)擊專(zhuān)家模式
      按圖中所勾選選型,在第一行中輸入wss://asterisk ip地址:8089/ws,完成后點(diǎn)擊save!返回第二個(gè)頁(yè)面。
      點(diǎn)擊login,若出現Connected則代表登陸成功。
      登陸成功后,我們檢查后臺信息,若有紅框內的內容則代表登陸正常。
      現在,我們說(shuō)明登陸異常情況:
      當出現服務(wù)器不可達提升時(shí),請檢查你是否添加了自簽證書(shū),以及asterisk是否啟動(dòng),未添加自簽證書(shū)或者沒(méi)啟動(dòng)asterisk是無(wú)法正常登陸的。同時(shí)在asterisk中不能看到報錯信息。
      當出現這個(gè)提升時(shí),代表你的密碼輸入錯誤,在asterisk可以看到信息
      現在我們以及成功了一大半了,現在我們進(jìn)行sipML5的通訊測試,在測試中我們將再創(chuàng )建一臺sipML5的分機,eyeBame進(jìn)行通訊測試。
      cd /etc/asterisk
      vim pjsip.conf
      //配置文件如下
      [601]
      type=aor
      max_contacts=5  
      remove_existing=yes
      [601]
      type=auth
      auth_type=userpass
      username=601
      password=601
      [601]
      type=endpoint
      aors=601
      auth=601
      use_avpf=yes
      webrtc=yes
      media_encryption=dtls
      dtls_ca_file=/etc/asterisk/keys/ca.crt
      dtls_cert_file=/etc/asterisk/keys/asterisk.pem
      dtls_verify=fingerprint
      dtls_setup=yes
      ice_support=yes
      use_avpf=yes
      force_avp=yes
      media_use_received_transport=yes
      rtcp_mux=yes
      context=li3
      allow=opus,ulaw
      //sipML5分機創(chuàng )建
      軟電話(huà)分機創(chuàng )建:
      //配置文件如下
      [udp-transport]
      type=transport
      protocol=udp
      bind=0.0.0.0
      [777]
      type=endpoint
      context=li3
      disallow=all
      allow=alaw,ulaw
      transport=udp-transport
      auth=auth777
      aors=777
      [auth777]
      type=auth
      auth_type=userpass
      password=777
      username=777
      [777]
      type=aor
      max_contacts=5
      配置文件如圖所示。
      現在我們編寫(xiě)簡(jiǎn)單的測試撥號規則:
      cd /etc/asterisk
      vim extensions.conf
      //配置文件如下
      [li3]                           //請與之前創(chuàng )建分機的contaxt名字保持一致
      exten =>600,1,Dial(pjsip/600)
      exten =>600,2,hangup()
      exten =>601,1,Dial(pjsip/601)
      exten =>601,2,hangup()
      exten =>777,1,Dial(pjsip/777)
      exten =>777,2,hangup()
      配置完成后如圖
      cd /etc/asterisk
      vim rtp.conf
      //配置文件如下
      現在進(jìn)行通話(huà)測試,拓撲圖如下:
      現在注冊eyebeam軟電話(huà)
      點(diǎn)擊,之后選擇“sip賬號設定”進(jìn)入以下頁(yè)面
      下一步配置賬號

      現在軟電話(huà)注冊成功!可以登錄到asterisk cli下查看上線(xiàn)日志
      軟電話(huà)上線(xiàn)日志
      現在登錄sipML5客戶(hù)端
     
      點(diǎn)擊login登錄,出現Connected代表登陸成功,在asterisk cli后臺查看上線(xiàn)日志
      現在進(jìn)行sipML5呼叫軟電話(huà)的測試
      在右邊輸入你要撥打的號碼,點(diǎn)擊call點(diǎn)擊Audio
      記得在彈出的選型中,運行你的頁(yè)面使用麥克風(fēng)的權限!!
      在右邊的提示中,你的撥號會(huì )有三個(gè)狀態(tài)的變更
      這個(gè)狀態(tài)代表在尋找撥號規則
      這個(gè)狀態(tài)代表?yè)芴栆巹t正常,正在振鈴,對端會(huì )收到提示
      點(diǎn)擊接聽(tīng)
      當對方摘機后,狀態(tài)會(huì )變成in call代表通話(huà)以及建立
      在asterisk cli上可以查看到撥號信息
      現在進(jìn)行sipML5客戶(hù)端之間的通話(huà)測試:
      輸入601進(jìn)行撥號,
      在601的頁(yè)面中會(huì )被振鈴,并提示有來(lái)自600的呼叫,點(diǎn)擊Answer呼叫建立

      在asterisk cli下查看通話(huà)記錄
      現在,恭喜你,你已經(jīng)成功的配置好了sipML5的語(yǔ)音通話(huà)功能,實(shí)現了WebRTC的基礎功能
      現在進(jìn)行進(jìn)一步的測試,asterisk對接語(yǔ)音網(wǎng)關(guān),讓W(xué)ebRTC可以呼入到運營(yíng)商,運營(yíng)商可以呼入到分機。
      拓撲圖
      網(wǎng)關(guān)設置:
      點(diǎn)擊SIP服務(wù)器,進(jìn)入以下頁(yè)面主用SIP服務(wù)器地址設置為asterisk ip地址端口使用默認的5060,你也可以中繼修改。
      點(diǎn)擊端口,添加
      進(jìn)入端口的設置中,在端口中,輸入運營(yíng)商線(xiàn)路接入到網(wǎng)關(guān)的端口,并設置代撥號碼,保存
      添加IP中繼,點(diǎn)擊呼叫和路由,點(diǎn)擊IP中繼
      中繼配置,索引與名稱(chēng)隨意配置,請記住,對端配置為asterisk ip地址和端口
      Ip-tel路由配置:索引及描述隨意,呼叫來(lái)源選擇之前配置好的IP中繼,主叫和被叫前綴為any
      Tel-ip路由配置:索引及描述隨意,呼叫來(lái)源選擇any或者運營(yíng)商接入到網(wǎng)關(guān)的端口,主叫和被叫前綴為any,呼叫目標選擇ip中繼
      到此,網(wǎng)關(guān)側的配置完成
      Asterisk側配置
      中繼配置:同樣的,asterisk也需要配置中繼指向網(wǎng)關(guān)設備,配置如下
      cd /etc/asterisk
      vim pjsip.conf
      //pjsip.conf
      [pstn]                                 //中繼名稱(chēng)隨意,需要保持一致
      type=aor
      [pstn]
      type=endpoint
      transport=udp-transport
      context=li3                          //調用同一條撥號規則
      disallow=all
      allow=alaw,ulaw
      aors=pstn
      direct_media=no
      [pstn]
      type=identify
      endpoint=pstn
      match=192.168.1.33                  //輸入網(wǎng)關(guān)ip地址
      配置完成后,應該如下圖所示
      現在我們在li3條目下增加運營(yíng)商呼入呼出的撥號規則:
      cd/etc/asterisk
      vim extensions.conf
      [li3]
      exten =>015500000000,1,Dial(PJSIP/${EXTEN}@pstn)
      //exten=>運營(yíng)商號碼,1,Dial(PJSIP/${EXTEN}@中繼名稱(chēng))
      exten =>015500000000,2,Dial(PJSIP/pstn/sip:1000${EXTEN:1}@192.168.1.33)
      //exten =>運營(yíng)商號碼,2,Dial(PJSIP/中繼名稱(chēng)/sip:代撥號碼${EXTEN:1}@網(wǎng)關(guān)地址)
      exten =>015500000000,3,hangup()
      exten =>1000,1,Dial(PJSIP/600)
      //exten =>代撥號碼,1,Dial(PJSIP/接聽(tīng)的分機號碼)
      exten =>1000,2,hangup()
      注:本地號碼
      不需要加0,異地號碼需要加0
      現在你的撥號規則配置文件應該如下
      配置保持后,記得重啟asterisk,使得配置生效
      現在進(jìn)行呼叫測試:
      登陸sipML5客戶(hù)端
      當你手機成功接通電話(huà)后,通話(huà)成功建立。
      這個(gè)時(shí)候可以進(jìn)入asterisk cli頁(yè)面下,查看撥號信息
      現在,你已經(jīng)成功的撥打了一個(gè)WebRTC呼叫到運營(yíng)商的電話(huà)!
      呼入測試:
      在你的手機上,撥打網(wǎng)關(guān)所接入的pstn線(xiàn)路號碼,進(jìn)行呼入測試
      當你的sipML5客戶(hù)端收到撥號時(shí),點(diǎn)擊answer接聽(tīng)撥號,成功建立通話(huà)
      這個(gè)時(shí)候可以進(jìn)入asterisk cli頁(yè)面下,查看信息
      注意事項:
    1.  在每一步。conf文件修改后,記得重啟使得配置生效
    2. 測試時(shí),建議直接關(guān)閉防火墻,避免rtp協(xié)商失敗導致無(wú)語(yǔ)音
    3.  以上配置撥號規則為簡(jiǎn)單測試用撥號規則
    4.  WebRTC對環(huán)境要求較高,在本次的測試環(huán)境語(yǔ)音通信成功,不保證其他環(huán)境下通信成功
      關(guān)注本文作者:James.zhu@hiastar.com
      SIPlab@知識星球
      微信公眾號:asterisk-cn
    【免責聲明】本文僅代表作者本人觀(guān)點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對文中陳述、觀(guān)點(diǎn)判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

    專(zhuān)題

    CTI論壇會(huì )員企業(yè)

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 旌德县| 房产| 宿迁市| 苏州市| 敦煌市| 东乡族自治县| 灵川县| 余江县| 宿州市| 绥滨县| 彰化县| 南阳市| 苏尼特右旗| 吉安市| 卢龙县| 石棉县| 龙井市| 元氏县| 彭州市| 教育| 太仓市| 额济纳旗| 綦江县| 维西| 凤台县| 老河口市| 永登县| 屯门区| 水富县| 奇台县| 固安县| 平果县| 常德市| 沭阳县| 托克逊县| 杂多县| 夹江县| 会同县| 曲沃县| 平泉县| 兴安盟| http://444 http://444 http://444 http://444 http://444 http://444