Настройка транзакционных уведомлений в мессенджеры 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 Appointment Booking Widget for a Medical Center
    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 на https://yourdomain/rest/imconnector.register — регистрация коннектора. Интеграция с 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 недель

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