Notification Service
Notification Service отвечает за отправку уведомлений пользователям через Telegram.
Обзор
| Параметр |
Значение |
| Порт |
8084 |
| База данных |
postgres-shared |
| Схема |
notification_service |
Ответственности
- Telegram уведомления (Bot API) — единственный канал
- Шаблоны сообщений (Mustache + Markdown)
- Очередь отправки
- Логирование отправок
Каналы
| Канал |
Технология |
| Telegram |
Telegram Bot API |
Важно: Telegram — единственный канал уведомлений.
Email используется только для альтернативной аутентификации, но не для уведомлений.
API Endpoints
| Method |
Endpoint |
Description |
| POST |
/api/v1/notifications/send |
Отправка (internal) |
| GET |
/api/v1/notifications/templates |
Список шаблонов |
| GET |
/api/v1/notifications/preferences |
Настройки пользователя |
| PUT |
/api/v1/notifications/preferences |
Обновить настройки |
Шаблоны уведомлений
| Шаблон |
Описание |
user.welcome |
Приветствие при регистрации |
registration.confirmed |
Подтверждение регистрации с билетом |
registration.cancelled |
Отмена регистрации |
reservation.expired |
Истечение брони |
event.reminder |
Напоминание о событии (за 24ч) |
event.changed |
Изменения в событии |
event.cancelled |
Отмена события |
waitlist.available |
Освобождение места из листа ожидания |
payment.receipt |
Чек об оплате |
Формат шаблона (Mustache + Markdown)
<!-- templates/telegram/registration.confirmed.md -->
🎫 *Билет на событие*
Привет, {{firstName}}!
Вы успешно зарегистрировались на *{{eventTitle}}*.
📋 *Детали:*
• Код билета: `{{confirmationCode}}`
• Дата: {{eventDate}}
• Место: {{eventLocation}}
[Подробнее о событии]({{eventUrl}})
Отправка уведомлений
Процесс отправки:
1. Получение события из RabbitMQ
2. Рендеринг шаблона с переменными
3. Отправка через Telegram Bot API
4. Логирование результата (success/failure)
Fallback при отсутствии Telegram:
- Если у пользователя не привязан Telegram — уведомление не отправляется
- В логе фиксируется warning
События (RabbitMQ)
Потребляемые
| Event |
Уведомление |
user.registered |
Welcome сообщение в Telegram |
registration.created |
Билет с QR-кодом в Telegram |
registration.cancelled |
Уведомление об отмене |
reservation.expired |
Уведомление об истечении брони |
event.cancelled |
Уведомление об отмене события всем участникам |
event.changed |
Уведомление об изменениях |
event.reminder |
Напоминание о событии (за 24ч) |
payment.completed |
Чек об оплате |
waitlist.available |
Место из листа ожидания |
Telegram Bot
Команды бота:
| Команда |
Описание |
/start {token} |
Привязка Telegram к аккаунту |
/help |
Справка |
/tickets |
Мои билеты |
Привязка аккаунта:
1. Пользователь в личном кабинете получает одноразовую ссылку
2. Ссылка ведёт к боту с уникальным токеном
3. Бот привязывает chat_id к аккаунту пользователя
4. Все уведомления отправляются в этот чат
Конфигурация
| Переменная |
Описание |
TELEGRAM_BOT_TOKEN |
Токен Telegram бота |
TELEGRAM_BOT_USERNAME |
Username бота |
Дальнейшее чтение