Интеграции · уведомления · fallback между каналами
Мультиканальные уведомления с автоматическим fallback
Клиент:
NDA
Категория: Интеграции
Стек: PHP (собственный backend), Firebase (push), Telegram Bot API, WhatsApp/SMS-провайдеры, PHPMailer
Срок: 3–5 недель
Проблема
Платформе бронирования нужно было информировать пользователей и площадки о статусах заказов, отменах и событиях по разным каналам связи — без брокера очередей и без ручной рассылки.
Ограничения
В стеке не было готовых очередей (Redis/RabbitMQ) — только БД и polling; часть каналов (WhatsApp) не гарантирует доставку и требует резервного канала.
Что сделал
- Единый доменный слой уведомлений: ~30 сценариев (заказ, статус брони, отмена события и т.д.) с выбором канала
- Fallback-цепочка WhatsApp → SMS: неудачная отправка через WhatsApp автоматически повторяется через SMS
- Push-уведомления через Firebase с автоочисткой невалидных токенов устройств
- Telegram-бот как отдельный интерактивный канал поверх той же доменной модели событий
- Rate-limiting и дедупликация отправки, алерты администраторам при сбоях канала
Архитектура
Доменное событие
→ Очередь уведомлений (БД)
→ Polling-демоны
→ WhatsApp → SMS fallback
→ Push / Telegram / Email
Результат
Уведомления для 15+ бизнес-сценариев пошли через единую точку с автоматическим fallback между каналами и минимальной ручной поддержкой.
Что можно переиспользовать
Доменное событие → очередь → polling-демон с fallback между каналами
Автоочистка невалидных push-токенов
Rate-limiting отправки чувствительных уведомлений (коды подтверждения)