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

Compare with Current View Page History

« Previous Version 16 Next »

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

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

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

  • либо механический голос произносит код доступа
  • либо необходимо запомнить последние цифры вызывающего номера

которые затем абонент вводит в поле "код" второй стадии процесса идентификации.

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

  • Меньше стоимость идентификации (от 0.25 до 0.46 рублей за вызов против примерно 3 рубля за СМС), а в случае собственного сервера - порядка 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)

и два провайдера с совершением звонка со "случайного" исходящего номера с генерацией 4-5-6-значного кода, соответствующего последним цифрам номера звонящего:


  • SMSЦЕНТР smsc.ru (код в номере)
  • voicepassword.ru (код в номере) (здесь также произносится код после приёма звонка)
    (применимая длина кода определяется вами, в настройках способа идентификации)

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


Провести тестирование путем совершения вызова через конструктор страниц, или имя_сервера/cp/testform. В случае успеха в wnam.log вы увидите что-то подобное:

DEBUG [com.netams.wnam.web.cp.SmsHandler:174] - CP CALL phase 1: mac=00:01:02:03:04:05, ip=1.2.3.4, phone=7915xxxxxxx, code=1524 ! система присвоила временный код
DEBUG [c.n.w.s.sms.providers.VoicePassword:36] - voicepassword call_to: +7915xxxxxxx return 'CodeResponse{result='ok', code='4922', price=0.30, errorCode='null'}'
DEBUG [c.n.w.web.cp.CaptivePortalController:941] - postSms: site_id=8, username=00:01:02:03:04:05, phone=7915xxxxxxx, smscode=4922, ci.key=... ! реальный код 4922; этот звонок пришел с +7 (961) 342-49-22
DEBUG [c.n.w.web.cp.CaptivePortalController:1076] - postSmsPhase2 phone=7915xxxxxxx, code=4922, r={ ip=1.2.3.4, mac=00:01:02:03:04:05, phone=7915xxxxxxx, code=4922, attempts=0 }, r_ir=false, ap_m=CALL
DEBUG [c.n.w.web.cp.CaptivePortalController:1101] - CP CALL phase 2: mac=00:01:02:03:04:05, ip=1.2.3.4, phone=7915xxxxxxx, smscode=4922 CORRECT in 14546 ms.

Настройка собственной АТС 

Это трудозатратно, но стоит дешевле.

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

172.16.130.13/default/zadarma

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

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


Вы можете настроить вашу собственную АТС Asterisk на том же сервере, где работает и WNAM, или на другом вашем сервере. Вам в любом случае будет необходимо:

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