Alerting name звонящего пользователя в UCCX

Мне всем нравится UCCX. Это, пожалуй, единственная коммерческая платформа для колл-центра, которая не даёт поводов сказать крамольное «извините, но это технически не реализуемо». Однако везде есть недостатки.

Один из них, это номер звонящего. При звонке, на телефонах колл-центра определяется не номер телефона звонящего, а номер CTI порта принявшего на себя обработку звонка. Это, вполне себе, адекватное поведение: попадая в очередь, звонок остаётся на удержании, а при соединении с оператором — форвардится с CTI порта на него. В момент поднятия оператор видит уже номер телефона звонящего. Это часто смущает работников контактного центра.

С версии 10 в UCCX появилась функция, которая позволяет передавать на экран телефона номер звонящего в виде всплывающего окна. Для этого необходимо зайти на UCCX по ssh (либо напрямую в терминальную сессию, как вам удобно) и ввести команду:

utils uccx icd clid enable

Тут же вы можете изменить заголовок всплывающего окна:

utils uccx icd clid header СТРОКА_ЗАГОЛОВКА

И префиксное сообщение перед номером звонящего:

utils uccx icd clid prefix СТРОКА_ПРЕФИКСА

После изменений вам необходимо перезапустить Cisco Unified CCX Engine, который находится в Cisco Unified CCX Serviceability\Tools\Control Center — Network Services

Если у вас HA-среда, то данные действия необходимо произвести на каждой ноде кластера.

В принципе, данный функционал покрывает запросы колл-центра работающего на внешних клиентов, однако что делать, если колл-центр обслуживают внутренних пользователей компании и операторы хотят видеть имена в которые «резолвятся» номера.

Есть определённое количество запросов этого функционала на supportforums.cisco.com, но на момент версии 10.6 он не был заявлен даже как планируемый, поэтому будем делать костыли.

У нас есть два пути: проще и сложнее.

Мы можем использовать функционал CUCM — Corporate Directory (проще), либо создать свою телефонную книгу на основе БД CUCM (сложнее).

Создадим переменные в скрипте UCCX:

Добавьте в скрипт действие Call Contact\Get Call Contact Info

Присвойте переменной CUCMDirURL значение «http://адресс.CUCM:8080/ccmcip/xmldirectorylist.jsp», если вы используете Corporate Directory. Для варианта со своей телефонной книгой «http://Веб.Сервер/имя_xml_файла_с_выгрузкой.xml»:

Создадим URL документ. Document\Create URL Document.

Для Corporate Directory (необходимо передать параметр n со значением CallingNumber):

Для своего справочника передавать параметры не нужно:

Создаём XML документ (Document\Create XML Document):

Присваиваем переменной AlertingName (Document\Get XML Document Data) имя, которое соответствует телефону. Строка XML Запроса для Corporate Directory: «//DirectoryEntry/Name»

Для своего справочника: «/return/row[dn='»+CallingNumber+»‘]/alertingname»

Всю информацию мы будем выводить в CAD. Для начала нам необходимо создать переменную в которую мы будем передавать имя шаблона агента: Settings\Expanded Call Variables…

Создайте переменную с именем user.layout и типом Scalar.

Теперь, после наших манипуляций с XML, добавьте действие Call Contact\Set Enterprise Call Info. На вкладке General добавляем две переменные Call.PeripherialVariable (номер той, которая до этого нигде не использовалась в скрипте) одной присваиваем значение CallingNumber, другой — AlertingName. На вкладке Expanded Call Variables добавьте переменную user.layout с Array Indexes — Scalar, присвойте в качестве значения имя шаблона для CAD.

На этом, со стороны скрипта — всё.

Идём в Cisco Desktop Administrator\Services Configuration\Enterprise Data\Fields находим Call Variable с номерами, которые вы задали в Set Enterprise Call Info. Измените Display Name на что-то осмысленное (Например для 1 — Calling Number, для 10 — Name).

Идём в Cisco Desktop Administrator\Services Configuration\Enterprise Data\Layout List и создаём новый Layout с именем указанным в Set Enterprise Call Info, в поле Selected добавьте Call Variable 1 и Call Variable 10.

Для варианта с Corporate Directory всё готово к использованию. Но, напомню, что CUCM тянет все данные с вашего сервера каталогов, если у вас на нём содержится не вся информация по телефонам компании или, по какой-то причине, там бардак, то ваш единственный вариант — формировать телефонный справочник в виде XML, выгружая всю необходимую вам информацию из БД CUCM. Так же вариант «своего» справочника может быть использован, в том случае, если у вас есть база с номерами ваших внешних клиентов и каких-либо их данных, что бы выводить какую-либо информацию о звонящем клиенте в CAD.

Выгружать интересующие нас данные будем через SOAP запрос. Создайте XML файл с содержимым:

<?xml version=»1.0″ encoding=»UTF-8″?>
<soapenv:Envelope xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:ns=»http://www.cisco.com/AXL/API/10.5″>
<soapenv:Header/>
<soapenv:Body>
<ns:executeSQLQuery>
<sql>
select distinct n.alertingname, n.dnorpattern as DN
from device as d, numplan as n, devicenumplanmap as dnpm
where dnpm.fkdevice = d.pkid and dnpm.fknumplan = n.pkid and d.tkmodel != 72  and ( d.tkclass = 1 or d.tkclass = 20 or d.tkclass = 254);

</sql>
</ns:executeSQLQuery>
</soapenv:Body>
</soapenv:Envelope>

Жёлтым я выделил сам SQL запрос. Грубо говоря мы выуживаем поля alertingname и номер. Дёргаем только активные номера телефонов с привязанными к ним IP-телефонами, профилями устройств или профилями удалённого назначения (d.tkclass = 1 or d.tkclass = 20 or d.tkclass = 254) и модель устройства — не CTI Port (d.tkmodel != 72).

Убедитесь, что фитча Cisco AXL Web Service активирована на вашем CUCM (Cisco Unified Servisability\Tools\Service Activation\Database and Admin Services).

Создайте на CUCM пользователя (Cisco Unified CM Administration\User Managment\End User) с ролью Standard AXL API Access.

Далее вы можете, например, с помощью cURL, обратиться с этим запросом к CUCM:

curl -k -u имя_пользователя:пароль -H «Content-type: text/xml;» -H «SOAPAction:CUCM:DB ver=10.5» -d @/путь/к/xml/файлу/c/запросом.xml https://cucm.local:8443/axl/ | awk ‘{print substr($0,202,length-264)}’

В результате каждый телефонный номер будет выглядить так:
<row>
<alertingname>Name</alertingname>
<dn>8800</dn>
</row>
CUCM формирует выгрузку заключённую в тэги:
<?xml version=»1.0″ encoding=»UTF-8″?>
<soapenv:Envelope xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/»>
<soapenv:Body>
<ns:executeSQLQueryResponse xmlns:ns=»http://www.cisco.com/AXL/API/10.5″>
<return>
//выгрузка
</return>
</ns:executeSQLQueryResponse>
</soapenv:Body>
</soapenv:Envelope>

Ничего криминального, но XML парсер встроенный в UCCX крэшится при работе с нэймспэйсами. Именно эти тэги и отсекает выделенный жёлтым скрипт на awk.

Можете добавить данную команду в планировщик, что бы выполнять её автоматически и формировать вывод в XML файл, который будет доступен через http.

Всё.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *