问题如上所述。我找不到让 Twilio 和 Asterisk (v.20.7) 实现双向音频的方法;除非启用它们的 SymmetricRTP 开关。我怀疑问题出在 SDP 握手上,但一切看起来都很好。
我的设置如下。
电话 -- Twilio -- 防火墙 -- Asterisk -- 软件电话(Twinkle)
目前,如果我在 Twillio 内部启用 SymmetricRTP,那么一切都会正常。但由于问题范围之外的原因,我无法依赖 Twilio 提供的交换机来解决可能的 NAT 问题。
这让我想到,Asterisk 在通过防火墙协商 Twilio 和自身之间的 SDP 连接时,错误地(或不正确地)重写了某些内容。防火墙具有与之关联的静态 IP 和域,我尝试将所有内容指向该 IP 和域,但似乎没有任何效果。
如果没有对称 RTP 交换机(电话发起的呼叫),我只能获得单向音频(软电话 -> 电话)。
我在星号配置中尝试过的开关包括:
- external_media_address=mydomain.com
- external_signaling_address=mydomain.com
- rtp_symmetric=是&否
- force_rport=yes & no
- rewrite_contact=是 & 否
当前配置如下:
pjsip.conf(不包括:auth 和 localuser 组件)
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0
local_net=192.168.64.0/22
external_media_address=mydomain.com
external_signaling_address=mydomain.com
[transport-tcp]
type=transport
protocol=tcp
bind=0.0.0.0
local_net=192.168.64.0/22
external_media_address=mydomain.com
external_signaling_address=mydomain.com
[twilio-trunk]
type=aor
contact=sip:mydomain.pstn.twilio.com
[twilio-trunk]
type=identify
endpoint=twilio-trunk
match=mydomain.pstn.twilio.com
[twilio-trunk]
type=endpoint
context=from-twilio
disallow=all
allow=ulaw
aors=twilio-trunk
outbound_auth=twilio-trunk-auth
from_domain=mydomain.pstn.twilio.com
rtp_symmetric=no
force_rport=no
rewrite_contact=no
rtp配置文件
[general]
rtpstart=6000
rtpend=60000
其余内容均为默认或未更改。Asterisk 从源代码安装到 ubuntu 22.04 系统上。