Что получится в конце
Telegram-бот, который отвечает на типовые вопросы клиентов сам — про сроки, цены, условия. Если вопрос нестандартный, он молча пересылает диалог мне, добавляя короткое резюме и предлагаемый ответ. Я нажимаю "Отправить" — или правлю и отправляю.
За три месяца работы цифры такие:
Связка решает одну задачу: проверяет входящий вопрос и выбирает ответ из шаблона или генерирует его. Правила и примеры записаны в системном промпте на 800 токенов. Если вопрос выходит за эти правила, диалог передаётся человеку.
Новые разборы сначала выходят в Telegram-боте →
Когда это пригодится
- Клиенты пишут вам в Telegram, и многие вопросы повторяются.
- Вы хотите ответить быстрее, чем за час, но не готовы нанимать оператора.
- Вам важно не потерять "нестандартные" лиды — а текущая ситуация такова, что часть из них теряется в потоке.
- Вам нужно записывать все диалоги в одну таблицу для анализа и обучения шаблонов.
- Вы умеете читать JSON и готовы развернуть n8n на своём сервере.
Перед сборкой посчитайте, сколько времени уходит на повторяющиеся вопросы. При небольшом потоке может хватить готовых ответов; автоматизацию имеет смысл делать, когда она экономит заметную часть работы.
Что нужно и сколько стоит
- Сервер для n8n — свой или арендованный. Проверьте требования версии n8n, которую устанавливаете.
- Anthropic API — стоимость зависит от модели, длины сообщений и числа запросов.
- Telegram Bot — бесплатно через @BotFather
- Домен для webhook (опционально, можно через Cloudflare Tunnel) — стоимость зависит от регистратора
Полный бюджет складывается из сервера, запросов к модели и домена, если он нужен. У меня n8n работает на сервере вместе с другими проектами, поэтому его расходы нельзя напрямую сравнивать с запуском с нуля. Перед внедрением проверьте текущие тарифы и посчитайте стоимость на нескольких реальных диалогах.
Пошагово
-
Поднять n8n на VPS через Docker
Я разворачиваю
n8nio/n8nчерез docker-compose с Caddy для HTTPS. Конфиг минимальный, главный нюанс — переменнаяWEBHOOK_URLдолжна указывать на публичный URL, иначе Telegram не достучится.docker-compose.ymlservices: n8n: image: n8nio/n8n:latest restart: unless-stopped environment: - WEBHOOK_URL=https://n8n.example.ru - N8N_HOST=n8n.example.ru - N8N_PROTOCOL=https - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=${N8N_USER} - N8N_BASIC_AUTH_PASSWORD=${N8N_PASS} volumes: - ./n8n_data:/home/node/.n8n ports: - "127.0.0.1:5678:5678" -
Создать бота через @BotFather и получить токен
В Telegram пишем
/newbot, даём имя, получаем токен вида123:ABC.... Сохраняем в .env n8n какTG_TOKEN. Тут же отключаем Group Privacy через/setprivacy, если планируем держать бота в групповых чатах. -
Поставить webhook у Telegram на n8n
В n8n создаём workflow с триггером Telegram Trigger. Он сам зарегистрирует webhook через bot API. Если сделать руками — один POST:
bashcurl -X POST "https://api.telegram.org/bot${TG_TOKEN}/setWebhook" \ -d "url=https://n8n.example.ru/webhook/tg-bot"Проверка:
curl https://api.telegram.org/bot${TG_TOKEN}/getWebhookInfo. В полеlast_error_messageдолжно быть пусто. -
Промпт и ноды Anthropic
В workflow после Telegram-триггера добавляем ноду HTTP Request на
https://api.anthropic.com/v1/messages(есть нативный community-узел, но я предпочитаю HTTP — меньше зависимостей при апдейтах).Системный промпт хранится в отдельном узле Set: правила, тон, примеры на 6–8 диалогов. Главное правило промпта одно: "если запрос не подпадает под X/Y/Z — ответь словом ESCALATE".
-
Маршрутизация: ответ боту или мне
После ответа Claude — узел IF: если в ответе содержится ESCALATE, отправляем мне диалог + предложенный ответ через отдельный Telegram-узел. Иначе — отвечаем клиенту через Telegram Send Message.
Параллельно пишем диалог в Google Sheets: время, user_id, текст вопроса, текст ответа, путь (auto/escalate). Это понадобится через месяц, когда захочется посмотреть "а что вообще спрашивают".
Как это работает
Схема простая: Telegram → n8n → проверка вопроса → ответ клиенту или передача человеку. Больше всего внимания здесь требуют правила ответа и примеры для модели.
Один важный нюанс: я не использую chat-историю. Для типовых запросов клиенты не строят диалог — пишут вопрос, получают ответ, уходят. Хранить контекст между сообщениями означало бы платить за токены и риск, что модель "закопается" в старый контекст. Если запрос требует нескольких реплик — это уже ESCALATE.
На что я наступил
1. Telegram режет webhook на длинных ответах. Если ответ от Claude превышает 4096 символов — сообщение обрезается без ошибки. Я добавил жёсткий лимит в системный промпт ("не более 600 слов") и проверку длины перед отправкой.
2. n8n теряет webhook после рестарта если поменял домен. При первом переезде на новый поддомен я полчаса не понимал, почему бот молчит. Решение — после смены WEBHOOK_URL руками заново регистрировать webhook у Telegram.
3. Claude иногда "галлюцинирует" цены. Если в системном промпте упомянуть "обсуждай тарифы" без явного списка — модель уверенно выдумает цифры. Я держу прайс-лист отдельным узлом и добавляю его в каждый запрос как user-сообщение.
4. Я не тестировал на нагрузке выше 30 сообщений в минуту. Бутылочное горлышко — n8n executions, не API. На моих объёмах это никогда не было проблемой; на ваших — может быть.
Что попробовать дальше
Очевидное направление — добавить мини-RAG поверх корпоративной wiki. У меня нет такой задачи, но если бы была — я бы взял LlamaIndex и держал индекс на той же VPS. Стоимость запросов и хранения нужно считать отдельно.
Менее очевидное — заменить Telegram-триггер на универсальный "канал входа" с поддержкой WhatsApp Business и почты. Тогда вся связка превращается в полноценный inbox-агрегатор.
Альтернативы, которые я смотрел: Make (дороже на наших объёмах), Zapier (ещё дороже и без HTTP-нод нормальных), кастомный сервис на Python (быстрее, но дольше делать и потом кому-то поддерживать).
Новые разборы — сначала в Telegram
Выходит ролик — в бот приходит инструкция к нему. Плюс новости, которые я сам проверил, и предложения, которые появляются там раньше, чем на сайте.
Открыть ботаПолучать новые разборы
Присылаю новые инструкции на почту. Подпишитесь, если так удобнее.
Хотите такую связку внутри своих процессов, а не на демо-данных? Собираю автоматизацию внутри вашего стека и остаюсь на сопровождении — те же методы, которыми держу в проде свои продукты.