Текстовые сообщения SIP/SIMPLE в Asterisk

в 7:01, , рубрики: asterisk, ip-телефония, simple, sip, метки: , ,

Во время очередной телефонизации очередного офиса я обратил внимание на то, что в выбранном нами софтфоне MicroSIP имеется некий встроенный «чат», который однако же не работает «из коробки».

image

Для пересылки сообщений эта программа использует метод SIP MESSAGE (RFC 3428), известный также как протокол SIMPLE.

В Asterisk его поддержка появилась в версии 10, но документация тут, как это часто бывает, сильно отстала от прогресса. Пришлось сначала долго искать по форумам различные варианты конфигурации, а потом методом проб и ошибок их испытывать.

В результате была выработана такая работающая конфигурация (верна для Asterisk 11.6.0).
В секцию [general] файла sip.conf (для владельцев систем на базе FreePBX — в файл sip_general_custom.conf) добавляются строки:

accept_outofcall_message = yes
outofcall_message_context = messages
auth_message_requests = no

А в dialplan (для FreePBX — в файл extensions_custom.conf) добавляется такой контекст:

[messages]
exten => _XXX,1,MessageSend(sip:${EXTEN},"${CALLERID(name)}"${MESSAGE(from)})

Количество X проставьте в соответствии с количеством цифр в ваших внутренних номерах.

Ура, всё работает!

image

можно посылать сообщения на аппаратные телефоны:

image

Ну а умельцы могут доработать диалпан для разных целей, например для посылки SMS или электронной почты. Содержимое сообщения находится в переменных ${MESSAGE(from)} ${MESSAGE(to)} и ${MESSAGE(body)}

Также есть смысл попробовать выставить auth_message_requests = yes — но тут могут возникнуть проблемы с совместимостью.

Также важно не спутать то, о чём идёт речь в статье, с настройкой textsupport — эта настройка в Asterisk отвечает за совсем другой протокол, ITU-T T.140 realtime text.

К сожалению у меня ${CALLERID(name)} получается всегда пустой. Может быть читатели смогут подсказать решение?

Автор: varnav

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js