Интеграция онлайн-консультанта с CRM Битрикс24

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция онлайн-консультанта с CRM Битрикс24
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция онлайн-консультанта с 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 недели.