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

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

Такой способ идентификации имеет ряд преимуществ:

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

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 [используйте бинарную утилиту, см. ниже] из репозитория 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