mod_verto
在freeswitch中有mod_sofia模块支持sip协议。sip协议用于媒体链接建立前的信令交互。像mod_sofia这种模块在freeswitch中成为endpoint,除了mod_sofia,freeswitch还有一个mod_verto模块。mod_verto使用freeswitch自定义的一个协议,通过websocket进行信令交互。verto协议基于jsonRpc协议,通过json格式来传输数据。
安装mod_verto
正常编译安装freeswitch时在module配置文件中打开verto的编译,之后一样make&make install就可以了,安装好之后需要在freeswitch启动加载模块的配置文件中打开verto,使freeswitch启动时自动加载mod_verto。
配置verto
修改
conf/autoload_configs/verto.conf.xml
<configuration name="verto.conf" description="HTML5 Verto Endpoint">
<settings>
<param name="debug" value="10"/>
<!-- seconds to wait before hanging up a disconnected channel -->
<param name="detach-timeout-sec" value="120"/>
<!-- enable broadcasting all FreeSWITCH events in Verto -->
<!-- <param name="enable-fs-events" value="false"/> -->
<!-- enable broadcasting FreeSWITCH presence events in Verto -->
<param name="enable-presence" value="false"/>
</settings>
<profiles>
<profile name="default-v4">
<param name="bind-local" value="$${local_ip_v4}:8081"/>
<param name="bind-local" value="$${local_ip_v4}:8082" secure="true"/>
<param name="force-register-domain" value="$${domain}"/>
<param name="secure-combined" value="/usr/local/freeswitch/certs/wss.pem"/> -证书的位置,一会儿存放证书时要用
<param name="secure-chain" value="/usr/local/freeswitch/certs/wss.pem"/>
<param name="userauth" value="true"/>
<!-- setting this to true will allow anyone to register even with no account so use with care -->
<param name="blind-reg" value="false"/>
<param name="mcast-ip" value="224.1.1.1"/>
<param name="mcast-port" value="1337"/>
<param name="rtp-ip" value="$${local_ip_v4}"/>
<!-- <param name="ext-rtp-ip" value=""/> -->
<param name="local-network" value="localnet.auto"/>
<param name="outbound-codec-string" value="opus,vp8,h264"/>
<param name="inbound-codec-string" value="opus,vp8,h264"/>
<param name="apply-candidate-acl" value="localnet.auto"/>
<param name="apply-candidate-acl" value="wan_v4.auto"/>
<param name="apply-candidate-acl" value="rfc1918.auto"/>
<param name="apply-candidate-acl" value="any_v4.auto"/>
<param name="timer-name" value="soft"/>
</profile>
<profile name="default-v6">
<param name="bind-local" value="[$${local_ip_v6}]:8081"/>
<param name="bind-local" value="[$${local_ip_v6}]:8082" secure="true"/>
<param name="force-register-domain" value="$${domain}"/>
<param name="secure-combined" value="$${certs_dir}/wss.pem"/>
<param name="secure-chain" value="$${certs_dir}/wss.pem"/>
<param name="userauth" value="true"/>
<!-- setting this to true will allow anyone to register even with no account so use with care -->
<param name="blind-reg" value="false"/>
<param name="rtp-ip" value="$${local_ip_v6}"/>
<!-- <param name="ext-rtp-ip" value=""/> -->
<param name="outbound-codec-string" value="opus,vp8"/>
<param name="inbound-codec-string" value="opus,vp8"/>
<param name="apply-candidate-acl" value="wan_v6.auto"/>
<param name="apply-candidate-acl" value="rfc1918.auto"/>
<param name="apply-candidate-acl" value="any_v6.auto"/>
<param name="apply-candidate-acl" value="wan_v4.auto"/>
<param name="apply-candidate-acl" value="any_v4.auto"/>
<param name="timer-name" value="soft"/>
</profile>
</profiles>
</configuration>
为用户号码配置verto支持
修改directory/default.xml,在<params>和</params>中添加如下:
<param name="jsonrpc-allowed-methods" value="verto"/>
<param name="jsonrpc-allowed-event-channels" value="demo,conference,presence"/>
每个用户的xml配置文件中
conf/directory/default/1000.xml,修改如下:
<user id="1001">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1001"/>
<param name="verto-context" value="public"/>
<param name="verto-dialplan" value="XML"/>
</params>
如需使用会议功能,请修改会议配置文件conf/autoload_configs/conference.conf.xml
在<profiles>和</profile>中检查conference-flags项目,确保其中包含livearray-sync和livearray-json-status
拨号计划配置例如:
<extension name="HTML5 Verto">
<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>
至此freeswitch针对verto的配置已经完成,想要测试的话,需要使用freeswitch自带的verto demo,安装使用过程如下:
一、创建证书
因为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.verto
./sign-server-cert.sh
self.verto
cat
self.verto
.crt
self.verto
.key >
/usr/local/freeswitch/certs/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 /usr/local/freeswitch/certs/wss.pem
SSLCertificateKeyFile /usr/local/freeswitch/certs/wss.pem
SSLCertificateChainFile /usr/local/freeswitch/certs/wss.pem
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
重启apache服务
sudo service apache2 restart
三、将verto demo放到apache的web页面目录中
cp -rf /home/verto/freeswitch/html5/verto/video_demo /var/www/html
此处我们直接复制带视频的demo过来,verto还提供了不带视频的demo和verto_communicator请自行尝试。
打开浏览器(我用的Chrome)访问https://IP地址/video_demo
提示未信任,点高级,继续前往。
至此安装完毕,其他请自行体验。
mod_verto在freeswitch中有mod_sofia模块支持sip协议。sip协议用于媒体链接建立前的信令交互。像mod_sofia这种模块在freeswitch中成为endpoint,除了mod_sofia,freeswitch还有一个mod_verto模块。mod_verto使用freeswitch自定义的一个协议,通过websocket进行信令交互。verto协议基于jsonR
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...
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终端进行互联互通, 下面就
我们在web客户端
使用
sip协议时用的比较多的是sipml5库和jssip库。
但是sip协议比较重,又复杂,所以
freeswitch
内部就自定义了一个
verto
协议,方便在web页面上
使用
音视频服务。
verto
协议通过websocket传输信令,协议内部数据格式为json,这样比较符合互联网开发人员的习惯,同时比sip协议更加轻量化。
freeswitch
有一个endpoint
模块
叫做mod_
verto
,是用来作为服务端的协议适配器。
freeswitch
的源码中有几个支持ve...
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
verto
js
Verto
(VER-to)RTC是一个
FreeSWITCH
端点,该端点实现了JSON-RPC连接的子集,该子集旨在用于安全Web套接字。 最初的目标是
WebRTC
,以简化编码和实现从Web浏览器和设备到
FreeSWITCH
的调用。 这允许Web浏览器或其他
WebRTC
客户端
使用
Verto
发起到
FreeSWITCH
安装的呼叫,然后
使用
SIP,SS7或其他受支持的协议拨出到PSTN。
这是一个零依赖的实现,不需要像原来的那样包含jquery。 它内部不包含任何html内容,也不包含媒体处理程序。 您应该注意自己获取媒体轨道(我认为最好不要隐藏您的有用功能,浏览器提供了一个很好的API来处理媒体)
这是一个进行中的代码。 但是,它足够稳定,可以
使用
基本功能(调用)。 我相信并且希望源代码比我的英文更好:-)
包目录内容
/ dist-包含将
Verto
符号导出到全
启动
FreeSWITCH
后端服务。设置IP,账号,密码。双击网页启动,即可进行SIP拨号通话。
原帖链接:https://download.csdn.net/download/hzc83hzc/10963423
由于原帖分数过多(系统会随着下载次数自动变更分数),特开新帖。
1、通道接通和挂机后自动执行命令或脚本:
<actionapplication="bridge"data="{api_on_answer='lua test.lua para1 para2'}sofia/gateway/mygateway/02588888888"/>
<action application="set" data="api_hangup_hook=lua...
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
中可用于扩展其功能和连接到不同的硬件设备。