2017-03-13 45 views
0

我有一個使用Twilio的彈性SIP中繼的freeSwitch實現。在大多數情況下,這是完美的工作。我可以接收來自PSTN的來電到我的SIP中繼線,然後再接到我的自由切換PBX。我也可以在終端中繼線上發起呼叫而沒有問題。Twilio沒有響應SIP邀請

當我的FollowMe功能嘗試通過終端SIP中繼呼叫我的手機時,我遇到了問題。

我已經使用FS_CLI來監視通信到Twilio,並且可以看到SIP邀請消息 - 但Twilio不迴應。

我甚至還比較了(從大多數情況下)從我的分機呼叫PSTN到freeSwitch嘗試呼出FollowMe時的請求。他們看起來相似。我提供了下面的請求,如果有人能看到奇怪的東西,請告訴我。這個請求只是重複,最終放棄 - Twilio沒有響應,也沒有在調試器或中繼日誌中記錄它。 (我XXXX'ed我的號碼)

send 1506 bytes to udp/[54.172.60.1]:5060 at 16:47:51.442983: 
 
    ------------------------------------------------------------------------ 
 
    INVITE sip:[email protected] SIP/2.0 
 
    Via: SIP/2.0/UDP XX.XX.XX.XX;rport;branch=z9hG4bKe92m35UyNXe2a 
 
    Max-Forwards: 59 
 
    From: "+1XXXXXXXXX0" <sip:[email protected]>;tag=3UHvjrXHmUyXp 
 
    To: <sip:[email protected]> 
 
    Call-ID: a369c6b9-82af-1235-e490-0050561ee798 
 
    CSeq: 104375771 INVITE 
 
    Contact: <sip:[email protected]: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:[email protected]>;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:[email protected]>;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 
 
    ------------------------------------------------------------------------

回答

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方法有關。

+0

謝謝你Philnash!這很有意義。我會看看我可以刪除的其他標題,以確保這不會導致任何其他問題。 –

0

我想通了這個問題。 Twilio不喜歡作爲INVITE的一部分發送的Remote-Party-ID參數。我通過啓用「caller-id-type」爲「none」來關閉SIP配置中的RPID。

爲此,請進入「高級」菜單下的「SIP配置文件」。從那裏,選擇您需要禁用RPID的SIP配置文件。向下滾動列表以找到值「none」的「呼叫者ID類型」。點擊它並將Enabled設置爲TRUE。從CLI保存並重新啓動Sofia。

相關問題