WNAM позволяет осуществлять отправку идентификационных СМС абонентам, используя установленный в сервер USB-модем GSM и утилиту gammu.

Скорость отправки СМС при этом достаточно низкая: не более 1 СМС за 3 секунды. Это следует учитывать при планировании нагрузки на систему. Данный метод может быть рекомендован только в целях тестирования WNAM и при низкой нагрузке (количество авторизаций).

Для настройки этого метода необходимо в меню "Конфигурация" выбрать "Гостевая авторизация" → "Авторизация" и в поле "Провайдер СМС" указать "Локальный сервис gammu (модем)":

WNAM поддерживает любые модемы, которые распознаются ОС Linux в качестве модемов, то есть доступны в виде портов типа /dev/ttyUSB0. Из моделей подойдут фактически любые "бытовые" устройства. Например, отмечено отсутствие проблем с Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem. Также возможно использование модема в сочетании с виртуализацией VMware ESXi, путем "проброса" USB устройства вовнутрь виртуальной машины.

Необходимо переключить модем в режим "простой модем" при помощи утилиты usb_modeswitch, если используемый модем представляется серверу устройством типа USB Flash или CD.

После переключения рекомендуется проверить отклик модема при помощи AT-команд и утилит cu или minicom. Модем должен корректно отвечать на команды, заканчивая вывод символами "ОК". Дальнейшая настройка взаимодействия проводится при помощи утилиты gammu. Это стандартное средство организации взаимодействия приложений (таких как WNAM) и GSM-модемов, подключенных через com/usb порт сервера.

Возможны два сценария работы - через gammu или через gammu-smsd.

1. Взаимодействие через gammu

Этот метод подходит, если требуется редкая отправка СМС. При этом на каждый запрос WNAM на отправку СМС производится вызов утилиты, инициализация модема, отправка СМС и отключение от модема.

Отправка одной СМС таким способом может занимать порядка 10 секунд.

Необходимо убедиться, что в настройках свойств системы WNAM ("Конфигурация" → "Дополнительные настройки") прописан параметр:

gammu_path=/usr/bin/gammu

Затем следует произвести установку утилиты:

apt-get install gammu

Далее запустить поиск устройства:

gammu-detect

Затем произвести настройку устройства:

gammu-config

После выполненных действий будет создан файл конфигурации /root/.gammurc. Его необходимо скопировать в /etc/gammurc и при необходимости отредактировать, чтобы он имел следующий вид:

[gammu]
port = /dev/ttyUSB1
model = huawei E3372s
connection = at9600
synchronizetime = no
logfile =
logformat = nothing
use_locking =
gammuloc =

Для проверки работоспособности рекомендуется выполнить тестовую отправку СМС из командной строки:

gammu sendsms TEXT 7987654321 -text TEST

Если отправка СМС-сообщения произошла, то следует перейти к следующему шагу. Если отправка СМС-сообщения не осуществилась, то следует повторить проверку работоспособности с параметрами -d textall -f /tmp/gammu.log, а также изучить лог-файл на предмет ошибок.  

Порт работает в эксклюзивном режиме, значит не должен быть запущен minicom или gammu-smsd.

Затем необходимо дать возможность утилите gammu писать в tty порт.

Выполнение gammu производится от имени пользователя tomcat8 (или WNAM), который не имеет прав записи. Необходимо предоставить право записи в порт при запуске gammu от любого пользователя, установив suid флаг:

chmod a+s /usr/bin/gammu
ls -la /usr/bin/gammu
-rwsr-sr-x 1 root root 339600 июл 25 2013 /usr/bin/gammu

Проверку отправки СМС от имени WNAM можно сделать при помощи интерфейса http://сервер_wnam/cp/testsend. На этом настройка gammu завершена.

2. Взаимодействие через gammu-smsd

Этот метод подходит, если число СМС является значительным, и отсутствует необходимость устанавливать suid-флаги. За работу с модемом отвечает сервис, который формирует и обслуживает очередь сообщений, переданных через клиентскую программу.

Первым шагом необходимо установить утилиту:

apt-get install gammu gammu-smsd

Затем запустить поиск устройства:

gammu-detect

Далее произвести настройку устройства:

gammu-config

Конфигурационный файл находится в директории /etc/gammu-smsdrc и выглядит следующим образом: 

# Configuration file for Gammu SMS Daemon
# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB0
connection = at9600
# Debugging
logformat = nothing
# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = files
logfile = syslog
# Increase for debugging information
debuglevel = 0
#RunOnReceive = /root/wnam-gammu-smsd-bridge.pl
CommTimeout = 5
# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

Для отправки СМС-сообщений используется клиентская утилита  gammu-smsd-inject. Рекомендуется протестировать работоспособность установленной утилиты, выполнив команду: 

gammu sendsms TEXT 7987654321 -text TEST

Если СМС-сообщение дошло, то следует перейти к следующему шагу. Если СМС-сообщение не доставлено, то следует изучить лог-файл /var/log/daemon.log на предмет ошибок.

Далее необходимо настроить WNAM на отправку СМС через gammu-smsd-inject. Для этого в конфигурационном файле /etc/wnam.properties следует указать параметр:

gammu_path=/usr/bin/gammu-smsd-inject

После выполненных изменений необходимо перезапустить сервисы tomcat и gammu-smsd. Проверку отправки СМС от имени WNAM можно осуществить при помощи интерфейса http://сервер_wnam/cp/testsend.

В некоторых случаях возникает проблема с отправкой СМС-сообщений при помощи gammu-smsd-inject (возвращается код ошибки: 3). При возникновении такой ошибки можно дополнительно установить suid-флаг исполняемому файлу gammu-smsd-inject. На этом настройка gammu-smsd завершена.

  • No labels