fs-verto安裝及使用說明

背景說明

在freeswitch中有mod_sofia模塊支持sip協議。sip協議用於媒體鏈接建立前的信令交互。像mod_sofia這種模塊在freeswitch中稱爲endpoint,除了mod_sofia,freeswitch還有一個mod_verto模塊。mod_verto使用freeswitch自定義的一個協議,通過websocket進行信令交互。verto協議基於jsonRpc協議,通過json格式來傳輸數據。

它作爲一個端點存在,也就意味着可以用它來和PSTN或sip終端進行互聯互通, 下面就進入實戰階段, 本篇重在安裝部署,FS的安裝可以按照官方文檔來, 這裏描述了verto模塊的相關配置和啓動,如果自己實在不想從頭來一遍但稍瞭解一些docker指令可以直接通過:docker pull yine/freeswitch:1.10.2-verto 來拉取最新的版本進行體驗。

系統配置

配置verto

  1. 修改conf/autoload_configs/verto.conf.xml
  • debug 設置爲10 適用於調試;
  • enable-presence 設置爲false,關閉狀態;
  • outbound-codec-string 添加h264編碼支持;
  • inbound-codec-string 添加h264編碼支持;
  1. 爲用戶號碼配置verto支持
  • 修改directory/default.xml,在中添加如下:
<param name="jsonrpc-allowed-methods" value="verto"/>
<param name="jsonrpc-allowed-event-channels" value="demo,conference,presence"/>
  • 每個用戶的xml配置文件中conf/directory/default/1000.xml,在中添加如下:
<param name="verto-context" value="public"/>
<param name="verto-dialplan" value="XML"/>
  1. 如需使用會議功能,請修改會議配置文件conf/autoload_configs/conference.conf.xml
  • 在中檢查conference-flags項目,確保其中包含livearray-sync和livearray-json-status
  1. 撥號計劃配置
  • 在 dialplan/default 下新建 00_verto_demo.xml 內容如下:
<include>
  <extension name="verto-demo">
  <condition field="destination_number" expression="^(10[0-9][0-9])$">
      <action application="export" data="dialed_extension=$1"/>
          <action application="set" data="call_timeout=30"/>
          <action application="bridge" data="${verto_contact ${dialed_extension}@${dialed_domain}}"/>
      </condition>
  </extension>
</include>
  • 因爲 Local_Extension 和上面定義的准入條件衝突,所以需要將這個拔號計劃給註釋掉,自己添加的才能生效;

創建自簽名證書

  • 因爲wss方式的訪問是加密的,所以需要配置https方式運行demo,先創建一個自簽名證書,以供freeswitch和web服務使用,注意二者需要使用同一套證書才能順利的訪問freeswitch。

  • 創建自簽名證書,過程中按提示輸入各種信息,過程中需要openssl的支持,如果未安裝請提前自行安裝。

wget http://files.freeswitch.org/downloads/ssl.ca-0.1.tar.gz
tar zxfv ssl.ca-0.1.tar.gz
cd ssl.ca-0.1/
perl -i -pe 's/md5/sha256/g' *.sh
perl -i -pe 's/1024/4096/g' *.sh
./new-root-ca.sh
./new-server-cert.sh self.zerostudio.com
./sign-server-cert.sh self.zerostudio.com
cat self.zerostudio.com.crt self.zerostudio.com.key > /etc/freeswitch/tls/wss.pem   
/*注意此路徑和verto配置文件中的相同*/

安裝web服務(以apache爲例)

sudo apt-get install apache2

配置apache
sudo a2enmod ssl
sudo a2enmod rewrite

修改/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:443> -- 修改爲443
…………
--增加下面幾行
SSLEngine On
SSLOptions +StrictRequire
SSLCertificateFile /etc/freeswitch/tls/wss.pem
SSLCertificateKeyFile /etc/freeswitch/tls/wss.pem
SSLCertificateChainFile /etc/freeswitch/tls/wss.pem
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

/etc/init.d/apache2 restart 啓動web服務, 如出現問題用a2enmod 來加載ssl模塊;

重啓apache服務

sudo service apache2 restart

部署verto_demo

  1. 在freeswitch源碼中找到video_demo cpy 到web服務目錄
    cp -rf ./freeswitch/html5/verto/video_demo /var/www/html
  2. 打開瀏覽器(我用的Chrome)訪問https://IP地址/video_demo
  3. 提示未信任,點高級,繼續前往。
  4. 至此安裝完畢,其他請自行體驗。

補充

但實際情況總不盡人意,Debian 8.x Jessie 目前的 OpenSSL 版本還是 1.0.1,不支持 ALPN 的最低要求 1.0.2,所以我們升級到1.0.2的版本,線上環境最好是用Debian9來進行,兼容性會更好, 如果實在想在debian8上升級,建議源碼安裝再修改環境變量,但是這種方式需要你重新編譯你的可執行程序。

問題彙總

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章