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: <TELEGRAM_WEBHOOK_SECRET>
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)
Запуск
npm ci
npm run start
Надежность
200на webhook возвращается только после успешного enqueue задачи в Hatchet.- При ошибке enqueue сервис возвращает
503, чтобы Telegram повторил доставку. - Ретраи и оркестрация выполняются в Hatchet worker (
telegram_worker).