Как сделать открытую линию в битрикс 24

Добавил пользователь Alex
Обновлено: 07.09.2024

Классические онлайн-консультации в чате на сайте – еще один канал коммуникаций, поскольку клиент находится на сайте компании в данный момент, ему удобно задавать вопросы именно здесь. Битрикс24 предлагает возможность размещения комплексного виджета на сайте, чтобы клиенты сами могли выбрать удобный им в данный момент способ связаться с вами: через онлайн-чат, обратный звонок или форму обратной связи. Если обращение клиента осталось без ответа, то CRM запрашивает и автоматически фиксирует у клиента контактные данные – телефон, e-mail и имя, чтобы менеджер смог связаться с ним позже, а клиентская база компании пополняется даже без участия сотрудников.

Достоинства онлайн-чата в Открытых линиях Битрикс24:

Пообщавшись с представителями вашей компании, клиенты могут оценить диалог в Открытой линии посредством фидбэка и он автоматически зафиксируется в CRM и отразится в статистике сотрудника, общающегося с клиентом. Это позволит повысить уровень сервиса и настроить систему KPI и рейтингов для контакт-центров.

Интеграция с CRM

Особенности работы

Итак, Открытые линии раскрывают следующие возможности:

  • Консультирование потенциальных покупателей через цифровые каналы;
  • Поддержка онлайн с помощью чата;
  • Привлечение клиентов на всех действующих ресурсах;
  • Мгновенные ответы на вопросы пользователей в социальных сетях.

Грамотное перенаправление

Чат-трекер

Модуль Чат-трекер распознает клиентов, и делает это автоматически, неважно, через какие каналы идут обращения. Диалоги объединяются и прикрепляются к профилю. Если система узнала заказчика (карточка уже имеется в базе), появляется сводка о нем; обратился в первый раз – создается лид.

Обратите внимание, что одновременно можно работать с двенадцатью каналами коммуникации.

Использование онлайн-чата на сайте

Один из способов поддерживать связь с посетителями сайта – онлайн-чат. В Открытых линиях он настраивается, имеет адаптивный дизайн. Предоставляется абсолютно бесплатно, встраивается в web-ресурсы любой сложности (основа - HTML-код), прост в отладке, связан с CRM (в карточке клиента сохраняется переписка).

Создание анкет и заявок

В Битрикс24 предусмотрено создание разных вариантов CRM-форм: анкеты, записи на прием, заявки, предложения, замечания и многие другие. Они взаимодействуют с системами веб-аналитики (Яндекс.Метрика, Google Analytics), отдельно подстраиваются для мобильных устройств, интегрированы с Открытыми линиями.

Интеграция с CRM, подключение

Для интеграции с Битрикс24 необходимо каналы ChatApp подключить к открытым линиям в Контакт центре Битрикс24. Перейдите в меню Контакт центр на левой панели портала Битрикс24.

Коннекторы ChatApp в контакт центре

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

подключение открытой линии whatsapp

В открывшемся виджете нажимайте подключить.

Подключение открытой линии

На виджете открытой линии выберите канал ChatApp. Каналы приобретаются в личном кабинете.

подключить открытую линию

Обратите внимание, вам будет легче если будите задавать наименование канала в личном кабинете.


В данном посте я расскажу о том, как мы реализовали кастомный коннектор для интеграции WhatsApp в открытые линии Битрикс24, используя API сервиса Chat2desk.

Существует официальный курс

по разработке кастомных коннекторов для Битрикс24. Однако не все технические моменты освещены в нем подробно.

Начинаем писать код с создания нового модуля под Битрикс Маркетплейс.

Рис 1. Модуль в списке Доступных решений.

Создаем библиотеку модуля, в котором будет храниться логика его работы. Данный класс будет подключаться каждый раз при вызове модуля. Для отображения коннектора в списке доступных конекторов открытых линий – необходимо подписаться на событие OnImConnectorBuildList модуля imconnector, и по нему вернуть информацию о нашем новом коннекторе.

В библиотеке модуля реализовываем обработчик события OnImConnectorBuildList. Привязку обработчика к событию производим при установке модуля. Соответственно при удалении модуля – привязку снимаем.

Рис 2. Коннектор с списке подключенных каналов открытой линии

В массиве информации о коннекторе, мы должны указать компонент, который будет отображаться в качестве формы настроек коннектора. Этот компонент создаем на основе стандартного компонента imconnector.baseconnector и помещаем в состав нашего модуля.

Рис 3. Форма настроек коннектора

В нашем случае нам необходимо хранить токен для доступа к агрегатору. Здесь сталкиваемся с первой проблемой. Стандартный механизм не предлагает нам способа хранения настроек. Вернее, компонент imconnector.baseconnector нам предлагает хранить настройки в именованном кэше. У нас этот кэш очищался раз в сутки, соответственно настройки сбрасывались. Поэтому мы таким способом не воспользовались и сохранили настройки, воспользовавшись COption::SetOptionString().

Таким образом мы получили коннектор для открытых линий, теперь перейдем к реализации логики его работы.

Здесь всплывает следующий подводный камень. Как видно – в массиве message_data в поле user можно задать name (имя, с которым пользователь мессенджера будет добавлен в чат). При его задании – Битрикс будет проводить поиск по базе CRM и пытаться привязать диалог к сущностям CRM. Вроде бы все ничего, но делает он это по имени, которое может быть совсем не уникально. Соответственно диалог может прикрепиться не туда, куда вы можете ожидать. В тоже время он не ищет по номерам телефонов, email и значениям полей мессенджеров, что странно. Обычно внешняя система может прислать вам номер телефона, или id мессенджера, который зачастую является email. Намного больше смысла искать по ним.

Собственно сама привязка заключается в том, что Битрикс добавляет открытую линию в контакты сущности, и создает дела у этой сущности.

В нашем случае, было необходимо привязывать диалог к сделкe в CRM по номеру телефона. Для этого мы написали функцию, которая ищет номера телефонов в CRM сущностях (контактах, лидах, компаниях) и возвращает список сделок связанных с найденными сущностями, к которым нужно осуществить привязку. Тут важно учитывать то, что телефоны могут храниться в разных форматах, поэтому поиск нужно вести с помощью Bitrix\Crm\Integrity\DuplicateCommunicationCriterion

Однако дело не привязывается напрямую к чату, а привязывается к его сессии. То есть у одного диалога (чата) может быть несколько сессий.

Получить идентификатор сессии можно таким образом:

Рис 4. Диалог в карточке CRM

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

Рис 5. Ссылка на чат в карточке CRM

Далее, выясняется, что \Bitrix\ImConnector\CustomConnectors::sendMessages не запускает триггеры автоматизации. Запустить их принудительно можно с помощью Bitrix\ImOpenLines\Crm ->executeAutomationTrigger();

Пример данных, приходящих в обработчик:

Как видно, Битрикс отдает ссылку. Но это не ссылка на файл, а ссылка на html страницу, с которой файл можно скачать. Естественно, внешняя система не может этого сделать. Поэтому нам нужна прямая ссылка на файл. Чтобы ее получить – нужно знать ид файла. Но этой информации у нас нет. Поэтому будем в очередной раз изобретать велосипед:

Имея короткую ссылку, можно найти информацию о полной ссылке на файл:

Полная ссылка на файл содержит в себе хэш, по которому можно найти файл:

То есть, помимо ид файла, нам еще нужен и токен загрузки. Формируется он следующим образом:

Так мы получим прямую ссылку на файл. Однако как видно – токен хранится в сессии

И доступ к файлу по этой ссылке, скорее всего, будет только у пользователя, отправившего файл. Такое решение нам не подходит , нам нужно иметь возможность отдавать файл всегда, вне зависимости от сессии. Для этого можно создать собственный скрипт, который по короткой ссылке будет вычислять id файла, и отдавать его содержимое с помощью:

Теперь мы можем отдавать файл без проверки токена (со всеми вытекающими предосторожностями) . Это уже что-то, но все таки, хочется иметь возможность не только отправлять прямую ссылку на файл (всегда доступную), но и отправлять сам файл. И здесь мы сталкиваемся с неожиданной проблемой: Дело в том, что во время отработки события OnSendMessageCustom пересылаемый файл еще не занял своего положения на Битрикс.Диске, а до окончания выполнения обработчика функции OnSendMessageCustom существует как запись в бд вида:

Как видите размер у него равен нулю, content-type равен application/octet-stream. При попытке в обработчике найти файл /upload/disk/a8a/a8a71448e3092e5af419e9fb853d5ea5 с помощью Bitrix\Main\IO\File — сообщает что файл не существует. На самом деле — сразу после выполнения обработчика события OnSendMessageCustom — файл перемещается на Диск в другое хранилище (что-то вроде хранилища файлов открытых линий). И тогда становится нормальным, доступным. Но, это все происходит уже после окончания работы обработчика OnSendMessageCustom. Соответственно, внешняя система не сможет скачать файл пока мы находимся в обработчике.

Для решения этой проблемы нужно не отправлять информацию о пересылаемом файле внешней системе в обработчике OnSendMessageCustom, а делать это позже, когда файл уже будет перемещен.

Вот такие интересные особенности разработки кастомного коннектора мы открыли для себя, когда писали интеграцию коробочной версии Битрикс24 с WhatsApp.

Читайте также: