记录freeswitch的一个2833问题

freeswitch · 浏览次数 : 0

小编点评

**问题描述** freeswitch软件版本:1.10.7 操作系统:CentOS 7.9 问题现象:部分呼叫报错DTMF收码失败,并影响了对号码的语音通话。 **问题分析** **1. DTMF收码失败的原因** * 由于内部测试的正常情况下,B路发送到fs的DTMF码使用rfc2833的rtpevent格式,而fs接收后没有转发到A路。 * fs接收rtpevent后发现payload type是101,而不是update中的100,导致它丢弃了该DTMF包。 **2. 解决方案** * 将B路 external.xml配置文件中的 `rfc2833-pt` 参数从 `101` 修改为 `100`。 * 修改后测试,B路发送update携带payload为 `100`,fs响应200OK携带payload为 `100`,DTMF码转发正常。 **3. 结论** 该解决方案通过修改 B 路的 `rfc2833-pt` 参数,覆盖了原先的配置,确保了所有线路都能通过该方式修正该问题。

正文

概述

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问题相似的内容:

记录freeswitch的一个2833问题

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 运营商内部新老系统混用,互联互通的问题较多,其中以DTMF码的问题最多,花样也多。 环境 CentOS 7.9 freeswitch 1.10.7 问题描述 问题现象 正常的fs业务服务器,呼叫正常,部分呼叫报错DTMF收码失败。

记录一次fs通话无声的问题

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 fs的实际应用中,由于网络、配置等问题,经常会产生通话无声的问题。 环境 CentOS 7.9 freeswitch 1.10.7 问题描述 部署一台新服务器,作为SBC,对接B路,部署简图如下。 A -- fs1 -- fs2(f

记录一次在欧拉(openEuler22.03LTS-SP4)系统下安装(踩坑)Freeswitch1.10.11的全过程

目录前言安装环境1. 下载Freeswitch1.1 git clone 下载freeswitch库1.2 官网下载2. 开始安装前的工作2.1 安装编译时需要的环境【先安装这个!】2.2 configure前需要安装的库2.2.1. spandsp2.2.2. sofia-sip2.2.3. li

记录荒废了三年的四年.net开发的第一次面试

对象 身在成都小微企业,前两天面试深圳老牌金蝶公司。对我这个荒废了三年光影的人来说,怎一个跨度之大了得?作为人我生第一次面试的,整个面试过程,只能用诡异来形容这次感受。而结尾也是迷迷糊糊中草草收场。 不是很好的开局 我我毕业就进了国企。毕业前,在我想象中,他是一个伟光正的形象。所以我抱着人生值得,未

记录一次排查解决服务器卡死的过程

前言 自己个人兴趣爱好,线上有一个阿里云服务器,处理数据用的,会频繁IO和分析数据。隔一段时间就会卡死(大概2个月),重启就OK。本来没当一回事,直到后来影响到赚取money了才引起重视。服务的启动脚本如下: nohup java -Xms512m -Xmx1024m -jar xxx.jar &

记录工作中常用的 JS 数组相关操作

工作中难免会遇到各种各样的数据结构,较为全面的了解数组操作,对于复杂数据结构的处理会非常有用且节省时间。所以想在这里总结一下工作中常用的数组操作,都是一些非常基础的知识,大家看个乐就好~

记录一次WhatTheFuck经历

起因 很早之前就一直在维护一个git仓库,平时调研什么组件就会在里面新建一个springboot的工程用来编写示例代码。 最一开始使用的是SpringInitializr,后来网站更新之后,只能生成JDK17+的工程,WhatTheFuck?近期刚从8切换到11. 于是弃用并改用 StartAliy

记一次ThreadLocal中的用户信息混乱问题

记录一次开发中遇到的关于 ThreadLocal 问题,场景是数据库表中的操作人总是无缘无故的被更改,排查了几遍代码才发现是 ThreadLocal 没有及时清理导致的。

工作疑难问题解决4例

记录一下工作上疑难问题解决: 一,方便的页面监控 前几天早上,负责的kettle抽取数据表的任务又报错了,早上看手机有4个未接报警电话,一看是人员表,原来昨天报表系统有个大的查询一直未查询完成,导致truncate这个人员表,无法活动meta的锁,后续执行抽取和计算的都报错。为解决以前这个很偶发的大

记录一次安装PIDtoolBox报缺少jvm.dll问题。

背景: 1.在安装PIDtoolBox时,报 安装程序错误 安装程序无法启动JVM。 could not find file C:\Users\AdministratorAppData\Local\MathWorks\app installer cache\R2018b\ win64vinstall