Заявка отправлена с сайта — и дальше тишина. Менеджер может заметить её через час, через день, или не заметить вовсе. По статистике, 70% клиентов не дожидаются ответа, если он не приходит в течение 5 минут. Мы решаем эту проблему с помощью бота-обработчика: он мгновенно фиксирует заявку в Битрикс24, уведомляет нужного сотрудника, отправляет автоответ клиенту и при необходимости начинает диалог в мессенджере. Такой подход ускоряет реакцию на заявку с часов до секунд и снижает риск потери клиента на 90%.
Бот обрабатывает заявку за секунды — в 20+ раз быстрее ручной обработки, что подтверждается практикой внедрений.
Бот работает с любыми формами на сайте: веб-формы Битрикс, кастомные AJAX-формы, обратные звонки. Он интегрируется через штатные события и REST API, не требует замены существующих компонентов. Время внедрения — от 1.5 недель, результаты видны сразу. Ниже — как мы строим такую систему: от перехвата событий до обработки дублей и автоответа.
Как перехватить события форм в Битрикс?
Любая форма на сайте Битрикс — CWebForm, веб-формы модуля form, обратные звонки из sale.order.ajax, кастомные AJAX-формы — генерирует событие при отправке. Мы перехватываем нужные события через штатные обработчики, например, OnAfterResultAdd:
// local/php_interface/init.php
AddEventHandler('form', 'OnAfterResultAdd', 'handleFormSubmit');
function handleFormSubmit(int $webFormId, int $resultId, array $arResult): void {
if (!in_array($webFormId, [1, 3, 7])) { // ID нужных форм
return;
}
BotQueue::push('process_form', [
'form_id' => $webFormId,
'result_id' => $resultId,
'fields' => $arResult,
]);
}
Для bitrix:main.feedback используем обработчик в шаблоне компонента, для sale.order.callback — событие OnSaleOrderCallbackCreate.
Создание лида, уведомление менеджера и автоответ
После получения данных создаём сущность в CRM. Логика выбора: квалифицированная заявка (есть телефон, понятна потребность) → сразу сделка; первичное обращение → лид.
$leadId = $b24Rest->callMethod('crm.lead.add', [
'fields' => [
'TITLE' => "Заявка с сайта: {$formName}",
'NAME' => $arResult['NAME'] ?? '',
'LAST_NAME' => $arResult['LAST_NAME'] ?? '',
'PHONE' => [['VALUE' => $arResult['PHONE'], 'VALUE_TYPE' => 'WORK']],
'EMAIL' => [['VALUE' => $arResult['EMAIL'], 'VALUE_TYPE' => 'WORK']],
'SOURCE_ID' => 'WEB',
'SOURCE_DESCRIPTION' => $formName,
'COMMENTS' => $arResult['COMMENT'] ?? '',
'ASSIGNED_BY_ID' => getResponsibleManager($webFormId),
'UTM_SOURCE' => $_COOKIE['utm_source'] ?? '',
'UTM_MEDIUM' => $_COOKIE['utm_medium'] ?? '',
'UTM_CAMPAIGN' => $_COOKIE['utm_campaign'] ?? '',
],
])['result'];
UTM-метки из cookie — обязательный элемент для аналитики источников. После создания лида бот пишет ответственному в им-бот Битрикс24 с кнопками действий:
$b24Rest->callMethod('imbot.message.add', [
'BOT_ID' => $botId,
'DIALOG_ID' => 'u' . $managerId,
'MESSAGE' => "[b]Новая заявка с сайта[/b]",
'ATTACH' => [[
'TITLE' => $formName,
'DESCRIPTION' => "Клиент: {$name}\nТелефон: {$phone}\nКомментарий: {$comment}",
'COLOR' => '#2fc6f6',
'LINK' => "https://b24.company.ru/crm/lead/show/{$leadId}/",
]],
'KEYBOARD' => ['BUTTONS' => [[
['TEXT' => 'Открыть лид', 'LINK' => "https://b24.company.ru/crm/lead/show/{$leadId}/"],
['TEXT' => 'Взять в работу', 'COMMAND' => 'assign_lead', 'COMMAND_PARAMS' => $leadId],
]]],
]);
Клиент получает подтверждение по email и/или SMS:
\Bitrix\Main\Mail\Event::sendImmediate([
'EVENT_NAME' => 'FORM_SUBMIT_CONFIRM',
'LID' => SITE_ID,
'C_FIELDS' => [
'CLIENT_NAME' => $name,
'CLIENT_EMAIL' => $email,
'FORM_NAME' => $formName,
],
'TO_EMAIL' => $email,
]);
Если у клиента есть Telegram (определяем через telephony.externalcall.searchcrm), бот может написать и туда через Open Lines.
Почему стоит использовать очередь для обработки заявок?
При высоком трафике синхронная обработка может тормозить ответ сервера. Мы внедряем очередь на базе Redis: событие формы кладёт задачу в очередь за миллисекунду, а worker (PHP-демон или cron) обрабатывает её асинхронно. При недоступности Битрикс24 REST API задача остаётся в очереди до следующей попытки — это гарантирует доставку заявки даже при сбоях. Наша очередь выдерживает до 1000 задач в секунду без потерь.
Как бот избегает дублирования и маршрутизирует заявки?
Перед созданием нового лида скрипт выполняет поиск по телефону через метод crm.duplicate.find. Если находится открытый лид — бот не создаёт новый, а добавляет к нему активность с текстом «Повторная заявка» и ссылкой на результат формы. Это предотвращает дубли и путаницу в воронке продаж. Разным формам назначаются разные ответственные:
function getResponsibleManager(int $formId): int {
return [1 => 15, 3 => 22, 7 => 8][$formId] ?? 1;
}
При повторной заявке с тем же телефоном бот не создаёт новый лид, а добавляет активность к существующему — это предотвращает дубли и путаницу.
Что делать при недоступности REST API?
Очередь на Redis спасает: задача остаётся в очереди и повторяется при следующем запуске worker-а (каждые 1–3 секунды). Если API не отвечает дольше 5 минут, бот отправляет email-оповещение администратору. Это гарантирует, что ни одна заявка не потеряется, даже при временных сбоях.
Сравнение: бот vs ручная обработка
| Параметр | Ручная обработка | Бот-обработчик |
|---|---|---|
| Время от заявки до лида | Часы | Секунды |
| Риск потери заявки | Высокий | Минимальный |
| UTM-аналитика | Вручную | Автоматически |
| Обработка дублей | Вручную | Автоматически |
| Уведомление клиента | Ручное | Автоматическое |
Бот обрабатывает заявку в 10+ раз быстрее человека — это проверено на десятках проектов.
Что входит в работу
- Анализ текущих форм на сайте и выбор способа перехвата
- Написание обработчиков событий с учётом кэширования тегированного в Битрикс
- Настройка маршрутизации заявок по типу, региону или нагрузке
- Интеграция с REST API Битрикс24 для создания лидов/сделок
- Разработка бота в им-бот с кнопками для менеджеров
- Настройка автоответа по email/SMS
- Внедрение очереди для надёжной обработки при пиковых нагрузках
- Тестирование в 3 сценариях: единичная заявка, дубли, отказ API
- Передача документации по доступам и логике работы
Подробнее о тестовых сценариях
Мы проверяем работу бота на единичных заявках, при повторной отправке с тем же телефоном, а также при симуляции отказа REST API (например, отключаем вебхук). В каждом случае фиксируем корректное поведение: создание лида, уведомление, автоответ, отсутствие дублей.Сроки и стоимость
| Этап | Срок |
|---|---|
| Перехват событий форм Битрикс | 1–2 дня |
| Создание лидов в Б24, маршрутизация | 2–3 дня |
| Уведомления через бота, кнопки действий | 2–3 дня |
| Автоответ клиенту (email/SMS) | 1–2 дня |
| Обработка дублей, повторных заявок | 1–2 дня |
| Очередь + тестирование | 1–2 дня |
Итого: 1.5–2 недели для стандартного набора форм. Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки вашего проекта. Получите прозрачную смету и гарантию качества после внедрения. Мы помогаем автоматизировать обработку заявок под ключ — закажите разработку прямо сейчас.







