Произвольный ответ на SIP-сообщение в Asterisk? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть IP-телефон, который, кажется, полностью стандартный SIP, но когда вы поднимаете трубку, он отправляет «СООБЩЕНИЕ» на сервер.

Если он получает «200 OK», то он продолжает работать нормально, и, кажется, использует действительный SIP, но если он получает ошибку (которую в конечном итоге выдает Asterisk, поскольку это не совсем правильная последовательность, заставляя его отвечать a «406 Not Acceptable»), он вообще отказывается работать.

Можно ли как-нибудь изменить Asterisk, чтобы он отвечал "200 OK" за "MESSAGE" для конкретного пользователя, не перестраивая сам Asterisk из источников или добавляя какой-либо промежуточный прокси-сервер?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Хотя ответ @arheops не сработал, он, безусловно, был полезен, чтобы указать мне правильное направление.

Телефон в значительной степени отправляет MESSAGE без какого-либо контента, и даже без Content-Type.

<--- SIP read from UDP:<Phone External IP>:5060 --->
MESSAGE sip:1014@<Server Internal IP>:5060;user=phone SIP/2.0
Via: SIP/2.0/UDP <Phone Internal IP>:5060;branch=z9hG4bK2621781087c1096064fa949
From: "1014" <sip:1014@<Server Internal IP>:5060;user=phone>;tag=2621781087c1096064fa949;fjline-hunt=ML-141
To: <sip:1014@<Server Internal IP>:5060;user=phone>
CSeq: 1 MESSAGE
Call-ID: 00062621781087c1096064fa94900@<Phone Internal IP>
Content-Length: 0
Max-Forwards: 70
User-Agent: Fujitsu SS-170A/B/C V02L001C06

<------------->
--- (9 headers 0 lines) ---

В конце концов я нашел этот вопрос: Входящее сообщение Asterisk выдает: 415 неподдерживаемых типов носителей

В котором говорится, что без содержимого типа text / plain Asterisk сразу отклоняет сообщение.

Конечно, правильным способом было бы действительно клонировать Asterisk и перестроить его из исходного кода, но учитывая ограничение по времени (и лень), я просто использовал Hopper, чтобы найти смещение строкового литерала после «text / plain», и просто заставить его ответить 200 OK (группа пробелов в конце).

И теперь я могу легко позвонить любому с этого телефона!

Входящие вызовы, однако, не работают: он отвечает OK на уведомление, но ничего не делает, и Asterisk перенаправляет вызов на голосовую почту.

И я также не могу проверить голосовую почту, потому что она не будет отправлять DTMF внутри или вне полосы.

Короче говоря, не покупайте SIP-телефон на распродаже бывшей в употреблении электроники только потому, что он дешевый и выглядит круто, протоколы для конкретного поставщика могут быть PITA.

0 голосов
/ 15 ноября 2018

Я могу предложить следующую опцию

1) попробовать установить контекст для сообщения sip.conf

accept_outofcall_message = yes
outofcall_message_context = messages
auth_message_requests = no

extensions.conf

[messages]
exten => _XXX,1,Hangup

2) настроить kamailio какпрокси перед звездочкой, создайте цикл сообщений на kamailio, зарегистрируйте свое устройство на kamailio.

...