Интеграция Jivo с CRM системами с помощью API

Задачей интеграции системы Jivo и CRM систем является сохранение данных о клиенте, которые были получены через чат, в карточке клиента в CRM и отображении актуальных данных о клиенте оператору в программе, в которой он общается с клиентами.

Данные из Jivo передаются через POST запрос на указанный в настройках URL в следующих случаях:

  • chat_accepted - Оператор принял запрос диалога от клиента (нажал в программе кнопку Ответить)

  • client_updated - Обновились контактные данные о клиенте (либо клиент представился, либо оператор сам внёс контакты в программе)

  • chat_assigned - Диалог был прикреплен к карточке в CRM.

  • chat_finished - Диалог завершился (был закрыт в программе либо нажатием на крестик рядом с именем клиента, либо автоматически после того, как клиент покинул сайт)

  • offline_message - Было отправлено оффлайн-сообщение, когда не было операторов онлайн

Какие данные передаются и принимаются

Документация доступна на https://www.jivo.ru/docs/

  • Из нашей системы передаются:*

  • id чата

  • id виджета, он находится в коде, который устанавливается на сайт. Может быть нужно для определения, с какого сайта писали, если подключено несколько сайтов. Но при этом имя сайта не передаётся, поэтому, если соответствие сайт - widget_id неизвестно, данные бесполезны

  • Имя, e-mail и телефон посетителя

  • id посетителя в нашей системе. Посетитель идентифицируется нашим сервисом через cookie (не по IP)

  • Комментарий о клиенте. В программе можно добавлять комментарий в информации о клиенте.

  • id, логин и имя оператора, менеджера, который общался с клиентом. Может быть использован для того, чтобы закрепить ответственного менеджера в CRM системе или создать клиента от имени этого менеджера. Если операторы передавали друг другу диалог, то после окончания диалога придет массив объектов с данными об этих операторах.

  • Переписка после окончания диалога

Из CRM системы при начале диалога либо обновлении контактов передаются:

  • Контакты клиента, например, нашлась карточка клиента по e-mail, а CRM вернула ещё и имя и телефон

  • Кастомная информация о клиенте - его баланс, текущая лицензия, любые другие данные со ссылкой на карточку клиента

  • Некоторая информация не передаётся из нашей системы в CRM. Например, refer перехода на сайт. Но у нас есть возможность передавать в вебхуки произвольную информацию. Помимо вышеперечисленного можно передавать, например, логин клиента, если он авторизован на сайте, или его id в какой-нибудь метрике, к примеру, в Google Analytics. Это всё можно делать через функцию jivo_api.setUserToken, она принимает строку, которая будет передаваться в CRM со всеми остальными данными. Это значение никак не обрабатывается в нашей системе и нигде не отображается, просто передаётся со всеми остальными данными. Хотя функция принимает всего один аргумент, строку, в неё можно передавать различные данные через разделитель.

Как принимать данные на стороне CRM

Вебхук-запрос от Jivo представляет собой POST запрос на указанный URL, в теле которого находится JSON-объект с данными, описанными в документации. Вот пример на языке PHP, который позволяет при входящем запросе записать его в текстовый файл:

<?php
$fp = fopen('/request.log', 'a');
fwrite($fp, file_get_contents('php://input'));
fclose($fp); ?>

Разумеется, этот код нужен только для того, чтобы проверить, отправляются ли данные из системы Jivo в CRM систему и увидеть, как они выглядят. После чего можно уже разбирать присланные данные, искать клиента в базе и так далее. В дальнейшем код должен в ответ также вернуть объект, описанный у нас в документации, например, через echo. Дополнительных заголовков не нужно. Вот как выглядит ответ:

{"result":"ok","custom_data":[{"title":"Answer","content":"42"},{"title":"Last chat","content":"27 Apr 2016 19:37:12"}],"contact_info":{"name":"John Doe","phone":"+79500123567","email":"johny1337@jivoteam.com","description":"Комментарий работает"},"enable_assign":true,"crm_link":"http:\/\/mycrm.ru\/user\/1"}

И в браузере:

Сценарии работы

Здесь собрано то, что обычно ожидается от интеграции с CRM системой.

В момент, когда получены контакты (либо момент принятия диалога, либо client_updated) Провести поиск по этим контактам, e-mail и телефон, в списке контактов в CRM. Если их в списке нет, создать карточку клиента. Если есть - вернуть более полные данные (контакты) и подробности (баланс, статус) со ссылкой на карточку клиента. Если контакты клиента известны на сайте, но клиент ещё не вводил эти данные в Jivo, можно передать их через jivo_api.setContactInfo до начала чата. Эта функция клиентского API устанавливает контактные данные, как если клиент сам представился и можно провести поиск в CRM по этим контактам. При использовании этой функции при обращении в чат у клиента в поле "Представьтесь, пожалуйста" уже будут находиться его контактные данные, ему не нужно будет заполнять поля вручную. После начала чата jivo_api.setContactInfo уже не сработает.

Создание карточки клиента и передача данных о нём

  • Во многих CRM системах помимо имени и контактов есть ещё название лида. В нём можно указать его источник - адрес сайта или Jivo и имя

  • Важным моментом является назначение ответственного менеджера. Лучше всего ответственным назначить менеджера, который общался с клиентом, если его логин в системе Jivo совпадает с логином в CRM. Иначе - назначить кого-то по умолчанию

  • Указывать источник лида - Jivo. Либо в специальном поле, либо добавлять тег, чтобы можно было в списке клиентов найти тех, кто обращался через чат.

  • Отображать источник перехода и страницу начала диалога. Из Jivo в вебхуках эти данные пока не передаются, поэтому нужно передавать их со страницы через setUserToken. Обычно важно знать, через какой канал был привлечен конкретный клиент. Если есть данные из utm (поисковик, кампания), то они весьма ценные, их лучше тоже отобразить в CRM

  • Добавлять комментарий из приложения о клиенте, там может быть ценная информация для других менеджеров

  • В некоторых CRM есть обязательные для заполнения поля, без которых клиент не создастся, этот момент нужно учесть

  • Когда было оставлено оффлайн-сообщение, нужно создать задачу и назначить ответственного, чтобы он обработал поступившую заявку

Также нужно обратить внимание на следующий момент - какие данные при записи будут более приоритетными? Если клиент представился и ввёл почту a и телефон b, а в CRM записана почта a и телефон c, какие данные должны заместиться какими? Как вариант, можно заполнять поля с дополнительным e-mail и телефоном, если такие поля есть.

Статьи по теме
Есть вопросы?
Спросите техподдержку в чате на сайте, мы всегда рады помочь.
Работаем 24 часа 7 дней в неделю.