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.