freeswitch透传带SDP的180

这篇具有很好参考价值的文章主要介绍了freeswitch透传带SDP的180。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

freeswitch透传带SDP的180

 

概述

freeswitch是一款简单好用的VOIP开源软交换平台。

freeswitch对于180/183的消息处理有默认的规则,但是在3GPP的标准中,消息流程会更加复杂,场景更多变。

这样就需要我们根据实际环境中的场景定制消息流程。

本文只讨论带SDP的183/180消息。

环境

centos:CentOS  release 7.0 (Final)或以上版本

freeswitch:v1.10.7

GCC:4.8.5

fs中183/180的默认处理

fs收到183(SDP)的时候,会透传183(SDP)到A路。

fs收到180(SDP)的时候,默认将180(SDP)转换为183(SDP)传给A路。

在设置了参数“early_use_180”的场景下,fs会把183(SDP)和180(SDP)都转换为180(SDP)传给A路。

期望的183/180处理流程。

fs收到183(SDP)的时候,会透传183(SDP)到A路。

fs收到180(SDP)的时候,会透传180(SDP)到A路。

修改方案

修改方案,在B路处理180(SDP)消息的流程中,设置通道变量“180withsdp=true”,在A路响应183/180消息的流程中,检查通道变量“180withsdp”的值并设置响应的消息码。

修改 src\mod\endpoints\mod_sofia\sofia.c,7537行

if (status == 180 && r_sdp) {

       status = 183;

       if (switch_true(switch_channel_get_variable(channel, "passthrough180")))

       {

              //设置通道变量,标记B路的180+SDP,在A路响应时,处理send_sip_code为180+SDP

              if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS)

              {

                     other_channel = switch_core_session_get_channel(other_session);

                     switch_channel_set_variable(other_channel, "180withsdp", "true");

                     switch_core_session_rwunlock(other_session);

              }

       }

}

修改 src\mod\endpoints\mod_sofia\mod_sofia.c,2548行

if (switch_true(switch_channel_get_variable(channel, "passthrough180")) &&

       switch_true(switch_channel_get_variable(channel, "180withsdp")) )

{

       send_sip_code = 180;

       p_send_sip_msg = sip_180_Ringing;

}

重新编译安装mod_sofia模块。

修改拨号计划如下。

<include>

       <context name="out2in">

              <extension name="sbc-out2in" continue="true">

                     <condition field="destination_number" expression="^(\d+)$">

                            <action application="export" data="passthrough180=true" />

                            <action application="bridge" data="{sip_invite_call_id=${sip_call_id}

                                   }sofia/external/sip:${destination_number}@10.55.55.138:5555"/>

                     </condition>

              </extension>

       </context>

</include>

测试

搭建测试环境,B路响应180(SDP)。

freeswitch透传带SDP的180

 

总结

常见的消息处理流程都可以在mod_sofia中找到,但是对于AB路之间的消息透传,以及涉及到codec媒体协商的流程会比较复杂。

空空如常

求真得真文章来源地址https://www.toymoban.com/news/detail-476022.html

到了这里,关于freeswitch透传带SDP的180的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TCP透传数据至Onenet平台(简单用STM32上传采集的传感器数据)

    主页点击控制台  点击全部产品服务,再点击多协议接入  选择TCP透传,点击添加产品      点击确定,然后选择立即添加设备  点击添加设备  随便起个设备名称,这里的鉴权信息等下要用来作为登录设备用,点击添加  添加数据流模板,就是绑定上传的数据      这里我

    2024年02月05日
    浏览(46)
  • FreeSWITCH 1.10.10 简单图形化界面7-记录一次配置讯时网关的问题

    用户使用的是迅时HX4E。按照这篇文章配置后,能呼出,不能呼入。 直接呼入网关自己挂了,FreeSWITCH也没有收到任何呼入消息; 网关SIP日志,提示自己486 busy; 抓包发现讯时网关把invite 请求行IP是对的,但是消息发给网关自己了,挺纳闷的; 折腾两个小时用户发现把网线查到

    2024年02月09日
    浏览(44)
  • python超简单小游戏代码,python小游戏代码能用的

    大家好,小编来为大家解答以下问题,python超简单小游戏代码,python小游戏代码能用的,现在让我们一起来看看吧! 大家好,小编来为大家解答以下问题,python游戏代码大全可复制100行,python游戏代码大全可复制免费,今天让我们一起来看看吧! python有趣的编程代码 class 

    2024年03月14日
    浏览(60)
  • 视觉系统硬件选型简单概述

    视觉系统硬件选型简单概述 照射光照射在目标表面,被目标物反射,反射光经过镜头进入相机,目标物的图像就会聚集在CCD图像单元上, 然后通过A/D转换成数字图像,再进行处理,最后输出结果 光线,经过镜头照射在感光传感器上(CCD或者CMOS),产生模拟电流信号,信号经

    2024年02月09日
    浏览(36)
  • 简单工厂模式概述和使用

    一、简单工厂模式简介 原文链接 1. 定义 简单工厂模式( Simple Factory Pattern ):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例

    2024年02月10日
    浏览(43)
  • SpringMVC概述与简单使用

    SpringMVC也叫做Spring web mvc,是 Spring 框架的一部分,是在 Spring3.0 后发布的。 3.1.1 新建一个webapp项目 3.1.2 pom.xml文件书写 3.1.3 注册中央调度器 3.1.4 创建处理器 3.1.5 声明组件扫描器 3.1.6 在webapp目录下定义目标界面 3.1.7 1.3.8 修改视图解析器的注册 (1)浏览器提交请求到中央调度

    2024年02月10日
    浏览(33)
  • SQLite简单概述以及使用

          SQLite是一种轻量级的关系型数据库管理系统,它不需要独立的服务器进程,也不需要配置多个参数,就可以直接访问一个文件中的数据库,它以C语言库的形式提供了一个嵌入式的数据库引擎,支持SQL语言标准的大部分功能,但相比于MySQL、Oracle等数据库,SQLite的体积小

    2024年02月08日
    浏览(42)
  • WebRTC | SDP详解

    目录 一、SDP标准规范 1. SDP结构 2. SDP内容及type类型 二、WebRTC中的SDP结构  1. 媒体信息描述 (1)SDP中媒体信息格式 i. “a=rtpmap”属性 ii. “a=fmtp”属性 (2)SSRC与CNAME (3)举个例子 (4)PlanB与UnifiedPlan 2. 网络描述 3. 安全描述 (1)应用级防护 (2)信令级防护 (3)数据级防

    2024年02月12日
    浏览(43)
  • Shader学习笔记:BRDF简单概述

    这篇文章写于一年多以前的一次课程作业,这次作为一个“存货”给放出来,仅仅只是针对代码和一些要点进行简单叙述,如果想听完整的版本,请搜索毛星云大神的博客或者书籍。关于基本的物理渲染公式,网络上的博客和典籍已经多如牛毛了,这里只是自己在之前整理的

    2024年02月04日
    浏览(40)
  • webrtc sdp各字段含义

    WebRTC使用Session Description Protocol(SDP)实现传输协议的协商和描述。以下是SDP中常见的字段及其含义: v:协议版本号 o:会话创建者的标识符、会话ID、和会话版本号 s:会话名称 t:会话时间描述(会话开始和会话结束时间) a:会话级别的属性描述,例如:带宽限制、编解码

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包