Карточная IVR система на базе Cisco

Материал из BiTel WiKi

Перейти к: навигация, поиск

Содержание

Карточки

как это все работает...

У пользователя есть карточка на карточке напечатан номер карточки и пинкод. есть 3 основных сервиса

  1. dialup (тут все просто)
  2. голос
  3. пополнение баланса

Dialup

с диалапом все тривиально и довольно подробно описано в инструкции, ни какх сложностей возникнуть не должно.

В качестве логина пользователь использует номер карточки и в качестве пароля пин-код.

Голос

С голосом все много сложнее, так как обычно карточные платформу авторизуют пользователя только по пинкоду а не по паре логин-пароль. Стандартный сиськовский IVR скрипт http://www.cisco.com/cgi-bin/Software/Tablebuild/doftp.pl?ftpfile=/cisco/access/tclware/app-debitcard-nlp.2.0.1.7.zip разбивает введеный код на 2 части первую отправляет в радиус атрибуте User-Name а вторую в Password. Для работы в БГ это совсем не подходит. Мы вышли из положения поправив скрипт так, что бы он отправлял в поле Password весь набраный пинкод, затем в скрипте предобработки для НАС мы ищем соответствующию карточку и добавляем атрибут User-Name в радиус запрос с номером этой карточки.

import java.sql.*;
import java.util.*;
 
if( "".equals(request.getStringAttribute(1)) || request.getStringAttribute(1)==null) {
 try {
     PreparedStatement ps = con.prepareStatement("select card_code from card_data_"+setup.getIntValue("card.module.id", 0)+
        " where card_pin_code = ? and status > 0 order by date1 desc");
     ps.setString(1, request.getStringAttribute(2));
     ResultSet rs = ps.executeQuery();
     if(rs.next()) {
      request.setStringAttribute(1, String.valueOf(rs.getInt(1)));
  }
 } catch(Exception e) {
     throw new RuntimeException(e);
 }
}

если поле User-Name (код радиус атрибута = 1) пустое или если атрибута User-Name нет в запросе, то мы ищем все карточки которые в продаже или активированы (status>0) и пинкод совпадает с переданым в поле Password (код радиус атрибута = 2). Если карточек несколько то мы берем карточку с наиболее поздней датой начала действия (order by date1 desc). Так как в продаже и активированых карточек довольно мало то вероятность пересечения пинкодов крайне мала и ее можно полностью устранить при генерации карточек если использовать для нее не BGCardGen.

Конфигурация IVR на Cisco

Дополнительные функции

Пополнение баланса

Генерация карточек

Личные инструменты