- 博客(349)
- 收藏
- 关注
原创 xmllint
我们都知道 FreeSWITCH 启动时自动把所有的配置文件处理成一个大文件,叫 freeswitch.xml.fsxml。debian12 怎样安装 xmllint?
2025-05-22 10:36:34
94
原创 FreeSWITCH 纯内网配置
如果用到了 jssip,可能还需要配置 候选acl, 配置为 any_v4.auto,同时,session timer 也可以考虑关闭掉 ,jssip 跟 Fs 这方面容易冲突。1. 不需要事先配置 directory,任意号码都可以注册,且无挑战。本文是给 FreeSWITCH 新手看的,哈哈,拒绝讨论,意义不大。保留 internal.xml, 其他的都可以删除了。删除 public.xml, 用不到了。编辑 internal.xml。不需要考虑那么多安全问题。
2025-05-20 21:16:37
444
原创 FreeSWITCH rtcp-mux 测试
启动后,先输入 m ,再输入 url, 就可以呼出, sdp 里面自带了 rtp-mux, Fs 可以识别出来。需要同时指定 rtcp_audio_interval_msec,否则 rtcp_mux 不能生效。rtcp 跟 rtp 占用同一个端口,这就是 rtcp 复用。
2025-05-20 21:05:50
469
原创 pjsip windows 编译
平时用 windows visual studio 比较少,今天编译了 pjsip,特地记录下。改名为 config_site.h。下载 pjsip 2.15.1。就可以编译了,很顺利。
2025-05-19 10:24:49
125
原创 FreeSWITCH precense 测试
reloadxml, 再 reload mod_sofia。1001 呼叫 1002, 后者振铃,接听,挂机。先配置 sipprofile。
2025-05-15 09:35:51
125
原创 用 openssl 测试 tls 连接
以 baidu 为例,命令行为:得到的输出为:---------------V`...TR---下面传 sni。
2025-05-12 15:13:46
1022
原创 FreeSWITCH 官方给的 Performance 资料
https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Configuration/Performance-Testing-and-Configurations/
2025-05-12 11:02:28
85
原创 FreeSWITCH 发送 sip message 的 lua 程序
上面的 lua 指定了 sip, 最后是在 sofia_presence.c 里面处理 (看 sofia_presence_chat_send 函数)dest_proto 一般是 sip, 也可以是 verto,global 应该也行。顺便提下, chatplan 应该是在 mod_sms 里面实现的。找到 1001 的网络地址和网络端口,再拼成一个字符串。51 假期闲着也是闲着,写了一个 chat.lua。此外,记得加载 mod_sms,不然,不好使。上面的 lua 代码写的很清楚了,不再注释。
2025-05-01 20:34:25
233
原创 FreeSWITCH testserver 测试
用这个跟 Fs 官网对照着看,是不是就明白很多了。eyebeam 挂机,同时结束 tcpdump。用 wireshark 打开 esl.pcap。蓝色部分是 testserver 发给 Fs。红色部分是 Fs 发给 testserver。eyebeam 注册,再呼叫 9196。
2025-03-31 13:20:01
286
原创 docker-compose.yml 增加 extra_hosts
再定义一个全局变量, sip_gethostbyname=true。进到容器,`cat /etc/hosts`,正是上面配置的内容。现在配置一个向 IMS 注册的 Fs 网关,就易如反掌了。
2025-03-24 13:43:54
423
原创 FreeSWITCH 禁止显示 ‘Outbound Call‘
send-display-update=false # 上面不改,只改这个试试。如果是通过网关呼出,在网关配置里面设置通道变量,这个办法更好。allow-update=false # 改这个肯定可以。可以设置通道变量 sip_cid_type=none。另外,联调时有时远端不喜欢。多读书多试试,每天进步一点点。
2025-03-05 12:47:22
218
原创 rtpengine build mr12.5.1 镜像
现在 rtpengine-ctl 可以用了。不过, build 出来有点大。回头研究下 alpine。
2025-02-24 19:18:14
255
原创 FreeSWITCH Alpine 安装
FreeSWITCH 版本为 1.10.11,还不错。但比较遗憾,没有 mod_av 模块。mod_lua 基于 lua5.3。先更新 Alpine 仓库。
2025-02-21 17:05:37
294
原创 记录一次 ALG 的处理过程
如果 FS 不发 SIP 消息,从 FS 一侧 telnet mccp-server-ip 1544 (mrcp 侦听端口) 是正常的。经过反复沟通之后,给我一幅图,SIP 呀,H.323 呀,TFTP 呀,问我哪些需要 disable;而 FS 发了 SIP 消息之后,再 telnet 就失败,卡了大约 1 分钟之后,telnet 才能恢复正常。等问题复现时,在 FS 一侧做 路由测试,发现卡在某一跳,当然是查这里的 ALG。前几天朋友找我帮忙,说碰到很大困难了,实际上,不过如此。
2025-02-21 09:39:42
183
原创 测试 FreeSWITCH 的 sip_invite_route_uri
剩下的就很简单了,配置 kamailio/opensips,用 sip proxy 修改 sip 头。FreeSWITCH 很强很方便,只要用心,就能找到解决问题的办法。# 修改主叫号码(取 Route 头里面的 user)但想修改 sip 头,有什么好办法呢?(比如修改主叫号码等)# 删除某些 sip 头(视情况而定)# 如果不是 INVITE, 那么返回。# 如果没有 Route 头,那么返回。也就是 fs->sip proxy->落地。# 这就是预加载路由。
2025-02-20 21:42:39
327
原创 rtpengine and redis
redis 用来在不同 rtpengine 实例之间同步会话信息。其中之一是陶宇飞的演讲稿,致敬陶女士!回头做做测试,看下到底怎么用。
2025-02-20 09:46:39
176
原创 介绍 Kamailio 的 kamcmd
kamcmd ,或者 kamcmd -s unix:/run/kamailio/kamailio_ctl。Kamailio 的 kamcmd 作用跟 FreeSWITCH 的 fs_cli 类似,kamailio.cfg 可以增加 xhttp.so 以及 xhttp 路由的路由处理。前者调用 kamailio 核心的 rpc 或者kamailio 模块的 rpc。Kamailio 早期版本也支持 MI,文档说现在不再支持 MI 了。其实还有很多命令,kamcmd help ,看下哪些对自己有用。
2025-02-19 11:42:15
140
原创 聊聊 sngrep 的配置
F8], 再 Save,这样就有一份配置文件了,文件名就是 ~/.sngreprc。[F10],再 Save, 配置文件增加了新的内容。
2025-02-13 10:28:21
207
原创 play_and_detect_speech 怎么接收 dtmf
但这需要 mrcp server 支持,但目前 sdm 是不支持 dtmf 的。FS 的 play_and_detect_speech 可以接收 dtmf。多个 dtmf 要怎么接收,我搞不定,如果您知情请不吝赐教。FS 本身貌似只能接收一个,处理不了多个。传了个内置的 mrcp 语法。但貌似只能接收一个码。
2025-02-08 10:32:11
154
原创 Kamailio 迷你镜像
这样 build 出来的 Kamailio 应该是最小的,不到 60 兆。Debian 可以添加 packagecloud 仓库。目前 Kamailio 的版本是 5.8.4。有个 shell 脚本可以自动完成这个事情。基于 alpine 的镜像体积比较小。CentOS 似乎也行,但我没测试过。支持 x86 和 arm 架构。
2025-02-03 11:11:32
149
原创 H.323 转 SIP 之我见
H.323 转 SIP,一般是为了设备利旧,思科/AVAYA 等大厂 的 H.323 早就部署了 N 套。FreeSWITCH 有 mod_h323 模块,但已经好多年不更新了,我做过压力测试,会 crash。听说还有不开源的 mod_ooh323,支持视频,这个特性特别好,但有时也会 crash。我有一套 YATE 5 年前就上线了,480 个通道的并发,一直比较稳定。我自己习惯使用 Yate,把 H.323 转成 SIP。如果想讨论这方面的问题可加 1052294031。
2025-01-21 08:58:45
291
原创 FreeSWITCH 呼出成功后自动执行 uuid_debug_media
不去做这个检查 `!rtp_session->flags[SWITCH_RTP_FLAG_RESET]`, 似乎更好一些。如果已经 bridged, 那么 send_msg 不为空,将不会调用 get_next_write_ts。如果是单腿,那么 send_msg 为空,将调用 get_next_write_ts 函数。个人觉得,某些情况下可能会有问题(目前还不十分确定)在跟踪一个rtp方面的bug。
2025-01-16 10:36:01
286
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人