FreePBX Twilio 外呼铃声

10
我有一个连接到FreePBX的Twilio SIP线路,所有用户都使用FreePBX的webrtc模块进行呼叫。他们可以正常地进行双向语音的呼入和呼出,但是在呼出电话时,来电者听不到响铃声,因为B号码正在响铃,这给用户带来了一定的困惑。
我已经检查了Outbound Dial设置中的r标志,并启用了它,但除此之外我还有点困惑。
[SIP设置]
   host=hostname
   username=username
   secret=supersecret
   type=peer

在 设置 -> Asterisk SIP 设置 中,我已经设置了外部和内部网络

确认一下,使用软电话与分机正常工作,只有通过 WEBRTC 才存在问题。

我运行了 Wireshark 跟踪,这些跟踪都显示双方都处于 180 响铃状态。

详细的通话日志: https://pastebin.com/s7BfwUMw


Asterisk和FreePBX的版本是什么?客户端是如何连接的?您尝试过不同的软件吗?也许他们正在使用的软件没有正确实现180回铃。 - miken32
1个回答

7
查看您的日志,我们发现您已经在通话开始于10:17:09并在10:17:19被接听后,于10:17:13正确地收到了Twilio的180 Ringing事件,因此,正如您所发现的那样,问题不是来自上游运营商未发送信令信息,而是来自Asterisk或内部WebRTC FreePBX客户端。
现在想一想,如果由于某种原因,您的WebRTC客户端在呼叫开始时(并且被叫正在振铃),却无法处理音频事件,则您将听不到回铃音。例如,如果您的WebRTC客户端在没有收集其所有ICE候选项的情况下启动呼叫,则可能会出现这种情况(这是trickle ICE连接模式,但我认为Asterisk不支持它)。不幸的是,在这种情况下,除了修改WebRTC客户端的配置或JavaScript代码之外,您无能为力。
在Asterisk方面,确实,r选项应该可以解决这个问题。我不确定FreePBX是否允许您控制拨号计划命令,但如果可以,您可以尝试强制Asterisk接听电话,然后在拨号时播放响铃音。然后,PlayTones函数可能会有用。
exten => _44X.,1,Answer
exten => _44X.,n,Wait(1)
exten => _44X.,n,Playtones(ring)
exten => _44X.,n,Wait(3)
exten => _44X.,n,Dial(SIP/...)

请注意,您需要正确配置indications.conf文件才能使其正常工作。我猜其他功能如振铃进度等也可以使用,但我认为在拨号之前接听电话的想法值得一试。当然,这有点hacky,因为正确的做法肯定是使用Dial不是使用r选项。
希望这可以帮到您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接