Шлюз уведомлений: Telegram и почта через один API
Собственный сервис студии. Любая система отправляет сообщение одним запросом, а шлюз сам доставляет его человеку, в рабочий чат, в канал или на почту — с очередью, повторами и расписанием.
путь сообщения
Уведомления нужны каждому проекту — и каждый раз их пишут заново
Магазин сообщает менеджеру о заказе, CRM напоминает о сроке, сервис сверки присылает сводку за день. Почти любая система должна что-то сообщать людям.
Если делать это в каждом проекте отдельно, приходится снова решать одни и те же задачи:
- подключать бота и привязывать к нему людей;
- повторять отправку, если Telegram или почта временно недоступны;
- не превышать лимиты, чтобы бота не заблокировали;
- хранить историю: что отправлено, кому и дошло ли.
MBC Notify решает это один раз. Новый проект подключается к готовому шлюзу и не тратит на уведомления время разработки.
У каждого сообщения видно, что с ним сейчас и почему
| статус | канал | адресат | попытки | ошибка | создан |
|---|---|---|---|---|---|
| Доставлено | Telegram | Менеджер сменыличный чат | 1 | 09:00:02 | |
| Доставлено | Telegram | Чат «Заказы»группа | 2 | 09:00:04 | |
| Ошибка | Telegram | Покупатель 318личный чат | 1 | бот заблокирован получателем | 09:00:07 |
| Доставлено | Почта | Бухгалтерияписьмо со счётом | 2 | 09:02:11 | |
| В очереди | Telegram | Мастер участкаличный чат | 0 | отправка назначена на 18:00 | 09:05:40 |
| Отменено | Почта | Клиент 77напоминание об оплате | 0 | снято до отправки | 09:06:15 |
- отправитель
- API-ключ «магазин»
- ключ запроса
- order-1042-paid
- Принято. Ключ, права и привязка чата проверены, сервис получил номер сообщения.
- Попытка 1 — ошибка, назначен повтор. Telegram не ответил. Следующая попытка через минуту.
- Попытка 2 — доставлено. Сервису ушло событие об успешной доставке.
- Канал временно недоступен
- До пяти попыток с паузами 1, 2, 4 и 8 минут. Каждая попытка остаётся в истории.
- Telegram просит подождать
- Шлюз ждёт столько, сколько указано в ответе, и отправляет снова.
- Сервис повторил тот же запрос
- По ключу запроса возвращается прежнее сообщение. Второе не создаётся.
- Человек заблокировал бота
- Повторов нет: привязка помечается, сервис получает событие.
- Отправка больше не нужна
- Отложенное или ждущее повтора сообщение можно отменить, пока шлюз не начал его передавать.
- В запросе ошибка
- Отказ приходит сразу: нет получателя, нет привязки, слишком длинная подпись. В очередь попадает только то, что можно доставить.
Что отправляет сервис и что видит человек
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" }
Заказ №1042 оплачен
12 400 ₽, курьером
- текст с разметкой HTML или Markdown
- изображение с подписью
- до 10 кнопок-ссылок
Здравствуйте! Счёт во вложении, оплатить можно до пятницы.
invoice-318.pdf- тема, HTML и текстовая версия письма
- вложения, до 10 МБ на письмо
- у каждого проекта свой почтовый ящик
Адресат в запросе — идентификатор из вашей системы: шлюз сам находит по нему чат или почту. Поле sendAt откладывает отправку на нужное время. Отметка «доставлено» у письма означает, что его принял почтовый сервер.
Сервис знает человека по своему идентификатору
Как человек подключает Telegram
- Сервис просит у шлюза ссылку на бота. Она одноразовая и действует 15 минут.
- Человек открывает её и нажимает «Запустить». Кодов и паролей нет.
- Шлюз связывает чат с получателем и сообщает об этом сервису.
- получатель · человек
- user-42
- имя
- Алиса
- почта
- alice@example.com
- telegram
- привязка активнапо ссылке, с 10:03
Состояния привязки
- Активна
- можно писать
- Бот заблокирован
- отправка отклоняется сразу
- Отозвана
- бота удалили из чата
- Не разобрана
- чат известен, получатель ещё не назначен
Повторная ссылка перепривязывает человека, если он сменил аккаунт. Группу или канал подключают иначе: бота добавляют в чат, а оператор в консоли назначает этому чату получателя. Отвязка по запросу сервиса снимает привязку полностью: чтобы писать снова, нужна новая ссылка.
Публикации в Telegram-канале по расписанию
пн
вт
ср
чт · сегодня
пт
сб
вс
постов нет
Пост можно править и после выхода: изменение сразу уходит в Telegram. У поста с фотографией меняются подпись и кнопки. По каждому посту хранится история: кто его запланировал, перенёс или исправил. Число подписчиков канала шлюз записывает раз в сутки и показывает график. Названия постов условные.
Шлюз сам сообщает сервису, что произошло
Сервис подписывается на нужные события и получает их на свой адрес. Каждое событие подписано. Если сервис не ответил, шлюз повторяет доставку до пяти раз.
- RECIPIENT_ACTIVATED
- человек подключил Telegram
- NOTIFICATION_SENT · FAILED · CANCELLED
- итог доставки и код причины отказа
- BINDING_BLOCKED · REVOKED
- бота заблокировали или удалили из чата
- GROUP_JOINED
- бота добавили в группу или канал
- INCOMING_MESSAGE
- человек написал боту
- MESSAGE_REACTION
- на пост поставили реакцию
- PUBLICATION_PUBLISHED · DELETED
- пост вышел или удалён
Те же события видны оператору в консоли: лента с фильтром по каналу, периоду и получателю. На главном экране проекта собрано то, что требует внимания: канал с неудачной последней доставкой, неразобранные чаты, адрес сервиса, который не принимает события.
Модуль уже встроен в проекты студии
Система сверки с поставщиками присылает через него ежедневные сводки расхождений и мгновенные уведомления в Telegram. Платформа автопубликации статей оповещает операторов, если источник новостей замолчал.
Когда мы начинаем новый проект, уведомления в нём уже есть: их нужно только настроить. Это часть платформы, с которой стартует разработка.
Модуль подключаем по вашему желанию
Всё включено — интеграции на нас
Если вы остаётесь с нами на поддержке, модули платформы уже входят в проект. Уведомления, вход, ИИ-сервис и кабинет работают с первого дня, и вам не нужно в них разбираться.
- сами следим за интеграциями и обновляем их
- узнаём о сбое раньше вас и чиним без запроса
- запуск быстрее: проект стартует с рабочей основы
- один подрядчик отвечает за всё целиком
Полностью ваша — без привязки к студии
Если вы планируете дальше развивать и поддерживать сервис своей командой, соберём его автономным: без модулей нашей платформы и без зависимости от нас.
- размещение на вашей инфраструктуре
- исходный код и документация передаются вам
- нужные функции встроены в саму систему
- сопровождать сможет любая команда разработки
Модули платформы — возможность, а не условие. Формат обсуждаем до начала работ и закрепляем в предложении.
Нужны уведомления в вашей системе? Напишите в Telegram
Подключим готовый шлюз к вашему сервису или сделаем систему, в которой уведомления работают с первого дня.