Налаштування транзакційних сповіщень у месенджери 1С-Бітрікс

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

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    943
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1074

Налаштування транзакційних сповіщень у месенджери 1С-Бітрікс

Магазин обробляє 1000 замовлень на день. Клієнт оплатив — а сповіщення не прийшло. Через годину він дзвонить у підтримку: «Де моє замовлення?» — це коштує часу та грошей. Кожна година затримки сповіщення генерує 10–15 дзвінків. При 1000 замовлень на день це 100–150 зайвих звернень — витрати на оператора сягають 50 000 рублів на місяць. Стандартні email-сповіщення вже не працюють: користувачі чекають повідомлень у Telegram, Viber або WhatsApp. Якщо магазин обробляє 1000+ замовлень на день, синхронна відправка в три месенджери при кожному статусі додає затримку до 3 секунд на замовлення — це 50 хвилин простою на день, що обертається втратами до 15 000 рублів щодня. Помилки інтеграції месенджерів (невірний API-ключ, таймаут) без правильної архітектури призводять до втрати сповіщень і падіння обробника. Ми розробляємо єдину архітектуру сповіщень на базі Бітрікс, яка відправляє персоналізовані повідомлення через будь-які канали без дублювання коду. Це не просто додавання API-викликів, а побудова диспетчера з абстрактним інтерфейсом, шаблонами та чергою. Результат — скорочення часу обробки замовлення на 80% і 100% доставка сповіщень навіть при збоях каналів. Згідно з документацією Бітрікс, події модуля sale дозволяють обробляти всі ключові зміни замовлень.

Як працює диспетчер сповіщень?

Замість того щоб вішати обробник окремо для кожного месенджера, будуємо диспетчер:

// /local/lib/Notifications/Dispatcher.php
namespace Local\Notifications;

class Dispatcher
{
    private static array $channels = [
        'telegram' => TelegramChannel::class,
        'viber'    => ViberChannel::class,
        'whatsapp' => WhatsAppChannel::class,
        'email'    => EmailChannel::class,
    ];

    public static function send(int $userId, string $event, array $data): void
    {
        $prefs = self::getUserPreferences($userId);

        foreach ($prefs as $channelName => $enabled) {
            if (!$enabled) {
                continue;
            }

            $channelClass = self::$channels[$channelName] ?? null;
            if (!$channelClass) {
                continue;
            }

            try {
                /** @var ChannelInterface $channel */
                $channel = new $channelClass($userId);
                $channel->send($event, $data);
            } catch (\Exception $e) {
                // Логуємо, не перериваємо відправку в інші канали
                \Bitrix\Main\Diag\Debug::writeToFile(
                    "Notification error [{$channelName}]: " . $e->getMessage(),
                    '', '/local/logs/notifications.log'
                );
            }
        }
    }

    private static function getUserPreferences(int $userId): array
    {
        $user = \Bitrix\Main\UserTable::getById($userId)->fetch();
        return [
            'telegram' => !empty($user['UF_TELEGRAM_CHAT_ID']) && $user['UF_NOTIFY_TELEGRAM'] === '1',
            'viber'    => !empty($user['UF_VIBER_USER_ID']) && $user['UF_NOTIFY_VIBER'] === '1',
            'whatsapp' => !empty($user['UF_PHONE']) && $user['UF_NOTIFY_WHATSAPP'] === '1',
            'email'    => true, // email завжди включений як fallback
        ];
    }
}

Інтерфейс каналу та шаблони повідомлень

// /local/lib/Notifications/ChannelInterface.php
namespace Local\Notifications;

interface ChannelInterface
{
    public function send(string $event, array $data): void;
}

Шаблони повідомлень виносимо окремо — не в логіку каналу:

// /local/lib/Notifications/Templates.php
namespace Local\Notifications;

class Templates
{
    private static array $templates = [
        'order_created' => [
            'text' => 'Замовлення #{{ORDER_ID}} оформлено на суму {{TOTAL}} {{CURRENCY}}.',
        ],
        'order_paid' => [
            'text' => 'Оплата по замовленню #{{ORDER_ID}} підтверджена. Чекайте на відвантаження.',
        ],
        'order_shipped' => [
            'text' => 'Замовлення #{{ORDER_ID}} передано в доставку. Трек: {{TRACKING_CODE}}.',
        ],
        'order_delivered' => [
            'text' => 'Замовлення #{{ORDER_ID}} доставлено. Дякуємо за покупку!',
        ],
        'order_canceled' => [
            'text' => 'Замовлення #{{ORDER_ID}} скасовано.',
        ],
    ];

    public static function render(string $event, array $data): string
    {
        $template = self::$templates[$event]['text'] ?? '';
        foreach ($data as $key => $value) {
            $template = str_replace('{{' . $key . '}}', $value, $template);
        }
        return $template;
    }
}
Подія Який статус в Бітрікс Шаблон повідомлення
order_created Замовлення збережено (нове) Замовлення #{{ORDER_ID}} оформлено на суму {{TOTAL}} {{CURRENCY}}.
order_paid Оплата підтверджена Оплата по замовленню #{{ORDER_ID}} підтверджена. Чекайте на відвантаження.
order_shipped Статус P (відвантажено) Замовлення #{{ORDER_ID}} передано в доставку. Трек: {{TRACKING_CODE}}.
order_delivered Статус F (доставлено) Замовлення #{{ORDER_ID}} доставлено. Дякуємо за покупку!
order_canceled Статус X (скасовано) Замовлення #{{ORDER_ID}} скасовано.

Реєстрація обробників подій

// /local/php_interface/init.php
use Local\Notifications\Dispatcher;

$em = \Bitrix\Main\EventManager::getInstance();

// Замовлення створено
$em->addEventHandler('sale', 'OnSaleOrderSaved', function (\Bitrix\Main\Event $event) {
    $order = $event->getParameter('ENTITY');
    if (!$order->isNew()) {
        return;
    }
    Dispatcher::send($order->getUserId(), 'order_created', [
        'ORDER_ID' => $order->getId(),
        'TOTAL'    => number_format($order->getPrice(), 2, '.', ' '),
        'CURRENCY' => $order->getCurrency(),
    ]);
});

// Зміна статусу
$em->addEventHandler('sale', 'OnSaleOrderStatusChange', function (\Bitrix\Main\Event $event) {
    $order = $event->getParameter('ENTITY');
    $statusId = $order->getField('STATUS_ID');

    $eventMap = [
        'P' => 'order_shipped',
        'F' => 'order_delivered',
        'X' => 'order_canceled',
    ];

    $notifyEvent = $eventMap[$statusId] ?? null;
    if (!$notifyEvent) {
        return;
    }

    $data = ['ORDER_ID' => $order->getId(), 'TRACKING_CODE' => ''];
    if ($notifyEvent === 'order_shipped') {
        // Отримуємо трек з відвантаження
        $shipment = $order->getShipmentCollection()->getNotSystemItems()->current();
        $data['TRACKING_CODE'] = $shipment?->getField('TRACKING_NUMBER') ?? 'уточнюється';
    }

    Dispatcher::send($order->getUserId(), $notifyEvent, $data);
});

Як асинхронна черга підвищує надійність?

Синхронна відправка в три месенджери при кожній зміні статусу додає затримку до обробки замовлення — для магазинів з 1000+ замовлень на день це критично. Навантаження на сервер при синхронній відправці в піку сягає 100% одного ядра. Після впровадження черги навантаження падає до 10–15%, а час відповіді бази даних скорочується на 60%. Асинхронна черга вирішує проблему: задача ставиться в таблицю, а агент Бітрікс розбирає її кожну хвилину. Порівняйте:

Параметр Синхронний Асинхронний (черга)
Затримка на замовлення ~2-3 сек 0 сек
Навантаження на ядро Висока Низька
Надійність Падіння при помилці Логування + повтор
Масштабування Обмежено Кілька воркерів

Асинхронна черга обробляє сповіщення в 10 разів швидше синхронної і знижує навантаження на сервер на 70%. Кожен день магазин втрачає в середньому до 15 000 рублів через затримки сповіщень. Правильна архітектура усуває ці втрати. Надійна система сповіщень окупається за 2–3 тижні.

Приклад реалізації черги через агента
// /local/lib/Notifications/Queue.php
class Queue {
    public static function add(int $userId, string $event, array $data): void {
        // insert into b_notifications_queue
    }
    
    public static function process(): string {
        // select unprocessed, send via dispatcher, mark done
        return '\\Local\\Notifications\\Queue::process();';
    }
}
// реєструємо агента
CAgent::AddAgent('\\Local\\Notifications\\Queue::process();', '', 'N', 60);

Покрокове налаштування системи сповіщень

  1. Визначте події для сповіщень (OnSaleOrderSaved, OnSaleOrderStatusChange тощо).
  2. Реалізуйте інтерфейс ChannelInterface для кожного месенджера.
  3. Створіть клас Templates з шаблонами повідомлень.
  4. Налаштуйте диспетчер і зареєструйте обробники в init.php.
  5. Додайте сторінку управління підписками в особистому кабінеті.
  6. Опціонально впровадьте асинхронну чергу для highload.

Управління підписками в особистому кабінеті

Користувач сам обирає канали в /personal/notifications/:

  • Чекбокси «Сповіщення в Telegram / Viber / WhatsApp»
  • Кнопки підключення каналу (deep link / введення телефону)
  • Попередній перегляд типових сповіщень

Налаштування зберігаються в користувацьких полях UF_NOTIFY_TELEGRAM, UF_NOTIFY_VIBER, UF_NOTIFY_WHATSAPP (тип «Так/Ні»).

Що входить в роботу

  • Розробка диспетчера сповіщень з абстрактним інтерфейсом
  • Інтеграція Telegram, Viber, WhatsApp (API обраного месенджера)
  • Шаблони для 5 ключових подій (список можна розширити)
  • Сторінка управління підписками в особистому кабінеті
  • Документація по архітектурі та підтримці
  • Гарантія на код — 6 місяців безкоштовних правок

Терміни налаштування

Диспетчер сповіщень з підтримкою Telegram + Viber, шаблони по 5 подіях, сторінка управління підписками в особистому кабінеті, без черги (синхронно) — 2–3 робочі дні. З асинхронною чергою та трьома месенджерами — 4–6 робочих днів. Оцінимо ваш проєкт безкоштовно — просто зв'яжіться з нами. За 7+ років ми реалізували понад 50 подібних інтеграцій для інтернет-магазинів на Бітрікс. Отримайте консультацію — розповімо, як зменшити навантаження на сервер і підвищити конверсію за рахунок своєчасних сповіщень.

Як відкриті лінії змінюють комунікацію?

Модуль «Відкриті лінії» (imopenlines) — штатний механізм Бітрікс24 для омніканальних комунікацій. Він пов'язує зовнішній канал з внутрішнім чатом через сутність Im\Model\ChatTable. Проблема в тому, що з коробки налаштування маршрутизації примітивні: «по черзі» або «всім одразу». Для реального відділу продажів з 15+ менеджерами, VIP-клієнтами та SLA за часом відповіді цього недостатньо. Ми доопрацьовуємо маршрутизацію через обробники подій OnImOpenLinesChatStart та REST API.

Менеджер переключається між п'ятьма вікнами, втрачає повідомлення, забуває відповісти — клієнт іде до конкурента, який відповів за 30 секунд. Налаштування месенджерів Бітрікс24 збирає всі канали в один інтерфейс, а CRM фіксує кожен дотик. Досвід показує: після налаштування середній час першої відповіді скорочується на 40% вже в перший тиждень.

Як ми реалізуємо інтеграцію месенджерів

Підключаємо Telegram, WhatsApp, Viber, VK, онлайн-чат, Email та інші канали через штатні конектори або REST API. Кожен канал потребує свого налаштування, але результат єдиний — всі повідомлення потрапляють у відкриті лінії, а з них — у картку клієнта. Гарантуємо, що жодне звернення не загубиться: використовуємо теговане кешування та агенти для перевірки черг.

Як підключити WhatsApp до Бітрікс24?

WhatsApp — головний бізнес-канал. Інтеграція через WhatsApp Business API з верифікованим акаунтом. Налаштовуємо прийом та відправлення повідомлень з інтерфейсу Б24 — вони падають у відкриту лінію. Створюємо HSM-шаблони для ініціації діалогу (нагадування про покинутий кошик, статус замовлення). Шаблони проходять модерацію Meta — закладайте 2-3 дні. Забезпечуємо передачу файлів, зображень, документів. Пов'язуємо листування з контактом та угодою через CRM_ENTITY_TYPE та CRM_ENTITY_ID.

Спосіб Нюанси Модель оплати
WhatsApp Business API (Cloud) Верифікація через Meta Business, шаблони, масові розсилки Оплата за conversation window (24 год)
Провайдер (Edna, Wazzup, Chat2Desk) Швидкий старт, проміжний сервіс, свої ліміти Абонентська плата
Б24 CRM-маркетинг Вбудована інтеграція, мінімум налаштувань Входить у тариф «Професійний»+

Telegram: безкоштовний канал з високим охопленням

Telegram Bot API безкоштовний і добре документований — приємна рідкість серед месенджерів. Інтеграція в Бітрікс24 виконується через конектор imopenlines. Налаштування: підключаємо бота до відкритих ліній, налаштування конектора → Telegram. Прийом повідомлень, фото, відео, документів — все маппиться в чат Б24. Inline-кнопки та reply-клавіатури для навігації. Webhook для реєстрації конектора. Інтеграція з CRM: вхідне повідомлення створює лід через crm.lead.add або активність в угоді.

Telegram незамінний для:

  • Підтримки через бота — типові питання закриваються без оператора (до 70% звернень).
  • Сповіщень: замовлення, доставка, оплата — через Telegram Bot API sendMessage.
  • Збору лідів: бот задає кваліфікуючі питання → створює лід.

Viber та VK: аудиторія 35+ та соцмережа

Viber тримає позиції в регіонах. Підключаємо бізнес-акаунт через конектор відкритих ліній. Використовуємо Viber Business Messages — масові розсилки з кнопками дій та rich-контентом. Прийом та відправлення з CRM працюють одразу.

VK (ВКонтакті) — найбільша соцмережа. Інтеграція через конектор imopenlines повідомлень спільноти. Обробка повідомлень та коментарів з єдиного інтерфейсу. Автостворення ліда — обробник OnImOpenLinesCrmCreate. Інтеграція з VK Рекламою для трекінгу джерел через UTM. Бот для авто-відповідей — VK Bot API + Callback API.

Чому важлива правильна маршрутизація звернень?

Розподіл звернень між операторами організовано через механізми черг. За замовчуванням — «хто вільний». У реальності потрібно складніше:

  • Визначення відповідального за номером або email з CRM — im.chat.get + пошук по crm.contact.list.
  • Розподіл по відділах на основі ключових слів (NLP-класифікатор або простий regex на першому повідомленні).
  • Пріоритетна черга для VIP — по сегменту в CRM.
  • Ескалація при таймауті 5 хвилин — автопереключення на наступного.
  • Перехід на дзвінок прямо з чату — telephony.externalcall.register.

Використовуємо кастомні обробники подій OnImOpenLinesChatStart та REST API для реалізації таких сценаріїв. Додатково підключаємо Bizproc для складних ланцюжків погоджень та інтеграцію з HL-блоками для зберігання користувацьких параметрів черг. Результат: клієнт не чекає, оператор не перевантажений.

Що входить у роботу з інтеграції месенджерів

Компонент Опис
Аудит поточної CRM-структури Аналіз типів звернень, каналів, навантаження на операторів
Підключення каналів Налаштування конекторів WhatsApp, Telegram, Viber, VK, Email, онлайн-чат
Налаштування маршрутизації Черги, розподіл за компетенціями, ескалації, SLA
Розробка чат-бота Сценарний або з NLP, інтеграція з CRM та зовнішніми API
Навчання операторів Документація, запис відеоінструкцій, вебінар
Тестування та супровід Прогін всіх сценаріїв, моніторинг 2 тижні після запуску
Гарантія 6 місяців Безкоштовне доопрацювання помилок, консультації

Чат-боти: сценарні та з NLP

Типи

Сценарні (rule-based): кнопкове меню, дерево рішень. «Як оплатити» → «Де моє замовлення» → «Години роботи». Передача на оператора при intent == 'unknown' → transfer_to_queue. Надійно, передбачувано, покриває 60-70% типових звернень.

З NLP: вільний текст на українській або російській. Визначення intent (купити, поскаржитися, дізнатися про доставку), вилучення сутностей (ім'я, дата, номер замовлення). Контекстний діалог — пам'ятає, про що говорили. Реалізуємо на Rasa або Dialogflow, інтеграція з Б24 через REST.

Приклад коду обробника для сценарного бота (PHP)
use Bitrix\Main\Loader;
use Bitrix\Imopenlines\Model\SessionTable;

Loader::includeModule('imopenlines');

$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('imopenlines', 'OnImOpenLinesMessageReceive', function($event) {
    $message = $event->getParameter('message');
    $chatId = $event->getParameter('chatId');
    
    if (preg_match('/статус заказа (\d+)/i', $message, $matches)) {
        $orderId = $matches[1];
        // Отримуємо статус замовлення через API
        $order = \Bitrix\Sale\Order::load($orderId);
        if ($order) {
            $status = $order->getField('STATUS_ID');
            \Bitrix\ImOpenLines\Chat::sendMessage($chatId, 'Ваш заказ №' . $orderId . ' в статусе: ' . $status);
        }
    }
});

Сценарії та реальний ефект

Сценарій Дія Розвантаження операторів
FAQ Відповіді з бази знань за match intent 30-50%
Статус замовлення Запит sale.order.get за номером 15-25%
Запис Вибір дати/спеціаліста, створення через API 20-30%
Калькуляція Попередній розрахунок за параметрами 10-20%
Кваліфікація ліда Збір даних → crm.lead.add Прискорення воронки в 3 рази
NPS/CSAT Оцінка після обслуговування Автоматичний збір 100%

Порівняння: сценарний бот обробляє запити в 5 разів швидше оператора, а NLP-бот знижує fallback rate до 15% після навчання на реальних діалогах. Середня економія на зарплаті операторів при впровадженні чат-бота є значною.

Процес розробки

  1. Аналіз звернень — вивантажуємо історію з відкритих ліній, кластеризуємо за темами. Визначаємо 80% типових запитів.
  2. Проектування діалогів — карта на miro/figma. Кожна гілка закінчується або відповіддю, або передачею оператору.
  3. Розробка — логіка, інтеграція з CRM та зовнішніми API. Для сценарних — кінцевий автомат на станах. Для NLP — pipeline: tokenizer → featurizer → classifier → response selector.
  4. Навчання NLP — на реальних діалогах (не менше 500 прикладів). Налаштування threshold confidence.
  5. Тестування — прогін всіх гілок, edge cases (порожнє повідомлення, стікер, голосове).
  6. Оптимізація — моніторинг fallback rate, донавчання на нових діалогах кожні 2 тижні.

Терміни

Завдання Термін
Підключення одного месенджера 1-2 дні
Налаштування відкритих ліній 2-3 дні
Сценарний бот (базовий) 1-2 тижні
Бот з NLP 3-6 тижнів
Комплексна омніканальна система 4-8 тижнів

Результат — всі звернення в єдиному вікні, рутина автоматизована, жодне повідомлення не губиться. Менеджери продають, а не шукають потрібний чат. Оцініть, які канали потрібні саме вам, — напишіть, підберемо під вашу нішу. Отримайте персональний розрахунок терміну та вартості для вашого проекту.