---
title: "Telegram AI-бот с human approval через n8n | Nodbot"
source_url: "https://nodbot.ru/workflows/telegram-ai-bot-human-approval/"
canonical_url: "https://nodbot.ru/workflows/telegram-ai-bot-human-approval/"
language: "ru"
content_type: "WorkflowTemplate"
section: "workflows"
generated_at: "2026-05-30"
word_count_source: 937
---

# Telegram AI-бот через n8n: human approval перед ответом пользователю

## AI summary

Практический сценарий Telegram AI-бота на n8n: бот готовит черновик ответа, отправляет его оператору на approve/reject и пишет пользователю только после человеческого подтверждения.

## Best used for

Полноценный Problem/Solution-мануал для внедрения в n8n: импортировать workflow JSON, настроить API, выполнить production-тесты и передать решение команде.

## Table of contents

- Проблема: почему AI-бот без approval опасен для поддержки
- Архитектура workflow Telegram AI-бота с human approval
- Контракт входного сообщения Telegram
- Скрипт n8n для черновика, guardrails и callback data
- Готовый workflow JSON
- Пошаговая настройка Telegram бота, n8n и модерации
- Тесты перед production
- Production-риски AI-бота в Telegram
- Полезные ссылки и смежные workflow
- Критерии готовности

## Key topics

- Telegram AI bot
- human approval
- n8n Telegram Trigger
- callback query
- guardrails

## Source outline

Telegram AI-бот через n8n: human approval перед ответом пользователю ¶ Обновлено: 2026-05-30 AI summary: Практический сценарий Telegram AI-бота на n8n: бот готовит черновик ответа, отправляет его оператору на approve/reject и пишет пользователю только после человеческого подтверждения. Шаблон для внедрения Скачать workflow JSON Скачать test payload Скопировать curl Импортируйте workflow, замените credentials и прогоните тестовый payload до включения production. Содержание Проблема: почему AI-бот без approval опасен для поддержки Архитектура workflow Telegram AI-бота с human approval Контракт входного сообщения Telegram Скрипт n8n для черновика, guardrails и callback data Готовый workflow JSON Пошаговая настройка Telegram бота, n8n и модерации Тесты перед production Production-риски AI-бота в Telegram Полезные ссылки и смежные workflow Критерии готовности Проблема: AI-бот в Telegram может быстро ответить неверно в чувствительном сценарии: оплата, договор, возврат, персональные данные или нестандартное обещание менеджера. Решение: надежный workflow в n8n готовит черновик ответа, показывает его оператору с кнопками approve/reject и отправляет пользователю только подтвержденный текст. AI ускоряет подготовку ответа, но финальное решение остается за человеком. Проблема: почему AI-бот без approval опасен для поддержки ¶ Интеграция Telegram и n8n позволяет быстро собрать AI-бота, который отвечает пользователю почти мгновенно. Но в реальной поддержке мгновенность не всегда равна качеству. Клиент может спросить про оплату, возврат, договор, персональные данные или нестандартное обещание менеджера. Если скрипт n8n сразу отправит LLM-ответ в чат, ошибка станет публичной коммуникацией компании. Human approval решает эту боль: модель готовит черновик, оператор видит исходное сообщение, риск-флаги и вариант ответа, а пользователь получает финальный текст только после подтверждения. Такой workflow подходит для Telegram-поддержки, pre-sale консультаций, внутренних helpdesk-ботов и команд, которые хотят ускорить ответы без потери контроля. Архитектура workflow Telegram AI-бота с human approval ¶ Нода Роль Что проверить Telegram Trigger Принимает сообщение или callback Bot token, chat_id, тип update Prepare AI draft Готовит черновик и risk flags нет персональных данных в prompt без нужды Send to moderator Отправляет карточку оператору inline-кнопки approve/reject, короткий текст Approval gate Проверяет решение человека callback data не длиннее лимита и содержит id Send final answer Пишет пользователю ответ только после approve Контракт входного сообщения Telegram ¶ { "message": { "message_id": 1042, "chat": { "id": 912345678, "type": "private" }, "from": { "id": 912345678, "username": "client_ru" }, "text": "Здравствуйте, можно ли перенести оплату на завтра?" }, "bot_profile": "support", "moderator_chat_id": "-1001234567890" } Для production храните соответствие `approval_id → chat_id → draft_text` в durable store: Postgres, Redis или таблице. Нельзя полагаться только на execution memory, потому что n8n может перезапуститься между отправкой черновика и нажатием кнопки оператором. Скрипт n8n для черновика, guardrails и callback data ¶ const update = $json.message ? $json : ($json.body ?? $json); const msg = update.message ?? {}; const text = String(msg.text ?? '').trim(); const userId = msg.from?.id ?? msg.chat?.id; const chatId = msg.chat?.id; if (!text) { return [{ json: { action: 'ignore', reason: 'empty_or_non_text_message' } }]; } const risky = /(возврат|договор|претенз|персональн|паспорт|карта|оплат|юрид)/i.test(text); const draft = `Черновик ответа: спасибо за обращение. Я проверю возможность переноса оплаты и вернусь с подтверждением.`; const approvalId = `tg-ai:${chatId}:${msg.message_id}`; return [{ json: { action: 'request_approval', chat_id: chatId, user_id: userId, original_message_id: msg.message_id, original_text: text, risky, approval_id: approvalId, draft_text: draft, moderator_text: `Нужен approve перед ответом пользователю\n\nВопрос: ${text}\n\n${draft}`, callback_approve: `approve:${approvalId}`, callback_reject: `reject:${approvalId}` } }]; Почему callback data лучше делать коротким Telegram ограничивает размер callback data, а длинные JSON-объекты в кнопке плохо дебажить. Передавайте короткий `approval_id`, а полный черновик и исходное сообщение храните отдельно. Готовый workflow JSON ¶ Скачать готовый workflow JSON Скачать тестовый payload { "name": "Nodbot - Telegram AI bot with human approval", "nodes": [ { "name": "Telegram Trigger", "type": "n8n-nodes-base.telegramTrigger", "purpose": "Получить сообщение или callback_query от Telegram" }, { "name": "Prepare AI draft", "type": "n8n-nodes-base.code", "purpose": "Собрать черновик, риск-флаги и callback data" }, { "name": "Send to moderator", "type": "n8n-nodes-base.telegram", "purpose": "Показать оператору черновик с кнопками Approve/Reject" }, { "name": "Approval gate", "type": "n8n-nodes-base.if", "purpose": "Отправить ответ пользователю только после approve" }, { "name": "Send final answer", "type": "n8n-nodes-base.telegram", "purpose": "Вернуть подтвержденный текст пользователю" } ], "connections": "Telegram Trigger → Prepare draft → Moderator → Approval gate → Send final answer" } Пошаговая настройка Telegram бота, n8n и модерации ¶ Создайте бота через BotFather и подключите Telegram credentials в n8n. Добавьте Telegram Trigger и проверьте получение обычных сообщений и callback query. Настройте LLM-провайдера, системный prompt и запрет на обещания вне базы знаний. Создайте приватный moderator chat и отправляйте туда карточку approval. Добавьте хранилище approval-состояний и TTL для старых черновиков. Тесты перед production ¶ curl -X POST "https://YOUR-N8N-DOMAIN/webhook/telegram-ai-bot-human-approval" \ -H "Content-Type: application/json" \ --data @telegram-ai-bot-human-approval-payload.json Проверьте обычный вопрос, вопрос про оплату, reject, повторный callback, удаленный черновик и сообщение без текста. В каждом случае workflow должен либо ждать оператора, либо безопасно завершаться без ответа пользователю. Production-риски AI-бота в Telegram ¶ Ответ уходит без approve. Это главный риск: проверьте ветвление callback и условия отправки. Потеря контекста после рестарта. Approval-состояние должно жить в базе, а не в памяти execution. Утечка данных в prompt. Не отправляйте в LLM лишние персональные данные и токены. Сломанный Markdown. Экранируйте текст перед отправкой в Telegram. Нет SLA. Если оператор не ответил, пользователю нужно отправить нейтральное сообщение о принятии обращения. Полезные ссылки и смежные workflow ¶ См. также роутер команд Telegram-бота , Telegram alert для ошибок , RAG FAQ bot на Qdrant . Официальные документы: Telegram Bot API , n8n Telegram Trigger и n8n Telegram node . Оператор видит исходное сообщение, риск-флаг, черновик и кнопки решения. Критерии готовности ¶ AI-ответ не отправляется без approve. Есть reject-сценарий и ручной текст оператора. Approval-состояния сохраняются в durable store. Markdown/HTML экранируется перед отправкой. Ошибки Telegram API уходят в alert, а не теряются в execution. Нужен AI-бот без риска самовольных ответов? Nodbot настроит Telegram-бота с approval, guardrails, журналом решений, SLA и безопасной отправкой сообщений пользователям. Обсудить AI-бота

## Test payload

```json
{
  "message": {
    "message_id": 1042,
    "chat": {
      "id": 912345678,
      "type": "private"
    },
    "from": {
      "id": 912345678,
      "username": "client_ru"
    },
    "text": "Здравствуйте, можно ли перенести оплату на завтра?"
  },
  "bot_profile": "support",
  "moderator_chat_id": "-1001234567890"
}
```

## Key implementation snippet

```javascript
const update = $json.message ? $json : ($json.body ?? $json);
const msg = update.message ?? {};
const text = String(msg.text ?? '').trim();
const userId = msg.from?.id ?? msg.chat?.id;
const chatId = msg.chat?.id;

if (!text) {
  return [{ json: { action: 'ignore', reason: 'empty_or_non_text_message' } }];
}

const risky = /(возврат|договор|претенз|персональн|паспорт|карта|оплат|юрид)/i.test(text);
const draft = `Черновик ответа: спасибо за обращение. Я проверю возможность переноса оплаты и вернусь с подтверждением.`;
const approvalId = `tg-ai:${chatId}:${msg.message_id}`;

return [{
  json: {
    action: 'request_approval',
    chat_id: chatId,
    user_id: userId,
    original_message_id: msg.message_id,
    original_text: text,
    risky,
    approval_id: approvalId,
    draft_text: draft,
    moderator_text: `Нужен approve перед ответом пользователю\n\nВопрос: ${text}\n\n${draft}`,
    callback_approve: `approve:${approvalId}`,
    callback_reject: `reject:${approvalId}`
  }
}];
```

## Importable workflow structure

```json
{
  "name": "Nodbot - Telegram AI bot with human approval",
  "nodes": [
    {
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "purpose": "Получить сообщение или callback_query от Telegram"
    },
    {
      "name": "Prepare AI draft",
      "type": "n8n-nodes-base.code",
      "purpose": "Собрать черновик, риск-флаги и callback data"
    },
    {
      "name": "Send to moderator",
      "type": "n8n-nodes-base.telegram",
      "purpose": "Показать оператору черновик с кнопками Approve/Reject"
    },
    {
      "name": "Approval gate",
      "type": "n8n-nodes-base.if",
      "purpose": "Отправить ответ пользователю только после approve"
    },
    {
      "name": "Send final answer",
      "type": "n8n-nodes-base.telegram",
      "purpose": "Вернуть подтвержденный текст пользователю"
    }
  ],
  "connections": "Telegram Trigger → Prepare draft → Moderator → Approval gate → Send final answer"
}
```

## Retrieval hints

- Использовать HTML как canonical source.
- Markdown удобен для LLM-ответов, извлечения workflow-контракта, кода и чеклистов.
- Для ссылок пользователю отдавать canonical URL.
