Настройка передачи текстовых сообщений pjsip Asterisk

Инструкции по установке и настройке оборудования IP-телефонии и АТС
Правила форума
Внимание! Обсуждения в разделе инструкций запрещены!

Обсуждение вопросов установки, настройки, возможных ошибок и решение проблем происходит в соответствующих тематических разделах.
Если Вы обнаружили ошибки или неточности в инструкции, пожалуйста напишите об этом в комментариях под ней, либо отправьте сообщение администрации ресурса.
Ответить
Аватара пользователя
doxtor
Сообщения: 9
Зарегистрирован: 13 фев 2020, 05:05
Контактная информация:

Настройка передачи текстовых сообщений pjsip Asterisk

Сообщение doxtor » 09 апр 2020, 13:41

Недавно мы столкнулись с проблемой организации передачи простых сообщений (simple messages) между абонентами Asterisk с использованием протокола pjsip. Инструкций, как это реализовать в sip в интернете полно, однако pjsip имеет свои особенности. Одной из трудностей явился тот факт, что Asterisk у нас работал под управлением FreePBX, в связи с чем вносить прямые изменения в конфигурационные файлы Asterisk необходимо было специальным образом. Итак, здесь просто приведем необходимые дополнения конфигурации (предполагаем, что конфигурационные файлы Asterisk расположены в /etc/asterisk).

В файл /etc/asterisk/extensions_custom.conf добавляем

Код: Выделить всё

[astsms]
exten => _.,1,NoOp(SMS receiving dialplan invoked)
exten => _.,n,NoOp(To ${MESSAGE(to)})
exten => _.,n,NoOp(From ${MESSAGE(from)})
exten => _.,n,NoOp(Body ${MESSAGE(body)})
exten => _.,n,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)})
exten => _.,n,MessageSend(${ACTUALTO},${MESSAGE(from)})
exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
exten => _.,n,GotoIf($["${MESSAGE_SEND_STATUS}" != "SUCCESS"]?sendfailedmsg)
exten => _.,n,Hangup()
;
; Handle failed messaging
exten => _.,n(sendfailedmsg),Set(MESSAGE(body)="[${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)}] Your message to ${EXTEN} has failed. Retry later.")
exten => _.,n,Set(ME_1=${CUT(MESSAGE(from),<,2)})
exten => _.,n,Set(ACTUALFROM=${CUT(ME_1,@,1)})
exten => _.,n,MessageSend(${ACTUALFROM},ServiceCenter)
exten => _.,n,Hangup()
exten => _.,n,Hangup()
а в файл /etc/asterisk/pjsip.endpoint_custom_post.conf дописываем для каждого внутреннего абонента параметр

Код: Выделить всё

message_context=astsms
то есть, если у вас абоненты, предположим, 110,111,112,113,114,115, то конфигурация будет выглядеть следующим образом:

Код: Выделить всё

[111](+)
message_context=astsms

[112](+)
message_context=astsms

[113](+)
message_context=astsms

[114](+)
message_context=astsms

[115](+)
message_context=astsms
после сохранения изменений, перезагружаем Asterisk из Asterisk CLI

Код: Выделить всё

core restart now
и проверяем обмен сообщениями, например при помощи microsip или ip-телефонов, с поддержкой обмена сообщениями.

Ответить

Вернуться в «Инструкции»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей