概述

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

运营商内部新老系统混用,互联互通的问题较多,其中以DTMF码的问题最多,花样也多。

环境

CentOS 7.9

freeswitch 1.10.7

问题描述

问题现象

正常的fs业务服务器,呼叫正常,部分呼叫报错DTMF收码失败。

内部测试,呼叫正常,信令正常,媒体流正常,DTMF收码失败,和号码有关系,有些号码收码正常,有些号码收码失败,号码固定。

问题分析

分析DTMF收码失败的号码信令。呼叫信令正常,媒体流正常,DTMF码流不正常。

B路发送到fs的DTMF码使用rfc2833的rtpevent格式,但是fs收到后没有转发到A路。

继续查看信令细节,B路响应183后,随后发送update修改媒体,update中SDP信息如下,其中的100表示rfc2833的payload。

audio 19480 RTP/AVP 8 18 100

rtpmap:100 telephone-event/8000

fs对update响应200OK,SDP信息如下,其中的101表示rfc2833的payload。

audio 53106 RTP/AVP 8 101

rtpmap:101 telephone-event/8000

查看B路的DTMF码,rtpevent包中Real-Time transport Protocol下的Payload type字段值为telephone-event(101),B路使用了fs响应的101作为payload,而不是update中的100。

但是fs收到rtpevent后,发现payload type是101,而不是update中的100,就丢弃了该DTMF包(猜测,没有日志支持)。

临时方案

修改B路external.xml配置文件,从默认值101修改为100。

<param name="rfc2833-pt" value="100"/>

修改后测试,B路发送update携带payload为100,fs响应200OK携带payload为100,DTMF码转发正常。

总结

临时方案覆盖面不足,无法保证所有线路都能通过该方式修正该问题。

正式方案应该修改fs的200OK携带payload,可以动态的跟随update保持一致。

空空如常

求真得真

记录freeswitch的一个2833问题的更多相关文章

  1. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  2. oracle "记录被另一个用户锁定"

    出现的原因是有人对某一条数据进行了修改,oracle会通过这个事务记住这条数据,若修改的人没有进行提交或进行回滚记录,oracle是不允许对这条数据在此进行修改的,在这种情况下你要进行修改数据,则会被 ...

  3. oracle数据中记录被另一个用户锁住

    原因:PL/SQL里面执行语句执行了很久都没有结果,于是中断执行,于是就直接在上面改字段,在点打钩(记入改变)的时候提示,记录被另一个用户锁住. 解决方法: 第一步:(只是用于查看哪些表被锁住,真正有 ...

  4. oracle中记录被另一个用户锁住的原因与解决办法

    oracle数据中删除数据时提示“记录被另一个用户锁住” 解决方法: 1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from ...

  5. oracle中表记录被另一个用户锁住

    应用场景 在查询oracle表时,提示表记录被另一个用户锁住了 有可能是在使用了pl/sql工具后修改某个表记录时,加锁,或者发生故障异常退出,下次登录进去修改不了 查询锁 --查看数据库的锁的来源. ...

  6. Oracle报错>记录被另外一个用户锁定

    原因 当一个用户对数据进行修改时,若没有进行提交或者回滚,Oracle不允许其他用户修改该条数据,在这种情况下修改,就会出现:"记录被另外一个用户锁定"错误. 解决 查询用户.数据 ...

  7. [linux]记录如何设置一个新的vps

    背景 我正在做一个小项目,做好了打算上线,所有需要买个服务器,看了一圈,发现还是卖个vps合算.买了之后,进行了一些列的设置,这里记录一下,以便后面查看. 系统: ubuntu 内存:1G 一.更改时 ...

  8. Excel批量导入商品,遇到导入失败记录到另一个Excel中供下载查看

    /// <summary> /// EXCEL批量导入 /// </summary> /// <param name="filePath">文件 ...

  9. 【Git教程】如何清除git仓库的所有提交记录,成为一个新的干净仓库

    一.引言 马三也算Github的忠实用户了,经常会把一些练手的项目传到Github上面进行备份.其中有一个名为ColaFramework的Unity框架项目,马三开发了一年多了,期间提交代码的时候在L ...

  10. git rebase的使用: 合并多次commit记录; rebase一个分支的起点

    合并多次commit记录: good:https://blog.csdn.net/csdlwzy/article/details/83379546 使用 git log 命令查看提交历史: 想要合并前 ...

随机推荐

  1. RabbitMQ 10 头部模式

    头部模式是根据头部信息来决定的,在发送的消息中是可以携带一些头部信息的(类似于HTTP),可以根据这些头部信息来决定路由到哪一个消息队列中. 定义配置类. import org.springframe ...

  2. Avalonia中的自绘控件

    在构建用户界面时,控件扮演着至关重要的角色.它们不仅负责展示内容,还处理用户的交互.然而,有时标准的控件库可能无法满足我们的需求,这时自绘控件就显得尤为重要.在Avalonia UI框架中,自绘控件允 ...

  3. 成像光谱遥感技术中的AI革命:ChatGPT在遥感领域中的应用

    遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理.化学和生物系统的基石.ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力.重点 ...

  4. (数据科学学习手札159)使用ruff对Python代码进行自动美化

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,在日常编写Python代码的过 ...

  5. 直播预告丨 Hello HarmonyOS 进阶课程第五课——原子化服务

    本周三<Hello HarmonyOS 系列应用篇:原子化服务>,HDE 李洋老师将带领大家了解 HarmonyOS 原子化服务的技术特性与创新性,对智能家居.智慧出行.运动健康.智慧办公 ...

  6. ActiveMQ c# 系列——进阶实例(三)

    前言 前面介绍了基本的消费者和生产者,那么看下他们之间有什么其他的api. 正文 消费者设置等待时间 生产者生产了5条消息 改一下消费者. static void Main(string[] args ...

  7. c# Mutex 互斥锁

    前言 互斥锁(Mutex) 互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它. 互斥锁可适用于一个共享资源每次只能被一个线程访问的情况. 正文 代码: static void Ma ...

  8. web常见的攻击方式有哪些?如何防御?

    一.是什么 Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码,修改网站权限,获取网站用户隐私信息等等 Web应用程序的安全性是任何基于Web业务的重要 ...

  9. Flink 自定义 ClickHouse Table Connector 的简单实现

    本次实现基于 Flink 1.18 版本,具体的对象之间的关系可以先参考官网的图: 先拿官网上的 Socket 示例来说一下实现过程: 首先编写 SocketDynamicTableFactory 实 ...

  10. 力扣372(java)-超级次方(中等)

    题目: 你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出. 示例 1: 输入:a = 2, b = [3]输出:8示例 2: 输入:a = 2, ...