# telegram_backend Ingress/API адаптер Telegram Business. ## Задача сервиса - принимать webhook Telegram и нормализовать payload в envelope; - ставить задачи в Hatchet (`process-telegram-inbound`, `process-telegram-outbound`); - предоставлять GraphQL API: - `enqueueTelegramOutbound` (для `backend`); - `sendTelegramMessage` (для `telegram_worker`). Сервис **не** содержит CRM бизнес-логику и не использует Prisma. ## API ### `GET /health` Проверка живости сервиса. ### `POST /webhooks/telegram/business` Прием Telegram Business webhook. При активном `TELEGRAM_WEBHOOK_SECRET` ожидается заголовок: - `x-telegram-bot-api-secret-token: ` ### `POST /graphql` Мутации: - `enqueueTelegramOutbound(input: TelegramOutboundTaskInput!): TaskEnqueueResult!` - `sendTelegramMessage(input: TelegramSendMessageInput!): TelegramSendResult!` ## Переменные окружения - `PORT` (default: `8080`) - `MAX_BODY_SIZE_BYTES` (default: `1048576`) - `TELEGRAM_WEBHOOK_SECRET` (optional, но обязателен для production) - `TELEGRAM_BACKEND_GRAPHQL_SHARED_SECRET` (optional) - `TELEGRAM_BOT_TOKEN` (required для `sendTelegramMessage`) - `TELEGRAM_API_BASE` (default: `https://api.telegram.org`) - `HATCHET_CLIENT_TOKEN` (required) - `HATCHET_CLIENT_TLS_STRATEGY` (optional, например `none` для self-host без TLS) - `HATCHET_CLIENT_HOST_PORT` (optional, например `hatchet-engine:7070`) - `HATCHET_CLIENT_API_URL` (optional) ## Запуск ```bash npm ci npm run start ``` ## Надежность - `200` на webhook возвращается только после успешного enqueue задачи в Hatchet. - При ошибке enqueue сервис возвращает `503`, чтобы Telegram повторил доставку. - Ретраи и оркестрация выполняются в Hatchet worker (`telegram_worker`).