omni_inbound
Отдельный сервис приема входящих webhook-событий каналов (первый канал: Telegram Business).
Задача сервиса
- принимать webhook;
- валидировать секрет;
- нормализовать событие в универсальный envelope;
- делать durable enqueue в BullMQ (
receiver.flow); - возвращать
200только после успешного enqueue.
Сервис не содержит бизнес-логику CRM и не вызывает provider API для исходящих сообщений.
API
GET /health
Проверка живости сервиса.
POST /webhooks/telegram/business
Прием Telegram Business webhook.
При активном TELEGRAM_WEBHOOK_SECRET ожидается заголовок:
x-telegram-bot-api-secret-token: <TELEGRAM_WEBHOOK_SECRET>
Переменные окружения
PORT(default:8080)REDIS_URL(default:redis://localhost:6379)RECEIVER_FLOW_QUEUE_NAME(default:receiver.flow)INBOUND_QUEUE_NAME(legacy alias, optional)TELEGRAM_WEBHOOK_SECRET(optional, но обязателен для production)MAX_BODY_SIZE_BYTES(default:1048576)
Запуск
npm ci
npm run start
Надежность
- Идемпотентность:
jobIdстроится изidempotencyKey(SHA-256). - Дубликаты webhook безопасны и не приводят к повторной постановке события.
- При ошибке enqueue сервис возвращает
503, чтобы провайдер повторил доставку.