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上升级,建议源码安装再修改环境变量,但是这种方式需要你重新编译你的可执行程序。

问题汇总

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