Twilio没有回应SIP邀请

时间:2017-03-13 17:02:43

标签: twilio sip freeswitch

我使用Twilio的Elastic SIP中继实现了freeSwitch实现。在大多数情况下,这是完美无瑕的。我可以接收来自PSTN的呼叫到我的SIP中继,然后再接收到我的freeswitch PBX。我也可以在没有问题的情况下在终端中继上发起呼叫。

当我的FollowMe功能尝试通过终端SIP干线拨出来拨打我的手机时,我遇到了问题。

我已经使用FS_CLI监控到Twilio的通信,并且可以看到SIP Invite消息 - 但Twilio没有回复。

我甚至比较(在大多数情况下)从我的分机呼叫PSTN和freeSwitch尝试呼叫FollowMe之间的请求。他们看起来很相似我在下面提供了请求,如果有人能看到奇怪的东西,请告诉我。这个请求只会重复并最终放弃 - Twilio没有响应,也没有在Debugger或Trunk日志中记录它。 (我有XXXX'ed我的号码)

 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
   ------------------------------------------------------------------------

2 个答案:

答案 0 :(得分:0)

我弄明白了这个问题。 Twilio不喜欢作为INVITE一部分发送的Remote-Party-ID参数。我通过启用“caller-id-type”为“none”来关闭SIP配置中的RPID。

要执行此操作,请转到“高级”菜单下的“SIP配置文件”。从那里,选择您需要禁用RPID的SIP配置文件。向下滚动列表以找到值为“none”的“caller-id-type”。单击它并将Enabled设置为TRUE。从CLI保存并重新启动Sofia。

答案 1 :(得分:0)

Twilio开发者传道者在这里。

我只是根据这个问题传递我内部提到的信息,我不是SIP专家。但是,它可能有所帮助。

SIP over UDP的MTU(最大转换单位)为1500字节。该规范建议SIP消息应小于1300字节以允许标头等,或者消息应通过TCP发送。

看起来你根据日志的顶部发送了1506个字节,删除Remote-Party-ID会将消息的大小推到1500以下。实际上,删除任何非必要参数都会做同样的事情,所以不是Twilio不喜欢Remote-Party-ID参数,但是你的消息因为太大而被丢弃了。我们找不到INVITE的日志,这也是您看不到任何日志的原因。

在这种情况下,Twilio并不真正使用Remote-Party-ID,特别是在呼叫者ID与From相同的情况下,并且是一个相当长的标头。所以你的解决方案可能是最好的。

你也可以删除Allow-Events标题,这与Twilio不支持的SUBSCRIBE方法有关。