В LeadBack предусмотрен вариант интеграции через настройку исходящего webhook. Это позволяет получать данные из сервиса (обратные звонки и чаты) в реальном времени. Информация о том что заказан обратный звонок будет передена на ваш URL-обработчик (он же webhook) в момент когда звонок состоится. Тоже самое относится и к информации по чатам на сайте.
Этот механизм удобно использовать для интеграции с внешней системой (например CRM).
Настройка Webhook
Для настройки вебхука нужно зайти в профиль нужного аккаунта LeadBack и найти подраздел API. В поле URL-адрес обработчика указать адрес куда будут отправляться события.
Обратите внимание, чтобы настройки вебхук сохранились, адрес вы должны указать действующий адрес URL-обработчика. В момент сохранения, адрес проверяется на доступность (отправляется тестовый http-запрос). Если ваш обработчик вернет http-статус отличный от 200, настройки не будут сохранены.
Безопасность при использовании Webhook
Чтобы вы могли однозначно понимать что запрос на обработчик пришел от Leadback, используйте секретный параметр в URL (пример URL-обработчика с секретным параметром: https://myserver.com/webhook/leaback.php?key=WsETKhVTeNpiF4uNy2KfDYjMy). В коде обработчика вы будете проверять параметр key на соответствие заданному вами значению и если значение верное, то запрос на обработчик пришел от LeadBack.
Для обеспечения дополнительной безопастности (от перехвата данных) мы рекомендуем использовать https адрес (для этого у вас на сервере должен быть настроен валидный SSL-сертификат для домена).
Типы передаваемых событий
- новый обратный звонок
- новый диалог в онлайн чате (с оператором или ботом)
- проверка вебхук
Структура данных
Для всех событий данные передаются в виде JSON объекта методом POST в поле payload. Ниже показан пример получения данных для php:
$payload = json_decode($_POST['payload'], true);
Для всех событий JSON-объект имеет единую структуру с 2 полями данных:
- event_type — тип события. Доступны значения:
- pre_call — предварительные данные о новом обратном звонке;
- call — принят или пропущен обратный звонок;
- chat_dialog — состоялся диалог в чате с оператором;
- bot_dialog — состоялся диалог в чате с ботом;
- check_webhook — проверка доступности webhook;
- data — данные по событию.
Новый обратный звонок
Событие срабатывает перед запуском дозвона (event_type=pre_call) и когда был принят или пропущен обратный звонок с сайта (event_type=call).
В данных события доступны следующие поля:
| Поле | Тип | Описание |
|---|---|---|
| id_call | int | ID звонка |
| user_id | int | ID клиента |
| widget_id | int | ID виджета |
| date_create | datetime | Дата и время создания заявки на звонок |
| date_update | datetime | Дата и время последнего обновления информации о звонке |
| callback_phone | string | Номер телефона заказавшего обратный звонок |
| operator_phone | string | Номер телефона сотрудника который принял звонок |
| site | string | Домен сайта на котором заказан обратный звонок |
| user_tariff | string | Тариф клиента |
| tariffed_minutes | int | Потрачено минут связи с баланса аккаунта |
| duration | int | Продолжительность разговора в секундах |
| record_url | string | Ссылка на запись разговора |
| callback_answer | string | Заказавший звонок ответил на него (no - нет, yes - да) |
| visit_uuid | string | ID посетителя |
| visit_id | string | ID визита |
| visit_ip | string | IP заказавшего обратный звонок |
| visit_source | string | Источник звонка |
| delayed_time | datetime | Дата и время на которое перенесен звонок (если звонок заказан в не рабочее время) |
| status | string | Статус звонка (complete - принят, failed - пропущен) |
| call_time | datetime | Дата и время когда состоялся звонок |
| visit_data | object | Полная информация о источнике звонка |
| visit_profile | object | Данные посетителя если были заполнены в форма онлайн чата (имя, email и телефон) |
Информация о источнике звонка visit_data имеет следующие данные (поля для visit_data идентичны для всех типов событий):
| Поле | Тип | Описание |
|---|---|---|
| visit_id | string | ID визита |
| date_visit | datetime | Дата и время визита |
| visit_source | string | Источник звонка (значения: direct, internal, search, social, utm, cpc, email, unknown) |
| referer_url | string | Адрес источника визита |
| page_url | string | Страница входа |
| call_url | string | Страница звонка |
| ga_cid | string | Идентификатор клиента для Google Analytics (Client ID) |
| roistat_visit | string | Roistat номер визита (промокод), передается если на сайте используется код сервиса Roistat |
| visit_ip | string | IP посетителя |
| visit_ua | string | Браузер посетителя (UserAgent) |
| utm_source | string | UTM-метка source (для visit_source=utm или cpc) |
| utm_medium | string | UTM-метка medium (для visit_source=utm или cpc) |
| utm_campaign | string | UTM-метка campaign (для visit_source=utm или cpc) |
| utm_term | string | UTM-метка term (для visit_source=utm или cpc) |
| utm_content | string | UTM-метка content (для visit_source=utm или cpc) |
| search_engine | string | Поисковая система для visit_source=search или cpc (значения: google, yandex, go.mail.ru, bing.com, yahoo.com, about.com, aol.com, ask.com, globososo.com, rambler.ru, tut.by, nigma.ru) |
| search_text | string | Поисковая фраза |
| search_href | string | Ссылка на поисковую выдачу для фразы |
Пример JSON данных для обратного звонка:
{
"event_type": "call",
"data": {
"id_call": "402078",
"user_id": "1",
"widget_id": "4475",
"date_create": "2017-04-19 13:16:00",
"date_update": "2017-04-19 13:16:18",
"callback_phone": "79000000000",
"operator_phone": "79000000001",
"site": "site.com",
"user_tariff": "personal",
"tariffed_minutes": 1,
"duration": 7,
"record_url": "http:\/\/www-nl-01-75.leadback.ru\/records\/2017\/04\/19\/68b1e7d1a2c2551f.3879783.23452.mp3?record_id=7672382",
"callback_answer": "no",
"visit_uuid": "f6be3906-1d3a-4372-8c63-1e517e518450",
"visit_id": "a8509ba4-5b91-3889-9544-e3886da25f35",
"visit_ip": "31.132.152.137",
"visit_source": "direct",
"delayed_time": null,
"status": "complete",
"call_time": "2017-04-19 13:16:00",
"visit_data": {
"visit_id": "a8509ba4-5b91-3889-9544-e3886da25f35",
"date_visit": "2017-04-19 13:15:52",
"visit_source": "direct",
"referer_url": "",
"page_url": "https:\/\/site.com\/",
"call_url": "https:\/\/site.com\/",
"ga_cid": "781661464.1505303250",
"roistat_visit": "14525",
"visit_ip": "31.132.152.137",
"visit_ua": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit\/602.4.8 (KHTML, like Gecko) Version\/10.0.3 Safari\/602.4.8"
},
"visit_profile": {
"name": "Денис",
"email": "mail@mail.ru",
"phone": "79000000000"
}
}
}
Новый диалог в чате с оператором
Отправляется когда завершится диалог в чате с вашим онлайн оператором.
В данных события доступны следующие поля:
| Поле | Тип | Описание |
|---|---|---|
| widget_id | int | ID виджета |
| user_id | int | ID клиента |
| dialog_id | string | ID диалога |
| chat_log | array | Сообщения переписки посетителя с оператором |
| operator | object | Информация о операторе который вел диалог с посетителем |
| visit_data | object | Полная информация о источнике визита посетителя |
| visit_profile | object | Данные посетителя если были заполнены в форма онлайн чата (имя, email и телефон) |
Данные оператора в поле operator:
| Поле | Тип | Описание |
|---|---|---|
| id_operator | int | ID оператора |
| operator_jid | string | Логин оператора |
| operator_name | string | Имя оператора |
| avatar_type | string | Тип аватарки (custom, standart) |
| avatar_url | string | Адрес на аватарку оператора |
История переписки в поле chat_log это массив объектов с полями:
| Поле | Тип | Описание |
|---|---|---|
| id_message | int | ID сообщения |
| date_create | datetime | Дата и время сообщения |
| message_from | string | От кого сообщение |
| message_to | string | Кому сообщение |
| message_type | string | Тип сообщения (visitor, operator) |
| message | string | Текст сообщения |
| answer_time | int | Время ответа оператора на последние сообщение посетителя в секундах (для message_type=operator). |
Поля visit_data и profile_data аналогичны как для события новый обратный звонок.
Пример JSON данных диалога с оператором:
{
"event_type": "chat_dialog",
"data": {
"widget_id": "4475",
"user_id": "1",
"dialog_id": "1cb2cc5ceccb594800efce6eab2d3267",
"chat_log": [{
"id_message": "9379037",
"date_create": "2017-03-21 14:47:17",
"message_from": "site.com_2bl1x@u02.cloudim.ru",
"message_to": "abc123@cloudim.ru",
"message_type": "visitor",
"message": "Привет!",
"answer_time": null
}, {
"id_message": "9379040",
"date_create": "2017-03-21 14:47:33",
"message_from": "abc123@cloudim.ru",
"message_to": "site.com_2bl1x@u02.cloudim.ru",
"message_type": "operator",
"message": "Здравствуйте! Чем могу помочь?",
"answer_time": "16"
}, {
"id_message": "9379042",
"date_create": "2017-03-21 14:47:37",
"message_from": "site.com_2bl1x@u02.cloudim.ru",
"message_to": "fu4jaf@cloudim.ru",
"message_type": "visitor",
"message": "Просто тестирую. Спасибо!",
"answer_time": null
}],
"operator": {
"id_operator": "2",
"operator_jid": "abc123@cloudim.ru",
"operator_name": "Иван",
"avatar_type": "custom",
"avatar_url": "https:\/\/leadback.ru\/images\/uploads\/avatars\/1_f7d1eff6a0b523dde25912f113e82932_1464330572.png"
},
"visit_data": {
"visit_id": "bba5c45b-0b09-3bf6-9597-e93126db634e",
"date_visit": "2017-04-19 12:06:36",
"referer_url": "",
"page_url": "https:\/\/site.com\/",
"call_url": "",
"ga_cid": "781661464.1505303250",
"roistat_visit": "14525",
"visit_ip": "31.132.152.137",
"visit_ua": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/57.0.2987.133 Safari\/537.36",
"visit_source": "direct"
},
"visit_profile": {
"name": "Денис",
"email": "mail@mail.ru",
"phone": ""
}
}
}
Новый диалог в чате с ботом
Отправляется когда завершится диалог в чате с ботом.
В данных события доступны следующие поля:
| Поле | Тип | Описание |
|---|---|---|
| widget_id | int | ID виджета |
| user_id | int | ID клиента |
| dialog_id | string | ID диалога |
| chat_log | array | Сообщения переписки с посетителя и бота |
| visit_data | object | Полная информация о источнике визита посетителя |
| visit_profile | object | Данные посетителя если были заполнены в форма онлайн чата (имя, email и телефон) |
История переписки в поле chat_log это массив объектов с полями:
| Поле | Тип | Описание |
|---|---|---|
| id_message | int | ID сообщения |
| date_create | datetime | Дата и время сообщения |
| message_type | string | Тип сообщения (visitor, bot) |
| message | string | Текст сообщения |
Поля visit_data и profile_data аналогичны как для события новый обратный звонок.
Пример JSON данных диалога с ботом:
{
"event_type": "bot_dialog",
"data": {
"widget_id": "9375",
"user_id": "1",
"dialog_id": "6c0f71f7-d310-321e-87b2-3877a20a6d26",
"chat_log": [{
"id_message": "132374",
"date_create": "2017-04-19 13:49:36",
"message": "Здравствуйте!",
"message_type": "bot"
}, {
"id_message": "132375",
"date_create": "2017-04-19 13:49:42",
"message": "Вас что то заинтересовало?",
"message_type": "bot"
}, {
"id_message": "132376",
"date_create": "2017-04-19 13:49:49",
"message": "Напишите мне если будут вопросы...",
"message_type": "bot"
}, {
"id_message": "132382",
"date_create": "2017-04-19 13:49:55",
"message": "Спасибо! Есть вопрос по доставке",
"message_type": "visitor"
}, {
"id_message": "132385",
"date_create": "2017-04-19 13:50:01",
"message": "Давайте мы перезвоним вам и все расскажем",
"message_type": "bot"
}, {
"id_message": "132386",
"date_create": "2017-04-19 13:50:07",
"message": "Напишите мне свой телефон.",
"message_type": "bot"
}],
"visit_data": {
"visit_id": "6c0f71f7-d310-321e-87b2-3877a20a6d26",
"date_visit": "2017-04-19 13:49:17",
"referer_url": "",
"page_url": "http:\/\/site.com\/?utm_source=roem&utm_medium=banner&utm_campaign=demo",
"call_url": "",
"ga_cid": "781661464.1505303250",
"roistat_visit": "14525",
"visit_ip": "31.132.152.137",
"visit_ua": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/57.0.2987.133 Safari\/537.36",
"visit_source": "utm",
"utm_source": "roem",
"utm_medium": "banner",
"utm_campaign": "demo",
"utm_term": "",
"utm_content": ""
},
"visit_profile": {
"name": "",
"email": "",
"phone": "79000000000"
}
}
}
Проверка вебхук адреса
Тестовый запрос. Отправляется во время сохранения адреса webhook адреса, для проверки его доступности.
{
"event_type": "check_webhook",
"data": null
}
