Page tree
Skip to end of metadata
Go to start of metadata

Начиная с версии 1.2.685 WNAM поддерживает идентификацию абонента через приём звонка от абонента на ваш номер.

Данный метод похож на идентификацию через получение СМС. Однако вместо отправки СМС сообщения абонент совершает, за свой счёт, исходящий вызов на ваш номер телефона. Этот номер должен быть вами приобретен у любого провайдера, и заведён на шлюз (программную АТС) Asterisk под вашим управлением. Длительность входящего вызова минимальна: звонок сразу сбрасывается. WNAM важно определить входящий номер вызывающего абонента, который проводит авторизацию.

Преимущества этого способа идентификации таковы:

  • Практически нулевые операционные затраты - при использовании SIP-провайдеров стоимость входящих вызовов нулевая, а стоимость аренды номера - нулевая или минимальна 
  • Есть возможность произнесения абоненту рекламного сообщения, которое он обязан дослушать до конца

Для настройки данного метода необходимо произвести следующие действия:

1. Организация входящей телефонной линии

Необходимо создать учётную запись у вашего VoIP провайдера, арендовать (получить, купить) телефонный номер.

В примере ниже используется провайдер zadarma.com, общий внешний номер провайдера +7 495 777 66 75, внутренний номер 454498 (то есть получение вызова будет требовать донабора). Для удобства использования рекомендуется получить выделенный номер.

Установка и настройка Asterisk, настройка взаимодействия с провайдером должна быть проведена вами самостоятельно при помощи соответствующих инструкций провайдера. Если вы используете АТС другого типа, не проблема - вам необходимо реализовать какое-либо действие (например, вызов скрипта), которое АТС выполнит при поступлении звонка. Обращайтесь на support@netams.com за помощью.

Предполагается, что входящие вызовы поступают в контекст [default]

2. Настройка уведомления со стороны Asterisk в сторону WNAM о входящем звонке

В конфигурационном файле /etc/asterisk/extensions.conf в контексте [default] необходимо создать правила вызова скрипта-уведомителя при помощи интерфейса AGI.

   [default]
;include => demo
   exten => 454498,1,NoOp(Входящий звонок с номера ${CALLERID(num)})
same => n,AGI(wnam-asterisk-bridge.pl,${CALLERID(num)})
same => n,Hangup()

В поле exten укажите ваш внешний номер телефона.

Далее, необходимо скачать скрипт взаимодействия wnam-asterisk-bridge.pl [используйте бинарную утилиту, см. ниже] из репозитория http://www.netams.com/files/wnam/misc/ , поместить его в каталог скриптов /usr/share/asterisk/agi-bin/ и сделать его исполняемым:

   chmod +x /usr/share/asterisk/agi-bin/wnam-asterisk-bridge.pl 

При необходимости, если Asterisk и WNAM работают на разных серверах, отредактируйте скрипт, прописав адрес сервера WNAM.

Проверьте работоспособность взаимодействия, запустите скрипт:

   /usr/share/asterisk/agi-bin/wnam-asterisk-bridge.pl 1234

в лог-файле wnam.log вы должны увидеть две записи:

   12:18:37.192 DEBUG [c.n.wnam.services.WnamCmdService:230] - Start handling client connection
12:18:37.192 DEBUG [c.n.wnam.services.WnamCmdService:249] - Finish handling client connection

Внимание! Начиная с версий WNAM 1.3.1339 и 1.4.1499 рекомендуемым способом идентификации по звонку является использование не Perl, а бинарного (двоичного) скрипта wnam-asterisk-bridge, который находится в том же репозитории http://www.netams.com/files/wnam/misc/ вместе с его исходными текстами. Параметры его вызова (командной строки) дополнительно указывают на IP адрес сервера WNAM, пароль взаимодействия. Также для авторизации через пул номеров необходимо передавать номер, на который пришёл вызов. 

   [default]
;include => demo

   exten => 454498,1,NoOp(Входящий звонок с номера ${CALLERID(num)})
same => n,AGI(wnam-asterisk-bridge,127.0.0.1,password,${CALLERID(num)},${CALLERID(dnid)})
same => n,Hangup()

3. Настройка WNAM

Со стороны административного интерфейса WNAM требуется только выбрать новый метод идентификации "получение звонка от абонента". Он может быть общим (по умолчанию, для всех площадок), и индивидуально выбранным для заданной площадки:

Параметры "провайдер", "логин", "пароль", "ответный код" значения не имеют.

Необходимо выбрать страницу шаблона, отображаемую абоненты при идентификации. В дистрибутиве идет шаблонная страница call_recv.

4. Модификация страницы авторизации

Вам необходимо отредактировать шаблон страницы call_recv из меню "Конфигурация - Загружаемые страницы портала". Как минимум, вам необходимо указать входящий номер телефона вашего шлюза Asterisk.

Номер указывается в виде текста, отображаемого на зеленой кнопке, и в параметрах ссылки в формате: 

   <a href="tel:+74957776675,454498#">...

или

   <a href="tel:+74951234567">...

Внимание! Возможность перехода при нажатии на ссылку на телефонное приложение с вызовом номера авторизации зависит от возможности телефона (модель, операционная система). В версии WNAM 1.4.1418 был реализован механизм в странице типа call_recv, позволяющий совершать исходящий вызов по ссылке и из мини-браузера iOS, не только из Safari. Вызов из мини-браузера Android также работает.

5. Проверка идентификации

При подключении к сети абонент, открыв браузер и перейдя по ссылке, попадает на стандартную процедуру идентификации:

На первом шаге абонент указывает свой номер телефона.

На втором шаге абоненту предлагается совершить идентификационный звонок:

При нажатии на зеленую кнопку, если она сработает, абоненту будет предложено открыть телефонное приложение и сделать вызов:

После совершения вызова произойдет автоматическое перенаправление браузера на окно redirect, либо иное действие, определенное в разделе "Перенаправление". По умолчанию, проверка того, пришел ли звонок и произведена ли идентификация, производится раз в 5 секунд (таймер задается в js-коде страницы call_recv).

При корректной идентификации в лог-файле wnam.log вы увидите следующую цепочку событий:

12:17:14.068 DEBUG [c.n.w.web.cp.CaptivePortalController:288] - CP mikrotik clicked: username=AA:56:14:DD:38:58, ip=10.130.3.235, dst='http://www.ru/', server_address=10.130.3.1:80, server_name='mk1-hs'
12:17:14.199 DEBUG [c.n.w.web.cp.CaptivePortalController:1020] - processAuthRequest MIKROTIK: username=AA:56:14:DD:38:58, ip=10.130.3.235, server=10.130.3.1:80, site_id=55, dst='http://www.ru/'
12:17:14.209 DEBUG [c.n.w.web.cp.CaptivePortalController:1052] - captive portal redirected to SMS page, username=AA:56:14:DD:38:58, cust=null, form='call_recv'
12:17:24.292 DEBUG [c.n.w.web.cp.CaptivePortalController:752] - CP CALLRECV phase 1: mac=AA:56:14:DD:38:58, ip=10.130.3.235, phone=79153446712
12:17:29.854 DEBUG [c.n.w.web.cp.CaptivePortalController:816] - CP CALLRECV phase 2: mac=AA:56:14:DD:38:58, ip=10.130.3.235, phone=79153446712, smscode=1617 UNVERIFIED
12:18:36.091 DEBUG [c.n.w.web.cp.CaptivePortalController:816] - CP CALLRECV phase 2: mac=AA:56:14:DD:38:58, ip=10.130.3.235, phone=79153446712, smscode=1617 UNVERIFIED
12:18:37.192 DEBUG [c.n.wnam.services.WnamCmdService:230] - Start handling client connection
12:18:37.192 DEBUG [c.n.wnam.services.WnamCmdService:714] - CALL-RECV confirmed phone 79153446712, MAC=AA:56:14:DD:38:58, CODE=1617
12:18:37.192 DEBUG [c.n.wnam.services.WnamCmdService:249] - Finish handling client connection
12:18:41.625 DEBUG [c.n.w.web.cp.CaptivePortalController:791] - CP SMSRECV phase 2: mac=AA:56:14:DD:38:58, ip=10.130.3.235, phone=79153446712, smscode=1617 VERIFIED
12:18:41.635 DEBUG [c.n.w.web.cp.CaptivePortalController:1092] - processRedirectRequest username=AA:56:14:DD:38:58, method=FORM
12:18:43.729 DEBUG [c.n.w.web.cp.CaptivePortalController:850] - Redirect login: site_id=55, username=AA:56:14:DD:38:58, dst='http://bash.im'
12:18:43.729 DEBUG [c.n.w.web.cp.CaptivePortalController:1221] - loginAtNas MIKROTIK username=AA:56:14:DD:38:58, ip=10.130.3.235, server=10.130.3.1:80, dst='http://bash.im'
12:18:43.739 DEBUG [com.netams.wnam.web.cp.Mikrotik:37] - backToMikrotik login len=531, server='10.130.3.1:80', username=AA:56:14:DD:38:58, password=password, dst='http://bash.im'
12:18:44.200 DEBUG [c.n.wnam.services.WnamCmdService:230] - Start handling client connection
12:18:44.220 INFO [WnamRadius:451] - AUTH for new session ID=8050007e-9b3858, request MAC=AA:56:14:DD:38:58, IP=10.130.3.235, cust_clientid=null
12:18:44.240 DEBUG [c.n.wnam.services.WnamCmdService:230] - Start handling client connection
12:18:44.240 INFO [WnamRadius:550] - ACCT Start existing (8050007e-9b3858) session ID=8050007e-9b3858, MAC=AA:56:14:DD:38:58, IP=10.130.3.235, NAS=172.16.130.9

 

  • No labels