Freepbx 入坑记录

Tuesday, September 10, 2024

FreePBX

如果使用N年前的成品网关,固件大多数已经年久失修。FreePBX 只能用 16 版本,高于的话已经弃用了 chan_sip 协议不能对接中继。凑合用用吧

配置方法看这两篇:12

因为有固定的公网IP,没有搞代理这些,有需要可以参考其他大佬。

另外感谢 @shiyunjin 、 @Lynx_0C 两位大佬不厌其烦的提供了很多帮助。

中国特色

对于 FreePBX 更新 Modules 很慢的情况,可以开启代理,有两个地方。

Settings -> Advanced Settings -> Proxy Settings

/etc/sysconfig/httpd 加入以下内容,以便于当 FreePBX 调用其他组件下载时不是用系统代理

https_proxy=http://10.x.x.x:6152
http_proxy=http://10.x.x.x:6152
all_proxy=socks5://10.x.x.x:6153

Softphone App for iOS

通知推送

使用推送通知来接收来电时,当过了几小时后 PBX 能看到服务器已注册,但是手机收不到来电通知。

因为 FreePBX 使用发送 OPTIONS 代码来使连接 Keep Alive ,以下引用自 Groundwire 技术的邮件回复

We just get the invite for one, but not the other. The server appears to be using OPTIONS as keepalives and these appear to be working (we get them and send 200 OK).

解决办法是在 FreePBX 的分机配置里 Extensions -> <Edit Account> -> Advenced -> Qualify Frequency 设置为 03

没声音

通话时任何一方听不到对方的声音,可能是因为语音编码问题。如果排查了 RTP 端口后仍有问题,可以尝试一下我的办法。

在 FreePBX 只开启: ilbc、u-law、a-law、g722、g729 (按顺序配置)

在 Softphone App : iLBC、G.729、u-law (按顺序配置)

优先使用 iLBC 是因为这个编码是 13.3 kbps 的,比 G729 的 8 kbps 码率要高。而又因为 u-law 和 a-law 都是 64 kbps 的码率,但是测试下来如果用这个编码会导致听不到对方声音,低于的话就可以。而 G.729 的码率是 8 kbps,应该是为了在 3g 时代节省流量而开发的具体没有深究。总而言之码率越高声音质量应该也越好,所以就这么设置了。

最后

因为入坑 PBX ,顺带还学了一点 iOS 逆向。插件成功运行并且实现目的后的成就感有时候比写代码还强。把 iOS 其中两个 softphone app 都简单逆了一下,一个是强制开 Callkit ,另一个是免内购。我说的那一个app如果有入坑同时用 iOS 我估计你都会知道是那一个,免内购 App 不分享,我感觉做 Softphone 的公司都挺难的,留个活路。有兴趣可以研究一下,我的两个插件都是现成的代码。

记一次 Proxmox VE 源码分析