Модуль карточек поддерживает следующие функции 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.