Отправка смс через шлюз Openvox VoxStack

openvox, sms

Alexcr

Статья, вероятно, будет интересна только обладателям 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 аккуратно оборачивает взаимодействие с астериском, и тогда смс можно отправить так, не заморачиваясь более длинное или короткое у вас смс. 
 

var osms = require('openvox-sms');
var sms = new osms({host: '192.168.1.5'});
sms.on('connect', function () {
    sms.sendSMS({
        span: 1, 
        number: '8913ХХХХХХХ', 
        text: 'My long-long-long text about London'
        }, function (err, response) {            
            sms.close(function () {
        });
    });
});



Немного больше о командах есть в документации на шлюз.

Подробнее об использованиии 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.

Предложения, конструктивные идеи?