Интеграция Битрикс24 с Slack: двусторонняя синхронизация за 2–3 недели
Команда работает в Slack, а руководство завело Битрикс24 для CRM и задач. Через неделю начинается хаос: уведомления о сделках теряются в Slack-каналах, задачи дублируются вручную, а половина переписки происходит в мессенджере, где CRM её не видит. Мы сталкивались с этим десятки раз — ручная синхронизация гарантированно приводит к потере информации и раздражению сотрудников. Наша интеграция под ключ решает проблему за 2–3 недели. Мы уже реализовали более 60 проектов для компаний из разных отраслей, и каждая интеграция сокращает время на обработку лидов на 30–40%.
Как настроить двустороннюю синхронизацию?
Связка строится через webhook-механизм: Битрикс24 отправляет исходящие вебхуки при событиях в CRM, задачах и чатах, а Slack принимает их через Incoming Webhooks или Slack App с подпиской на события. Между ними — middleware-сервер, который маршрутизирует данные, трансформирует форматы и обрабатывает логику. Без middleware прямое соединение ненадёжно: форматы payload различаются (form-urlencoded vs JSON Block Kit), а единая точка обработки ошибок отсутствует.
Схема потока данных:
Б24 (событие) → Outbound Webhook → Middleware → Slack Incoming Webhook → канал/DM
Slack (команда/событие) → Slack Events API → Middleware → Б24 REST API → CRM/задачи/чат
Middleware преобразует application/x-www-form-urlencoded в JSON с Block Kit-разметкой и добавляет бизнес-логику — например, подстановку имён ответственных через user.get.
Маршрутизация уведомлений
Ключевая задача — доставлять уведомления из Б24 в нужные Slack-каналы, а не сваливать всё в один поток. Настраиваем маппинг:
| Событие в Б24 | Slack-канал | Формат |
|---|---|---|
| Новый лид в CRM | #sales-leads |
Карточка с именем, источником, ответственным |
| Смена стадии сделки | #sales-pipeline |
Уведомление с суммой и новым этапом |
| Новая задача в проекте | #project-{название} |
Ссылка на задачу, дедлайн, исполнитель |
| Комментарий в задаче | DM исполнителю | Текст комментария + ссылка |
| Пропущенный звонок | #calls |
Номер, время, привязанная сделка |
Для каждого типа событий в Б24 регистрируется обработчик через event.bind. Middleware получает payload, определяет тип события, подтягивает дополнительные данные через REST API (например, имя ответственного через user.get) и формирует Slack-сообщение с Block Kit-блоками.
Маппинг каналов на чаты Б24
Обратная синхронизация: сообщения из Slack-каналов транслируются в групповые чаты Б24. Это нужно, чтобы сотрудники, которые не используют Slack, видели обсуждения в привычном интерфейсе. Техническая реализация:
- Slack App подписывается на события
message.channelsчерез Events API. - При новом сообщении в маппированном канале middleware получает payload.
- Middleware отправляет сообщение в соответствующий чат Б24 через
im.message.add, указываяSYSTEM_IDдля идентификации источника. - Имя автора из Slack передаётся в префиксе сообщения — в Б24 видно, кто написал.
Обратное направление: при новом сообщении в чате Б24 срабатывает событие ONIMBOTMESSAGEADD (если в чат добавлен бот-мост). Middleware пересылает текст в привязанный Slack-канал.
Важно: файлы и изображения передаются через временные ссылки. Middleware скачивает файл из одной системы, загружает в другую через соответствующий API (
files.uploadдля Slack,disk.file.uploadtofolderдля Б24).
Slash-команды и бот в Slack
Регистрируем Slack-команды, которые обращаются к Б24:
-
/b24-lead Компания | Комментарий— создаёт лид в CRM черезcrm.lead.add. Возвращает ссылку на созданный лид. -
/b24-task Название | Описание | @исполнитель— создаёт задачу черезtasks.task.add. Ищет пользователя в Б24 по email, привязанному к Slack-аккаунту. -
/b24-deal ID— показывает информацию о сделке: стадия, сумма, ответственный, следующая активность. -
/b24-status— выводит сводку: количество лидов за сегодня, открытые задачи пользователя, пропущенные звонки.
Каждая команда отправляет POST-запрос на middleware. Middleware аутентифицирует пользователя (маппинг Slack User ID → Б24 User ID через таблицу соответствий), выполняет запрос к REST API Б24 и возвращает ответ в Slack как ephemeral message (видит только автор команды) или in-channel message.
Маппинг пользователей
Для корректной работы нужна таблица соответствий пользователей. Два подхода:
-
По email. Middleware сопоставляет email из Slack-профиля с email пользователя в Б24 (через
user.getс фильтром). Работает автоматически, если email совпадают. - Ручная привязка. Администратор задаёт пары через интерфейс middleware. Нужно, когда email различаются или один человек использует несколько аккаунтов.
Без маппинга бот не сможет создавать задачи от имени правильного пользователя и направлять персональные уведомления.
Почему необходим middleware-сервер?
Slack и Б24 — внешние сервисы. Оба могут быть недоступны. Middleware использует очередь сообщений (Redis или RabbitMQ):
- Если Slack не ответил за 3 секунды — сообщение уходит в retry-очередь с экспоненциальной задержкой.
- Если Б24 вернул ошибку
QUERY_LIMIT_EXCEEDED(лимит 2 запроса в секунду на REST API) — middleware выдерживает паузу и повторяет. - Все неотправленные сообщения сохраняются и обрабатываются при восстановлении связи.
Логирование: каждый запрос фиксируется с timestamp, типом события, статусом доставки. Администратор видит очередь и ошибки в панели middleware.
Сравнение: интеграция через middleware vs прямой webhook
| Критерий | Middleware-сервер | Прямой webhook |
|---|---|---|
| Надёжность | Очередь + retry | Нет гарантии доставки |
| Трансформация данных | Конвертация форматов, обогащение | Только один формат |
| Безопасность | Проверка подписей, OAuth, HTTPS | Только базовая аутентификация |
| Масштабирование | Легко добавлять новые события | Хаос при росте числа уведомлений |
Middleware в 5 раз надёжнее прямого моста — меньше потерянных сообщений, выше скорость реакции на сбои.
Что входит в работу
Мы предоставляем полный пакет:
- Middleware-сервер для двусторонней синхронизации Битрикс24 и Slack
- Маршрутизация уведомлений CRM, задач и звонков в Slack-каналы
- Двусторонняя синхронизация сообщений между чатами Битрикс24 и каналами Slack
- Slash-команды для работы с CRM и задачами прямо из Slack
- Маппинг пользователей между системами
- Очередь сообщений с retry-механизмом и логированием
- Документация и обучение сотрудников
- Техническая поддержка на 30 дней после запуска
Детали реализации middleware
Middleware написан на PHP 8.1+, использует guzzlehttp/guzzle для HTTP-запросов, vlucas/phpdotenv для конфигурации. Очередь строится на Redis через predis/predis. Логирование через Monolog. Весь код проходит автоматическое тестирование (PHPUnit, 90% покрытие).
Безопасность
- Slack Signing Secret — middleware проверяет подпись каждого входящего запроса, чтобы исключить подмену.
- Б24 webhook-токены — доступ к REST API через OAuth 2.0 с ограниченными scope (только нужные методы).
- Middleware доступен только по HTTPS.
- Данные CRM (имена клиентов, суммы сделок) проходят через ваш сервер — никаких сторонних посредников.
Наш опыт
Более 8 лет мы занимаемся интеграциями Битрикс24. Выполнили 60+ проектов для e-commerce, производства, услуг. Средняя экономия времени клиентов — 20 часов в месяц на ручной синхронизации. Работаем с компаниями от 10 до 500 сотрудников.
Оценим ваш проект за 1 день. Просто свяжитесь с нами — предложим решение под ключ с гарантией 30 дней технической поддержки после запуска.







