NeoGraph.tech

Как подключить чат-бота к Bitrix24: руководство

Как подключить чат-бота к Bitrix24: архитектура, вебхуки, REST API, мэппинг полей, типовые сценарии и безопасность (152-ФЗ). Пошаговое руководство.

Автор: · Опубликовано: 22.12.2025 (Обновлено: 17.05.2026)

Практическое руководство для разработчиков и интеграторов: как подключить чат-бот или AI-агента к Bitrix24, принимать события через вебхуки, работать с REST API, маппить поля и не нарушить 152-ФЗ. Внутри — схемы, примеры кода, чек-листы и типовые сценарии автоматизации.

TL;DR:

  • Архитектура: Bitrix24 → Webhooks/REST API → Integration API → Чат-бот/AI-агент → RAG-индекс → Ответы с цитатами.
  • Вебхуки: Подписка на события (лиды, сделки, задачи), проверка подписи, idempotency, очередь обработки.
  • REST API: CRUD операции, фильтры, права доступа, rate limits, обработка ошибок.
  • Мэппинг полей: Таблицы соответствий Bitrix24 ↔ чат-бот, валидация, трансформация данных.
  • Типовые сценарии: 6 автоматизаций (первый ответ, приоритезация, авто-задачи, обогащение, реактивация, рекламации).
  • Безопасность: 152-ФЗ (локализация, обезличивание), RBAC, журналы доступа, шлюз для внешних LLM.

Когда интеграция с Bitrix24 подходит

Подходит для:

  • Автоматизация ответов на лиды (FRT, квалификация)
  • Автоматизация задач и напоминаний
  • Обогащение карточек лидов/сделок данными из BI/каталогов
  • Реактивация «молчунов» (нет активности N дней)
  • Обработка рекламаций по SLA

Не подходит для:

  • Сценарии без доступа к Bitrix24 API
  • Компании без Bitrix24 (рассмотрите SberCRM, 1C)
  • Простые чат-боты без интеграций (достаточно правил)

Архитектура интеграции

Компоненты:

  • Bitrix24 — CRM с публичным REST API и вебхуками (доступны в корпоративных тарифах).
  • Integration API — наш бэкенд (Next.js/Node), точки /webhooks/bitrix24 и /api/bitrix24.
  • RAG-индекс — векторная база (Qdrant) для регламентов/прайсов/политик.
  • Оркестрация — n8n для уведомлений, эскалаций и SLA-таймеров.
  • Мониторинг — логи, метрики (FRT/AHT/конверсия), алерты.

1) События из Bitrix24: вебхуки и REST API

1.1. Вебхуки (рекомендуется)

Настройка вебхуков:

  1. В Bitrix24: Настройки → Разработчикам → Вебхуки → Создать вебхук.
  2. Выберите права доступа (минимум: лиды, сделки, задачи).
  3. Скопируйте URL вебхука (формат: https://your-domain.bitrix24.ru/rest/1/webhook_code/).

Подписка на события:

// Подписка на создание лида
const subscribe = async (webhookUrl: string, event: string) => {
 const response = await fetch(`${webhookUrl}event.bind`, {
 method: 'POST',
 headers: { 'Content-Type': 'application/json' },
 body: JSON.stringify({
 event: event, // 'ONCRMLEADADD'
 handler: 'https://your-api.com/webhooks/bitrix24'
 })
 });
 return response.json();
};

Обработка входящего вебхука:

// /app/api/webhooks/bitrix24/route.ts
import type { NextRequest } from "next/server";
import { verifySignature, enqueue } from "@/lib/bitrix24";

export async function POST(req: NextRequest) {
 const body = await req.text();
 const signature = req.headers.get("x-bitrix-signature") ?? "";
 
 // Проверка подписи (если настроена)
 if (!verifySignature(body, signature, process.env.BITRIX24_WEBHOOK_SECRET!)) {
 return new Response("invalid signature", { status: 401 });
 }
 
 const event = JSON.parse(body);
 await enqueue("bitrix24.events", event); // idempotency внутри очереди
 return new Response("ok");
}

1.2. REST API (альтернатива вебхукам)

Если вебхуков нет:

  • Используйте polling через REST API по DATE_MODIFY с джиттером и лимитами.
  • Или iPaaS-коннекторы (Albato, Make) с источником Bitrix24 и действиями.

Пример polling:

// /cron/bitrix24-poll.ts — запускаем каждые 2–5 мин
import { listLeadsUpdatedSince } from "@/lib/bitrix24";

let cursor = new Date(Date.now() - 2*60*1000).toISOString();

export async function poll() {
 const leads = await listLeadsUpdatedSince(cursor);
 for (const lead of leads) {
 //...обработка...
 }
 cursor = new Date().toISOString();
}

2) Мэппинг полей (базовый)

Сущность Поле Bitrix24 Наше поле Примечание
Lead ID, DATE_CREATE, STATUS_ID, SOURCE_ID, ASSIGNED_BY_ID leadId, createdAt, stage, source, owner для SLA по первому ответу
Lead NAME, LAST_NAME, PHONE, EMAIL, COMPANY_TITLE, COMMENTS contacts, company, notes маскируем ПДн в логах
Deal ID, STAGE_ID, OPPORTUNITY, CURRENCY_ID, CLOSEDATE dealId, stage, amount, currency, deadline A/B по этапам
Task ID, DEADLINE, TITLE, RESPONSIBLE_ID taskId, dueAt, title, assignee напоминания/эскалации
Message DIRECTION, CHANNEL, BODY, TEMPLATE_ID channel, draft, template черновики писем с цитатами

3) Примеры интеграции (Node/Next.js)

3.1. Обработка события → черновик ответа

// /jobs/onLeadEvent.ts
import { getLead, updateLead, createMessage } from "@/lib/bitrix24";
import { retrieveContext, draftReply } from "@/lib/agent";

export async function onLeadEvent(evt: any) {
 if (evt.event !== "ONCRMLEADADD" && evt.event !== "ONCRMLEADUPDATE") return;

 const lead = await getLead(evt.data.FIELDS_AFTER.ID);
 const ctx = await retrieveContext({ 
 topic: "pricing", 
 locale: "ru", 
 orgId: lead.ORG_ID 
 });
 const draft = await draftReply({ 
 lead, 
 ctx, 
 requireCitations: true 
 });

 await createMessage(lead.ID, { 
 channel: "email",
 body: draft.text,
 citations: draft.citations, // ссылки/версии документов
 template_id: draft.templateId
 });

 await updateLead(lead.ID, { 
 UF_CRM_AGENT_DRAFT: "Y",
 COMMENTS: `${lead.COMMENTS}\n\n[Agent draft: ${draft.text.substring(0, 100)}...]`
 });
}

3.2. Работа с REST API

// /lib/bitrix24.ts
export async function getLead(leadId: string, webhookUrl: string) {
 const response = await fetch(`${webhookUrl}crm.lead.get`, {
 method: 'POST',
 headers: { 'Content-Type': 'application/json' },
 body: JSON.stringify({ id: leadId })
 });
 return response.json().result;
}

export async function updateLead(leadId: string, fields: any, webhookUrl: string) {
 const response = await fetch(`${webhookUrl}crm.lead.update`, {
 method: 'POST',
 headers: { 'Content-Type': 'application/json' },
 body: JSON.stringify({ id: leadId, fields })
 });
 return response.json();
}

export async function createTask(fields: any, webhookUrl: string) {
 const response = await fetch(`${webhookUrl}tasks.task.add`, {
 method: 'POST',
 headers: { 'Content-Type': 'application/json' },
 body: JSON.stringify({ fields })
 });
 return response.json();
}

4) Типовые сценарии автоматизации

4.1. Первый ответ по лидам (FRT)

Цель: Сократить время первого ответа на 30–40%.

Реализация:

  • Вебхук ONCRMLEADADD → агент генерирует черновик ответа «по регламенту» → запись в Bitrix24.
  • Менеджер проверяет/правит → отправка.

Метрики: FRT (медиана), доля ответов < 60 мин.

4.2. Приоритезация и автоназначение

Цель: Меньше «забытых» лидов, контроль SLA.

Реализация:

  • По продукту/сегменту/сумме → автоназначение ответственного, создание задачи с дедлайном.

Метрики: Доля лидов без ответа > 24ч, просрочки SLA.

4.3. Автозадачи по этапам

Цель: Автоматизация рутины при смене этапов.

Реализация:

  • Лид перешёл на этап «КП» → задача «Отправить КП», дедлайн + напоминания.

Метрики: Доля автоматизированных задач, время на рутину.

4.4. Обогащение карточки

Цель: BI/каталоги → маржинальность/остатки/статусы логистики прямо в Bitrix24.

Реализация:

  • При создании/обновлении лида → запрос к BI/каталогам → обновление полей в Bitrix24.

Метрики: Доля обогащённых карточек, точность данных.

4.5. Реактивация «молчунов»

Цель: Вернуть в работу лидов без активности N дней.

Реализация:

  • Триггер no activity N days → персональные шаблоны реактивации → задача менеджеру.

Метрики: Доля реактивированных лидов, конверсия реактивации.

4.6. Рекламации

Цель: Автоматизация обработки рекламаций по SLA.

Реализация:

  • Авто-шаблоны ответов + чек-лист документов, эскалации по SLA.

Метрики: Время обработки рекламаций, SLA-просрочка.


5) RAG-поток для ответов «по регламенту»

  • Инжест регламентов/прайсов/политик, хранение версий.
  • Индексация в векторную базу + связи между процессами, ролями, политиками и KPI.
  • Гибридный ретривал (BM25+dense) + rerank; собираем контекст 2–4 фрагмента.
  • Генерация черновика с цитатами (doc_id/страница/версия).
  • Если нет цитат/низкий скор — возвращаем «нет данных».

Подробнее → /blog/rag-on-docs/


6) Безопасность, 152-ФЗ и аудит

  • On-prem/частный контур для документов; обезличивание ПДн в логах/корпусе.
  • RBAC/ACL по отделам/каналам; минимизация токенов доступа к API.
  • Логи запросов/ответов, версионирование промптов, idempotency для вебхуков.
  • Ограничение IP-диапазонов и подпись вебхуков (если доступны).

Подробнее → /blog/152fz-ai-onprem/


7) Мониторинг и метрики

  • Продуктовые: FRT (медиана), «без ответа >24ч», конверсия по этапам.
  • Тех: доля успешно обработанных событий, ретраи, средняя латентность ответа, ошибки агентов.
  • Экономика: минут/кейс, цена запроса (учёт cached input), ROI пилота (8 недель).

8) Пилот за 8 недель (шаблон плана)

  • 1–2: цели/KPI, доступы к API, прототип вебхуков/пуллинга, индекс v1.
  • 3–4: черновики ответов, приоритезация, A/B на 20–30% очередей.
  • 5–6: тюнинг ретрива/шаблонов, включение напоминаний/эскалаций.
  • 7–8: расширение трафика, замер, ROI, план масштаба.

FAQ

Нужны ли вебхуки? Желательно, но можно начать с polling + iPaaS (Albato, Make) и REST API.

Будут ли «галлюцинации»? Мы требуем цитаты и версии документов; без цитаты — «нет данных».

Как не нарушить 152-ФЗ? Обезличивание ПДн, on-prem/частный контур документов, шлюз для внешних моделей.

Подходит ли для всех тарифов Bitrix24? Вебхуки доступны в корпоративных тарифах; REST API — во всех тарифах.

Как обрабатывать rate limits? Используйте очереди, ретраи с экспоненциальным backoff, кэширование.


Связанные материалы


Готовы к быстрым результатам? • Пройти бесплатный AI-аудит → /services/ai-audit/ • Записаться на пилот → /services/pilot/

Нужна диагностика процессов или AI-автоматизация?
Бесплатная консультация за 15 минут