Infinity:Преобразование CallerID

Многие службы такси и контакт-центры используют несколько видов связи: сотовые каналы через Gsm-
шлюзы, IP-телефония, городские аналоговые линии, поток E1. Зачастую при совместном
их использовании возникает проблема с определением номера абонента, связанная с тем,
что звонок одного и того же клиента приходящий через разные устройства, определяется
совершенно по-разному
+79171234567, 79171234567, 89171234567, и т.д. вплоть до
знаков «_» и нескольких нулей вначале номера, и естественно в карточке заказа они будут
числиться как совершенно разные клиенты. Решение такой проблемы существует,
стандартными функциями инфинити, можно привести номер к 10 знаку, к местному
формату, стандарту E.164. Но что если требуется комбинирование несколько способов
преобразования? Например, необходимо привести все междугородние и сотовые номера
к формату 7 и 10 цифр, кроме некоторых кодов сотовых операторов (федеральных),
которые как и городские должны быть приведены к местному формату.
Допустим приходят следующие виды номеров:
Межгород:
*8121234567
*9611234567
*8162123456
*9179123456,
где *-любый символ в любом количестве
Необходимо преобразовать соответственно в:
78121234567 (межгород)
79611234567 (сотовый)
123456 (местный)
123456 (так как для номеров с 9179 оператор связи предоставляет федеральный номер)
Данные действия будем выполнять в хранимой процедуре в локальной базе
INFDATA.DAT и вызывать ее через IVR-сценарий с помощью компоненты “Запрос в БД”  .
Для начала откроем сценарий в котором идет переключение на оператора, в исходном варианте это “Infinity – Главный входящий Такси”.
Сразу после компоненты ”Значение переменной” помещаем “Запрос в БД”. В качестве параметров указываем
Запрос: База данных – локальная

 

select first 1 tel_out from user_tel_convert (:tel_inp)

Сейчас при нажатии проверить запрос, Инфинити нам выдаст ошибку, по той причине,
что нет такой процедуры в локальной БД. Поэтому идем в IBExpert, подключаемся к
INFDATA.DAT , далее создаем хранимую процедуру:
Tools – Script Executive
Вставляем следующий скрипт:

 

CREATE GENERATOR USER_GEN_TEL;
Commit;
CREATE PROCEDURE USER_TEL_CONVERT (
tel_inp varchar(30))
returns (
tel_out varchar(30))
as
declare variable kod varchar(10);
begin
if (tel_inp=») then
begin
tel_out = ‘*’ || cast(GEN_ID(USER_GEN_tel,1) as VARCHAR(9));
suspend;
exit;
end
kod = lxcopy (tel_inp, strlen(tel_inp)-9, 4);
if ((kod = ‘9179’) or (kod = ‘8162’) ) then
tel_out = lxcopy(tel_inp,strlen(tel_inp)-5,6);
else
tel_out = ‘7’||lxcopy(tel_inp,strlen(tel_inp)-9,10) ;
suspend;
end

Запускаем его. Создается необходимая нам процедура и генератор, нужен для
случаев когда номер не определился, в таком случае подставляется звездочка * c числом в возрастающем порядке.
*1, *2 и т.д. различные для каждого звонка.
Теперь вернемся к IVR сценарию, выполняем проверку правильности нашего запроса
и жмем на выбрать. Далее в качестве параметров входного и выходного выбираем ту
переменную в которой хранится наш А-номер. Протягиваем стрелочку до следующей
компоненты, меняем в карточке клиента функцию АОН на нашу переменную,  сохраняем все на сервере и готово!

1 комментарий для “Infinity:Преобразование CallerID

Добавить комментарий

Ваш e-mail не будет опубликован.

*