Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

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

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

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

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

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

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


Провести тестирование путем совершения вызова. В случае успеха в 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. Отредактировать стандартный шаблон страницы типа "Звонок абоненту", или её клон

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


При настройке собственной АТС Asterisk Вы можете настроить вашу собственную АТС 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

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

...