我有一个使用Twilio的Elastic SIP中继的freeSwitch实现。在大多数情况下,这是完美无瑕的。我可以将来电从PSTN接收到我的SIP干线并转发到我的freeswitch PBX。我也可以在终端干线上发起呼叫,而不会出现问题。
当我的FollowMe功能尝试通过终端SIP干线拨出呼叫我的手机时,我遇到了问题。
我已经使用FS_CLI监控到Twilio的通信,可以看到SIP Invite消息-但是Twilio没有响应。
我甚至(在很大程度上)比较了从我的分机呼叫到公共交换电话网时的请求,以及当freeSwitch尝试使用FollowMe呼叫时的请求。它们看起来很相似。我已经提供了下面的请求,如果有人能看到一些奇怪的东西,请让我知道。这个请求只是重复自己,最终放弃-没有来自Twilio的响应,也没有在调试器或Trunk日志中记录它。(我已经记下了我的号码)
send 1506 bytes to udp/[54.172.60.1]:5060 at 16:47:51.442983:
------------------------------------------------------------------------
INVITE sip:+1XXXXXXXXX6@XXXXXX.pstn.twilio.com SIP/2.0
Via: SIP/2.0/UDP XX.XX.XX.XX;rport;branch=z9hG4bKe92m35UyNXe2a
Max-Forwards: 59
From: "+1XXXXXXXXX0" <sip:+1XXXXXXXXX0@XXXXXX.oxigenx.com>;tag=3UHvjrXHmUyXp
To: <sip:+1XXXXXXXXX6@XXXXXX.pstn.twilio.com>
Call-ID: a369c6b9-82af-1235-e490-0050561ee798
CSeq: 104375771 INVITE
Contact: <sip:gw+a741d1e8-2e0a-4527-b18d-518edbe57d73@XX.XX.XX.XX:5060;transport=udp;gw=a741d1e8-2e0a-4527-b18d-518edbe57d73>
User-Agent: FreeSWITCH
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Content-Type: application/sdp
Content-Disposition: session
Content-Length: 246
Diversion: <sip:+1XXXXXXXXX6@public-vip.us1.twilio.com>;reason=unconditional
X-Twilio-AccountSid: XXXXXXXXXXX
X-Twilio-CallSid: CA05acdaaae18a720113ab2e78cbd1db63
X-accountcode: admin1.oxigenx.com
X-FS-Support: update_display,send_info
Remote-Party-ID: "+1XXXXXXXXX0" <sip:+1XXXXXXXXX0@XXXXXX.oxigenx.com>;party=calling;screen=yes;privacy=off
v=0
o=FreeSWITCH 1489394171 1489394172 IN IP4 XX.XX.XX.XX
s=FreeSWITCH
c=IN IP4 XX.XX.XX.XX
t=0 0
m=audio 29500 RTP/AVP 0 101 13
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=rtpmap:13 CN/8000
a=ptime:20
------------------------------------------------------------------------
发布于 2017-03-14 05:18:03
Twilio开发者的布道者在这里。
我只是根据这个问题传递我在内部获得的信息,我不是SIP专家。然而,这可能会有所帮助。
UDP上的SIP的MTU (最大转换单元)是1500字节。该规范建议SIP消息应小于1300字节,以支持报头等,或者消息应通过TCP发送。
根据日志的顶部,看起来您发送了1506字节,删除Remote-Party-ID会将消息大小推低到1500以下。实际上,删除任何不重要的参数也是一样的,所以这并不是Twilio不喜欢Remote-Party-ID参数,而是您的消息因为太大而被丢弃了。我们找不到邀请的日志,这就是为什么你也看不到任何日志的原因。
在这种情况下,Twilio并没有真正使用Remote-Party-ID,特别是在调用者id与From相同的情况下,并且是一个相当长的头部。所以你的解决方案可能是最好的。
您还可以删除Twilio头部,这与Allow-Events不支持的SUBSCRIBE方法有关。
发布于 2017-03-14 03:27:10
我发现了问题所在。Twilio不喜欢作为INVITE的一部分发送的Remote-Party-ID参数。通过将"caller-id-type“设置为"none”,我在SIP配置中关闭了RPID。
要执行此操作,请进入“高级”菜单下的"SIP配置文件“。在此处,选择禁用RPID所需的SIP配置文件。向下滚动列表,找到值为"none“的"caller-id-type”。单击它并将Enabled设置为TRUE。从CLI保存并重新启动Sofia。
https://stackoverflow.com/questions/42769358
复制相似问题