我正在运行 Asterisk 1.6.1.10 / FreePBX 2.5.2.2,并且设置了出站中继。直到最近一切都运行正常(可能是因为升级到 FC12 或其他原因,我不确定)。
无论如何,设置似乎没有注册和设置呼叫的问题,RTP 数据包双向传输,您可以听到另一端的铃声。但是,当接听电话时或接听电话时,传入的 RTP 数据包似乎会停止。使用 Wireshark 仔细检查后,发现这些特定数据包似乎是原因:
trunk->asterisk SIP/SD Status: 200 OK, with session description
asterisk->trunk SIP Request: ACK sip:<phone>@trunk:6889
asterisk->trunk SIP Request: BYE sip:<phone>@trunk:6889
[..about a dozzen RTP packets in/outbound..]
trunk->asterisk SIP Status: 200 OK, CSeq: 104 Bye
[..outbound RTP continues, phone is silent..]
然后,入站 RTP 数据包停止,但此时星号日志未显示任何活动。最后一条记录为“SIP/ 已应答 SIP/”。
然后当你挂断分机时,你会得到
asterisk->trunk SIP Request: BYE sip:<phone>@trunk:6889
trunk->asterisk SIP Status: 481 Call Leg/Transaction does not exist
我在 FreePBX 中的中继对等设置是:
username=<user>
fromuser=<user>
canreinvite=no
type=friend
secret=<pass>
qualify=no [qualify yes produces 401/forbidden messages]
nat=yes
insecure=very
host=<sip trunk gateway>
fromdomain=<sip trunk gateway>
disallow=all
context=from-pstn
allow=ulaw
dtmfmode=inband
我sip_general_custom.conf
有
stunaddr=stun.xten.com
externrefresh=120
localnet=192.168.1.1/255.255.255.0
nat=yes
是什么原因导致 Asterisk 提前结束通话,但仍然认为通话正在进行中?我不知道下一步该去哪里查找。
答案1
尝试转到canreinvite
“是”,然后重新加载 sip。另外,发布此更改之前和之后 sip set debug on 的输出。
答案2
当您拿起电话时,会生成一个 BYE - 上面没有时间戳,但它似乎在 200 OK 之后立即发生。然后生成第二个 BYE,它现在不在对话范围内 - 因此是 481。
您能给我们提供显示 SIP 对话文本内容的对话 SIP 跟踪吗?我相信在星号中它是命令“sip debug”。
干杯,阿莱德。