![](https://habrastorage.org/files/d12/93b/7af/d1293b7af9ae4dff951b29302dc5c626.png)
Один из тендеров подкинул нам (небольшой компании-интегратору informUnity) интересную задачу: заказчику нужна была CRM для контакт-центра отдела продаж жилой и коммерческой недвижимости. Кроме реализации специфического каталога недвижимости (шахматок объектов) требовалась интеграция с элементами информационной инфраструктуры компании, среди которых оказалась телефония Cisco (на момент начала работ — CUCM 10.5). Несмотря на полное отсутствие опыта с продуктами Cisco, у нас было четкое представление реализации всего остального на базе Битрикс24, а также небольшой опыт в построении колл-центров и изрядное количество авантюризма. В итоге мы предложили организовать контакт-центр на UCCX и связать последний с Битрикс24. Что из этого получилось — под катом.
Сценарии взаимодействия
Каждый звонок на номер отдела продаж, привязанный к UCCX, должен переводиться на ответственного за этого клиента оператора, в общую очередь или на голосовую почту (блок-схема звонка будет ниже). При поступлении вызова на конкретного оператора в его браузере открывается карточка клиента (для клиентов, уже существующих в системе) или скрипт продаж (для новых клиентов).
Звонки клиентам оператор совершает из CRM, нажав на ссылку с номером телефона, или прямым набором номера. Пропущенные или сорвавшиеся звонки фиксируются в специальном отчете в CRM, где они впоследствии обрабатываются оператором. Руководство мониторит статистику работы контакт-центра в Битрикс24. Общая схема взаимосвязей продуктов:
![](https://habrastorage.org/files/ca4/171/3ef/ca41713eff4943408b1987a9eeb590aa.png)
Итак, реализуем следующие сценарии взаимодействия:
- запрос наличия номера в базе Битрикс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.
Так,
Интеграция
Следует сказать, что в комплекте с Битрикс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. Ниже приводим сам скрипт.
![](https://habrastorage.org/files/1ae/037/0eb/1ae0370ebb7e4c06921a74e9c4d969dc.png)
В ходе работы с разными версиями UCCX мы заметили одну особенность: скрипт, созданный в версии 10.5, не обязательно будет работать в версии 11.0. В процессе работы над интеграцией мы перешли с версии UCCX 10.5 на 11.0, поэтому пришлось пересоздавать скрипт в редакторе 11-ой версии.
Именно в скрипте начинается интеграция. После получения номера клиента, используем Create URL Document и Create XML Document для передачи в CRM номера клиента и получения номера ответственного (или информации о его отсутствии), после чего переводим звонок на конкретного оператора или в очередь.
Чтобы при поступления звонка на оператора в Finesse в соседней вкладке открывался нужный лид/контакт, с помощью Set Enterprise Call Info сохраняем номер звонящего в переменной, которая будет доступна в обработчике Finesse. Блок-схема, описывающая логику прохождения вызова:
![](https://habrastorage.org/files/0d9/769/9fc/0d97699fc8414d5291ac7ee083608aae.png)
Создание workflow в Finesse
После того как звонок ушел на оператора, он приходит в Finesse. Если клиент уже зарегистрирован в СRМ, в соседней вкладке открывается страница с информацией о нем. Если нет — открывается скрипт продаж. В Finesse это реализовано через механизм workflow. Выбираем событие — поступление вызова, и определяем для него действие. Среди поддерживаемых типов действий есть Открыть в новой вкладке. Задаем путь (наша CRM, т.е. Битрикс24) и параметры (id клиента или скрипт продаж). Есть механизм для тестирования прямо из Finesse, нужно только задать значения переменных. Все действия делаются через Finesse Administartor. Скрины ниже.
![](https://habrastorage.org/files/f23/47f/db0/f2347fdb0c8a4216b9104fc36450dbfb.png)
![](https://habrastorage.org/files/4b8/9e9/e42/4b89e9e428b34f5b87085f322e15d1f5.png)
На этом работа на стороне 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:
![](https://habrastorage.org/files/a51/9a5/32a/a519a532ac954ea6a5f47da9f7ed87e5.png)
Итог
Настоящий инженер решит любую техническую задачу — для него это лишь вопрос времени и мотивации. Для нас эта задача обернулась в четыре месяца погружения в совершенно неизвестный продукт с его особенностями и странностями. Было нелегко: несмотря на бессонные ночи, некоторых, с первого взгляда очевидных, результатов по контрольным точкам удавалось достичь за 15 минут до презентации заказчику. И мы это сделали: система (кроме описанной здесь интеграции с телефонией она включает в себя интеграции с тремя другими внешними системами и порядка 400 часов на реализацию специфического функционала) введена в эксплуатацию и успешно пережила мажорное обновление Битрикс24 (с версии 15.5 до 16.5).
Поделиться с друзьями
Комментарии (3)
Toshiro
20.10.2016 12:06>>> «Про дружбу удава со слоном...»
Я было подумал что статья про Python+PostgreSQL… облом((
ildarz
> до получения приемлемого результата нам пришлось раз 15 переустанавливать продукт,
А почему именно переустанавливать, а не просто конфиги менять?
funtiwe
Сначала возникли проблемы с ntp и dns в процессе установке — он зависал на моменте применения этих настроек. Подозреваю, что виноват был роутер. Потом переустанавливали потому что изменялись требования по версиям. Ну и, кончено,
.