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

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

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

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

  • Вдвое меньше стоимость идентификации (от 0.25 до 0.46 рублей за вызов против примерно 1.5 рубля за СМС), а в случае собственного сервера - порядка 10 копеек за звонок с посекундной тарификацией.
  • Высокая надежность (СМС доходят не всегда)
  • Потенциальная возможность произнесения рекламной фразы

В настоящий момент поддерживается четыре провайдера:
  • ВМЕСТОСМС vmestosms.ruВнимание! Данный способ работает только для российских номеров (начинающихся на 7). Фиксированный тариф 46 копеек за вызов. Код произносится дважды.
  • BitCall sc-tehno.ru (https://bitcall.ru) Тариф зависит от направления и длительности звонка (порядка 25 копеек за вызов). Код произносится один раз.
  • SMSЦЕНТР http://smsc.ru Тариф зависит от направления и длительности звонка (порядка 25 копеек за вызов). Код произносится два раза.
  • New-Tel http://callpassword.ru (с версии WNAM 1.4)
  • Совершение звонка через вашу собственную АТС Asterisk (с версии WNAM 1.6)

Для настройки данного метода идентификации необходимо:
  1. Определиться с провайдером. Зарегистрироваться. Пополнить счёт. 
  2. Получить API ключ. Этот ключ будет паролем в форме настройки.
    Для BitCall зарегистрировать свой номер (номер отправителя звонка). Этот номер будет логином в форме настройки.
    В настройках метода авторизации в административном интерфейсе WNAM (общего, или для площадки) указать данный метод, выбрать провайдера, указать:
    1. Для ВМЕСТОСМС в поле Логин - ничего, в поле Пароль - API ключ
    2. Для BitCall в поле "Логин" ввести зарегистрированный в системе номер телефона, в поле Пароль - API ключ
    3. Для SMSЦЕНТР в полях Логин и Пароль - учетные данные в системе
    4. Для New-Tel Callpassword.ru в поле Логин - идентификатор клиента (число), в поле Пароль - API ключ (длинное шестнадцатеричное число)

Для звонка через собственную АТС - указать провайдера "Локальная АТС Asterisk", и далее в поле URL системы - параметры АТС в формате:
ip_адрес_астериска/имя_контекста/имя_транка, например

172.16.130.13/default/zadarma

Также следует указать логин и пароль для Manager-коннекта до Астериска. Вы можете держать WNAM и Asterisk как на одном сервере, так и на разных. Во втором случае убедитесь в доступности порта TCP:5038 на сервере АТС.

  1. Размер ответного кода рекомендуется устанавливать в "4 цифры".
  2. Выберите страницу типа "Звонок абоненту", или её клон.
  3. Проверить возможность вызова, используя форму http://адрес.вашего.сервера/cp/testsend
    Укажите ваш номер телефона, получите вызов с кодом "1234"
    Внимание! Чтобы эта проверка работала, включите "Тестовые интерфейсы СМС и шаблонов страниц" в меню "Конфигурация - Общие настройки"
  4. Отредактировать стандартный шаблон страницы типа "Звонок абоненту", или её клон

Cобственная АТС Asterisk

При настройке собственной АТС Asterisk необходимо:

1. Настроить исходящий транк на АТС, ведущий в сторону вашего SIP-провайдера. Как его настроить-смотрите документацию от Asterisk и примеры, выдаваемые вашим провайдером.

2. Настроить Manager-подключение. Для этого сделайте файл /etc/asterisk/manager.d/wnam.conf на основе шаблона такого содержания, указав ваши IP адреса, сети, имя в квадратных скобках (логин) и пароль.:

(путь до этого и последующих файлов может отличаться; это зависит от вашего дистрибутива Linux)

[wnam]
secret=password
deny=0.0.0.0/0.0.0.0
permit=172.16.130.0/24,172.16.135.0/24
read = all
write = all

3. Внести изменения в диалплан. Для этого в /etc/asterisk/extensions.conf в нужном контексте пропишите следующий план:

exten => _7NXXXXXXXXX,1,NoOp(Исходящий звонок в транк)
same => n,Set(CALLERID(all)="74993467660"<74993467660>)
same => n,Set(CHANNEL(language)=ru)
same => n,Playback(vash-kod-dostupa)
same => n,SayDigits(${CODE})
same => n,Hangup()

Во второй строке укажите ваш Caller ID, то есть собственный номер телефона.

4. Загрузить языковые звуковые пакеты для поддержки русского языка в Asterisk. Будут использоваться русские звуковые файлы для произнесения цифр. Для ОС Debian поставьте пакеты:

apt-get install asterisk-core-sounds-ru asterisk-core-sounds-ru-gsm asterisk-core-sounds-ru-wav 

5. Вам также понадобится файл, который будет произнесен в линию абоненту перед кодом, например некоторое приветствие. В нашем примере используются файлы vash-kod-dostupa.wav и vash-kod-dostupa.gsm, которые можно взять здесь и здесь. После загрузки их необходимо поместить в сюда:

/usr/share/asterisk/sounds/en_US_f_Allison/vash-kod-dostupa.gsm
/usr/share/asterisk/sounds/en_US_f_Allison/vash-kod-dostupa.wav
/usr/share/asterisk/sounds/ru_RU_f_IvrvoiceRU/vash-kod-dostupa.gsm
/usr/share/asterisk/sounds/ru_RU_f_IvrvoiceRU/vash-kod-dostupa.wav

Мы используем оба формата файлов и помещаем их в каталоги с разными языками для большей надежности.

Аналогичные файлы приветствия вы можете сделать самостоятельно через Yandex Speech Kit, и сконвертировав их онлайн-конвертерами (формат 8000 Гц, моно, 16 бит).

6. Исходящие звонки отправляются в Asterisk с номерами в международном формате, например 79150002244. Возможности изменить номер в диалплане астериска нет. Может так получиться, что ваш SIP-провайдер ожидает увидеть исходящий номер в ином формате. Для этого вам необходимо в разделе "Конфигурация-Дополнительные настройки" установить значение параметра asterisk_pattern. Формат значения: регулярное выражение совпадения ... знак | ... выражение замены, например параметр вида
^7|0
означает замену ведущей семерке в номере на ноль. При этом не забудьте поменять паттерн в диалплане (exten => _7NXXXXXXXXX на exten => _0NXXXXXXXXX).

После настройки Asterinsk перезапустите сервис, и сделайте проверку работы авторизации. После ввода абонентом своего телефонного номера через несколько секунд ему поступит вызов, в котором ему произнесут, например, "Ваш код доступа семь четыре три девять", и положат трубку. Такой звонок занимает около десяти секунд. При этом в лог-файле или консоли Asterisk (включите отладку: core set debug 10 и sip set debug on) вы увидите:
-- SIP/zadarma-0000000f answered
-- Executing [79996771111@default:1] NoOp("SIP/zadarma-0000000f", "Исходящий звонок в транк") in new stack
 -- Executing [79996771111@default:2] Set("SIP/zadarma-0000000f", "CALLERID(all)="74993467660"<74993467660>") in new stack
 -- Executing [79996771111@default:3] Set("SIP/zadarma-0000000f", "CHANNEL(language)=ru") in new stack
 -- Executing [79996771111@default:4] Playback("SIP/zadarma-0000000f", "vash-kod-dostupa") in new stack
 -- <SIP/zadarma-0000000f> Playing 'vash-kod-dostupa.slin' (language 'ru')
-- Executing [79996771111@default:5] SayDigits("SIP/zadarma-0000000f", "7439") in new stack
 -- <SIP/zadarma-0000000f> Playing 'digits/7.slin' (language 'ru')
-- <SIP/zadarma-0000000f> Playing 'digits/4.slin' (language 'ru')
-- <SIP/zadarma-0000000f> Playing 'digits/3.slin' (language 'ru')
-- <SIP/zadarma-0000000f> Playing 'digits/9.slin' (language 'ru')

И в лог-файле wnam.log появятся такие записи:

20:45:38.916 DEBUG [c.n.w.web.cp.CaptivePortalController:1241] - postSms: site_id=101, username=AE:9E:AF:32:3F:11, phone=79996771111, smscode=null, ci.key=e4bbe1da-8473-42b5-b097-bad95c46cab5
20:45:38.930 DEBUG [com.netams.wnam.web.cp.SmsHandler:147] - CP CALL phase 1: mac=AE:9E:AF:32:3F:11, ip=10.130.129.99, phone=79996771111, code=7439
20:45:38.944 INFO [o.a.live.internal.AsteriskServerImpl:322] - Initializing done
20:45:38.944 DEBUG [c.n.w.s.sms.providers.Asterisk:67] - Create Scenario Call: phone '79996771111',chanel 'SIP/zadarma/79996771111',context 'default',extension '79996771111'
20:45:38.949 INFO [o.a.live.internal.AsteriskServerImpl:1247] - Initializing done
20:45:38.949 INFO [o.a.live.internal.ChannelManager:213] - Adding channel SIP/zadarma-00000012(1586713540.31)

 

  • No labels