Перейти к содержанию

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 бота

Дальнейшее чтение