RTC与SIP互通所涉及的问题要想让RTC与SIP互通,要解决两个层面的问题:信令层和媒体层 。
两个网络使用的信令机制不同,所以要进行信令的转换,才能完成媒体的协商,建立会话 。媒体层要完成编码的转换,以及rtp/srtp转换等功能 。
优质通信三要素
- 信令层的协商:稳定的信令是实现RTC与SIP互通的基础,保达、异常处理、断线重连等机制 。
- SIP协议与RTC协议互转的处理:上述已经探讨了,RTC与SIP互通需要媒体层协议的转换 。
- 加速线路:媒体在服务间的中转,丢包以及延迟的处理 。就近接入、节点选择等 。
anyRTC全球超过200数据中心,覆盖200+国家和地区,国内线路涵盖华东、华南、华北、西南、东北、西北、香港、台湾 。客户就近接入、根据智能算法,给出最优路径 。
开源说明
开源代码地址开源的RTC和SIP互通的网关代码,其中使用了三大模块:RTC,RTM,SIP,相关的模块以库的形式提供,支持linux和windows平台 。
【开源,轻松实现RTC与SIP互通】开源的网关代码支持与ArCall开源项目互通,支持呼叫流程制定和修改 。
开源的网关支持三种模式:
- IVR呼叫中心模块适用于呼叫中心,手机/网页/小程序客户端呼入IVR,通过语音导航实现相应的业务流程 。
- SIP主动呼RTC模块适用于客户坐席主动呼叫消费者,支持SIP呼叫客户端,支持SIP直呼手机号等 。
- RTC直呼SIP座机适用于企业内外网互通,通过App客户端直接呼叫员工或指定坐席的工位座机 。
这里用到了anyRTC的实时消息SDK,请查看详细API说明1,状态流转图呼叫邀请中,主叫可以通过 LocalInvitation 对象提供的 getState 方法查询当前呼叫邀请的有关状态;被叫可以通过 SDK 返回的 RemoteInvitation对象的 getState方法查询当前呼叫邀请的相关状态 。
项目地址
LocalInvitationState
下图描述了与主叫相关的呼叫邀请状态流转图:

文章插图
RemoteInvitationState
下图描述了与被叫相关的呼叫邀请状态流转图:

文章插图
2,API 时序图取消已发送呼叫邀请

文章插图
接受/拒绝呼叫邀请

文章插图
注意事项及限制条件
- 主叫设置的呼叫邀请 content 的字符串长度:8 KB,格式为 UTF-8 。
- 被叫设置的呼叫邀请响应 response 的字符串长度:8 KB,格式为 UTF-8 。
- 呼叫邀请的 channel ID 仅用于与老信令互通时设置 。设置的 channel ID 必须与老信令 SDK 设置相同才能实现互通 。字符串长度:64 字节,格式为 UTF-8 。
推荐阅读
- 推荐5款开源报表工具
- 什么是接口的幂等性,如何实现接口幂等性?
- 支付宝app支付服务端的实现-Java版
- 实现远程控制电脑开机过程
- Go语言环境安装
- 多出口如何建立IPSec VPN?两种配置方式实现高可用性
- 图像插值算法及其实现
- 搞微服务用阿里开源的 Nacos 真香啊
- Sentinel+Nacos实现资源流控、降级、热点、授权
- 轻松上手 Spring Boot & Kafka 实战
