Разработка модуля интеграции с мессенджерами 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка модуля интеграции с мессенджерами 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка модуля интеграции с мессенджерами 1С-Битрикс

Покупатели всё чаще предпочитают получать уведомления о заказах в Telegram или WhatsApp, а не по email. Конверсия у таких уведомлений выше: сообщение приходит мгновенно, открывается в 5–10 раз чаще, чем email. Модуль интеграции с мессенджерами подключает эти каналы к событиям 1С-Битрикс.

Поддерживаемые мессенджеры

  • Telegram — через Bot API (простой, бесплатный, надёжный).
  • WhatsApp — через официальный Cloud API Meta или через сторонние провайдеры (WABA360, GreenAPI, Chat-API).
  • VK Notify — уведомления через VK Mini Apps API.
  • Viber — через Viber REST API.

Telegram реализуется в первую очередь — документация отличная, API стабильный, лимиты разумные (30 сообщений в секунду на бота).

Архитектура модуля

local/modules/vendor.messenger/
├── lib/
│   ├── Channel/
│   │   ├── TelegramChannel.php
│   │   ├── WhatsappChannel.php
│   │   └── ChannelInterface.php
│   ├── NotificationRouter.php   # Выбор канала для отправки
│   ├── TemplateEngine.php       # Шаблонизатор сообщений
│   └── SubscriptionManager.php  # Управление подписками
└── install/db/install.sql

Таблица b_messenger_subscription — привязка пользователей к каналам:

Поле Тип Назначение
ID int auto_increment
USER_ID int ID пользователя Битрикс
CHANNEL varchar(50) telegram, whatsapp, viber
CHANNEL_ID varchar(100) Chat ID в мессенджере
PHONE varchar(20) Телефон (для WhatsApp)
IS_ACTIVE tinyint(1) Активна ли подписка
CONFIRMED_AT datetime Когда подтверждена

Привязка Telegram-аккаунта

Пользователь в личном кабинете нажимает «Привязать Telegram» — система генерирует одноразовый код и ссылку https://t.me/yourbot?start=CODE123. Пользователь переходит в бота, отправляет /start CODE123. Бот через Webhook получает сообщение, находит запись по коду в таблице b_messenger_link_token и сохраняет chat_id в b_messenger_subscription.

local/modules/vendor.messenger/install/db/install.sql
CREATE TABLE b_messenger_link_token (
    TOKEN varchar(32) NOT NULL,
    USER_ID int NOT NULL,
    CHANNEL varchar(50) NOT NULL,
    EXPIRES_AT datetime NOT NULL,
    PRIMARY KEY (TOKEN)
);

Webhook для входящих сообщений

Telegram отправляет обновления на URL вида /api/telegram/webhook/. В Битрикс это обрабатывается через кастомный обработчик:

// local/api/telegram/webhook/index.php
$update = json_decode(file_get_contents('php://input'), true);

if (isset($update['message'])) {
    \Vendor\Messenger\TelegramWebhookHandler::handle($update);
}

Обработчик разбирает входящее сообщение: если это /start TOKEN — привязывает аккаунт. Если это текстовый запрос — передаёт в чат-логику (если реализован чат-бот для поддержки).

Отправка уведомлений

Уведомления привязываются к событиям Битрикс через почтовые события или напрямую через обработчики:

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'sale',
    'OnSaleStatusOrder',
    [NotificationRouter::class, 'onOrderStatusChange']
);

Метод onOrderStatusChange определяет нужный канал для пользователя, формирует сообщение из шаблона и отправляет. Для отправки в Telegram:

$response = \Bitrix\Main\Web\HttpClient::post(
    "https://api.telegram.org/bot{$token}/sendMessage",
    json_encode([
        'chat_id'    => $chatId,
        'text'       => $message,
        'parse_mode' => 'HTML',
    ]),
    ['Content-Type' => 'application/json']
);

Шаблоны сообщений

Шаблоны сообщений для каждого события и каждого канала хранятся в таблице b_messenger_template. Поддерживаются переменные в стиле {{order_id}}, {{status}}, {{tracking_number}}. Редактирование шаблонов доступно в административной части.

Для Telegram поддерживается HTML-форматирование (<b>, <i>, <a>). Для WhatsApp — только звёздочки для жирного (*text*).

Очередь отправки

Отправка в мессенджеры выполняется асинхронно через очередь в таблице b_messenger_queue. Это защищает от блокировки основного процесса при сетевых задержках API мессенджера и позволяет повторить отправку при временной ошибке:

Поле Тип Назначение
ID int auto_increment
CHANNEL varchar(50) Канал
CHANNEL_ID varchar(100) Получатель
MESSAGE text Текст сообщения
ATTEMPTS tinyint Попыток отправки
STATUS enum PENDING, SENT, FAILED
NEXT_ATTEMPT_AT datetime Когда следующая попытка

Cron-задача каждую минуту обрабатывает очередь, повторяет неудачные попытки с экспоненциальной задержкой.

Сроки разработки

Масштаб Состав Срок
Базовый Telegram, привязка аккаунта, уведомления о заказе 5–7 дней
Стандартный + WhatsApp, шаблоны в Admin UI, очередь, 5–7 событий 10–14 дней
Расширенный + VK/Viber, входящие сообщения, чат-бот для поддержки, аналитика 18–25 дней