freeswitch透传带SDP的180

news2024/11/8 18:42:58

 

概述

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媒体协商的流程会比较复杂。

空空如常

求真得真

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/624349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用代码创造童话,永葆快乐时光

前言 随着科技的不断发展&#xff0c;大家对于世界的认知也越来越广泛和深入。在这个数字化时代&#xff0c;编程语言已经成为了一种全新的语言形式&#xff0c;创造了一个全新的世界&#xff0c;也为人们带来了无限的可能性。当然&#xff0c;这些可能性不止局限于商业领域和技…

如何获得铁粉

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 很多博主都有一些困惑&#xff1a; 我写了一些博客…

【多线程】模拟实现一个定时器

1. Java自带的定时器 相信大家都定过闹钟&#xff0c;在我上学有早八的时候&#xff0c;硬是要定三个闹钟才起得来&#xff0c;7:20&#xff0c;7:30&#xff0c;7:40&#xff0c;那么我们今天所要实现的定时器&#xff0c;就类似于闹钟&#xff0c;设定多长时间之后&#xff0…

全网IPv6流量监控分析案例

前言 随着某学院IPv6网络的建设和应用投产&#xff0c;在不影响现有应用、网络及用户端的情况下&#xff0c;实时掌握IPv6网络运行状况、用户体验快慢、网络应用性能好坏及网络资源利用等需求已迫在眉睫。 学校率先采用IPv6全流量分析系统 NetInside率先推出支持IPv6的全流量…

高速电路PCB布线还有不会的吗?

数字电路很多时候需要的电流是不连续的&#xff0c;所以对一些高速器件就会产生浪涌电流。如果电源走线很长&#xff0c;则由于浪涌电流的存在进而会导致高频噪声&#xff0c;而此高频噪声会引入到其他信号中去。而在高速电路中必然会存在寄生电感和寄生电阻以及寄生电容&#…

pwn(1)-栈溢出(上)

熟悉栈溢出的原理熟悉栈溢出的防御方法学会栈溢出的利用方法学会栈溢出的奇技淫巧 栈溢出原理和防御&#xff08;一&#xff09; 栈的高地址在下低地址在上&#xff0c;先进入的数据压入栈底。 例如 #include <stdio.h> int add(int a,int b) {return ab; } int main…

一学就会----反转链表

文章目录 题目描述思路一思路二 题目描述 反转一个单链表。 图片示例&#xff1a; 思路一 其实&#xff0c;反转一个单向链表&#xff0c;我们可以看成是将链表中的每个结点的指向反向&#xff08;即从后一个结点指向前一个结点&#xff09;。 我们在考虑情况的时候&#xff0…

PHY6230国产蓝牙BLE5.2 2.4G SoC低成本遥控灯控芯片

PHY6230是高性价比低功耗高性能Bluetooth LE 5.2系统级芯片&#xff0c;集成32-bit高性能低功耗MCU&#xff0c;16KB OTP&#xff0c;8KB Retention SRAM和64KB ROM&#xff0c;可选EEPROM&#xff0c;适用多种PC/手机外设连接、遥控、灯控等场景。 特点&#xff1a; 高性能多…

Python数据攻略-Pandas的数据计算和清洗整理

大家好&#xff0c;我是Mr数据杨&#xff0c;今天带大家以《三国演义》为背景&#xff0c;探索Python数据处理的奥秘。 将眼光投向谋士们&#xff0c;他们就如同Python的算术运算和NumPy、SciPy函数&#xff0c;精准的计算和预测是他们的必备技能。比如&#xff0c;郭嘉分析敌…

使用 GMDH 进行时间序列预测

目录 主要命令 CreateTimeSeriesData FitPolynomial GetPolynomialLayer 分组数据处理方法&#xff08;GMDH&#xff09; PLOT 主要命令 采用分组数据处理方法&#xff08;GMDH&#xff09;对全球冰体积时间序列的建模和预测 fsz size(A) 返回一个行向量&#xff0c;其元…

创建好的提示词来让 Stable Diffusion 生成 AI 艺术作品图像

如何创建好的提示词来让 Stable Diffusion 生成 AI 艺术作品图像&#xff1f; 文章目录 Stable Diffusion如何使用&#xff1f;优秀的提示词如何制作&#xff1f;主题描述 Subject图片类型风格艺术感觉相机、镜头、渲染 示例基础绘图光线和颜色的变化图片类型美术风格艺术风格组…

springboot+java校园二手物品交易系统vxkyj

本项目在开发和设计过程中涉及到原理和技术有: B/S、Java、Jsp、MySQL数据库等等。 系统有以下几点意义&#xff1a; &#xff08;1&#xff09;提供用户和用户之间互利互惠的交易平台。 &#xff08;2&#xff09;操作简单&#xff0c;用户可以在家里就能淘到自己想要的东西&a…

祝贺!Databend 入选 ICT 中国可信云优秀云原生创新案例

2023 年 6 月 6 日&#xff0c;由工业和信息化部主办&#xff0c;中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;、中国邮电器材集团有限公司承办、创原会协办的“ ICT 中国 2023 高层论坛-云原生产业发展论坛”在北京召开。本届论坛以“云智原生新底座&am…

【C++】包装器-bind function

文章目录 包装器function包装器function包装器介绍function包装器统一类型function包装器简化代码的列子function包装器的意义 bind包装器bind包装器介绍bind包装器绑定固定参数bind包装器调整传参顺序bind包装器的意义 包装器 function包装器 function包装器介绍 function包…

【Axure教程】通过输入框动态维护可视化图表

与静态图表相比&#xff0c;动态图表更能吸引观众的眼球并提供更好的视觉效果。动态元素可以吸引观众的注意力&#xff0c;使数据更生动、更具交互性。这有助于提高信息传达的效果&#xff0c;并能够引起观众的兴趣和参与。所以今天作者就教大家&#xff0c;如果通过输入框元件…

[NOIP2003 提高组] 加分二叉树

[NOIP2003 提高组] 加分二叉树 题目描述: 设一个 n 个节点的二叉树 tree 的中序遍历为(1,2,3,…,n)&#xff0c;其中数字 1,2,3,…,n 为节点编号。每个节点都有一个分数&#xff08;均为正整数&#xff09;&#xff0c;记第 i 个节点的分数为 di​&#xff0c;tree 及它的每个…

优雅草蜻蜓T系统·专业版服务端以及后台部署说明-完整步骤-语音会议室支持多人语音,屏幕分享,导航配置,会议管理,会员管理

蜻蜓T系统专业版服务端以及后台部署 1&#xff0c;解压文件和基础环境配置 将源码用git工具克隆到/www/wwwroot git clone git地址 或者是由优雅草发送的商业源码文件包直接进行解压 ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09;…

十分钟柔和护理,轻松舒缓眼疲劳,云康宝眼部按摩仪体验

平时工作、生活中&#xff0c;每天都要长时间对着手机、电脑等电子设备&#xff0c;像是被它们吸走了灵魂&#xff0c;有时候眼睛干干的、痛痛的&#xff0c;像是被沙子刮过&#xff0c;光靠眼药水之类的东西根本解决不了问题&#xff0c;所以趁着618我入手了一款眼部按摩仪&am…

数字系统。网络层。IPv4 子网划分。ICMP

嘿&#xff0c;伙计们&#xff01;我希望你们一切都好。作为我每周更新计算机网络的一部分&#xff0c;我想分享一些令人兴奋的话题。 首先&#xff0c;我们深入研究了数字系统的世界。本主题重点介绍二进制和IPv4地址&#xff0c;我们学习了如何将二进制转换为十进制&#xf…

Zookeeper部署

Zookeeper的安装 环境变量的配置 上传安装包 使用MobaXterm、FinalShell或者使用scp将安装包apache-zookeeper-3.6.3-bin.tar.gz上传到/root/softwares下 复制代码 解压安装 [rootqianfeng01 ~]# tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /usr/local 复制代码 更名 …