N8n: Подробное описание нод (узлов)

N8n — это инструмент для автоматизации рабочих процессов с открытым исходным кодом, который использует парадигму «узлов» (нод) для построения логики. Каждый узел представляет собой отдельный шаг в рабочем процессе (workflow) и выполняет строго определенную функцию: получение данных, их преобразование, отправку в другую систему или выполнение логических операций. Рабочий процесс создается путем соединения узлов между собой, где выходные данные (output) одного узла становятся входными данными (input) для следующего. Понимание типов и функций узлов является фундаментальным для эффективного использования платформы.

Классификация узлов в N8n

Узлы в N8n можно классифицировать по нескольким ключевым признакам: по типу триггера, по назначению и по принадлежности к приложению или сервису. Основное деление происходит на триггерные узлы и узлы действий.

Триггерные узлы (Trigger Nodes)

Триггерные узлы инициируют выполнение рабочего процесса. Они всегда являются первым узлом в цепочке и ожидают наступления определенного события.

    • Schedule Trigger: Запускает workflow по расписанию (например, каждые 5 минут, ежедневно в 9:00, по понедельникам). Не требует внешних событий.
    • Webhook Trigger: Создает уникальный URL-адрес, который ожидает входящих HTTP-запросов (POST, GET). Запускает workflow при получении запроса от внешнего сервиса (например, от формы на сайте, от GitLab, от платежной системы).
    • Polling Trigger: Узлы, которые периодически опрашивают (poll) API стороннего сервиса на наличие новых данных (например, новые письма в почте, новые записи в таблице). Пример: узел Email Trigger (IMAP).
    • Manual Trigger: Позволяет запустить workflow вручную одним кликом из интерфейса N8n. Используется для тестирования и отладки.

    Узлы действий (Action Nodes) и их категории

    Узлы действий выполняют основную работу по обработке данных, взаимодействию с API и управлению потоком.

    1. Узлы для работы с приложениями и сервисами (App Nodes)

    Самая обширная категория. Каждый узел представляет собой подключение к конкретному API сервиса.

    • Коммуникации: Slack (отправить сообщение), Telegram, Discord, Microsoft Teams, Email (SMTP).
    • Хранение данных: Google Sheets, Airtable, MySQL, PostgreSQL, Notion, Supabase.
    • CRM и маркетинг: HubSpot, Salesforce, Mailchimp.
    • Разработка и DevOps: GitHub, GitLab, Jira, Docker.
    • Облачные платформы: AWS S3, Google Cloud, Microsoft Azure.

    Большинство таких узлов поддерживают несколько операций. Например, узел Google Sheets может: создать лист, прочитать данные, добавить строку, обновить ячейку, искать данные.

    2. Узлы для манипуляции данными (Data Transformation)

    Эти узлы изменяют, структурируют и извлекают данные без обращения к внешним сервисам.

    • Set: Позволяет вручную задать поля и их значения в JSON-объекте. Ключевой узел для создания структур данных.
    • HTML Extract: Извлекает данные из HTML-кода с помощью CSS-селекторов.

    • Spreadsheet File: Преобразует данные из JSON в форматы CSV, XLSX, HTML, ODS и обратно.
    • XML: Преобразует XML в JSON и JSON в XML.

    3. Узлы управления потоком (Flow Control)

    Эти узлы определяют логику выполнения workflow: ветвление, слияние, циклы, задержки.

    • IF: Основной узел ветвления. Разделяет поток на две или более ветки в зависимости от условия (например, если сумма заказа > 1000, то отправить в ветку «VIP», иначе — в ветку «Стандарт»).
    • Switch: Аналог оператора switch в программировании. Направляет поток по одной из многих веток в зависимости от значения конкретного поля.
    • Merge: Объединяет несколько параллельных веток выполнения обратно в один поток. Важно для обработки данных после узлов IF или Switch.
    • Wait: Ставит выполнение workflow на паузу на заданное время или до наступления определенной даты.
    • Loop Over Items: Разбивает массив элементов на отдельные элементы и выполняет последующие узлы для каждого из них поочередно (цикл).

    4. Узлы для работы с кодом (Code Nodes)

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

    • Function: Позволяет написать пользовательскую функцию на JavaScript для обработки данных. Имеет доступ к входным данным, переменным окружения и может возвращать любой JSON.
    • Function Item: Аналогичен Function, но работает в режиме «item-by-item», выполняя код для каждой отдельной записи в массиве данных.

    5. Узлы агрегации и фильтрации

    • Filter: Пропускает дальше по цепочке только те элементы данных, которые соответствуют заданным условиям. Остальные отбрасываются.
    • Limit: Ограничивает количество элементов, проходящих через узел (например, пропустить только первые 10 записей).
    • Sort: Сортирует массив данных по указанному полю в порядке возрастания или убывания.

    6. Узлы для работы с файлами (File Nodes)

    Читают и записывают файлы в локальной файловой системе или в оперативной памяти N8n.

    • Read/Write Binary File: Чтение и запись бинарных файлов (изображения, PDF).
    • Read/Write Binary Files: Аналогично, но для работы с множеством файлов.

    Ключевые параметры и настройки узлов

    Каждый узел имеет общий набор конфигурируемых параметров.

    Параметр Описание Пример
    Resource Определяет тип ресурса API, с которым будет работать узел (для узлов приложений). В узле GitHub: Issue, Pull Request, Repository.
    Operation Конкретное действие, выполняемое над выбранным ресурсом. Для ресурса «Issue»: Create, Get, Update, Delete.
    Credentials Учетные данные для аутентификации в сервисе (API ключ, OAuth, логин/пароль). Токен доступа к GitHub, ключ к API OpenAI.
    Fields to Send / Parameters Динамические поля для передачи данных в API. Значения можно вводить статически или использовать выражения. Поле «title» для создания новой задачи в Jira.
    Options Дополнительные, менее часто используемые настройки API. Пагинация, таймауты, SSL-сертификаты.

    Выражения (Expressions) и доступ к данным

    Мощь N8n раскрывается при использовании выражений для динамической подстановки значений в поля узлов. Выражения позволяют ссылаться на данные, полученные от предыдущих узлов.

    • Синтаксис: Выражения заключаются в двойные фигурные скобки {{ }}.
    • Доступ к данным: Внутри выражений используется объектная модель. Например, {{ $json.order_id }} обращается к полю order_id из выходных данных предыдущего узла.
    • Встроенные функции: N8n предоставляет обширную библиотеку функций для работы со строками, датами, математикой и данными. Пример: {{ $now.format("YYYY-MM-DD") }} вернет текущую дату в заданном формате.
    • Переменные: Можно использовать переменные окружения ({{ $env.MY_API_KEY }}) и переменные workflow ({{ $vars.myVariable }}).

    Обработка ошибок и отладка

    Каждый узел имеет два основных выхода: Success (успех) и Error (ошибка). Это позволяет построить отказоустойчивую логику.

    • Error Trigger: Специальный триггерный узел, который активируется, если любой узел в workflow завершился с ошибкой. Позволяет централизованно обрабатывать сбои (например, отправить уведомление в Telegram).
    • Режим отладки: При ручном запуске workflow можно просмотреть входные и выходные данные для каждого узла, что критически важно для поиска проблем в логике или преобразованиях данных.

Создание собственных узлов

N8n имеет открытую архитектуру, позволяющую разработчикам создавать собственные узлы для внутренних или отсутствующих в библиотеке сервисов. Для этого необходимы знания TypeScript/JavaScript. Пользовательский узел описывает свои свойства, методы аутентификации, параметры и операции.

Ответы на часто задаваемые вопросы (FAQ)

В чем разница между узлами Webhook и HTTP Request?

Webhook — это триггер, который пассивно ожидает входящих HTTP-запросов для запуска workflow. Узел HTTP Request — это узел действия, который активно выполняет исходящий HTTP-запрос (GET, POST и т.д.) к указанному URL в процессе выполнения workflow. Первый — для приема, второй — для отправки.

Как обработать массив данных в цикле?

Используйте узел Loop Over Items (или «Split In Batches» для пакетной обработки). Поместите узлы, которые должны выполняться для каждого элемента массива, внутри этого узла. На вход Loop Over Items подается массив, а все узлы внутри цикла будут получать данные по одному элементу за раз.

Можно ли запустить один workflow из другого?

Да, для этого существует узел Execute Workflow. Он может запустить другой workflow синхронно (дождаться его результата) или асинхронно (просто инициировать запуск). Данные можно передавать между workflow через этот узел.

Как хранить состояние между запусками workflow?

N8n по умолчанию не хранит состояние. Для этого необходимо использовать внешние хранилища: базы данных (узлы PostgreSQL, MySQL), ключ-значение хранилища (Redis), или файлы. Альтернативно, можно использовать встроенные Variables (Переменные workflow), но их значение сбрасывается после перезапуска сервера N8n.

Чем узел IF отличается от узла Switch?

Узел IF предназначен для бинарного или простого ветвления по одному или нескольким условиям (если A, то путь 1, иначе если B, то путь 2, иначе путь 3). Узел Switch оценивает значение одного выражения и сравнивает его с заранее заданными статическими значениями (ключами), направляя выполнение по соответствующей ветке. Он более удобен, когда нужно много веток на основе конкретных значений поля (например, маршрутизация заказов по коду страны).

Как обеспечить безопасное хранение секретов (API-ключей)?

Все учетные данные (Credentials) в N8n шифруются и хранятся отдельно от конфигурации workflow. Используйте встроенный менеджер учетных данных. В выражениях всегда ссылайтесь на них через переменные окружения ($env) или выбирая из менеджера, никогда не вставляйте ключи напрямую в поля узлов в виде plain text.

Что делать, если нужного узла для сервиса нет в библиотеке?

Есть три основных варианта: 1) Использовать универсальный узел HTTP Request для прямого взаимодействия с API сервиса. 2) Использовать узел Function для написания кастомной логики на JavaScript, возможно, с использованием сторонних npm-библиотек. 3) Создать собственный пользовательский узел, что требует навыков разработки, но предоставляет максимальную интеграцию и удобство повторного использования.

Комментарии

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

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

Войти

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

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

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