- PVSM.RU - https://www.pvsm.ru -
Ещё недавно пересылка текстовых сообщений была возможна только в контексте звонка, однако, с появлением десятой версии Asterisk, стало возможно обмениваться ими напрямую. Это открывает нам широкие возможности по массовому информированию абонентов, по взаимодействию с сотовыми сетями, ну и, разумеется, по общению между абонентами.
Итак, нам понадобится Asterisk десятой версии, в конфигурации которого необходимо указать следующее:
sip.conf
textsupport=yes accept_outofcall_message = yes outofcall_message_context = messages
extensions.conf
[messages] exten => _X.,1,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)}) exten => _X.,n,MessageSend(${ACTUALTO},${MESSAGE(from)}) exten => _X.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS}) exten => _X.,n,GotoIf($["${MESSAGE_SEND_STATUS}" != "SUCCESS"]?sendfailedmsg) exten => _X.,n,Hangup() ; ; Handle failed messaging exten => _X.,n(sendfailedmsg),Set(MESSAGE(body)="[${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)}] Your message to ${EXTEN} has failed. Retry later.") exten => _X.,n,Set(ME_1=${CUT(MESSAGE(from),<,2)}) exten => _X.,n,Set(ACTUALFROM=${CUT(ME_1,@,1)}) exten => _X.,n,MessageSend(${ACTUALFROM},ServiceCenter) exten => _X.,n,Hangup()
Тут небольшое пояснение — в целях безопасности я оставляю только часть адреса получателя до @, поскольку не планирую транзитную пересылку сообщений. Функция MessageSend — это как раз то самое, что нужно для отправки сообщения SIP абоненту. В качестве параметров она принимает адрес получателя и опциональный адрес отправителя. Сам текст передается через переменную ${MESSAGE(body)}. Если немного модифицировать этот контекст, тогда можно будет отправлять SMS в сотовые сети (тут кому как ближе — через GSM шлюз или через какого-нибудь SMS оператора, коих нынче великое множество — на любой вкус и кошелек).
Автор: Rumka
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/sms/16846
Нажмите здесь для печати.