Один из тендеров подкинул нам (небольшой компании-интегратору informUnity) интересную задачу: заказчику нужна была CRM для контакт-центра отдела продаж жилой и коммерческой недвижимости. Кроме реализации специфического каталога недвижимости (шахматок объектов) требовалась интеграция с элементами информационной инфраструктуры компании, среди которых оказалась телефония Cisco (на момент начала работ — CUCM 10.5). Несмотря на полное отсутствие опыта с продуктами Cisco, у нас было четкое представление реализации всего остального на базе Битрикс24, а также небольшой опыт в построении колл-центров и изрядное количество авантюризма. В итоге мы предложили организовать контакт-центр на UCCX и связать последний с Битрикс24. Что из этого получилось — под катом.
Сценарии взаимодействия
Каждый звонок на номер отдела продаж, привязанный к UCCX, должен переводиться на ответственного за этого клиента оператора, в общую очередь или на голосовую почту (блок-схема звонка будет ниже). При поступлении вызова на конкретного оператора в его браузере открывается карточка клиента (для клиентов, уже существующих в системе) или скрипт продаж (для новых клиентов).
Звонки клиентам оператор совершает из CRM, нажав на ссылку с номером телефона, или прямым набором номера. Пропущенные или сорвавшиеся звонки фиксируются в специальном отчете в CRM, где они впоследствии обрабатываются оператором. Руководство мониторит статистику работы контакт-центра в Битрикс24. Общая схема взаимосвязей продуктов:
Итак, реализуем следующие сценарии взаимодействия:
- запрос наличия номера в базе Битрикс24 и ответственного за этот номер;
- открытие карточки клиента или скрипта продаж в браузере;
- совершение исходящего звонка из Битрикс24;
- просмотр статистики колл-центра из Битрикс24.
Подготовка
Чтобы хоть как-то подступиться к интеграции, нужны локальные стенды со всеми продуктами (у нас это были виртуальные машины на ESXi). И если BitrixVM и Битрикс24 развернулся за 15 минут, то установка и настройка CUCM+UCCX отняла основную часть времени, о чем можно писать много и долго. Здесь мы обозначим только некоторые подводные камни, на которые наткнулись в процессе работы.
Первый из них — длительный процесс установки и запуска/перезапуска сервера. 10 минут на запуск — это нормально. Когда первый раз сталкиваешься, немного обескураживает. А с учетом того, что до получения приемлемого результата нам пришлось раз 15 переустанавливать продукт, это вылилось во вполне приличное время.
Второй — шаблон для телефона в CUCM должен быть IP4 only, а не IP4+IP6, иначе не получится завести пользователей CUCM как агентов UCCX.
Третий, с которым мы столкнулись уже при запуске у заказчика — это ограничение на длину строки в имени пользователя. ФИО длиной более 27 символов не позволяет сконфигурировать пользователей как агентов. При попытке конфигурирования выдается ошибка «Error occured while reading the Resource».
Теперь два слова о рабочем месте оператора контакт-центра. Из двух вариантов, предлагаемых Cisco (браузерное решение Finesse и десктопное приложение CAD под Windows) выбор пал на Finesse — веб клиент, реализующий весь необходимый функционал на стороне оператора. При прочих равных, он имеет более современный внешний вид и отлично сочетается с браузерным Битрикс24.
Так, пройдя 7 кругов ада после подготовительного этапа мы имеем две отдельно работающие системы: Битрикс24 и CUCM+UCCX. Но все интересное еще впереди.
Интеграция
Следует сказать, что в комплекте с Битрикс24 поставляется SIP-коннектор, позволяющий подключать офисные АТС к Битрикс24, но идея использовать штатный модуль умерла, даже не успев родиться.
Дело в том, что этот модуль представляет собой виртуальную облачную АТС на базе Voximplant, а по требованиям заказчика все элементы системы должны находиться во внутренней сети. Более того, Asterisk в качестве прослойки (а мы к тому времени уже освоили его прямую интеграцию с Битрикс24) не устраивал заказчика по причине снижения надежности и отказоустойчивости системы. Нам же оставалось только терпеливо курить маны по UCCX.
Саму интеграцию можно разделить на две части: работу на стороне UCCX/Finesse и работу на стороне Битрикс24.
Действия на стороне UCCX
Для начала настраиваем очередь — тут все по мануалу. Далее создаем триггер (trigger), специальный номер, при переводе звонка на который из CUCM запускается приложение (application) — своего рода контейнер, включающий в себя скрипт и окружение (переменные, язык и т. д.). Затем создаем скрипт (script) — программу на специальном языке, которая реализует логику обработки звонка при прохождении через колл-центр. Для его создания используем редактор скриптов UCCX Script Editor, который идет в поставке с UCCX. Этот инструмент позволяет создавать скрипты и осуществлять их отладку. Скачать его можно из веб-интерфейса Cisco Unified UCCX Administrator Tools->Plugins. Устанавливается только на Windows. Ниже приводим сам скрипт.
В ходе работы с разными версиями UCCX мы заметили одну особенность: скрипт, созданный в версии 10.5, не обязательно будет работать в версии 11.0. В процессе работы над интеграцией мы перешли с версии UCCX 10.5 на 11.0, поэтому пришлось пересоздавать скрипт в редакторе 11-ой версии.
Именно в скрипте начинается интеграция. После получения номера клиента, используем Create URL Document и Create XML Document для передачи в CRM номера клиента и получения номера ответственного (или информации о его отсутствии), после чего переводим звонок на конкретного оператора или в очередь.
Чтобы при поступления звонка на оператора в Finesse в соседней вкладке открывался нужный лид/контакт, с помощью Set Enterprise Call Info сохраняем номер звонящего в переменной, которая будет доступна в обработчике Finesse. Блок-схема, описывающая логику прохождения вызова:
Создание workflow в Finesse
После того как звонок ушел на оператора, он приходит в Finesse. Если клиент уже зарегистрирован в СRМ, в соседней вкладке открывается страница с информацией о нем. Если нет — открывается скрипт продаж. В Finesse это реализовано через механизм workflow. Выбираем событие — поступление вызова, и определяем для него действие. Среди поддерживаемых типов действий есть Открыть в новой вкладке. Задаем путь (наша CRM, т.е. Битрикс24) и параметры (id клиента или скрипт продаж). Есть механизм для тестирования прямо из Finesse, нужно только задать значения переменных. Все действия делаются через Finesse Administartor. Скрины ниже.
На этом работа на стороне UCCX/Finesse заканчивается. Переходим к Битрикс24.
Действия на стороне Битрикс24
В Битрикс24 нужно создать несколько скриптов:
1. Скрипт, обрабатывающий запрос наличия номера звонящего (клиента) в CRM Битрикс24. С помощью API делаем запрос на наличие лида/контакта с номером клиента. Если телефон в базе есть — передаем внутренний номер ответственного, если нет — создаем лид с телефоном звонящего и сохраняем, указывая в качестве ответственного специально созданную учетную запись для необработанных лидов. Если звонок будет обработан, то оператор будет назначен ответственным при заполнении скрипта продаж, если нет — то лид попадет в отчет по необработанным вызовам, откуда его заберет первый освободившийся оператор.
2. Скрипт, инициирующий исходящий вызов из Битрикс24. При нажатии на номер внутри карточки лида/контакта и на странице списка лидов/контактов инициируется вызов через Finesse. Механизм интеграции основан на REST API Finesse. Используется объект Dialog — Create a New Dialog (Make a Call). Примеры есть в руководстве по Finesse.
3. Статистика.
Статистику берем напрямую из UCCX. CCDR записи хранятся в базе данных Informix на сервере UCCX (хотя есть отдельные решения, когда CUIC (Cisco Unifiled Intelegence Center) устанавливается отдельно). Третий скрипт служит для подключения к Informix и получения данных статистики. Главное — грамотно составить запрос, и получаемый datetime приводить к часовому поясу сервера Битрикс24. Структура базы немного мудреная, но в руководствах по Infomix все таблицы и поля подробно описаны. Так выглядят отчеты в CRM:
Итог
Настоящий инженер решит любую техническую задачу — для него это лишь вопрос времени и мотивации. Для нас эта задача обернулась в четыре месяца погружения в совершенно неизвестный продукт с его особенностями и странностями. Было нелегко: несмотря на бессонные ночи, некоторых, с первого взгляда очевидных, результатов по контрольным точкам удавалось достичь за 15 минут до презентации заказчику. И мы это сделали: система (кроме описанной здесь интеграции с телефонией она включает в себя интеграции с тремя другими внешними системами и порядка 400 часов на реализацию специфического функционала) введена в эксплуатацию и успешно пережила мажорное обновление Битрикс24 (с версии 15.5 до 16.5).
Автор: funtiwe