Files
clientsflow/omni_inbound

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)
  • TELEGRAM_CONNECT_WEBHOOK_FORWARD_URL (optional; URL CRM endpoint для линковки Telegram Business)
  • MAX_BODY_SIZE_BYTES (default: 1048576)

Запуск

npm ci
npm run start

Надежность

  • Идемпотентность: jobId строится из idempotencyKey (SHA-256).
  • Дубликаты webhook безопасны и не приводят к повторной постановке события.
  • При ошибке enqueue сервис возвращает 503, чтобы провайдер повторил доставку.