Интеграция с N8n

Пошаговая инструкция: Интеграция бота 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.

Предварительные требования

  1. Аккаунт в ProTalk: У вас должен быть создан бот с API-токеном (из скриншотов: URL вида https://api.pro-talk.ru/api/v1.0/ask/{token}). Получите bot_id (ID бота, например, 18955) и токен.
  2. Аккаунт в n8n: Установите n8n локально (npm install -g n8n) или используйте облачную версию на n8n.io (бесплатный тариф для тестов). Запустите: n8n start (по умолчанию: http://localhost:5678).
  3. Telegram-бот: Создайте бота через @BotFather в Telegram, получите токен бота (API token). Добавьте бота в чат/группу.
  4. Тестовые данные: Подготовьте переменные для клиента, например:
  • telegram_id: ID чата из Telegram (из скриншотов: {{telegram_id}}).
  • user_question: Текст сообщения пользователя (например, "Готов!").
  1. Знания: Базовые навыки работы с нодами (nodes) в n8n. n8n использует JSON для данных.

Время настройки: 20–30 минут.


Шаг 1: Настройка сценария в ProTalk

ProTalk — это визуальный конструктор. Мы создадим базовый флоу для обработки "Готов!" и вызова API.

  1. Войдите в ProTalk: Перейдите в дашборд бота (api.pro-talk.ru).
  2. Создайте новый сценарий (Message Chain):
  • Добавьте Start блок (круглый, синий).
  • Подключите Send Order (колокольчик) — это триггер на отправку заказа пользователем.
  • От Start подключите стрелку к Message Chain (цепочка сообщений).
  1. Добавьте условия для сообщений:
  • В Message Chain добавьте Intent блоки:
    • Зеленый: "Готов!" (готов к заказу) → Подключите к HTTP-запросу.
    • Серый: "Any other phrase" (любая другая фраза) → Подключите к fallback (продолжить диалог).
  • Для "Готов!": Добавьте стрелку к HTTP Request блоку.
  1. Настройте 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 для трекинга.
  1. Обработка ответов от API:
  • Добавьте No response from server (красный блок) → Если API не отвечает, fallback к "Any other phrase".
  • Для успешного ответа: Подключите к Write JSON response to variables (скриншот 3: orange circle).
    • Mapping: doneprotalk_reply (переменная для ответа: "done" → "protalk_reply").
  • Подключите к следующему Message Chain для отправки {{protalk_reply}} пользователю (скриншот 4: chain с текстом {{protalk_reply}}).
  1. Сохраните и протестируйте: Нажмите "Save". Тестируйте в Telegram: Отправьте "Готов!" — бот должен вызвать API и ответить.

Результат: ProTalk теперь готов отправлять запросы в ваш API и обрабатывать ответы. Переходим к n8n для полной автоматизации.


Шаг 2: Создание workflow в n8n

n8n использует ноды (nodes) для workflow. Мы создадим цепочку: Telegram Trigger → Filter → HTTP Request → Set → Telegram Send.

  1. Войдите в n8n и создайте новый workflow:
  • Откройте n8n (localhost:5678 или облако).
  • Нажмите New → Назовите: "ProTalk Order Bot".
  • Сохраните (Ctrl+S).
  1. Добавьте триггер: 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. Добавьте фильтр для "Готов!" (скриншот 1: зеленый Intent "Готов!"):
  • Перетащите IF ноду (Flow Control) после Trigger.
  • Condition: {{ $json.message.text }} contains "Готов!" (или equals для exact match).
  • True: Продолжить к HTTP.
  • False: Игнорировать или отправить fallback-сообщение (добавьте Telegram Send с "Не понял, повторите.").
  1. Добавьте 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.
  1. Сохраните ответ в переменную (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') };).
  1. Обработка ошибок (скриншот 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"] }}).
  1. Отправьте ответ в 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.
  1. Сбор данных клиента и валидация (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 для ветвления).
  1. Дополнительные опции:
  • 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 раза).
  1. Сохраните и активируйте:
  • Execute Workflow для теста (Manual trigger).
  • Активируйте: Toggle "Active" (webhook auto-runs on Telegram events).
  • Error handling: Добавьте Error Trigger на весь workflow: Лог в Email ноду или Slack.

Шаг 3: Тестирование и отладка

  1. Тест флоу:
  • Отправьте "Готов!" в Telegram-бот.
  • Проверьте: n8n Executions (в дашборде) — HTTP статус 200, protalk_reply заполнен.
  • Ответ приходит? Данные собраны (проверьте JSON в нодах).
  1. Общие проблемы:
  • 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).
  1. Расширение: Для других сервисов (Zapier, Integromat) — аналогично: Webhook → HTTP POST → Send response. n8n open-source, так что кастомизируйте кодом.

Итог

Теперь ваш бот в ProTalk интегрирован с n8n: Пользователь говорит "Готов!" → API обрабатывает заказ → Ответ + форма данных → Оплата. Workflow готов к масштабированию. Если нужны скриншоты n8n или доработки (e.g., для Zapier), дайте знать! Для продакшена — настройте HTTPS и мониторинг.