Asterisk инициирует звонок через sip-уведомление
У меня на столе ip-телефон Yealink, и я хочу удаленно управлять им, чтобы вместо этого можно было звонить со своего компьютера, а не набирать номера прямо на телефоне. Эта ссылка объясняет, как это сделать:
Как набрать или сделать звонок с помощью пульта дистанционного управления | Yealink Поддержка
Есть2 способа сделать это. Один отправляет запрос http на телефон. И другой вариант, отправив сообщение уведомления SIP.
А) Отправка HTTP-запроса (Работает!)
- Сначала убедитесь, что телефон настроен на удаленные подключения
Тогда просто сделай это
wget
запросwget --user admin --password PASSWORD_PHONE http://IP_OF_PHONE/servlet?key=SPEAKER
После этого запроса на клавиатуре телефона нажата!
B) Отправка SIP-уведомления (НЕ работает)
Это опция, которую я хочу использовать, потому что я не хочу хранить имена пользователей и пароли. Также может измениться IP-адрес телефона.В любом случае вот что я пробовал, и по какой-то причине я не могу заставить эту опцию работать:
Я выполняю первый шаг, который я сделал для части (A), позволяя телефону управлять дистанционно.
Я подключаю телефон к серверу Asterisk и проверяю, подключен ли он.
Теперь, когда подключен SIP-партнер Eduardo, мне нужно отправить ему SIP-уведомление с телом, содержащим ключ =SPEAKER.
я открываю
/etc/asterisk/sip_notify.conf
и добавьте следующий контекст:[test] Событие => Содержимое ACTION-URI => Ключ = SPEAKER
Я перезагружаю звездочку, потому что я не знаю, как перезагрузить sip_notify.conf
asterisk -rx "core restart gracefully"
Затем на CLI звездочки я набираю следующую команду, чтобы отправить sip-уведомление:
sip notify test Eduardo
когда я запускаю эту команду, звездочка говорит:
Sending NOTIFY of type 'test' to 'Eduardo'
но телефон никогда не нажимает клавишу SPEAKER! Что я могу делать не так?Вот глоток, захваченный Wireshark!
- Даже если я следую указаниям, клавиша SPEAKER не нажимается!Что я могу делать не так?
Полезная информация:
1 ответ
Попробовав весь день я смог разобраться! Мне не хватало заголовка типа контента!
В любом случае вот решение:
Файл sip_notify.conf должен содержать:
[test] Content-Type=>message/sipfrag Event=>ACTION-URI Content=>key=SPEAKER
Линия
Content-Type=>message/sipfrag
очень важно!Перезапустите звездочку, чтобы sip_notify.conf перезагрузился
звездочка -rx "перезагрузка ядра изящно"
Теперь введите эту звездочку:
sip notify test Eduardo
где Eduardo - это SIP-партнер, которому вы хотите отправить ключ
Список всех доступных ключей можно найти здесь: