首页 > 其他分享 >freeswitch透传带SDP的180

freeswitch透传带SDP的180

时间:2023-06-08 17:44:06浏览次数:54  
标签:透传带 SDP sofia switch 183 180 freeswitch channel

 

概述

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)。

 

 

总结

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

 

空空如常

求真得真

标签:透传带,SDP,sofia,switch,183,180,freeswitch,channel
From: https://www.cnblogs.com/qiuzhendezhen/p/17467252.html

相关文章

  • FreeSwitch基础知识(一)
        总的来说,FreeSwitch由一个稳定的核心(Core)及一些外围模块组成、这些外围模块根据其功能和用途的不同又分为Endpoint、Codec、Application等不同的类别。    FreeSwitch内部使用线程模型来处理并发请求,每个连接都在单独的线程中进行处理,不同的线程间通过Mutex互......
  • windows编译freeswitch-1.8.5
    我的windows环境是WIN10编译器是vs2022下载好freeswitch-1.8.5代码解压后直接打开sln文件,开始编译。报错如下:6>libsrtp.lib(crypto_kernel.obj):errorLNK2005:SocketNotificationRetrieveEvents已经在libsrtp.lib(srtp.obj)中定义6>libsrtp.lib(alloc.obj):errorL......
  • freeswitch的gateway配置方案优化
     概述freeswitch是一款简单好用的VOIP开源软交换平台。在之前的文章中,我们简单介绍过gateway的三种配置方案,但是实际应用之后发现,方案中的参数设置有缺陷,会导致一些问题。本文档中,针对具体的gateway配置问题进行分析和解决。环境centos:CentOS release7.0(Final)或以上......
  • FreeSWITCH添加自定义endpoint
    操作系统:CentOS7.6_x64   FreeSWITCH版本:1.10.9 日常开发过程中会遇到需要扩展FreeSWITCH对接其它系统的情况,这里记录下编写FreeSWITCH自定义endpoint的过程。一、模块定义函数使用FreeSWITCH自带的框架来定义模块函数,函数指针及参数列表定义如下(src/include/switc......
  • 2023华为伙伴大会:ISDP发布伙伴体验中心,邀伙伴探索数智化未来
    近日,2023年华为中国合作伙伴大会于深圳国际会展中心(宝安)圆满落幕。本次大会向来自全国各个领域的1.6万多名华为新老朋友,提供一个面对面开放交流、自我展示的舞台。此次大会煤亮子、软通动力、中软国际、易宝、全采智能等多家ISDP的新老伙伴出席,一起交流行业发展与下一步合作。其中......
  • 华为ISDP:从ChatGPT说起,企业作业数字化转型需要怎样的平台工具?
    在各行各业轰轰烈烈的数字化转型浪潮中,企业一方面需要实现自身数字化转型以向客户提供更好的业务体验,提升效率,另一方面需要发挥数字化杠杆作用使能企业成本降低,增强行业竞争力。在2023年第20届华为分析师大会开幕式上,华为轮值董事长孟晚舟分享了分享数字化转型三个核心洞见,她指出华......
  • 2023华为伙伴大会:ISDP发布伙伴体验中心,邀伙伴探索数智化未来​
    近日,2023年华为中国合作伙伴大会于深圳国际会展中心(宝安)圆满落幕。本次大会向来自全国各个领域的1.6万多名华为新老朋友,提供一个面对面开放交流、自我展示的舞台。此次大会煤亮子、软通动力、中软国际、易宝、全采智能等多家ISDP的新老伙伴出席,一起交流行业发展与下一步合作。其中......
  • 华为ISDP:从ChatGPT说起,企业作业数字化转型需要怎样的平台工具?
    在各行各业轰轰烈烈的数字化转型浪潮中,企业一方面需要实现自身数字化转型以向客户提供更好的业务体验,提升效率,另一方面需要发挥数字化杠杆作用使能企业成本降低,增强行业竞争力。在2023年第20届华为分析师大会开幕式上,华为轮值董事长孟晚舟分享了分享数字化转型三个核心洞见,她指出华......
  • FreeSWITCH1.10.5源码编译(CentOS 7.10)
    一、安装sofia-sipcd/usr/local/src/freeswitch-1.10.5.-releasegitclonehttps://github.com/freeswitch/sofia-sip.gitcdsofia-sip./configuremakemakeinstallldconfig二、安装spandspcd/usr/local/src/freeswitch-1.10.5.-releasegitclonehttps://github.......
  • freeswitch的2833和inband对接方案
     概述freeswitch支持三种模式的DTMF传输方式,分别时inband、INFO、2833。在传统的PSTN网络中,所有的DTMF码都是inband模式,所以VOIP网络和PSTN网络对接中,需要将DTMF码做格式转换,通常是2833和inband之间的转换。freeswitch作为VOIP和PSTN网络中间的媒体服务器时,AB路会协商为不同......