实现目标:
FreePBX创建pjsip分机,WebRTC客户端可以使用pjsip分机账号登陆,同时实现WebRTC内部分机语音沟通,对接网关后,可以使用WebRTC客户端与运营商号码的双向语音呼叫。
相对比与asterisk搭建,FreePBX有着可视化页面,可以方便管理员对分机账号的创建和管理,同时和asterisk的管理难度相比,操作难度减低,方便用户使用WebRTC集成其他企业业务实现IPPPBX的WebRTC业务支持和扩展。
测试环境:
- FreePBX版本SNG7-FPBX-64bit-1805-2
- WebRTC客户端sipML5客户端
- 语音网关:sangoma vega50模拟网关
- 火狐浏览器68.0.1 (64 位)
- SIP软电话eyeBeam软电话
配置完整拓扑图:

配置步骤:
首先需要到官方下载FreePBX,安装配置以后,可以通过界面登录FreePBX系统。然后,再进行以下流程配置。其流程包括:创建证书,创建WebRTC分机,创建SIP分机,使用webrtc客户端登录WebRTC分机,配置网关,配置FreePBX呼入呼出路由。下面,我们会通过一步步配置来告诉大家如何实现WebRTC和网关呼入呼出的对接呼叫。
创建证书:
在WebRTC中,需要证书的支持才能支持登陆,在本次测试环境中为内网环境,没有公网证书,所以需要自己在FreePBX中创建证书。供测试使用,创建证书导航为“管理员>>证书管理”进入页面之后,按下图所指示进入证书创建页面

创建证书模板为

配置完成后记得在左下角点击提交,提交之后在右上角更新配置

关注知识星球,获取更多关于SIP应用场景技术SIP相关技术方案
证书的默认路径为“/etc/asterisk/keys/”使用远程软件连接到freepbx后台查看你所创建的证书

证书页面:
在配置http守护进程完成之后,现在我们进入证书页面,验证配置是否成功,在火狐浏览器中输入“https://192.168.1.31:8089/httpstatus”出现该页面时,配置完成

PJSIP分机创建:
接下来需要创建PJSIP分机,供sipML5客户端以及eyeBeam软电话注册,进行通讯的测试,最先的就是将sip通道设置为仅仅pjsip,使用auto模式时,pjsip分机登陆可能会走到sip通道,导致登陆失败,设置路径为“设置>>高级设置”找到“拨号规则和操作”这一板块下,修改为下图中的设置。

配置完成后,进入“设置>>Asterisk SIP设置”在通用设置页面下,修改一下参数,开启RTP的功能,同时,在下面的语音编码中,记得添加好opus模块

现在修改PJISP设置,设置如下

PJSIP分机创建及属性修改,在测试中,需要创建3台分机 ,2台为sipML5使用的分机,一台为eyeBeam软电话登陆分机。设置路径为“应用配置>>分机”添加PJSIP分机

设置为

现在创建一台eyebeam软电话登陆的PJSIP分机仅仅修改密码就好,其余使用默认设置。

注意:创建PJSIP分机时,笔者在点击更新后,sipML5客户端以及软电话登陆pjsip分机都出现了forbide的错误,这是配置没有完全生效,可以重启asterisk后台,或者直接putty连接重启freepbx。
通话测试
现在进行通话测试,sipML5客户端和软电话的使用在之前文章有提及,不过多赘述,在本次测试中为内网环境,不需要nat以及stun服务器的配置,因此在专家模式中需要进行一些改动。
8888分机上线成功

9999分机上线成功

软电话上线成功

sipML5客户端8888呼叫sipML5客户端9999:

通话建立成功,asterisk后台日志可查看,下图为日志部分截图

sipML5客户端8888呼叫软电话10000:

通话建立成功,asterisk后台日志可查看,下图为日志部分截图

软电话10000呼叫sipML5客户端8888:

通话建立成功,asterisk后台日志可查看,下图为日志部分截图

软电话10000呼叫sipML5客户端9999:

通话建立成功,asterisk后台日志可查看,下图为日志部分截图

sipML5客户端9999呼叫sipML5客户端8888

通话建立成功,asterisk后台日志可查看,下图

sipML5客户端9999呼叫sipML5客户端10000

通话建立成功,asterisk后台日志可查看,下图为日志部分截图

至此,sipML5客户端以及到软电话的内网通讯全都测试完毕,双向通讯正常。
接下来我们进行更深一步的测试,让freepbx对接sangoma的网关设备,型号为vega50模拟网关,使得内部话机可以与运营商双向呼叫。
FreePBX配置:
与vega网关对接,需要一条中继指向网关,在设置路径为“通信接口连接>>中继”

我们在这添加一条sip(chan_pjsip)中继,默认设置中,将中继名设置为简单易懂的名字

“pjsip配置”中,我们关闭认证和注册功能,在SIP服务器和端口,输入vega网关的IP地址和端口

现在配置入局路由。设置路径为“通信接口连接>>入局线路>>添加呼入路由设置”设置未知目的地为分机 ,同时指导一个分机号码接受运营商的呼叫

现在配置出局路由。设置路径为“通信接口连接>>出局线路>>添加呼出路由设置”在匹配中继顺序中,选择好之前创建的中继。

在Dial Patterns设置中,匹配模式设置为X.为匹配所有

现在进行网关侧配置
在vega网关上,建议新手使用快速配置



配置完成后,进行呼叫测试
使用sipML5客户端8888分机呼叫运营商号码,拨号时异地号码前加0

通话建立成功,asterisk后台日志可查看,下图为日志部分截图


呼入测试,使用手机拨打回PSTN线路号码,检查8888分机是否能接受呼叫

通话建立成功,asterisk后台日志可查看,下图为日志部分截图

注意:
- WebRTC通信对多方环境的依赖程度比较高,在本环境下配置成功不代表环境
- 在FreePBX配置时,记得使用快照功能,笔者在实际配置时,由于一些误操作 导致IP被PBX加入黑名单,无法远程访问页面,使用快照可还原状态
- FreePBX部分配置保持后,没有立即生效,需要手动重启PBX,保证配置生效,否则可能会出现。


SIPlab@知识星球学习SIP语音相关技术
asterisk@知识星球免费获取关于Asterisk的完整知识资料
关注微信公众号:asterisk-cn,获得有价值的Asterisk行业分享
Asterisk freepbx,FreeSBC技术文档: www.freepbx.org.cn
融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com
Asterisk/FreePBX中国合作伙伴,官方qq技术分享群(3000人):589995817