Статья, вероятно, будет интересна только обладателям GSM шлюзов OpenVox линейки VoxStack, настоящим и потенциальным. Известно, что внутри этих шлюзов находится полноценный Asterisk. Который имеет дополнительные команды в AMI и CLI для отправки смсок.
[Фото из топика с хорошим описанием функционала этих GSM шлюзов]
Далее хочу представить вам две небольшие наработки на node.js, которые позволили мне сделать отправку смс через VoxStack более удобной.
Openvox-sms
npm openvox-sms — это небольшая обертка для AMI команд по отправке смс из приложения на node.js. В ней добавлена функция разбиения длинных текстов на более мелкие, чтобы отправить составное смс.
В CLI asterisk'а шлюза есть две команды для отправки СМС:
> gsm send sync sms span number text timeout
> gsm send sync csms span number text flag smscount smssequence timeout
Первая команда для отправки простой смс (указываем модуль span, номер назначения number, собственно text, и по желанию timeout).
Вторая для отправки части (concatenated sms) из длинной (дополнительно необходимо для каждой части указывать количество всего частей smscount, и текущий номер части smssequence). Необходимо отправить столько команд, сколько у вас частей смс. Если отправить команды с правильными параметрами, то на мобильном телефоне эти части будут собраны в одну смс.
Openvox-sms аккуратно оборачивает взаимодействие с астериском, и тогда смс можно отправить так, не заморачиваясь более длинное или короткое у вас смс.
Немного больше о командах есть в документации на шлюз.
Подробнее об использованиии npm openvox-sms: github.com/antirek/openvox-sms.
Openvox-sms-worker
Конечно, использование обертки openvox-sms удобно, но не будешь же во все приложения, которые должны отправлять смс, добавлять настройки подключения и проверять как они отправляют смс. (Более того не исключен вариант, что придет время и, вероятно, придется заменить gsm шлюз на какой-нибудь онлайн сервис отправки смс).
В таком случае удобнее использовать очередь RabbitMQ для отправки смс, которую будет обслуживать worker, непосредственно работающий с gsm шлюзом OpenVox VoxStack.
Этот worker настроил один раз, а все приложения будут слать сообщения в общую очередь. Теперь можно в одном месте смотреть логи работы с gsm шлюзом, проверять отправку смс.
Подробнее о настройках openvox-sms-worker: github.com/antirek/openvox-sms-worker.
Предложения, конструктивные идеи?