Twilio не отвечает на SIP-приглашение

У меня есть реализация freeSwitch с использованием Twilio Elastic SIP-транкинга. По большей части это работает безупречно. Я могу получить входящий вызов от PSTN к моей магистрали SIP и далее к моей УАТС с свободным переключением. Я также могу инициировать вызовы на оконечной магистрали без проблем.

У меня возникают проблемы, когда моя функция FollowMe пытается дозвониться через магистраль SIP завершения, чтобы позвонить на мой мобильный телефон.

Я использовал FS_CLI для мониторинга связи с Twilio и вижу сообщение SIP Invite - но Twilio не отвечает.

Я даже сравнил (по большей части) запрос между тем, когда я вызываю из своего внутреннего номера PSTN, и когда freeSwitch пытается вызвать с FollowMe. Они похожи. Я предоставил запрос ниже, и если кто-то может увидеть что-то странное, пожалуйста, дайте мне знать. Этот запрос просто повторяется и в конечном итоге сдается - нет ответа от Twilio и нет его записи ни в журналах отладчика, ни в журнале магистрали. (У меня есть XXXX'мои номера)

 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 ответа

Решение

Twilio разработчик евангелист здесь.

Я просто передаю информацию, которую я собрал на основании этого вопроса, я не эксперт SIP. Тем не менее, это может помочь.

MTU (максимальная единица перехода) для SIP через UDP составляет 1500 байтов. Спецификация предполагает, что SIP-сообщения должны иметь размер менее 1300 байт, чтобы разрешить заголовки и тому подобное, или что сообщение должно отправляться по TCP.

Похоже, что вы отправляли 1506 байт в соответствии с верхней частью вашего журнала и удаления Remote-Party-ID увеличил бы размер сообщения до 1500. По сути, удаление любого несущественного параметра сделало бы то же самое, так что Twilio не нравится Remote-Party-ID параметр, но ваши сообщения были сброшены по пути из-за слишком большого. Мы не смогли найти журналы ПРИГЛАШЕНИЙ, и поэтому вы также не могли видеть никаких журналов.

В этом случае Remote-Party-ID действительно не используется Twilio, особенно в случае, когда идентификатор вызывающего абонента совпадает с Fromи довольно длинный заголовок. Таким образом, ваше решение, вероятно, лучшее.

Вы также можете бросить Allow-Events заголовок, который связан с SUBSCRIBE метод, который Twilio не поддерживает.

Я понял проблему. Twilio не понравился параметр Remote-Party-ID, который отправлялся как часть сообщения INVITE. Я отключил RPID в конфигурации SIP, установив для параметра "Caller-ID-Type" значение "none".

Для этого перейдите в "Профили SIP" в меню "Дополнительно". Оттуда выберите профиль SIP, который вам нужен, чтобы отключить RPID. Прокрутите список вниз, чтобы найти "caller-id-type" со значением "none". Нажмите на него и установите Включено в ИСТИНА. Сохраните и перезапустите Софию из CLI.

Другие вопросы по тегам