Files
clientsflow/omni_inbound/README.md

49 lines
1.8 KiB
Markdown

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