Начиная с версии 1.1.510 WNAM позволяет осуществлять идентификацию абонентов беспроводной сети не только путём отправки им СМС-сообщений, но и при помощи приёма СМС-сообщений, отправленных абонентами. Таким образом, владелец системы экономит на отправке идентификационных сообщений. Оплата за отправляемые сообщения перекладывается непосредственно на абонента по тарифу его сотового оператора.
Поддерживается три способа получения сообщений:
- приём сообщений на USB-модем с SIM-картой, установленный на Linux-сервере (работа осуществляется посредством утилиты gammu);
- приём сообщений от провайдера СМС (smsc.ru) посредством отправки HTTP-сообщения от сервера провайдера к серверу WNAM;
- приём сообщений от любого провайдера СМС, работающего по протоколу SMPP.
Для включения приёма сообщений необходимо выполнить ряд действий:
1. Настройка способа авторизации абонентов через "получение СМС"
Для этого необходимо перейти в глобальные настройки ("Конфигурация" → "Гостевая авторизация" → "Авторизация"), либо в настройки для выбранной площадки. Во втором случае настройка производиться для каждой площадки отдельно.
При этом все настройки СМС игнорируются, кроме следующих:
- ответный код;
- запомнить авторизацию на (длительность авторизации номера);
- имя страницы;
Поле выбора провайдера также игнорируется, так как оба способа приёма (gammu и smsc) активны одновременно.
2. Настройка утилиты gammu при использования собственного USB-модема и SIM-карты
Необходимо предварительно настроить сам модем (usb_modeswitch), при этом "проброс" физического USB-устройства в виртуальную машину следует выполнить самостоятельно в соответствии с эксплуатационной документацией на USB-устройство.
Настройка сервиса smsd заключается в редактировании файла /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 = textall# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = files
logfile = syslog
# Increase for debugging information
debuglevel = 0
RunOnReceive = /usr/local/bin/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/
При этом необходимо указать путь до исполняемого файла скрипта, который будет осуществлять передачу принятых СМС-сообщений в сервер WNAM (wnam-gammu-smsd-bridge). В режиме настройки требуется указать: debuglevel = 2. Текст скрипта приведен ниже, также он содержится в каталоге со вспомогательными файлами на сервере (http://www.netams.com/files/wnam/misc/wnam-gammu-smsd-bridge.pl):
#!/usr/bin/perl
#
# wnam-gammu-smsd-bridge
# http://www.netams.com/
# see http://wammu.eu/docs/manual/smsd/run.html
#use constant WNAM_HOST => "127.0.0.1";use IO::Socket::INET;$| = 1;my $sock = new IO::Socket::INET(PeerAddr => WNAM_HOST, PeerPort => 20001, Proto => 'tcp', Timeout => 0.5) or undef $sock;if (defined $sock) {
my $msgs=$ENV{"SMS_MESSAGES"};
if (defined $msgs) {
for (my $i=1; $i<=$msgs; $i++) {
my $tel = $ENV{"SMS_".$i."_NUMBER"};
my $code = $ENV{"SMS_".$i."_TEXT"};
print $sock "SMSRECV PHONE=$tel TEXT=$code\n";
print "SMSRECV PHONE=$tel TEXT=$code\n";
}
}
$sock->close;
}
После окончания настройки требуется перезапустить утилиту gammu и убедиться, что в лог-файле /var/log/daemon.log отображаются корректные события обмена данными с модемом. Перезапуск утилиты осуществляется командой:
/etc/init.d/gammu-smsd restart
Необходимо соответствующим образом отредактировать шаблон формы sms_recv (или её клона) для того, чтобы пользователь имел возможность отправлять сообщение прямо с телефона. Для этого в форме sms_recv требуется отредактировать следующие строки ( в качестве примера взят произвольный номер +7 (910) 012-34-56, при настройке необходимо вводить реальный номер телефона пользователя):
<p>Отправьте СМС с любым текстом на номер:</p>
<!-- Form Inputs -->
<div class="form-group">
<a href="sms:+79100123456"><button type="button" class="btn btn-success btn-lg btn-block">+7 910 012-34-56</button></a>
Возможно вручную эмулировать доставку входящего СМС-сообщения в WNAM путем запуска команды, при этом код в сообщении не важен и игнорируется:
echo "SMSRECV PHONE=79991234567 TEXT=0000" | nc -w 1 wnam_ip_address 20001
3. Настройка провайдера SMSC для получения сообщений
В личном кабинете на сайте smsc.ru в разделе меню "Настройки" подключить возможность приёма сообщений с пересылкой уведомлений на сервер WNAM:
Необходимо указать HTTP-путь до сервера WNAM в формате: http://имя_вашего_сервера:порт/cp/smsc_recv .
Сервер WNAM должен быть доступен из сети Интернет (напрямую, или через публикацию на межсетевом экране) для серверов компании SMSC. Подробное описание механизма работы SMSC API приведено на сайте компании SMSC в соответствующем разделе (здесь).
Для приёма сообщений возможно использовать три варианта:
- Публичные номера провайдера SMSC, опубликованные на сайте компании SMSC в разделе "Услуги" (здесь). При этом от пользователей требуется отправка сообщений с текстом, начинающимся с вашего идентификатора на сайте smsc.ru, например vasyapupkin. Текст сообщения не важен. Такой способ является не удобным для пользователей.
- Использование у провайдера SMSC приватного мобильного номера, что влечет его покупку и оплату аренды (порядка 1000р/мес.). При этом все поступающие сообщения на приватный номер передаются вам, префикс не требуется.
- Передача провайдеру SMSC на хостинг зарегистрированной собственной SIM-карты и оплата услуг хостинга (порядка 2000р/мес.). При этом все поступающие сообщения на указанный номер передаются вам, префикс не требуется.
Необходимо соответствующим образом отредактировать шаблон формы sms_recv (или её клона) для того, чтобы пользователь имел возможность отправлять сообщение прямо с телефона (реализуется переход на приложение отправки СМС по ссылке вида sms://+79168877777). Для этого в форме sms_recv требуется отредактировать следующие строки ( в качестве примера взят произвольный номер +7 (916) 887-77-77, при настройке необходимо вводить реальный номер телефона пользователя):
<p>Отправьте СМС с любым текстом на номер:</p>
<!-- Form Inputs -->
<div class="form-group">
<a href="sms:+79168877777&body=vasyapupkin:%20$(smscode)"><button type="button" class="btn btn-success btn-lg btn-block">+7 (916) 887-77-77</button></a>
При этом необходимо вписать в параметр body префикс (ваш логин в smsc.ru), если выбран метод использования публичных номеров.
4. Настройка приема сообщений от любого провайдера СМС, работающего по протоколу SMPP
Для включения этого режима необходимо проверить поддержку используемого SMPP-провайдер получения сообщений. Для этого потребуется приобрести выделенный номер или отдать на хостинг уже зарегистрированную собственную SIM-карту для приёма сообщений (выше приведен пример настройки для SMSC). Затем необходимо установить и настроить утилиту kannel так, как описано в разделе Отправка СМС по протоколу SMPP настоящего документа. Дополнительно требуется включить приём сообщений и пересылку их в WNAM в конфигурационном файле /etc/kannel/kannel.conf:
group = sms-service
keyword = default
catch-all = yes
max-messages = 0
post-url = "http://127.0.0.1:8080/cp/kannel_recv?phone=%p&to=%P&mes=%a"
В качестве ссылки следует указать IP-адрес и порт сервиса веб-интерфейса WNAM. Настройки формы авторизации соответствуют предыдущему варианту (настройка для провайдера SMSC),но также следует учитывать и требования используемого провайдера.
5. Проверка работоспособности системы
Независимо от выбранного способа приёма сообщений с точки зрения абонента механизм работы авторизации будет одинаковым и составлять следующие шаги:
1) Подключение абонента к сети (абонент переходит на какую-либо внешнюю ссылку, hot-spot перенаправляет сессию пользователя на страницу авторизации).
2) Ввод номера телефона абонента:
3)Сообщение абоненту с просьбой отправить с указанного номера произвольное СМС на указанный номер шлюза:
При этом в лог-файле /home/wnam/logs/wnam.log появляется сообщение:
CP SMSRECV phase 1: mac=87:A5:1C:EC:3B:AF, ip=10.130.3.218, phone=79159993322
4) Нажатие абонентом на зеленую кнопку с изображенным номером телефона, переход в приложение отправки СМС, отправка сообщения (текст сообщения не важен):
При получении сообщения в лог-файле /home/wnam/logs/wnam.log появляется такая запись:
SMS_RECV from 79168877777, confirmed phone 79159993322, MAC=87:A5:1C:EC:3B:AF, CODE=3469
5) Возвращение абонента в браузер и нажатие на кнопку перехода в сеть Интернет. Если СМС-сообщение ещё не получено сервером WNAM,то появится сообщение об ошибке "Ваше СМС пока не пришло":
6) Перенаправление абонента на страницу согласия с условиями и/или рекламой (при успешном получении СМС-сообщения):
При этом в лог-файле /home/wnam/logs/wnam.log появляется такое сообщение:
CP SMSRECV phase 2: mac=87:A5:1C:EC:3B:AF, ip=10.130.3.218, phone=79159993322, smscode=3469 VERIFIED
7) При последующих подключениях этого абонента происходит только перенаправление на страницу с рекламой.