Как подключить Telegram к n8n: Полное руководство

n8n — это инструмент с открытым исходным кодом для оркестрации рабочих процессов (workflow automation), который позволяет интегрировать различные приложения и сервисы. Интеграция Telegram с n8n открывает широкие возможности для автоматизации: создание чат-ботов, автоматическая отправка уведомлений, модерация каналов, сбор данных и многое другое. Для работы с Telegram в n8n используется официальный Bot API.

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

Перед началом настройки интеграции необходимо выполнить несколько обязательных шагов.

    • Установленный и запущенный n8n. Это может быть локальная инсталляция (через npm, Docker) или облачная версия (n8n.cloud, собственный VPS).
    • Аккаунт в Telegram.
    • Telegram Bot Token. Это уникальный ключ для управления вашим ботом, который выдает @BotFather.
    • При необходимости — Chat ID. Идентификатор чата, канала или пользователя для отправки сообщений.

    Создание бота в Telegram и получение токена

    Все взаимодействие с Telegram API в n8n происходит через бота. Процесс его создания стандартен.

    1. Откройте Telegram и найдите официального бота @BotFather.
    2. Отправьте команду /newbot.
    3. Следуйте инструкциям: укажите отображаемое имя (name) и имя пользователя (username) бота. Username должен быть уникальным и заканчиваться на «bot» (например, my_awesome_n8n_bot).
    4. После успешного создания @BotFather предоставит вам HTTP API токен. Он выглядит как последовательность цифр и букв: 7100123456:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw. Этот токен необходимо скопировать и сохранить в надежном месте.
    5. Рекомендуется сразу настроить бота: с помощью команд @BotFather можно добавить описание, картинку, список команд (menu) и разрешить добавление в группы.

    Получение Chat ID

    Chat ID — это числовой идентификатор целевого чата, канала или пользователя. Существует несколько способов его получения.

    Способ 1: Через бота @userinfobot

    1. Найдите в Telegram бота @userinfobot.
    2. Запустите его командой /start.
    3. Бот немедленно ответит, указая ваш персональный Chat ID (для личных сообщений).

    Способ 2: Через API Telegram в n8n (рекомендуется для групп/каналов)

    Самый надежный метод — использовать триггер n8n «Telegram Trigger».

    1. Создайте новый workflow в n8n.
    2. Добавьте ноду (узел) «Telegram Trigger».
    3. В настройках ноды создайте новый ресурс (resource) для Telegram, введя полученный от @BotFather токен.
    4. Выберите событие (Event) — например, «Message».
    5. Активируйте workflow (переведите тумблер в активное состояние).
    6. Отправьте любое сообщение в личный диалог с ботом или добавьте бота в группу/канал и отправьте там сообщение.
    7. Нода сработает, и в ее выходных данных (output) вы увидите поле chat.id. Это и есть искомый Chat ID.
      • Для личных чатов Chat ID обычно является положительным числом.
      • Для групп и супергрупп Chat ID — это отрицательное число с большим модулем (например, -1001234567890).
      • Для каналов Chat ID также начинается с -100.

    Настройка нод Telegram в n8n

    n8n предлагает несколько нод для работы с Telegram, каждая для своих задач.

    Название ноды Тип Основное назначение Ключевые поля для настройки
    Telegram Trigger Триггер (Trigger) Запуск workflow по событию в Telegram (новое сообщение, callback query, обновление канала и т.д.). Event Type (Message, Callback Query, Channel Post), Credentials (токен бота).
    Telegram Действие (Action) Отправка сообщений, медиа, управление чатом (закрепление сообщений, ответ на callback queries). Operation (Send Message, Send Audio, Send Photo, Answer Callback Query), Chat ID, Text/Media, Parse Mode.

    1. Настройка учетных данных (Credentials)

    Перед использованием любой ноды Telegram необходимо создать подключение.

    1. В любой ноде Telegram нажмите на шестеренку «Credentials» и выберите «Create New».
    2. В выпадающем списке выберите «Telegram Bot API».
    3. В поле «Access Token» вставьте токен, полученный от @BotFather.
    4. Нажмите «Save». Теперь эти учетные данные можно использовать во всех нодах Telegram в этом workflow.

    2. Детальная настройка ноды «Telegram» (для отправки)

    Рассмотрим операцию «Send Message» как самую распространенную.

    • Resource: Оставьте «Message».
    • Operation: Выберите «Send Message».
    • Chat ID: Введите числовой Chat ID, полученный ранее. Можно использовать выражение (expression) для динамической подстановки, например, {{ $node['Telegram Trigger'].json.chat.id }}.
    • Text: Текст сообщения. Поддерживается Markdown и HTML (в зависимости от выбранного Parse Mode).
    • Parse Mode:
      • None: Простой текст.
      • Markdown: Используйте синтаксис жирный, _курсив_, `код`.
      • HTML: Используйте теги <b>, <i>, <code>, <pre>, <a href=»…»>.
    • Reply Markup: Позволяет добавить к сообщению клавиатуру.
      • Inline Keyboard: Кнопки, встроенные в сообщение. Задаются в формате JSON.
      • Reply Keyboard: Кастомная клавиатура внизу экрана.
      • Remove Keyboard: Скрыть кастомную клавиатуру.
      • Force Reply: Принудительно показать поле ввода пользователю.

    3. Детальная настройка ноды «Telegram Trigger»

    Эта нода запускает workflow при наступлении события.

    • Event Type:
      • Message: Любое текстовое, графическое или служебное сообщение в личном чате или группе.
      • Callback Query: Нажатие на inline-кнопку.
      • Channel Post: Новое сообщение в канале, где состоит бот.
      • Edited Message / Edited Channel Post: Редактирование сообщения.
    • Additional Fields: Позволяют фильтровать входящие события. Например, можно указать «Text» и задать регулярное выражение, чтобы workflow запускался только при получении определенной команды.

    Практические примеры рабочих процессов (Workflows)

    Пример 1: Простая отправка уведомления из n8n

    Цель: При запуске workflow вручную отправить сообщение в определенный чат Telegram.

    1. Добавьте ноду «Manual Trigger».
    2. Добавьте ноду «Telegram».
    3. Соедините их.
    4. Настройте ноду «Telegram»: Operation = «Send Message», укажите Chat ID и текст (например, «✅ Workflow запущен успешно»).
    5. Сохраните и запустите workflow, нажав на «Execute Node» на ноде Manual Trigger.

    Пример 2: Бот-повторитель (Echo Bot) с обработкой команд

    Цель: Бот должен отвечать на команду /start и повторять все остальные сообщения пользователя.

    1. Добавьте ноду «Telegram Trigger». Настройте: Event = «Message», создайте учетные данные.
    2. Добавьте ноду «IF» (или «Switch»). Соедините ее с триггером.
    3. В условии IF проверьте: {{ $json.message.text }} starts with /start.
    4. На ветке «true» добавьте ноду «Telegram». Настройте: Operation = «Send Message», Chat ID = {{ $json.chat.id }}, Text = «Привет! Я бот, созданный в n8n.».
    5. На ветке «false» добавьте другую ноду «Telegram». Настройте: Chat ID = {{ $json.chat.id }}, Text = Вы написали: {{ $json.message.text }}.
    6. Активируйте весь workflow. Теперь бот будет отвечать на команды и эхо-сообщения.

    Пример 3: Отправка оповещений от мониторинговой системы (Zabbix/Prometheus)

    Цель: При срабатывании alert в Zabbix отправить структурированное сообщение в Telegram-чат команды.

    1. Триггером может выступать нода «Webhook», ожидающая запрос от Zabbix.
    2. После ноды Webhook добавьте ноду «Function» или «Set» для преобразования входящих данных.
    3. Затем добавьте ноду «Telegram». В поле Text сформируйте сообщение, используя данные из webhook:
      🚨 Alert from Zabbix
      Host: {{ $json.host }}
      Problem: {{ $json.problem_name }}
      Severity: {{ $json.severity }}
      Time: {{ $json.time }}

      Установите Parse Mode = «Markdown». Укажите Chat ID группы для оповещений.

    Особенности и лучшие практики

    • Безопасность. Никогда не храните токен бота и Chat ID открыто в коде или публичных репозиториях. Используйте Credentials в n8n и переменные окружения (например, для Chat ID).
    • Ограничения Telegram API. Боты не могут инициировать диалог первыми. Первое сообщение должен отправить пользователь. Также существуют лимиты на частоту отправки сообщений (примерно 30 сообщений в секунду).
    • Обработка ошибок. Всегда добавляйте ноду «Catch» после нод Telegram для обработки возможных ошибок (неверный Chat ID, проблемы с сетью, блокировка бота).
    • Webhook vs Long Polling. Нода «Telegram Trigger» в n8n по умолчанию использует вебхук. Для его работы ваш инстанс n8n должен быть доступен из интернета (через ngrok, обратный прокси или облачный хостинг). В противном случае используйте режим «Polling» в настройках ноды, но он менее эффективен.
    • Inline-клавиатуры. Для создания интерактивных меню используйте Inline Keyboard. Данные с нажатых кнопок приходят через событие «Callback Query» в триггере. Не забудьте отвечать на них нодой «Telegram» с операцией «Answer Callback Query», чтобы убрать индикатор загрузки у пользователя.

    Часто задаваемые вопросы (FAQ)

    Вопрос 1: Бот не отвечает на сообщения в группе. Что делать?

    Ответ: Убедитесь в следующем:

    • Бот добавлен в группу как участник.
    • В группе боту не выдан режим «анонимности» (это может ограничивать его возможности).
    • В настройках триггера вы не используете фильтры (Additional Fields), которые могут блокировать сообщения из групп.
    • Проверьте, что workflow активирован (включен тумблер).

    Вопрос 2: Как отправить сообщение в канал?

    Ответ:

    1. Добавьте бота в канал как администратора (права на отправку сообщений достаточно).
    2. Получите Chat ID канала (отправьте в канал любое сообщение и используйте Telegram Trigger, как описано выше). Chat ID будет вида -1001234567890.
    3. Используйте этот Chat ID в ноде «Telegram» для отправки. Для публичных каналов можно использовать @username канала (например, @my_channel_name).

    Вопрос 3: Как отправить изображение или документ?

    Ответ: В ноде «Telegram» выберите соответствующую операцию: «Send Photo», «Send Document», «Send Audio» и т.д. В поле «File» можно указать:

    • Публичный URL на файл.
    • Binary Data из предыдущей ноды (например, после загрузки файла с диска или из интернета нодой «Read Binary File» или «HTTP Request»).

    Не забудьте заполнить поле «Chat ID» и, при необходимости, «Caption».

    Вопрос 4: Получаю ошибку «ETELEGRAM: 400 Bad Request: chat not found». В чем причина?

    Ответ: Эта ошибка означает, что указан неверный Chat ID. Убедитесь, что:

    • Бот имеет доступ к чату (добавлен туда и не был забанен).
    • Вы используете корректный числовой идентификатор. Для личных чатов убедитесь, что пользователь хотя бы раз написал боту.
    • Идентификатор введен без ошибок и лишних символов.

Вопрос 5: Можно ли использовать одного бота в нескольких разных workflow?

Ответ: Да, одного бота и его токен можно использовать в неограниченном количестве workflow в n8n. Однако важно учитывать лимиты Telegram API на частоту запросов со стороны одного бота.

Вопрос 6: Как сделать, чтобы бот отвечал только определенным пользователям?

Ответ: Используйте ноду «IF» после «Telegram Trigger». В условии проверяйте идентификатор пользователя: {{ $json.message.from.id }} равен [ваш ID]. ID пользователя также можно получить через @userinfobot или из выходных данных триггера ($json.message.from.id).

Заключение

Интеграция Telegram с n8n предоставляет мощный и гибкий инструмент для автоматизации коммуникаций. От простых уведомлений до сложных интерактивных ботов — все реализуемо через визуальный редактор рабочих процессов. Ключевые этапы: создание бота через @BotFather, получение токена и Chat ID, правильная настройка триггерных и исполнительных нод в n8n. Соблюдение лучших практик, таких как безопасное хранение токенов и обработка ошибок, обеспечит стабильную и надежную работу ваших автоматизаций.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.