# 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: ` ## Переменные окружения - `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`) ## Запуск ```bash npm ci npm run start ``` ## Надежность - Идемпотентность: `jobId` строится из `idempotencyKey` (SHA-256). - Дубликаты webhook безопасны и не приводят к повторной постановке события. - При ошибке enqueue сервис возвращает `503`, чтобы провайдер повторил доставку.