You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

Начиная с версии 1.1.510 WNAM позволяет осуществлять идентификацию абонентов беспроводной сети не только путём отправки им СМС-сообщений, но и при помощи приёма сообщений, отправленных абонентами. Таким образом вы, как владелец системы, экономите на отправке идентификационных сообщений. Оплата за отправляемые сообщения перекладывается непосредственно на абонента, по тарифу его сотового оператора.

Внимание! В качестве допустимых способов получения сообщений в настоящий момент поддерживаются три:

  • Приём сообщений на USB-модем с вашей SIM-картой, установленный на Linux-сервере. Работа ведется через утилиту gammu
  • Приём сообщений от провайдера СМС smsc.ru, посредством HTTP-сообщения от сервера провайдера к серверу WNAM
  • Приём сообщений от любого провайдера СМС, работающего по протоколу SMPP

Для включения приёма сообщений вы должны:

1. Настроить вариант авторизации абонентов через "получение СМС", в глобальных настройках ("Конфигурация" - "Авторизация"), либо индивидуально для выбранной площадки

При этом все выбранные ниже настройки СМС игнорируются, кроме

  • Ответный код
  • Длительность авторизации номера
  • Имя формы

Поле выбора провайдера также игнорируется, потому что оба способа приёма (gammu и smsc) активны одновременно.

2. В случае использования собственного USB-модема и SIM-карты, настроить утилиту gammu

Предварительно, настроить сам модем (usb_modeswitch), проброс физического 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.pl). В режиме настройки укажите debuglevel = 2

Текст скрипта приведен ниже, также он содержится в каталоге со вспомогательными файлами на сервере (http://www.netams.com/files/wnam/misc/wnam-gammu-smsd-bridge.pl)

#!/usr/bin/perl
#
# wnam-gammu-smsd-bridge.pl
# 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

Пусть номер телефона на SIM-карте +7 (910) 012-34-56. Вы должны соответствующим образом отредактировать шаблон формы sms_recv (или её клона) для того, чтобы пользователь имел возможность отправить вам сообщение прямо с телефона. Найдите и отредактируйте следующие строки:

<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, не путайте!

Ваш сервер должен быть доступен из сети Интернет (напрямую, или через публикацию на межсетевом экране) для серверов компании SMSC. Подробное описание механизма работы SMSC API приведено здесь.

Для приёма сообщений вы можете использовать три варианта:

  • Публичные номера провайдера SMSC, опубликованные здесь. При этом вы должны требовать от пользователей отправки сообщений с текстом, начинающимся с вашего идентификатора на сайте smsc.ru, например vasyapupkin: . Текст сообщения не важен. Это не очень удобно, ибо пользователи могут не понять таких сложностей.
  • Купить у провайдера  SMSC приватный мобильный номер, и оплачивать его его аренду (порядка 1000р / мес.). При этом все поступающие на него сообщения передаются вам, префикс не требуется.
  • Передать провайдеру SMSC на хостинг свою SIM-карту, и оплачивать услуг хостинга (порядка 2000р / мес.). При этом все поступающие на ваш номер сообщения передаются вам, префикс не требуется.

Пусть выбранный номер телефона SMSC +7 (916) 887-77-77. Вы должны соответствующим образом отредактировать шаблон формы sms_recv (или её клона) для того, чтобы пользователь имел возможность отправить вам сообщение прямо с телефона (реализуется переход на приложение отправки СМС по ссылке вида sms://+79168877777). Найдите и отредактируйте следующие строки:

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


3. В случае приём сообщений от любого провайдера СМС, работающего по протоколу 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), с учётом требований вашего провайдера.

 

4. Проверить работу системы

Независимо от выбранного вами способа приёма сообщений с точки зрения абонента механизм работы авторизации будет одинаковым:

  1. Абонент подключается к сети, переходит на какую-то внешнюю ссылку, хотспот перенаправляет сессию пользователя на страницу авторизации.
  2. Абонент вводит свой номер телефона:


  3. Абонента просят отправить с его номера произвольное СМС на указанный номер шлюза:

    при этом в лог-файле /var/log/tomcat7/wnam.log появляется такое сообщение:

    CP SMSRECV phase 1: mac=87:A5:1C:EC:3B:AF, ip=10.130.3.218, phone=79159993322
       

  4. Абонент нажимает на зелёную кнопку, переходит в свой приложение отправки СМС, отправляет сообщение (в принципе, текст сообщения не важен):

    при получении сообщения в лог-файле /var/log/tomcat7/wnam.log появляется такая запись:

    SMS_RECV from 79168877777, confirmed phone 79159993322, MAC=87:A5:1C:EC:3B:AF, CODE=3469
       

  5. Абонент возвращается в браузер и нажимает на кнопку перехода. Если СМС сервером WNAM ещё не получено, будет сообщение об ошибке:



  6. Если сообщение получено, абонента перенаправляет на страницу согласия с условиями и/или рекламой:

    при этом в лог-файле /var/log/tomcat7/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