Restructure omni services and add Chatwoot research snapshot
This commit is contained in:
47
omni_inbound/README.md
Normal file
47
omni_inbound/README.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# 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`)
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
npm ci
|
||||
npm run start
|
||||
```
|
||||
|
||||
## Надежность
|
||||
|
||||
- Идемпотентность: `jobId` строится из `idempotencyKey` (SHA-256).
|
||||
- Дубликаты webhook безопасны и не приводят к повторной постановке события.
|
||||
- При ошибке enqueue сервис возвращает `503`, чтобы провайдер повторил доставку.
|
||||
Reference in New Issue
Block a user