基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP Gateway 报文设计 (二)

简介: 基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP Gateway 报文设计

上一篇我们提到,常用的SIP 信令有:1注册、2振铃、3呼叫、4接听、5挂断、6取消
有了这几个报文,电话的呼入和呼出就可以基本实现,其他拒接、DTMF等类似。
如图所示:
基于2_code.png

约定:

1、 客户端和服务器端JSON格式交互;

  • 必传参数:

    • msgtag 是消息唯一标志,
    • userid是谁触发的,
    • appid 作为一个应用的标记。
    • sign 签名加密 (看情况)

2、 服务器返回的报文必须包括msgtag appiderrcode

  • errcode=1 说明有错误 errmsg就会有值 ;
  • 如果errcode=0 说明返回结果正确;
  • 一般是返回的msgtag 是请求的msgtag+”_res”做为区分

3、 roomID 是房间号对应声网的渠道号,每个通话报文必须包括roomID 用途是什么自己想。
4、 callType 是video audio 前者代表视频呼叫,后者代表语音呼叫
5、 direction 呼叫方向

  • in 呼入 (SIP Server 把呼叫送到声网的SDK)
  • out 呼出(SDK把呼叫送到SIP Server)

6、 isSIP yes no 代表这通呼叫是内部呼叫(声网客户端实现) 还是SIP呼叫(走落地)

这篇文章我只是简单列出核心的报文DEMO格式。

信令1:注册报文:

基于2_信令1_q.png

响应报文:

基于2_信令1_p.png

信令2:呼叫报文:

基于2_信令2_q.png

响应报文:
基于2_信令2_p.png

信令3:振铃报文:

基于2_信令3_q.png

响应报文:

基于2_信令3_p.png

信令4:接听报文:

基于2_信令4_q.png

响应报文:
基于2_信令4_p.png

信令5:挂断报文:

基于2_信令5_q.png

响应报文:
基于2_信令5_p.png

信令6:取消报文:

基于2_信令6_q.png

响应报文:
基于2_信令6_p.png

如图上面设计的报文非常简单,相信大家都看得明白。不需要过多言语说明,供大家参考吧。
不论客户端还是WebRTC2SIP connector 本质上都是声网的音视频SDK客户端,然后集成了自定义的报文,所以他们初始化的时候,需要调用一个专门的的接口暂时叫做initSIP,调用这个接口的时候传递type 类型参数;如果是手机端或者电脑端、网页端调用,返回TCP Server地址和端口,供他们建立连接; 如果是connector转接服务器请求的话,除了返回TCP Server 地址和端口外,还要返回SIP Server地址及端口,以及呼叫送号前缀。不然SDK发起电话呼叫的时候,connector 不知道电话要转送到哪里。这个开发一个http接口就可以实现。

APP初始化,调用initSIP接口,建立TCP连接,或者呼叫的时候在建立TCP连接;

TCP Server维持所有终端的状态及网络位置做Session Manager 角色

主叫输入的号码编辑封装calling报文,通过tcp socket 发给服务器,同时UI呈现拨号等待页面;

被叫收到calling报文,就封装ringing报文,通过tcp socket 发给服务器,服务器查询Session Manager 查询主被叫的IP和端口,实现消息的路由转发,主叫收到就显示振铃页面,同时 WebRTC2SIP connector 启动media coder线程去解析和resample 读取到的音频流。就这样一个个的报文交互串起来,就可以实现整个SIP呼叫逻辑。

有兴趣的同学,快去试试吧。

相关文章
|
7月前
|
编解码 视频直播 开发工具
|
3月前
|
安全 Java 开发者
强大!Spring Cloud Gateway新特性及高级开发技巧
在微服务架构日益盛行的今天,网关作为微服务架构中的关键组件,承担着路由、安全、监控、限流等多重职责。Spring Cloud Gateway作为新一代的微服务网关,凭借其基于Spring Framework 5、Project Reactor和Spring Boot 2.0的强大技术栈,正逐步成为业界的主流选择。本文将深入探讨Spring Cloud Gateway的新特性及高级开发技巧,助力开发者更好地掌握这一强大的网关工具。
245 6
|
4月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
221 1
|
4月前
|
存储 监控 开发工具
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱
68 0
|
5月前
|
NoSQL 开发工具 数据库
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
|
7月前
|
开发工具 CDN 容器
基于Html+腾讯云播SDK开发的m3u8播放器
周末业余时间在家无事,学习了一下腾讯的云播放sdk,并制作了一个小demo(m3u8播放器),该在线工具是基于腾讯的云播sdk开发的,云播sdk非常牛,可以支持多种播放格式。
236 1
|
6月前
|
API 开发工具
抖音sdk,抖音开发api接口
抖音sdk,抖音开发api接口
|
7月前
|
Java 开发工具 Maven
Android SDK开发的那些事(1),已整理成文档
Android SDK开发的那些事(1),已整理成文档
|
7月前
|
Java 芯片 Docker
docker运行声网linux-server-sdk示例
docker运行声网linux-server-sdk示例
74 1
|
7月前
|
Linux
jetbrains-gateway远端开发
jetbrains-gateway远端开发
135 1