Пошаговая инструкция: Интеграция бота ProTalk с n8n для автоматизации обработки заказов в Telegram
Эта инструкция поможет вам настроить чат-бота на базе ProTalk (визуальный конструктор сценариев ботов) в сервисе n8n (open-source платформа для автоматизаций, аналог Make.com). Мы создадим workflow, где:
- Триггер: Пользователь отправляет сообщение в Telegram-бот (например, "Готов!" для подтверждения заказа).
- Действие: n8n вызывает API ProTalk (
/api/v1.0/ask/<token>) с данными пользователя (botid, chatid, message).
- Обработка ответа: API возвращает ответ (текст или аудио), который сохраняется в переменную и отправляется обратно в Telegram.
- Дополнительно: Сбор данных клиента (имя, телефон, email и т.д.) и валидация форм для создания заказа.
Цель: Автоматизировать обработку заказов — от подтверждения ("Готов!") до отправки ссылок на оплату и сбора контактных данных. На основе предоставленных скриншотов ProTalk.
Предварительные требования
- Аккаунт в ProTalk: У вас должен быть создан бот с API-токеном (из скриншотов: URL вида
https://api.pro-talk.ru/api/v1.0/ask/{token}). Получите bot_id (ID бота, например, 18955) и токен.
- Аккаунт в n8n: Установите n8n локально (npm install -g n8n) или используйте облачную версию на n8n.io (бесплатный тариф для тестов). Запустите:
n8n start (по умолчанию: http://localhost:5678).
- Telegram-бот: Создайте бота через @BotFather в Telegram, получите токен бота (API token). Добавьте бота в чат/группу.
- Тестовые данные: Подготовьте переменные для клиента, например:
telegram_id: ID чата из Telegram (из скриншотов: {{telegram_id}}).
user_question: Текст сообщения пользователя (например, "Готов!").
- Знания: Базовые навыки работы с нодами (nodes) в n8n. n8n использует JSON для данных.
Время настройки: 20–30 минут.
Шаг 1: Настройка сценария в ProTalk
ProTalk — это визуальный конструктор. Мы создадим базовый флоу для обработки "Готов!" и вызова API.
- Войдите в ProTalk: Перейдите в дашборд бота (api.pro-talk.ru).
- Создайте новый сценарий (Message Chain):
- Добавьте Start блок (круглый, синий).
- Подключите Send Order (колокольчик) — это триггер на отправку заказа пользователем.
- От Start подключите стрелку к Message Chain (цепочка сообщений).
- Добавьте условия для сообщений:
- В Message Chain добавьте Intent блоки:
- Зеленый: "Готов!" (готов к заказу) → Подключите к HTTP-запросу.
- Серый: "Any other phrase" (любая другая фраза) → Подключите к fallback (продолжить диалог).
- Для "Готов!": Добавьте стрелку к HTTP Request блоку.
- Настройте HTTP Request:
- URL:
https://api.pro-talk.ru/api/v1.0/ask/{token} (замените {token} на ваш, e.g., your_token).
- Method: POST.
- Headers: Оставьте пустыми (или добавьте
Content-Type: application/x-www-form-urlencoded если нужно).
- Body: Form-data (выберите в dropdown):
bot_id = 18955 (ваш ID бота).
chat_id = {{telegram_id}} (переменная из Telegram, скриншот 2: circled "chat_id").
message = {{user_question}} (текст от пользователя, e.g., "Готов!", underlined).
- Опционально: Добавьте
message_id для трекинга.
- Обработка ответов от API:
- Добавьте No response from server (красный блок) → Если API не отвечает, fallback к "Any other phrase".
- Для успешного ответа: Подключите к Write JSON response to variables (скриншот 3: orange circle).
- Mapping:
done → protalk_reply (переменная для ответа: "done" → "protalk_reply").
- Подключите к следующему Message Chain для отправки
{{protalk_reply}} пользователю (скриншот 4: chain с текстом {{protalk_reply}}).
- Сохраните и протестируйте: Нажмите "Save". Тестируйте в Telegram: Отправьте "Готов!" — бот должен вызвать API и ответить.
Результат: ProTalk теперь готов отправлять запросы в ваш API и обрабатывать ответы. Переходим к n8n для полной автоматизации.
Шаг 2: Создание workflow в n8n
n8n использует ноды (nodes) для workflow. Мы создадим цепочку: Telegram Trigger → Filter → HTTP Request → Set → Telegram Send.
- Войдите в n8n и создайте новый workflow:
- Откройте n8n (localhost:5678 или облако).
- Нажмите New → Назовите: "ProTalk Order Bot".
- Сохраните (Ctrl+S).
- Добавьте триггер: Telegram Trigger (скриншот 1: Start с Send Order):
- Перетащите ноду Telegram Trigger (из категории Triggers).
- Подключите аккаунт: В Credentials добавьте Telegram API token (из @BotFather).
- Настройка:
- Updates: Message (для входящих сообщений).
- Additional Fields: Limit = 1.
- Активируйте webhook: Нажмите "Listen for test event" — отправьте сообщение в Telegram-бот. n8n покажет данные:
json.chat.id (telegramid), json.message.text (userquestion).
- Test: Отправьте "Готов!" — нода сработает.
- Добавьте фильтр для "Готов!" (скриншот 1: зеленый Intent "Готов!"):
- Перетащите IF ноду (Flow Control) после Trigger.
- Condition:
{{ $json.message.text }} contains "Готов!" (или equals для exact match).
- True: Продолжить к HTTP.
- False: Игнорировать или отправить fallback-сообщение (добавьте Telegram Send с "Не понял, повторите.").
- Добавьте HTTP Request: POST к API ProTalk (HTTP Request):
- Перетащите HTTP Request ноду после True-ветки IF.
- Настройка:
- Method: POST.
- URL:
https://api.pro-talk.ru/api/v1.0/ask/your_token (токен в пути; или URL без токена + Header Authorization: Bearer your_token).
- Headers: Add Header → Name:
Content-Type, Value: application/x-www-form-urlencoded.
- Body Parameters: Form-URL Encoded (выберите).
bot_id: 18955 (статический, из скриншота).
chat_id: {{ $node["Telegram Trigger"].json["chat"]["id"] }} (из триггера, скриншот 2: circled).
message: {{ $node["Telegram Trigger"].json["message"]["text"] }} (user_question, скриншот 2: underlined).
- Опционально:
message_id: {{ $node["Telegram Trigger"].json["message"]["message_id"] }}.
- Response: JSON (автоматически).
- Test: Execute node — должен вернуть JSON с
done (ответ) и usage.
- Сохраните ответ в переменную (Write JSON to variables):
- Перетащите Set ноду после HTTP Request.
- Настройка:
- Keep Only Set: Yes.
- Values to Set: String → Name:
protalk_reply, Value: {{ $node["HTTP Request"].json["done"] }}.
- Опционально: Replace
##NL## на \n с помощью Code ноды (JavaScript: return { protalk_reply: items[0].json.protalk_reply.replace(/##NL##/g, '\n') };).
- Обработка ошибок (скриншот 3: "No response from server"):
- После HTTP Request добавьте IF ноду для проверки статуса.
- Condition:
{{ $node["HTTP Request"].json["status"] }} equals 200 (или используйте Error Workflow).
- True: К Set и Send.
- False: Telegram нода с текстом "Извините, ошибка сервера. Попробуйте позже." (Chat ID:
{{ $node["Telegram Trigger"].json["chat"]["id"] }}).
- Отправьте ответ в Telegram (Message Chain с {{protalk_reply}}):
- Перетащите Telegram ноду (Send Message) после Set.
- Настройка:
- Resource: Message.
- Operation: Send Text Message.
- Chat ID:
{{ $node["Telegram Trigger"].json["chat"]["id"] }}.
- Text:
{{ $json.protalk_reply }}.
- Parse Mode: Markdown (для ссылок/форматирования).
- Test: Должен отправить ответ от API.
- Сбор данных клиента и валидация (Form fields + Validation):
- После отправки ответа добавьте цепочку Telegram Send Message нод для формы:
- 1: Text = "Введите полное имя:" (Chat ID как выше).
- Затем Wait нода (1 мин) + Telegram Trigger (для следующего сообщения) — но для простоты используйте loop: Loop Over Items с состоянием.
- Альтернатива: Последовательные Send + Set для хранения:
- Send: "Имя:" → Set
full_name = {{next_text}}.
- Аналогично:
first_name, last_name, phone, username, id (chat.id), telegram_id (chat.id), email, address (список полей с описаниями на русском).
- Validation (скриншот 5: Validation dropdown):
- После сбора: IF нода или Code (JS:
if (/^\+?[1-9]\d{1,14}$/.test(items[0].json.phone)) { return items; } else { throw new Error('Invalid phone'); } для телефона; аналогично для email с @).
- Если валидно: Send "Оплатите: https://pay.pro-talk.ru/…" (ссылка на оплату).
- Иначе: Send "Неверные данные, попробуйте снова." + Loop back (используйте Switch для ветвления).
- Дополнительные опции:
- Keyboard settings (right panel): В Telegram Send добавьте Reply Markup: JSON
{ "inline_keyboard": [["text": "Готов!", "callback_data": "ready"]] }.
- Audio/TTS: Если API возвращает MP3 (из вашего кода), используйте Telegram Send Audio ноду (Audio: URL из
protalk_reply).
- Delete variable after order: В конце: Set с очисткой (удалите поля:
delete items[0].json.sensitive_data; в Code ноде).
- Repeat question: Добавьте Loop ноду для повторных запросов (e.g., max 3 раза).
- Сохраните и активируйте:
- Execute Workflow для теста (Manual trigger).
- Активируйте: Toggle "Active" (webhook auto-runs on Telegram events).
- Error handling: Добавьте Error Trigger на весь workflow: Лог в Email ноду или Slack.
-
Шаг 3: Тестирование и отладка
- Тест флоу:
- Отправьте "Готов!" в Telegram-бот.
- Проверьте: n8n Executions (в дашборде) — HTTP статус 200,
protalk_reply заполнен.
- Ответ приходит? Данные собраны (проверьте JSON в нодах).
- Общие проблемы:
- 401 Token error: Проверьте токен в URL/Headers.
- Missing fields: Убедитесь, что
bot_id, chat_id, message передаются.
- JSON parse error: В HTTP Request включите "Response Format: JSON".
- Webhook issues: В @BotFather: /setwebhook с URL n8n (e.g., https://your-n8n.com/webhook/telegram).
- Локальная установка: Используйте ngrok для публичного webhook (ngrok http 5678).
- Расширение: Для других сервисов (Zapier, Integromat) — аналогично: Webhook → HTTP POST → Send response. n8n open-source, так что кастомизируйте кодом.
-
Итог
Теперь ваш бот в ProTalk интегрирован с n8n: Пользователь говорит "Готов!" → API обрабатывает заказ → Ответ + форма данных → Оплата. Workflow готов к масштабированию. Если нужны скриншоты n8n или доработки (e.g., для Zapier), дайте знать! Для продакшена — настройте HTTPS и мониторинг.