- 博客(134)
- 收藏
- 关注
原创 DTMF从2833到inband的方案
freeswitch是一款简单好用的VOIP开源软交换平台。之前的文章中介绍过通过dialplan拨号计划配置的方法,实现2833到inband的转换,但是实际生产环境中的场景会更复杂,无法预先在dialplan中设置好相关参数和函数。根据sip协议的规范,在媒体协商的过程中,如果已经有183SDP或update的SDP了,则200SDP会被忽略。
2025-03-28 17:54:01
876
原创 fs的proxy_media模式失效
freeswitch是一款简单好用的VOIP开源软交换平台。在fs的使用过程中,某些场景只需要对rtp媒体做透传,又不需要任何处理。在fs1.6的版本中,我们可以使用proxy_media来代理媒体的转发,媒体的协商由AB路端对端处理,fs不处理媒体协商,也不处理媒体流,包括录音,dtmf检测等,仅仅原样转发媒体流。但是在fs的1.10.7版本中,proxy_media模式失效了。同步测试了fs1.6.19版本和fs1.10.7版本,其中1.6版本是可以正常使用proxy_media模式的。
2025-03-14 17:50:31
408
原创 spandsp_start_dtmf的bug及修复
freeswitch是一款简单好用的VOIP开源软交换平台。之前的文章中介绍过DTMF从2833到inband的转换,其中inband到2833的转换使用了“spandsp_start_dtmf”,这个函数在转换的过程中有缺陷。因为需要对inband的媒体流做缓存,所以该处理会产生40ms左右的语音时延。空空如常求真得真。
2025-01-23 17:53:52
704
原创 号码变换配置对接运营商IMS
freeswitch是一款简单好用的VOIP开源软交换平台。fs直接对接运营商,调试过程中的号码变换规则比较容易出问题。本文档记录一个较为通用的对接IMS配置方案。标准模板可以解决90%的问题,剩下10%需要定制。空空如常求真得真。
2024-11-01 17:46:33
820
原创 freeswitch的话单处理
freeswitch是一款简单好用的VOIP开源软交换平台。如果对cdr话单要求不高,可以直接使用fs的原始话单文件,使用脚本做一些简单的统计。fs暂时没发现有内置的话单统计和报表模块。自己实现吧。空空如常求真得真。
2024-10-25 17:34:12
588
原创 记录一次fs配置导致串线的问题
freeswitch是一款简单好用的VOIP开源软交换平台。fs在实际的使用过程中也会经常碰到莫名其妙的问题,大部分都是配置问题。fs的docker模式挺好用的,但是有不少要注意的坑。空空如常求真得真。
2024-09-20 17:45:41
619
原创 sipp模拟uas发送reinvite
freeswitch是一款简单好用的VOIP开源软交换平台。在更新了sipp模拟update的配置方案之后,我希望对比一下fs对update和reinvite的处理流程。本文档记录sipp的配置方案,该方案中包含了update和reinvite的信令。sipp很灵活,可以帮助我们在测试中构建各种模拟场景。先比对update消息和reinvite消息的处理流程,再针对具体问题进行优化。空空如常求真得真。
2024-09-13 17:28:02
1021
原创 sipp模拟uas发送update
freeswitch是一款简单好用的VOIP开源软交换平台。但是fs在处理update消息时候有BUG,为了复现问题,使用sipp模拟uas,发送update并发送DTMF码。本文档记录sipp的配置方案。sipp很灵活,可以帮助我们在测试中构建各种模拟场景。修复方案有多种,后续安排上。空空如常求真得真。
2024-08-30 17:56:02
726
原创 condition字符串匹配问题
freeswitch是一款简单好用的VOIP开源软交换平台。fs使用dialplan配置文件执行业务流程,condition条件变量的配置是必然会使用的,这里记录一次配置过程中的错误示范。fs的dialplan配置很方便,但是也容易出错。空空如常求真得真。
2024-08-07 17:45:14
692
原创 在python docker中安装ESL库
功能需求,把python脚本移植到docker中。因为python脚本中有使用freeswitch的ESL接口,所以需要安装python-ESL依赖库。本文记录在python:3.10.14-slim的docker镜像上编译安装python-ESL依赖库的流程。python基础镜像更换为python:3.10.14-slim,镜像大小只有150M左右。使用python镜像来运行外部脚本,脱离fs本身的docker容器限制。空空如常求真得真。
2024-06-28 17:47:07
773
1
原创 fs.1.10 ON rockeylinux8 dockerfile模式
freeswitch是一款简单好用的VOIP开源软交换平台。rockeylinux8 docker上编译安装fs.1.10的流程记录,本文使用dockerfile模式。编译出的docker镜像还是比较大,需要持续瘦身。centos和rocky的方向需要验证和抉择一下。空空如常求真得真。
2024-06-14 17:58:41
1040
原创 fs.1.10 ON rockylinux8 docker镜像制作
freeswitch是一款简单好用的VOIP开源软交换平台。rockylinux docker上编译安装fs1.10版本的流程记录。fs.1.10版本比1.6版本的安装依赖要更多,最终产生的镜像大小也更大。后续继续整理fs.1.10镜像的dockerfile模式。空空如常求真得真。
2024-06-07 18:04:56
956
原创 freeswitch官方仓库
在使用源代码编译安装freeswitch的过程中,我们经常需要一些依赖库,其中freeswitch官方的yum源仓库是最齐全最方便的。但是,freeswitch仓库的配置和使用需要先在signalwire网站注册账号并获取PAT(personal access token)。fs官方仓库的依赖更全更方便。signalwire的账号注册有点麻烦,需要梯子,最新的登录还需要手机验证码,国内的验证码很难收到。空空如常求真得真。
2024-05-30 17:42:55
1431
原创 记录freeswitch的一个2833问题
freeswitch是一款简单好用的VOIP开源软交换平台。运营商内部新老系统混用,互联互通的问题较多,其中以DTMF码的问题最多,花样也多。临时方案覆盖面不足,无法保证所有线路都能通过该方式修正该问题。正式方案应该修改fs的200OK携带payload,可以动态的跟随update保持一致。空空如常求真得真。
2024-05-17 17:25:42
711
原创 记录一次fs通话无声的问题
freeswitch是一款简单好用的VOIP开源软交换平台。fs的实际应用中,由于网络、配置等问题,经常会产生通话无声的问题。实际生产环境中,网络和各种配置的异常情况特别多,需要根据实际情况一步步分析解决。fs不能仅仅关注服务本身的问题,服务器,网络的问题也都需要了解一点。在没有静态路由的场景下,网卡到fs服务的媒体流转发也会失败。空空如常求真得真。
2024-04-30 17:31:27
793
原创 centos6.5重启docker容器死机问题
近期在整理服务问题,使用docker容器重新部署服务。过程中有不少坑,主要是系统配置和系统版本的问题。抛弃centos6的时候到了。空空如常求真得真。
2024-04-19 17:32:56
1094
1
原创 fs.1.10 ON CENTOS7 dockerfile模式
freeswitch是一款简单好用的VOIP开源软交换平台。centos7 docker上编译安装fs.1.10的流程记录,本文使用dockerfile模式。编译出的docker镜像还是比较大,需要持续瘦身。centos系统后续的维护问题需要关注。centos和rocky的方向需要验证和抉择一下。空空如常求真得真。
2024-04-11 18:10:07
935
原创 fs.1.10 ON CENTOS7 docker镜像制作
freeswitch是一款简单好用的VOIP开源软交换平台。centos7 docker上编译安装fs1.10版本的流程记录。fs.1.10版本比1.6版本的安装依赖要更多,最终产生的镜像大小也更大。后续继续整理fs.1.10镜像的dockerfile模式。空空如常求真得真。
2024-03-27 11:41:55
699
原创 使用docker-compose管理freeswitch容器
之前的文章我们介绍过如何将freeswitch做成docker镜像,也使用命令行模式正常启动了fs的docker容器。但是当我们需要同时管理多个docker容器的时候,还是使用docker-compose更简单。docker-compose简化了多个docker容器的管理难度。对于docker集群的部署,使用docker-compose很方便。空空如常求真得真。
2024-03-16 11:10:31
1332
原创 centos docker服务问题
docker的应用版本正式上线,结果一上线就出各种幺蛾子。本文档主要介绍centos系统安装docker和启动的问题解决方法。docker registry的私服镜像使用方便。docker-compose管理镜像启动配置。空空如常求真得真。
2024-02-28 17:43:53
1218
原创 获取当天剩余时间
业务测试的过程中,本来有一个时间函数“获取当天剩余时间”,其中使用了localtime()和mktime(),但是在压力测试的过程中发现,两个time函数都不是线程安全的,多线程并发的时候会产生一些随机的错误,结果就是获得的interval时间错误,进而影响到业务流程。fs是多线程架构,对于大并发场景下的压力测试要特别注意线程安全的问题。为了尽可能的提高性能,也有很多技术手段可以不使用加锁的方式解决。空空如常求真得真。
2024-02-23 17:45:31
314
原创 freeswitch的主被叫号码
freeswitch是一款简单好用的VOIP开源软交换平台。sip信令中对于主被叫号码有多个头域显示,不同的配置参数又有多种头域组合,当我们在使用fs处理信令时,应该如何设置和获取主被叫号码在恰当的头域中。fs收到invite信令时,通过“caller_id_number”获取主叫号码的头域优先级,Remote-Party-ID,P-Asserted-Identity,From。fs收到invite信令时,通过“destination_number”获取的被叫号码是requestline中的号码。
2024-02-02 17:34:08
1245
原创 freeswitch on centos dockerfile模式
freeswitch是一款简单好用的VOIP开源软交换平台。centos7 docker上编译安装fs的流程记录,本文使用dockerfile模式。centos系统后续的维护问题需要关注。centos和rocky的方向需要验证和抉择一下。空空如常求真得真。
2024-01-19 18:20:15
1148
原创 freeswitch on centos docker
freeswitch是一款简单好用的VOIP开源软交换平台。centos7 docker上编译安装fs的流程记录。centos系统后续的维护问题需要关注。Debian系统的依赖包大多比较新,比centos要友好。Debian和rocky的方向需要验证和抉择一下。空空如常求真得真。
2024-01-10 17:35:08
1118
原创 CENTOS docker拉取私服镜像
docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker镜像的拉取。centos6版本太老,docker的使用过程中问题较多,centos7相对简单容易。本文档主要介绍centos系统安装docker和拉取docker私服镜像的步骤和问题解决。尽快切换掉centos6系统。docker registry的私服镜像使用更方便。docker镜像包的瘦身工作要持续进行。空空如常求真得真。
2023-12-29 17:39:38
1424
1
原创 freeswitch on debian docker
freeswitch是一款简单好用的VOIP开源软交换平台。因为centos系统期限的原因,尝试在debian的docker上使用fs。centos系统后续的维护问题需要关注。Debian系统的依赖包大多比较新,比centos要友好。Debian和rocky的方向需要验证和抉择一下。空空如常求真得真。
2023-12-22 17:51:23
1375
原创 freeswitch如何解决sip信令的NAT问题
freeswitch是一款简单好用的VOIP开源软交换平台。公网环境复杂多变,客户环境更是各种稀奇古怪的问题。fs在针对sip信令的NAT问题有针对性的参数设置。本文讨论的范围限于fs的公网地址正常没有在NAT后面的两种常见场景。其他更多更复杂的NAT场景暂不讨论。本文仅仅讨论了两种比较简单常见的NAT问题,公网环境中的NAT问题更加的复杂多变。对于NAT问题的通用思路是想办法找到对方或自己的公网地址,在消息传递过程中使用各种手段透传过NAT网关。空空如常求真得真。
2023-12-08 17:44:43
921
原创 freeswitch设置多个execute_on_media
freeswitch是一款简单好用的VOIP开源软交换平台。fs中有非常多的接口和通道变量,使用方式多变。官方文档有时候也仅仅是介绍了最基本的使用方法和格式。execute_on大部分源码在switch_channel.c中。思考为什么测试结果中,先执行log1,再执行log0。空空如常求真得真。
2023-11-23 17:34:36
4004
1
原创 freeswitch的一个性能问题
freeswitch是一款简单好用的VOIP开源软交换平台。在fs的使用过程中,会遇到各种各样的问题,各种问题中,性能问题是最头疼的。最近在测试某些场景的时候,压测会造成fs的内存占用持续升高,并在达到某个临界点的时候击溃fs的端口服务,导致全部sip呼叫响应503。fs启动打开的端口超过一定数目(1000)之后,会有内存占用过大和内存持续升高的问题。在删除多余的端口资源后,测试恢复正常。具体原因需要对sofia模块代码走读确定。空空如常求真得真。
2023-11-17 17:30:24
536
原创 sipp3.6多方案压测脚本
SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多。有时候我们需要模拟现网的生产环境来压测,就需要同时有多个sipp脚本运行,并且需要不断的调整呼叫并发。通过python脚本的子进程功能,我们可以很方便的实现sipp的多方案压测功能。sipp的github地址:https://github.com/SIPp/sipp后续会有更多的压测方案和脚本慢慢写。空空如常求真得真。
2023-10-26 17:54:48
566
原创 DOCKER本地仓库
随着docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker仓库的本地化应用。试用了docker的本地仓库功能,简单易上手,记录下来以备后用。首先删除本地自定义镜像,然后从registry重新下载。Docker镜像的本地库是CI自动化流程的必要步骤。Docker的registry镜像简单易上手。空空如常求真得真。
2023-10-12 17:09:50
758
原创 HOMER7配置告警
HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具。HOMER是一款强大的、运营商级、可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应用程序,并可以使用即时搜索、处理和存储大量的信令、RTC事件、日志和统计信息。在HOMER7的框架中,内置有prometheus、grafana、alertmanager等模块,并在grafana中有默认的sip overview指标监控界面。本文介绍如何通过grafana对sip监控指标设置告警的操作。
2023-09-28 16:36:03
312
原创 paddlespeech asr脚本demo
paddlespeech是百度飞桨平台的开源工具包,主要用于语音和音频的分析处理,其中包含多个可选模型,提供语音识别、语音合成、说话人验证、关键词识别、音频分类和语音翻译等功能。本文介绍利用ps中的asr功能实现批量处理音频文件的demo。ps的asr功能中有多个模型可选,目前测试中的“conformer_wenetspeech”识别准确率较高。识别速度有待提高,音频长度的限制也待解决。空空如常求真得真。
2023-09-14 17:50:03
900
原创 freeswitch sofia协议栈调试
freeswitch是一款简单好用的VOIP开源软交换平台。fs内部使用sofia的sip协议栈,本文介绍如何调试跟踪sofia协议栈。freeswitch使用sofia sip协议栈,有需要关注sip协议栈的同学可以通过debug模式调试sip处理流程。空空如常求真得真。
2023-09-08 17:49:58
433
原创 paddlespeech on centos7
paddlespeech是百度飞桨平台的开源工具包,主要用于语音和音频的分析处理,其中包含多个可选模型,提供语音识别、语音合成、说话人验证、关键词识别、音频分类和语音翻译等功能。paddlespeech整体是比较简单易用的,但是安装部署依然有很多坑,本文为探坑而写。paddlespeech提供了语音相关的基础能力,降低了音频模型的使用门槛。在paddlespeech的基础上,完善的产品还需要很多的包装工作和业务开发。空空如常求真得真。
2023-09-08 15:09:58
1414
原创 PRACK消息
PRACK消息是sip协议的扩展,在RFC3262中定义,标准的名称是sip协议中的可靠临时响应。本文简单介绍标准中对PRACK消息流程的描述,以及fs配置PRACK的方式。freeswitch对PRACK的处理和RFC标准基本一致。如果呼叫场景中早期媒体比较重要,而且因为网络问题经常丢失,就需要开启100rel来保证早期媒体的可靠消息。空空如常求真得真。
2023-08-25 17:22:55
553
原创 freeswitch的mod_xml_curl模块动态获取configuration
freeswitch是一款简单好用的VOIP开源软交换平台。mod_xml_curl模块支持从web服务获取xml配置,本文介绍如何动态获取acl配置。mod_xml_curl模块动态获取config数据,方便对批量的fs集中统一管理配置。未解决问题。configuration类型的配置数据动态刷新的边界在哪里,我们可以把哪些配置数据放在web服务统一管理。如何解决web服务不可用的本地xml配置问题,本地xml配置与web动态配置不一致的问题。空空如常求真得真。
2023-08-11 17:56:52
1399
原创 freeswitch的mod_xml_curl模块动态获取dialplan
freeswitch是一款简单好用的VOIP开源软交换平台。mod_xml_curl模块支持从web服务获取xml配置,本文介绍如何动态获取dialplan配置。mod_xml_curl模块动态获取dialplan数据,控制呼叫流程。未解决问题。如何更灵活的控制从web服务和本地xml文件获取配置。如何缓存web服务的xml配置。如何解决web服务不可用的时候,呼叫流程问题。空空如常求真得真。
2023-08-04 17:14:19
1431
原创 freeswitch的mod_xml_curl模块
freeswitch是一款简单好用的VOIP开源软交换平台。随着fs服务的增多,每一台fs都需要在后台单独配置,耗时耗力,心力憔悴。如果有一个集中管理配置的配置中心,统一管理所有fs的配置,并可以实现动态的修改配置就好了。于是就发现了mod_xml_curl模块。mod_xml_curl模块默认不编译安装。进入“freeswitch/src/mod/xml_int/mod_xml_curl”目录,执行如下命令检查模块安装情况。ll。
2023-07-28 17:29:21
1519
3
原创 freeswitch的mod_xml_cdr模块
freeswitch是一款简单好用的VOIP开源软交换平台。在语音呼叫的过程中,话单是重要的计价和结算依据,话单的产生需要稳定可靠,可回溯。fs中的mod_xml_cdr模块提供了基本话单功能之外的选择,可以输出XML格式的本地话单或通过http post接口上传web服务器。mod_xml_cdr模块默认编译安装,但没有加载。检查conf/autoload_configs/modules.conf.xml文件。
2023-07-20 17:55:44
648
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人