// модуль платформы · MBC Notify

Шлюз уведомлений: Telegram и почта через один API

Собственный сервис студии. Любая система отправляет сообщение одним запросом, а шлюз сам доставляет его человеку, в рабочий чат, в канал или на почту — с очередью, повторами и расписанием.

тип
Модуль платформы MBC
каналы
Telegram · электронная почта
подключение
один запрос по API

путь сообщения

Путь сообщения через MBC NotifyСервисы отправляют сообщения в MBC Notify. Шлюз проверяет запрос, ставит сообщение в очередь и доставляет его: личным сообщением в Telegram, в группу, в канал или письмом. В окнах получателей появляются сами сообщения. ваши сервисы Интернет-магазинзаказы и оплаты CRMсроки и напоминания Сервис сверкисводки и отчёты шлюзMBC Notify Проверкаключ, права и адрес Очередьповторы и отложенная отправка Отправкас учётом лимитов каналов telegram · личные ждёт сообщение Новый заказ №1042 на 12 400 ₽ Завтра срок сдачи заказа №87 telegram · группа ждёт сообщение Сводка: 14 расхождений за день Заказ №1043 ждёт подтверждения telegram · канал ждёт сообщение Новая статья: обзор ноутбуков Скидки дня: 5 новых товаров электронная почта ждёт сообщение Счёт на оплату №318 Отчёт по сверке за неделю ваши сервисы Интернет-магазинзаказы и оплаты CRMсроки и напоминания Сервис сверкисводки и отчёты шлюзMBC Notify Проверкаключ, права и адрес Очередьповторы и отложенная отправка Отправкас учётом лимитов каналов куда приходит telegram · личные ждёт сообщение Новый заказ №1042 на 12 400 ₽ Завтра срок сдачи заказа №87 telegram · группа ждёт сообщение Сводка: 14 расхождений за день Заказ №1043 ждёт подтверждения telegram · канал ждёт сообщение Новая статья: обзор ноутбуков Скидки дня: 5 новых товаров электронная почта ждёт сообщение Счёт на оплату №318 Отчёт по сверке за неделю
Сервису не нужно знать, как устроены боты и почтовые серверы: он отдаёт сообщение шлюзу и получает номер, по которому видно, доставлено ли оно.
01 / задача

Уведомления нужны каждому проекту — и каждый раз их пишут заново

Магазин сообщает менеджеру о заказе, CRM напоминает о сроке, сервис сверки присылает сводку за день. Почти любая система должна что-то сообщать людям.

Если делать это в каждом проекте отдельно, приходится снова решать одни и те же задачи:

  • подключать бота и привязывать к нему людей;
  • повторять отправку, если Telegram или почта временно недоступны;
  • не превышать лимиты, чтобы бота не заблокировали;
  • хранить историю: что отправлено, кому и дошло ли.

MBC Notify решает это один раз. Новый проект подключается к готовому шлюзу и не тратит на уведомления время разработки.

02 / журнал доставки

У каждого сообщения видно, что с ним сейчас и почему

журнал доставки проектаданные условные
статусканаладресатпопыткиошибкасоздан
ДоставленоTelegramМенеджер сменыличный чат109:00:02
ДоставленоTelegramЧат «Заказы»группа209:00:04
ОшибкаTelegramПокупатель 318личный чат1бот заблокирован получателем09:00:07
ДоставленоПочтаБухгалтерияписьмо со счётом209:02:11
В очередиTelegramМастер участкаличный чат0отправка назначена на 18:0009:05:40
ОтмененоПочтаКлиент 77напоминание об оплате0снято до отправки09:06:15
история доставкивыделенная строка
отправитель
API-ключ «магазин»
ключ запроса
order-1042-paid
  1. Принято. Ключ, права и привязка чата проверены, сервис получил номер сообщения.
  2. Попытка 1 — ошибка, назначен повтор. Telegram не ответил. Следующая попытка через минуту.
  3. Попытка 2 — доставлено. Сервису ушло событие об успешной доставке.
действия оператораПовторить отправкуОтменитьОтправить копию
Канал временно недоступен
До пяти попыток с паузами 1, 2, 4 и 8 минут. Каждая попытка остаётся в истории.
Telegram просит подождать
Шлюз ждёт столько, сколько указано в ответе, и отправляет снова.
Сервис повторил тот же запрос
По ключу запроса возвращается прежнее сообщение. Второе не создаётся.
Человек заблокировал бота
Повторов нет: привязка помечается, сервис получает событие.
Отправка больше не нужна
Отложенное или ждущее повтора сообщение можно отменить, пока шлюз не начал его передавать.
В запросе ошибка
Отказ приходит сразу: нет получателя, нет привязки, слишком длинная подпись. В очередь попадает только то, что можно доставить.
03 / сообщение

Что отправляет сервис и что видит человек

POST /api/v1/notifications
X-Api-Key: mbcn_…
Idempotency-Key: order-1042-paid

{ "channelId": "…",
  "to": { "recipientExternalId": "orders-chat" },
  "content": { "telegram": {
    "text": "<b>Заказ №1042 оплачен</b>\n12 400 ₽, курьером",
    "parseMode": "HTML",
    "photoUrl": "https://…/1042.png",
    "buttons": [
      { "text": "Открыть заказ", "url": "https://…" },
      { "text": "Трек доставки", "url": "https://…" } ] } },
  "sendAt": "…T09:00:00Z" }
telegram · группа «Заказы»
изображение по ссылке

Заказ №1042 оплачен
12 400 ₽, курьером

Открыть заказ ↗Трек доставки ↗
  • текст с разметкой HTML или Markdown
  • изображение с подписью
  • до 10 кнопок-ссылок
электронная почта
от Магазин <shop@example.com>
тема Счёт на оплату №318

Здравствуйте! Счёт во вложении, оплатить можно до пятницы.

invoice-318.pdf
  • тема, HTML и текстовая версия письма
  • вложения, до 10 МБ на письмо
  • у каждого проекта свой почтовый ящик

Адресат в запросе — идентификатор из вашей системы: шлюз сам находит по нему чат или почту. Поле sendAt откладывает отправку на нужное время. Отметка «доставлено» у письма означает, что его принял почтовый сервер.

04 / получатели

Сервис знает человека по своему идентификатору

Как человек подключает Telegram

  1. Сервис просит у шлюза ссылку на бота. Она одноразовая и действует 15 минут.
  2. Человек открывает её и нажимает «Запустить». Кодов и паролей нет.
  3. Шлюз связывает чат с получателем и сообщает об этом сервису.
получатель · человек
user-42
имя
Алиса
почта
alice@example.com
telegram
привязка активнапо ссылке, с 10:03

Состояния привязки

Активна
можно писать
Бот заблокирован
отправка отклоняется сразу
Отозвана
бота удалили из чата
Не разобрана
чат известен, получатель ещё не назначен

Повторная ссылка перепривязывает человека, если он сменил аккаунт. Группу или канал подключают иначе: бота добавляют в чат, а оператор в консоли назначает этому чату получателя. Отвязка по запросу сервиса снимает привязку полностью: чтобы писать снова, нужна новая ссылка.

05 / каналы

Публикации в Telegram-канале по расписанию

пн

Новинки неделиопубликован

вт

Обзор ноутбукаопубликован, текст исправлен

ср

Скидки дняне вышел: картинка недоступна. Возвращён в черновики
Итоги розыгрышаудалён из канала

чт · сегодня

Подборка наушниковзапланирован

пт

Анонс распродажизапланирован, перенесён с четверга

сб

Гид по подаркамчерновик

вс

постов нет

Пост можно править и после выхода: изменение сразу уходит в Telegram. У поста с фотографией меняются подпись и кнопки. По каждому посту хранится история: кто его запланировал, перенёс или исправил. Число подписчиков канала шлюз записывает раз в сутки и показывает график. Названия постов условные.

06 / обратная связь

Шлюз сам сообщает сервису, что произошло

Сервис подписывается на нужные события и получает их на свой адрес. Каждое событие подписано. Если сервис не ответил, шлюз повторяет доставку до пяти раз.

RECIPIENT_ACTIVATED
человек подключил Telegram
NOTIFICATION_SENT · FAILED · CANCELLED
итог доставки и код причины отказа
BINDING_BLOCKED · REVOKED
бота заблокировали или удалили из чата
GROUP_JOINED
бота добавили в группу или канал
INCOMING_MESSAGE
человек написал боту
MESSAGE_REACTION
на пост поставили реакцию
PUBLICATION_PUBLISHED · DELETED
пост вышел или удалён

Те же события видны оператору в консоли: лента с фильтром по каналу, периоду и получателю. На главном экране проекта собрано то, что требует внимания: канал с неудачной последней доставкой, неразобранные чаты, адрес сервиса, который не принимает события.

07 / где работает

Модуль уже встроен в проекты студии

Система сверки с поставщиками присылает через него ежедневные сводки расхождений и мгновенные уведомления в Telegram. Платформа автопубликации статей оповещает операторов, если источник новостей замолчал.

Когда мы начинаем новый проект, уведомления в нём уже есть: их нужно только настроить. Это часть платформы, с которой стартует разработка.

08 / как подключить

Модуль подключаем по вашему желанию

вариант 1 · с поддержкой студии

Всё включено — интеграции на нас

Если вы остаётесь с нами на поддержке, модули платформы уже входят в проект. Уведомления, вход, ИИ-сервис и кабинет работают с первого дня, и вам не нужно в них разбираться.

  • сами следим за интеграциями и обновляем их
  • узнаём о сбое раньше вас и чиним без запроса
  • запуск быстрее: проект стартует с рабочей основы
  • один подрядчик отвечает за всё целиком
вариант 2 · независимая система

Полностью ваша — без привязки к студии

Если вы планируете дальше развивать и поддерживать сервис своей командой, соберём его автономным: без модулей нашей платформы и без зависимости от нас.

  • размещение на вашей инфраструктуре
  • исходный код и документация передаются вам
  • нужные функции встроены в саму систему
  • сопровождать сможет любая команда разработки

Модули платформы — возможность, а не условие. Формат обсуждаем до начала работ и закрепляем в предложении.

09 / под капотом
стек: Java 21, Spring Boot · PostgreSQL · React, TypeScript
очередь: в базе данных, без отдельного брокера — меньше частей, которые могут сломаться
доступы: у каждого проекта свои ключи с набором прав и списком разрешённых каналов
безопасность: токены ботов и почтовые пароли зашифрованы в базе, исходящие события подписаны
консоль: проверка канала без отправки, тестовое сообщение, статистика по дням и каналам
хранение: тексты сообщений можно стирать через заданный срок, статусы и статистика остаются
для разработчиков: описание API в формате OpenAPI и руководство по подключению

Нужны уведомления в вашей системе? Напишите в Telegram

Подключим готовый шлюз к вашему сервису или сделаем систему, в которой уведомления работают с первого дня.

Написать в Telegram