Начиная с версии 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, не имеет отношение к форме sms_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), если выбран метод использования публичных номеров.

Использование параметра body зависит от версии операционной системы абонентского устройства.

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) При последующих подключениях этого абонента происходит только перенаправление на страницу с рекламой.

 

 


  • No labels