Розробка бота для обробки заявок із сайту 1С-Бітрікс

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

Розробка бота для обробки заявок з сайту 1С-Бітрікс

Заявка надіслана з сайту — і далі тиша. Менеджер може помітити її через годину, через день, або не помітити взагалі. Бот-обробник закриває цей розрив: миттєво фіксує заявку в Bitrix24, сповіщає потрібного менеджера, надсилає автовідповідь клієнту, при необхідності починає діалог у месенджері.

Точка входу: події форм 1С-Бітрікс

Усі форми на сайті Бітрікс — CWebForm, веб-форми модуля form, зворотні дзвінки з sale.order.ajax, користувацькі AJAX-форми — генерують події при відправленні. Перехоплюємо потрібні:

Веб-форми модуля form:

// 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,
    ]);
}

Для зворотного дзвінка (sale.order.callback) — свій обробник через подію OnSaleOrderCallbackCreate.

Створення ліда/угоди в Bitrix24

Після отримання даних форми створюємо сутність у 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 — це важливо для аналітики джерел заявок.

Сповіщення менеджера через бота

Після створення ліда бот пише відповідальному в Bitrix24:

$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:

// Email через Бітрікс
\Bitrix\Main\Mail\Event::sendImmediate([
    'EVENT_NAME'  => 'FORM_SUBMIT_CONFIRM',
    'LID'         => SITE_ID,
    'C_FIELDS'    => [
        'CLIENT_NAME'  => $name,
        'CLIENT_EMAIL' => $email,
        'FORM_NAME'    => $formName,
        'LEAD_URL'     => '',
    ],
    'TO_EMAIL'    => $email,
]);

Якщо у клієнта є Telegram — бот може написати й туди, якщо налаштована інтеграція з Telegram-каналом відкритих ліній.

Маршрутизація заявок по типу

Різні форми → різні відповідальні:

function getResponsibleManager(int $formId): int {
    $routing = [
        1 => 15,  // Форма "Консультація" → Іванов
        3 => 22,  // Форма "Партнерство" → Петров
        7 => 8,   // Форма "Техпідтримка" → Сидоров
    ];
    return $routing[$formId] ?? 1; // дефолтний менеджер
}

Для складної маршрутизації (по часу доби, навантаженню менеджерів, регіону клієнта) — логіка ускладнюється, але принцип той самий.

Обробка повторних заявок

Перед створенням нового ліда перевіряємо, нема ж вже відкритого ліда з таким телефоном:

$existing = $b24Rest->callMethod('crm.lead.list', [
    'filter' => [
        'PHONE' => $phone,
        '!STATUS_ID' => ['CONVERTED', 'LOSE'],
    ],
    'select' => ['ID', 'TITLE', 'ASSIGNED_BY_ID'],
])['result'];

if ($existing) {
    // Додаємо активність до існуючого ліда замість створення нового
    addActivityToLead($existing[0]['ID'], $comment);
    notifyManager($existing[0]['ASSIGNED_BY_ID'], "Повторна заявка по ліду #{$existing[0]['ID']}");
    return;
}

Черга для надійності

При високому трафіку обробник форми не повинен гальмувати відповідь сервера. Архітектура з чергою:

  1. OnAfterResultAdd кладе задачу в Redis-чергу (< 1 мс).
  2. Worker (PHP daemon або cron щохвилини) забирає задачі та обробляє.
  3. При недоступності Б24 REST API — задача залишається в черзі, обробляється при наступній ітерації.

Строки

Етап Строк
Перехват подій форм Бітрікс 1–2 дні
Створення лідів у Б24, маршрутизація 2–3 дні
Сповіщення через бота, кнопки дій 2–3 дні
Автовідповідь клієнту (email/SMS) 1–2 дні
Обробка дублів, повторних заявок 1–2 дні
Черга + тестування 1–2 дні

Разом: 1,5–2 тижні для стандартного набору форм сайту.