使用浏览器与FreeSwitch下注册的SIP电话进行通话
环境准备:
1:一台SIP电话机,我手上刚好有一GrandStream的SIP话机(也可以是软电话如xLite)
2:一台笔记本电脑带WSL的Windows 10(我用的版本是10.0.16299.371)
3:FreeSwitch 1.6.18 (windows版本,目前Debian 9与FreeSwitch还不兼容20180509)
4:WSL安装debian,版本是9.4(cat /etc/debian_version)
大致计划:
1:将FreeSwitch安装到Windows系统上
2:将SIP话机注册到FreeSwitch上
3:将Janus安装到WSL上的Debian系统上
4:使用Janus的demo:SIP Gateway(Sofia)与SIP话机测试呼叫
步骤:
1:安装FreeSwitch 1.6
到FreeSwitch网站下载安装包FreeSWITCH-1.6.18-x64-Release.msi
http://files.freeswitch.org/windows_installer/installer/x64/FreeSWITCH-1.6.18-x64-Release.msi
安装完后,在SIP话机上设置注册到FreeSwitch上,这里我用1000号码,登录成功后,
打开fs_cli,输入命令:
sofia status profile internal reg
可以看到以下输出,证明1000号已经注册上来了
freeswitch@███████> sofia status profile internal reg
Registrations:
=================================================================================================
Call-ID: [email protected]
User: [email protected]
Contact: ""
Agent: Grandstream GXV3275 1.0.3.86
Status: Registered(UDP)(unknown) EXP(2018-05-09 16:51:30) EXPSECS(3361)
Ping-Status: Reachable
Ping-Time: 0.00
Host: ███████
IP: 192.168.0.104
Port: 5060
Auth-User: 1000
Auth-Realm: 192.168.0.147
MWI-Account: [email protected]
Total items returned: 1
=================================================================================================
也可以用
来测试一下话机是否能正常呼叫
2:在WSL的Debian上安装Janus
WSL确实是好东东,方便快捷不用折腾虚拟机或者双系统了,超喜欢
按照github上的关于Debian部分的安装说明即可
https://github.com/meetecho/janus-gateway
需要额外说明的是,libsrtp的默认安装是1.4版本,比较旧,但是按Janus上的说明下载v2.0.0.tar.gz后编译也失败,提示的错误大概是这样:
crypto/include/aes_gcm_ossl.h:58:20: error: field 'ctx' has incomplete type
按stackoverflow上说得解决方法是,下载2.1版本
参考链接:https://stackoverflow.com/questions/47518843/error-field-ctx-has-incomplete-type-evp-cipher-ctx
安装完后,Janus安装位置是/opt/janus,按如下命令启动Janus:
root@███████:/opt/janus/bin# ./janus
Janus commit: e64e67e4c59433903e5262890c0346d121ba31a5
Compiled on: Wed May 9 14:18:27 DST 2018
---------------------------------------------------
Starting Meetecho Janus (WebRTC Gateway) v0.4.0
---------------------------------------------------
Checking command line arguments...
Debug/log level is 4
Debug/log timestamps are disabled
Debug/log colors are enabled
Adding 'vmnet' to the ICE ignore list...
Using 192.168.0.147 as local IP...
3:访问Janus的demo,其安装位置是:
/opt/janus/share/janus/demoscd到这个目录后,使用以下命令用python搭个临时的web服务:
python -m SimpleHTTPServer 8080
看到以下输出就证明成功了:
nickwar@███████:/opt/janus/share/janus/demos$ python -m SimpleHTTPServer 8080
Serving HTTP on 0.0.0.0 port 8080 ...
然后在Chrome中就可以通过以下URL打开demo了:
http://127.0.0.1:8080
然而,在我机器上发现无法访问这个端口,虽然python没有报错,搞了几十分钟后发现可能是我安装的Array SSL的客户端带的一个驱动文件导致(C:\Windows\System32\drivers\tdi64.sys),
果断卸载后重启电脑,访问正常了,具体解决方法参考网页:
https://github.com/Microsoft/WSL/issues/1554
4:最后一步,使用sip demo呼叫,
首先在demo页面中填写信息注册到FreeSwitch上,注册成功后,在FreeSwitch控制台中输入查询命令可以看到注册状态:
freeswitch@███████> sofia status profile internal reg
Registrations:
=================================================================================================
Call-ID: [email protected]
User: [email protected]
Contact: ""
Agent: Grandstream GXV3275 1.0.3.86
Status: Registered(UDP)(unknown) EXP(2018-05-09 16:51:30) EXPSECS(2101)
Ping-Status: Reachable
Ping-Time: 0.00
Host: ███████
IP: 192.168.0.104
Port: 5060
Auth-User: 1000
Auth-Realm: 192.168.0.147
MWI-Account: [email protected]
Call-ID: 1495a039-ce04-1236-86aa-ec8eb59c4623
User: [email protected]
Contact: "nw"
Agent: Janus WebRTC Gateway SIP Plugin 0.0.7
Status: Registered(UDP)(unknown) EXP(2018-05-09 17:17:13) EXPSECS(3644)
Ping-Status: Reachable
Ping-Time: 0.00
Host: ███████
IP: 192.168.0.147
Port: 55715
Auth-User: 1001
Auth-Realm: 192.168.0.147
MWI-Account: [email protected]
Total items returned: 2
=================================================================================================
输入sip:[email protected]然后点击Call就可以发起呼叫了,很方便。
视频呼叫也试了一下,能发起呼叫,但是看不到视频,demo页面上说了有问题,果然是有问题,没有再深入了解。
贴俩图:
总结:
1:Janus网关的demo包含了设备设置、SIP对接、语音视频流播放,音视频会议,这些功能,基本上就可以满足交换平台对接的各种应用场景需求,值得研究
2:WSL(Windows Subsystem for Linux)相当给力,强烈推荐