网站首页 > 技术文章 正文
如何通过WebRTC客户端SIPML5实现Asterisk电话呼叫
在配置本环境之前,用户必须已经安装好了Asterisk和相关的WebRTC配置。然后,我们开始配置WebRTC客户端-SIPML5,通过浏览器实现WebRTC/SIP/PSTN的呼叫。今天,我们重点介绍SIPML5的配置呼叫流程。其他配置方式和对接方式,我们将在后续文章中介绍。
参考关于在Asterisk环境下配置WebRTC。
https://www.toutiao.com/i6719761759613223435/
http://toutiao.com/item/6801443511649436173/
总览
此文档演示一个Asterisk配合WebRTC工作基本功能。配置Asterisk后将会支持一个远端的WebRTC客户端,使用的客户端是 sipml5 客户端。此文档的目的是配置Asterisk,通过浏览器实现Asterisk的呼入呼出流程。用户必须使用最新的火狐浏览器或者Google浏览器。
当然,用户可以通过其他的方式实现和SIP分机,PSTN接入进行通信。如果用户需要对接运营商的呼入呼出业务的话,需要安装语音板卡或者语音网关对接运营商的PSTN线路。
另外,通过WebRTC/浏览器呼叫,可以极大降低呼叫中心或者IPPBX的部署成本,终端部署几乎为零,同时可以增加在浏览器终端的定制开发,因此WebRTC的使用场景是通信行业比较有竞争力的方式。但是,因为涉及了域名解析和浏览器兼容性等问题,因此部署时需要读者能够花费一定的时间多网络环境和业务需求做充分调研。
如果读者希望通过光盘安装方式Asterisk界面管理系统的安装的话,可以访问:www.freepbx.org.cn获得安装详情。
创建Asterisk服务器端测试场景
前面章节,我们已经介绍了关于配置Asterisk和WebRTC客户端的内容,用户可以阅读前面的内容,了解一下主要的步骤。这里,我们已经假设用户熟悉了前面的配置环境,用户的IPPBX主机可以通过 pbx.example.com 访问,客户端是全面配置的客户端 webrtc_client。 注意:用户需要开放ws 端口能够访问到其pbx域名。
配置Asterisk拨号规则
这里,我们做一个简单的测试拨号规则,客户端sipml5 client可以呼入测试。拨打200后,应答,然后播放一段提示语音(demo-congrats),然后挂机。
[default]
exten => 200,1,Answer()
same => n,Playback(demo-congrats)
same => n,Hangup()
配置拨号规则后,从asterisk CLI登录,重新加载一次Asterisk-使用命令 "dialplan reload" 。
浏览器和WSS配置
当使用WSS传输时,默认情况下,Chrome和Firefox不会允许用户使用WSS,通过自签证书连接服务器端。因此,最好用户安装一个公有证书,公有证书的安装可以参考其他网络文档来实现。证书提供商会提供完整的安装说明,当然用户也可以安装lets encript这样的免费证书。
或者,用户配置浏览器来添加一个另外,这样,浏览器将视此域名为安全可信任的域名。打开浏览器设置,增加一个Asterisk's HTTPs server's TLS port和WS 路径,例如: https://pbx.example.com:8089/ws,然后手动添加另外设置。
配置SIPML5客户端
SIPML5 是一款非常好的客户端测试工具,可以用来测试Asterisk/WebRTC。很多用户也在生产环境中使用其他的客户端,用户可以参考其他客户端文档进行配置。这里,仅按照SIPML5来做示例测试。
访问此官方网站 https://sipml5.org, 用户浏览器可能跳转到了另外一个新的网站
https://www.doubango.org/sipml5/
访问到此界面以后,点击 "Enjoy our live demo" 将会引导到一个sipml5 端。
然后开始注册用户客户端,使用以下配置输入配置信息,如果用户的系统配置有不同的话,自己修改到相应的正确配置。注意,以下步骤需要一步步进行。
我们输入相应的配置参数,对照pjsip的配置参数输入:
- Display Name
- Private Identity, webrtc配置id,检查pjsip的配置
- Public Identity is in the format: sip : (name of our PJSIP aor object) @ (IP Address of the Asterisk system)
- Password :在pjsip中设置的 PJSIP auth 密码
- Realm 是 "asterisk.org"
下一步,点击 "Expert mode?" ,用户会重新开启一个浏览器 tab,在专家设置模式中,输入以下类似相同的配置:
注意,这里修改的设置:
- 勾选了"Disable Video"
- 输入正确的 WebSocket Server URL地址,使用的格式为:wss : // (ip address of asterisk) : 8089 / ws
- 勾选 "Disable 3GPP Early IMS"
点击 "Save" ,然后返回其他演示的注册的demo tab。
下一步,点击 "Login" ,用户应该可以看到 Connected 状态显示:
用户登录CLI窗口,打开log日志:
# asterisk -vvvr
如果成功连接的话,用户可以看到退出和登录的信息log,类似于这样的:
== WebSocket connection from '192.168.147.245:49976' for protocol 'sip' accepted using version '13'
-- Added contact 'sips:webrtc_client@192.168.147.245:49976;transport=ws;rtcweb-breaker=no' to AOR 'webrtc_client' with expiration of 200 seconds
== Endpoint webrtc_client is now Reachable
呼叫测试
在 sipml5 Call control栏中输入200,然后按呼叫按钮。用户会看到一个下拉菜单,然后点击语音呼叫:
选择 "Audio" 继续执行。完成流程时,浏览器会弹出一个对话提示框,要求允许浏览器使用电脑的麦克风资源。
点击"Allow"按钮。
下一步,Call control box 将会显示呼叫正在处理中:
呼叫连接后,显示一个 In Call 状态:
这时,用户可以听到Asterisk系统的提示语音 "Congratulations, you have successfully installed and executed the Asterisk open source PBX..."
到这里,用户使用WebRTC客户端呼叫Asterisk的第一步基本完成。
关于WebRTC客户端配置需要注意到问题
使用自签证书在内网测试的话,可能不会出现太多问题。如果用户使用WebRTC通过外网访问PBX域名的话,首先需要确认你的PBX域名能够成功访问,防火墙端口,路由器端口需要开启ws端口。另外,使用公有证书的话,需要核实证书的安装配置和有效性。还有,因为WebRTC环境中,浏览器的版本会影响呼叫的稳定性,用户最好使用最新的google浏览器或者火狐浏览器测试。客户端使用添加到客户端。如果呼叫等待时间太久的话,可能需要关闭ICE或者修改一些协商代码。
猜你喜欢
- 2024-10-30 软交换折腾小记 软交换与ngn
- 2024-10-30 Asterisk-ARI对通道中的DTMF事件处理
- 2024-10-30 Asterisk通道和ARI接口的通信 alphy通道
- 2024-10-30 网易云信CTO阙杭宁:如何保障十万不同应用的通讯稳定与实时性
- 2024-10-30 融合通信功能配置示例-1-如何快速批量添加SIP分机
- 2024-10-30 PJSIP集成G729 (vs2022版) 乚a7841集成块
- 2024-10-30 JFrog 披露PJSIP开源多媒体通信库的五个漏洞
- 2024-10-30 chan_pjsip三个必要设置解决SIP呼叫问题
- 2024-10-30 PJSIP 2.12.1 编译 与 C# Pjsip (Pjsua2 api )应用
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)