我们在web客户端使用sip协议时用的比较多的是sipml5库和jssip库。
但是sip协议比较重,又复杂,所以freeswitch内部就自定义了一个verto协议,方便在web页面上使用音视频服务。
verto协议通过websocket传输信令,协议内部数据格式为json,这样比较符合互联网开发人员的习惯,同时比sip协议更加轻量化。
freeswitch有一个endpoint模块叫做mod_verto,是用来作为服务端的协议适配器。
freeswitch的源码中有几个支持verto协议的web客户端实现,分别是verto demo、video_demo和verto communicator等,都是基于js实现的。
verto客户端的源码在freeswitch-1.8.7_master\html5\verto目录下,用户可以自行查看。
今天我们主要介绍一下verto communicator的安装部署过程。
verto communicator
verto communicator的官方介绍页面:https://freeswitch.org/confluence/display/FREESWITCH/Verto+Communicator 。
verto communicator是基于nodejs安装部署的,源代码目录中已经有nodejs相关的工具配置文件,可以快速的安装、部署、构建和运行verto communicator客户端。
但是呵呵,这玩意用的人少,所以维护更新也少,安装过程中大坑小坑很多。
坑一,nodejs不熟悉。先去学习nodejs的教程和基本使用方法。
坑二,npm的包安装要区分全局和本地。先去学习npm工具的基本教程。
坑三,bower安装依赖库时,git链接各种问题。拆分命令,多次尝试。
坑四,grunt对nodejs版本有要求。centos7默认的nodejs版本最高只有6.17,需要使用至少8+的版本。
唯一欣慰的一点就是,在verto communicator目录下安装成功过一次,再把整个目录拷贝到其他地方,就可以直接使用了。
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.8.7
GCC:4.8.5
进入verto communicator目录
cd /root/freeswitch-1.8.7_master/html5/verto/verto_communicator
安装npm工具
yum install npm
安装nodejs版本管理工具n,安装nodejs的8+版本并选定
npm install -g n
n lts
使用n选定nodejs8版本后,重启ssh终端
安装工具bower和grunt
npm install -g bower grunt
使用npm安装依赖库
npm install
使用bower安装依赖库,这一步巨坑无比
方法一,默认方法,但是无限失败
bower --allow-root install
方法二,拆分依赖库安装步骤,最后再合并
诀窍是。。。多试几次,然后祈祷。。。因为我第2次重装的时候,怎么都是失败
mv bower.json bower.json.back
bower --allow-root init
bower install --allow-root moment/moment@~2.9.0 --save
bower install --allow-root jquery@~2.1.4 --save
bower install --allow-root js-cookie/js-cookie@~1.4.1 --save
bower install --allow-root jquery-json@~2.5.1 --save
bower install --allow-root angular@~1.3.15 --save
bower install --allow-root angular-gravatar@~0.4.1 --save
bower install --allow-root bootstrap@~3.3.4 --save
bower install --allow-root angular-toastr@~1.4.1 --save
bower install --allow-root angular-sanitize@~1.3.15 --save
bower install --allow-root angular-route@~1.3.15 --save
bower install --allow-root bower-angular@~1.2.16 --save
bower install --allow-root angular-prompt@~1.1.1 --save
bower install --allow-root angular-animate@~1.3.15 --save
bower install --allow-root angular-cookies@~1.3.15 --save
bower install --allow-root angular-directive.g-signin@~0.1.2 --save
bower install --allow-root angular-fullscreen@~1.0.1 --save
bower install --allow-root ngstorage@~0.3.9 --save
bower install --allow-root humanize-duration#~3.10.0 --save
bower install --allow-root angular-timer@~1.3.3 --save
bower install --allow-root angular-tooltips@~0.1.21 --save
bower install --allow-root datatables@~1.10.8 --save
bower install --allow-root angular-bootstrap@~0.14.3 --save
bower install --allow-root mdbootstrap/bootstrap-material-design@~0.3.0 --save
bower install --allow-root angular-translate@~2.10.0 --save
bower install --allow-root angular-translate-loader-static-files@~2.10.0 --save
bower install --allow-root angular-click-outside@~2.9.2 --save
mv bower.json.back bower.json
修改bower.json文件:
"bootstrap-material-design": "~0.3.0"修改为 "bootstrap-material-design": "mdbootstrap/bootstrap-material-design#~0.3.0"
bower --allow-root install
使用grunt构建
grunt build --force
在安装部署的所有步骤都成功的情况下,直接启动
[root@localhost verto_communicator]# grunt serve
Running "serve" task
Running "wiredep:app" (wiredep) task
Running "concurrent:server" (concurrent) task
Running "copy:styles" (copy) task
Copied 1 file
Done, without errors.
Execution Time (2021-09-16 09:19:36 UTC+8)
loading tasks 372ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 95%
loading grunt-contrib-copy 6ms ▇ 2%
copy:styles 13ms ▇▇ 3%
Total 391ms
Running "postcss:dist" (postcss) task
>> 1 processed stylesheet created.
Running "browserSync:livereload" (browserSync) task
[Browsersync] Access URLs:
------------------------------------
Local: https://localhost:9001
External: https://192.168.0.152:9001
------------------------------------
[Browsersync] Serving files from: ../js/src/
[Browsersync] Serving files from: ./js
[Browsersync] Serving files from: .
[Browsersync] Watching files...
Running "watch" task
Waiting...
浏览器打开URL:https://192.168.0.152:9001
按照freeswitch server的注册信息配置字段。
其中,websocket URL地址必须使用域名方式才能正常登陆,可以通过修改本地host,将域名直接指向fs注册服务器地址的方式来实现。
verto协议是基于json的轻量化协议,在web应用中使用和实现都非常方便。
其中verto communicator在nodejs环境的安装部署过程中问题太多,而且难以解决,不推荐使用。(也可能是因为本人对nodejs不熟悉,如果有更好的解决方案,请留言,多谢)
概述我们在web客户端使用sip协议时用的比较多的是sipml5库和jssip库。但是sip协议比较重,又复杂,所以freeswitch内部就自定义了一个verto协议,方便在web页面上使用音视频服务。verto协议通过websocket传输信令,协议内部数据格式为json,这样比较符合互联网开发人员的习惯,同时比sip协议更加轻量化。freeswitch有一个endpoint模块叫做mod_verto,是用来作为服务端的协议适配器。freeswitch的源码中有几个支持ve...
mod_verto-bridge扩展
这是 ( ) 端点的扩展。 这用作在Web应用程序中使用mod_verto的API。 SIP.js的替代品。
此扩展名是Verto演示代码的修改版本,该代码将在用于与FreeSWITCH进行通信。
入口点是callIntoConference()。 接收语音桥接号码,语音会议的用户名,会议中的用户ID和可选的回叫。
应该放在的verto video_demo目录中。
使用./deploy.sh安装。
###扩展(verto_extension.js)
需要将该文件添加到index.html JavaScript导入中。
该文件提供了自己的函数,函数和数据,这些函数和数据替代了verto.js中的代码,从而使该文件一旦添加即可独立运行,而无需处理多个文件。
覆盖verto.js中定义的“回调”对象。
覆盖verto挂断处理程序。
在freeswitch中有mod_sofia模块支持sip协议。sip协议用于媒体链接建立前的信令交互。像mod_sofia这种模块在freeswitch中称为endpoint,除了mod_sofia,freeswitch还有一个mod_verto模块。mod_verto使用freeswitch自定义的一个协议,通过websocket进行信令交互。verto协议基于jsonRpc协议,通过json格式来传输数据。
它作为一个端点存在,也就意味着可以用它来和PSTN或sip终端进行互联互通, 下面就
vertojs
Verto(VER-to)RTC是一个FreeSWITCH端点,该端点实现了JSON-RPC连接的子集,该子集旨在用于安全Web套接字。 最初的目标是WebRTC,以简化编码和实现从Web浏览器和设备到FreeSWITCH的调用。 这允许Web浏览器或其他WebRTC客户端使用Verto发起到FreeSWITCH安装的呼叫,然后使用SIP,SS7或其他受支持的协议拨出到PSTN。
这是一个零依赖的实现,不需要像原来的那样包含jquery。 它内部不包含任何html内容,也不包含媒体处理程序。 您应该注意自己获取媒体轨道(我认为最好不要隐藏您的有用功能,浏览器提供了一个很好的API来处理媒体)
这是一个进行中的代码。 但是,它足够稳定,可以使用基本功能(调用)。 我相信并且希望源代码比我的英文更好:-)
包目录内容
/ dist-包含将Verto符号导出到全
Cordova + PhoneRTC插件+ FreeSwitch WebRTC Verto概念验证
$ cordova插件添加org.apache.cordova.console
$ cordova插件添加
$ cordova插件添加 (可选)
$ cordova平台添加android
$ cordova平台添加浏览器
$科尔多瓦建立Android
配置CLICK2CALL示例
编辑index.html并更改值输入
<input id="click2call_user" value="user">
<input id="click2call_domain" value="mydomian.com">
<input id="click2call_password" value="password">
<input id="click2call
FreeSWITCH提供了一个xml_rpc组件,支持用Web的方式管理FreeSWITCH。但是功能相当有限。因此我在这里做了一点小的扩展,允许执行CLI命令行,并且获得结果。
需要把文件解压缩、覆盖htdocs下的portal目录。
需要FreeSWITCH已经加载mod_xml_rpc
然后就可以通过http://:8080/portal打开管理页面。
建议通过官方文档了解mod_xml_rpc的配置方法。
freeswitch mod_verto提供了一个基于webrtc的js模块,该模块可以通过网页拨打电话、开视频会议等
环境: 基于阿里云debian8 安装 该模块需要https 最好是基于外网服务器安装
体验地址在http://blog.csdn.net/java_lilin/article/details/78391819有提到
2.由于要视频所以要编译源码的mod...
DAHDI和FreeSWITCH是两个不同但相互关联的开源项目,它们在VoIP通信领域都起着重要作用。
DAHDI是Digium提供的一个开源软件项目,它的全称是Digium/Asterisk Hardware Device Interface。它允许Asterisk PBX软件来与各种硬件设备(如电话卡、传真卡等)通信。DAHDI提供了一个低级别的API接口,允许Asterisk从硬件设备上读取音频数据。除了Asterisk,DAHDI也可以作为其他一些开源软件如FreeSWITCH的设备接口。
FreeSWITCH是一个多协议的开源PBX、电话会议服务器和SBC(Session Border Controller)软件,它能够处理各种语音和视频通信。FreeSWITCH的一个重要特点是它非常灵活和可扩展,可以配置和集成各种第三方软件和设备。在FreeSWITCH中,DAHDI可用于连接到不同类型的硬件设备,例如传真机、模拟电话等。
总之,DAHDI是用于与硬件设备进行通信的软件接口,而FreeSWITCH是一个VoIP通信平台,DAHDI在FreeSWITCH中可用于扩展其功能和连接到不同的硬件设备。