Інтеграція онлайн-консультанта з CRM Бітрікс24

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція онлайн-консультанта з CRM Бітрікс24
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Інтеграція онлайн-консультанта з CRM Бітрікс24

Онлайн-чат без CRM — це просто інструмент спілкування. З CRM — джерело лідів, історія контакту, воронка угод. Розрив між чатом і CRM коштує грошей: менеджер закрив діалог, дані ніде не збереглися, через тиждень клієнт зателефонував знову і почав спочатку. Інтеграція це виключає.

Архітектура інтеграції

Способів зв'язати онлайн-консультант з Бітрікс24 декілька, вибір залежить від платформи чату:

Нативні інтеграції. Деякі чати (JivoSite, LiveChat, Callibri) мають готові конектори до Бітрікс24 — через маркетплейс Бітрікс24 або налаштування самого чату. Це найшвидший шлях, але з обмеженими можливостями кастомізації.

Відкриті лінії Бітрікс24. Механізм, що дозволяє підключити зовнішній чат-канал до CRM Бітрікс24. Повідомлення з чату з'являються в інтерфейсі Відкритих ліній, оператор відповідає з Бітрікс24, відповідь надходить клієнту в чат на сайті. Потребує реалізації Webhook в обидва боки.

REST API Бітрікс24 + Webhook чату. Чат надсилає Webhook після завершення діалогу, обробник створює лід/контакт/угоду через crm.lead.add або crm.contact.add.

Інтеграція через Відкриті лінії

Відкриті лінії — найглибший варіант інтеграції. Потребує розробки конектора.

Крок 1. Реєстрація конектора в Бітрікс24:

// Реєструємо зовнішній канал через REST API
$result = callBitrix24Rest('imopenlines.connector.register', [
    'ID'          => 'my_chat_connector',
    'NAME'        => 'Онлайн-чат сайту',
    'ICON_FILE'   => 'https://yoursite.ru/icon.png',
    'ENDPOINT'    => 'https://yoursite.ru/local/api/chat-send.php',
    'HANDLER'     => 'https://yoursite.ru/local/api/chat-handler.php',
]);

Крок 2. Передача повідомлення з чату в Бітрікс24:

// Коли клієнт пише повідомлення в чаті на сайті
function sendMessageToBitrix24(string $userId, string $message, string $userName): void
{
    callBitrix24Rest('imopenlines.message.add', [
        'CONNECTOR' => 'my_chat_connector',
        'LINE'      => OPENLINE_ID,
        'MESSAGES'  => [[
            'user' => [
                'id'     => 'chat-user-' . $userId,
                'name'   => $userName,
                'avatar' => '',
            ],
            'message' => ['text' => $message],
            'timestamp' => time(),
        ]],
    ]);
}

Крок 3. Отримання відповіді оператора з Бітрікс24:

Бітрікс24 викликає ENDPOINT при відповіді оператора:

// /local/api/chat-send.php
$payload = json_decode(file_get_contents('php://input'), true);

$chatUserId = $payload['data']['USER']['ID'];    // 'chat-user-{id}'
$message    = $payload['data']['MESSAGES'][0]['text'];

// Передаємо відповідь у чат на сайті через API вашого чат-сервісу
ChatService::sendToUser(extractUserId($chatUserId), $message);

http_response_code(200);
echo json_encode(['RESULT' => 'OK']);

Створення ліда через REST API при завершенні діалогу

Якщо Відкриті лінії надлишкові — достатньо створювати лід при закритті чату:

function createLeadFromChat(array $visitorData, string $transcript): int
{
    $response = callBitrix24Rest('crm.lead.add', [
        'fields' => [
            'TITLE'       => 'Чат: ' . ($visitorData['name'] ?: $visitorData['email'] ?: 'Гість'),
            'NAME'        => $visitorData['name']  ?? '',
            'EMAIL'       => [['VALUE' => $visitorData['email'] ?? '', 'VALUE_TYPE' => 'WORK']],
            'PHONE'       => [['VALUE' => $visitorData['phone'] ?? '', 'VALUE_TYPE' => 'WORK']],
            'COMMENTS'    => htmlspecialchars($transcript),
            'SOURCE_ID'   => 'WEB',
            'STATUS_ID'   => 'NEW',
            'ASSIGNED_BY_ID' => getResponsibleManagerId(),
        ],
        'params' => ['REGISTER_SONET_EVENT' => 'N'],
    ]);

    return (int)($response['result'] ?? 0);
}

Дедублікація: не створювати дублі контактів

Перед створенням ліда перевіряйте, чи немає вже контакту з таким email або телефоном:

function findExistingContact(string $email, string $phone): ?int
{
    // Пошук за email
    if ($email) {
        $result = callBitrix24Rest('crm.contact.list', [
            'filter' => ['EMAIL' => $email],
            'select' => ['ID'],
        ]);
        if (!empty($result['result'][0]['ID'])) return (int)$result['result'][0]['ID'];
    }

    // Пошук за телефоном
    if ($phone) {
        $result = callBitrix24Rest('crm.contact.list', [
            'filter' => ['PHONE' => $phone],
            'select' => ['ID'],
        ]);
        if (!empty($result['result'][0]['ID'])) return (int)$result['result'][0]['ID'];
    }

    return null;
}

// За наявності існуючого контакту — створюємо угоду, а не лід
$contactId = findExistingContact($email, $phone);
if ($contactId) {
    callBitrix24Rest('crm.deal.add', [
        'fields' => [
            'TITLE'       => 'Звернення через чат',
            'CONTACT_ID'  => $contactId,
            'COMMENTS'    => $transcript,
            'SOURCE_ID'   => 'WEB',
        ],
    ]);
} else {
    createLeadFromChat($visitorData, $transcript);
}

Призначення відповідального

Для автоматичного призначення відповідального менеджера на лід/угоду з чату використовуйте логіку за джерелом:

function getResponsibleManagerId(): int
{
    // Ротація між менеджерами, призначення за часом доби,
    // або фіксований менеджер для чатів
    $managers = [15, 23, 41]; // ID користувачів Бітрікс24
    return $managers[array_rand($managers)];
}

Сповіщення відповідального

Після створення ліда — сповіщення в Бітрікс24:

callBitrix24Rest('im.notify.system.add', [
    'USER_ID' => $responsibleId,
    'MESSAGE' => 'Нове звернення через чат. Лід #' . $leadId . ' створено.',
]);

Склад робіт

  • Вибір архітектури інтеграції (Відкриті лінії або Webhook → лід)
  • Розробка Webhook-обробника на стороні Бітрікс
  • Логіка дедублікації контактів
  • Призначення відповідального, сповіщення
  • Тестування всіх сценаріїв: новий клієнт, повторний, з незаповненими даними

Терміни: інтеграція через Webhook зі створенням ліда — 2–3 дні. Повна інтеграція через Відкриті лінії — 2–3 тижні.