Разработка VK-бота с интеграцией Битрикс24

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка VK-бота с интеграцией Битрикс24
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • 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С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка VK-бота с интеграцией Битрикс24

Пользователь пишет в сообщения группы ВКонтакте — бот отвечает, квалифицирует лид и создаёт сделку в Битрикс24. Это не просто автоответчик: диалог сохраняется в CRM, менеджер видит переписку в карточке лида и может ответить прямо из Б24.

Два способа интеграции ВКонтакте с Битрикс24

Способ 1: Открытые линии Битрикс24. Б24 имеет нативный коннектор для VK. Он подключается в настройках открытых линий (imopenlines) и работает «из коробки» — если ваш тариф включает эту функцию. Ограничения: только текст и вложения, нет программируемой логики бота, нет автоответов с разветвлённым сценарием.

Способ 2: Кастомная интеграция через VK API. Бот на вашем сервере получает сообщения от VK через Callback API или Long Poll, обрабатывает их по своей логике, общается с Б24 через REST API. Полный контроль над поведением.

Для сложных сценариев (квалификация лидов, меню с кнопками, обработка фото/голосовых) — нужен кастомный бот.

Архитектура кастомного VK-бота

Пользователь → VK Group Messages
                    ↓
            VK Callback API (POST на сервер бота)
                    ↓
            Сервер бота (PHP/Node.js)
            ├── Логика разговора (FSM / сценарий)
            ├── VK API: messages.send, messages.getHistory
            └── Битрикс24 REST API:
                ├── crm.lead.add / crm.deal.add
                ├── crm.activity.add (запись диалога)
                └── im.message.add (уведомление менеджера)

Настройка VK Callback API

В настройках группы ВКонтакте → «Работа с API» → «Callback API» указываем адрес сервера и подписываемся на события message_new, message_reply, message_event (нажатие кнопки).

VK отправляет на сервер POST-запрос с JSON:

{
  "type": "message_new",
  "object": {
    "message": {
      "from_id": 123456789,
      "text": "Привет, как заказать?",
      "id": 987
    }
  },
  "group_id": 111222333
}

Сервер должен ответить строкой ok в течение 5 секунд.

Логика бота: FSM (конечный автомат)

Сценарий разговора реализуется через хранение состояния диалога:

// Состояние диалога хранится в Redis: state:{vk_user_id}
$state = $redis->get("vk_dialog:{$userId}");

switch ($state) {
    case null:
        // Новый диалог
        sendVkMessage($userId, "Здравствуйте! Вы хотите:\n1. Узнать цену\n2. Оставить заявку\n3. Связаться с менеджером");
        $redis->set("vk_dialog:{$userId}", 'menu', 3600);
        break;

    case 'menu':
        if ($text === '2' || stripos($text, 'заявк') !== false) {
            sendVkMessage($userId, "Укажите ваш телефон:");
            $redis->set("vk_dialog:{$userId}", 'await_phone', 3600);
        }
        break;

    case 'await_phone':
        if (isValidPhone($text)) {
            createLeadInB24($userId, $phone);
            sendVkMessage($userId, "Спасибо! Менеджер свяжется с вами в течение часа.");
            $redis->del("vk_dialog:{$userId}");
        } else {
            sendVkMessage($userId, "Не могу распознать номер. Введите в формате +7XXXXXXXXXX");
        }
        break;
}

Создание лида в Битрикс24

function createLeadInB24(int $vkUserId, string $phone): int {
    // Получаем данные пользователя VK
    $vkUser = callVkApi('users.get', ['user_ids' => $vkUserId, 'fields' => 'photo_200']);
    $name   = $vkUser[0]['first_name'] . ' ' . $vkUser[0]['last_name'];

    // Создаём лид в Б24
    $result = $b24->callMethod('crm.lead.add', [
        'fields' => [
            'TITLE'        => "VK: {$name}",
            'NAME'         => $vkUser[0]['first_name'],
            'LAST_NAME'    => $vkUser[0]['last_name'],
            'PHONE'        => [['VALUE' => $phone, 'VALUE_TYPE' => 'WORK']],
            'SOURCE_ID'    => 'VK',
            'COMMENTS'     => "ВКонтакте ID: {$vkUserId}\nhttps://vk.com/id{$vkUserId}",
            'ASSIGNED_BY_ID' => 5, // ID ответственного менеджера
        ],
    ]);

    // Прикрепляем историю переписки как активность
    $b24->callMethod('crm.activity.add', [
        'fields' => [
            'OWNER_TYPE_ID' => 1, // лид
            'OWNER_ID'      => $result['result'],
            'TYPE_ID'       => 4, // задача
            'SUBJECT'       => 'Переписка VK',
            'DESCRIPTION'   => $dialogHistory,
        ],
    ]);

    return $result['result'];
}

Кнопки в VK-сообщениях

VK поддерживает клавиатуры с кнопками (inline и под полем ввода):

$keyboard = [
    'one_time' => true,
    'buttons'  => [[
        ['action' => ['type' => 'text', 'label' => 'Оставить заявку', 'payload' => '{"action":"lead"}'], 'color' => 'primary'],
        ['action' => ['type' => 'text', 'label' => 'Позвонить нам',    'payload' => '{"action":"call"}'], 'color' => 'secondary'],
    ]],
];

callVkApi('messages.send', [
    'user_id'   => $userId,
    'message'   => 'Выберите действие:',
    'keyboard'  => json_encode($keyboard),
    'random_id' => time(),
]);

Уведомление менеджера в Битрикс24

После создания лида отправляем уведомление ответственному через im.notify:

$b24->callMethod('im.notify', [
    'to'      => $managerId,
    'message' => "Новый лид из VK: {$name}, тел. {$phone}. [URL=https://b24.ru/crm/lead/{$leadId}/]Открыть[/URL]",
    'type'    => 'SYSTEM',
]);

Сроки

Этап Срок
Настройка VK Callback API, базовый приём сообщений 1–2 дня
Сценарий бота (FSM, хранение состояния) 2–4 дня
Интеграция с Б24: создание лидов, активности 2–3 дня
Кнопки, меню, обработка вложений 1–2 дня
Уведомления менеджерам 1 день
Тестирование 1–2 дня

Итого: 1.5–2 недели для стандартного сценария квалификации лидов.