IVR-Система
Модуль карточек поддерживает следующие функции IVR: озвучивание информации о балансе пользователя и пополнение счета картой. При проверке баланса у пользователя запрашивается пароль доступа к Web-статистике, который должен быть цифровым. Система построена на VXML.
Набор тестовых IVR-скриптов вы можете загрузить с сервера. Архив ivr.zip содержит:
bgivr.vxml - основной скрипт
menu.vxml - пункты меню
promts - фразы
Архив необходимо распаковать и разместить на HTTP сервере, доступным с CISCO.
Общий алгоритм работы скрипта следующий:
с помощью голосового меню пользователь выбирает тип требуемого договора (при этом происходит определение адреса сервера биллинга и кода типа договора);
запрашивается номер договора без тире, при этом клиент вводит слитно и номер и две последних цифры года, происходит запрос на сервер для определения существования договора;
пользователь выбирает вид операции: активация карты, либо произнесение остатка на счёте;
если выбрано произнесение остатка, то запрашивается пароль и происходит обращение на сервер биллинга, который либо возвращает ошибку, если пароль не верен, либо генерирует VXML скрипт, произносящий баланс;
если выбрана активация карты, то запрашиваются слитно логин и пароль карты, которые отправляются в запросе на сервер. Карта либо успешно активируется, либо сервер возвращает код ошибки.
Для настройки скриптов в файле bgivr.vxml необходимо настроить адреса серверов биллинга и коды карточных модулей. Также необходимо установить параметр prompt_url - путь к папке с фразами на вашем HTTP сервере.
<var name=
"module"
expr=
"'card'"
/>
<var name=
"contentType"
expr=
"'stream'"
/>
<var name=
"prompt_url"
expr=
"'http://bgbilling.bitel.ru/patch/vxml/prompts'"
/>
<var name=
"billing_ds"
expr=
"'http://stat1.ufanet.ru/bgbilling/pubexecuter'"
/>
<var name=
"mid_ds"
expr=
"'8'"
/>
<var name=
"billing_bis"
expr=
"'http://stat2.ufanet.ru/bgbilling/pubexecuter'"
/>
<var name=
"mid_bis"
expr=
"'1'"
/>
<var name=
"billing_tks"
expr=
"'http://stat3.ufanet.ru/bgbilling/pubexecuter'"
/>
<var name=
"mid_tks"
expr=
"'1'"
/>
Также необходимо установить адреса серверов и коды карточных модулей. В приведённом примере скрипт обслуживает 3 сервера биллинга: Кабельное ТВ, Скоростной интернет и DialUP+VOIP. Далее клиент выбирает нужный тип договора.
На сервере биллинга в модуле карт должны быть настроены:
1) правила разделения логинов+паролей карт различной длины на, собственно, логин и пароль, например, данная строка означает, что если длина логина с паролем составляет 11 символов, то 6 из них - логин
#универсальная карта
ivr.card.size.
11
.login.length=
6
2) правила преобразования номера договора, введённого слитно (в данном примере - числовая часть и две цифры года на конце договора) в зависимости от кода типа договора (приходит в запросе)
#phone - введённая клиентом последовательность цифр, для типа договора 1 она дополняется префиксом ГТФ, далее берутся все исключая
#2 последние цифры phone, затем - и 2 последние цифры phone
#например 444406 -> ГТФ4444-06
#
ivr.contract.type.
1
.pref=ГТФ
ivr.contract.type.
1
.prepare=phone.substring(
0
, phone.length() -
2
) +
"-"
+ phone.substring( phone.length() -
2
, phone.length() );
#
ivr.contract.type.
2
.pref=
NK
ivr.contract.type.
2
.prepare=phone.substring(
0
, phone.length() -
2
) +
"-"
+ phone.substring( phone.length() -
2
, phone.length() );
ivr.contract.type.
3
.pref=
N
ivr.contract.type.
3
.prepare=phone.substring(
0
, phone.length() -
2
) +
"-"
+ phone.substring( phone.length() -
2
, phone.length() );
ivr.contract.type.
4
.pref=
NA
ivr.contract.type.
4
.prepare=phone.substring(
0
, phone.length() -
2
) +
"-"
+ phone.substring( phone.length() -
2
, phone.length() );
ivr.contract.type.
5
.pref=
R
ivr.contract.type.
5
.prepare=phone.substring(
0
, phone.length() -
2
) +
"-"
+ phone.substring( phone.length() -
2
, phone.length() );
ivr.contract.type.
6
.pref=
RK
ivr.contract.type.
6
.prepare=phone.substring(
0
, phone.length() -
2
) +
"-"
+ phone.substring( phone.length() -
2
, phone.length() );
ivr.contract.type.
7
.pref=ГТЮ
ivr.contract.type.
7
.prepare=phone.substring(
0
, phone.length() -
2
) +
"-"
+ phone.substring( phone.length() -
2
, phone.length() );
В общем случае преобразование может быть и более сложным, язык макроса - BeanShell. Запросы на IVR-сервер и ответы сервера доступны в логе server.log, для этого необходимо установить его уровень логиновария в DEBUG в файле data/log4j_server.properties.