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. Используется для тестирования и отладки.
- Коммуникации: 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.
- Set: Позволяет вручную задать поля и их значения в JSON-объекте. Ключевой узел для создания структур данных.
- Spreadsheet File: Преобразует данные из JSON в форматы CSV, XLSX, HTML, ODS и обратно.
- XML: Преобразует XML в JSON и JSON в XML.
- IF: Основной узел ветвления. Разделяет поток на две или более ветки в зависимости от условия (например, если сумма заказа > 1000, то отправить в ветку «VIP», иначе — в ветку «Стандарт»).
- Switch: Аналог оператора switch в программировании. Направляет поток по одной из многих веток в зависимости от значения конкретного поля.
- Merge: Объединяет несколько параллельных веток выполнения обратно в один поток. Важно для обработки данных после узлов IF или Switch.
- Wait: Ставит выполнение workflow на паузу на заданное время или до наступления определенной даты.
- Loop Over Items: Разбивает массив элементов на отдельные элементы и выполняет последующие узлы для каждого из них поочередно (цикл).
- Function: Позволяет написать пользовательскую функцию на JavaScript для обработки данных. Имеет доступ к входным данным, переменным окружения и может возвращать любой JSON.
- Function Item: Аналогичен Function, но работает в режиме «item-by-item», выполняя код для каждой отдельной записи в массиве данных.
- Filter: Пропускает дальше по цепочке только те элементы данных, которые соответствуют заданным условиям. Остальные отбрасываются.
- Limit: Ограничивает количество элементов, проходящих через узел (например, пропустить только первые 10 записей).
- Sort: Сортирует массив данных по указанному полю в порядке возрастания или убывания.
- Read/Write Binary File: Чтение и запись бинарных файлов (изображения, PDF).
- Read/Write Binary Files: Аналогично, но для работы с множеством файлов.
- Синтаксис: Выражения заключаются в двойные фигурные скобки
{{ }}. - Доступ к данным: Внутри выражений используется объектная модель. Например,
{{ $json.order_id }}обращается к полюorder_idиз выходных данных предыдущего узла. - Встроенные функции: N8n предоставляет обширную библиотеку функций для работы со строками, датами, математикой и данными. Пример:
{{ $now.format("YYYY-MM-DD") }}вернет текущую дату в заданном формате. - Переменные: Можно использовать переменные окружения (
{{ $env.MY_API_KEY }}) и переменные workflow ({{ $vars.myVariable }}). - Error Trigger: Специальный триггерный узел, который активируется, если любой узел в workflow завершился с ошибкой. Позволяет централизованно обрабатывать сбои (например, отправить уведомление в Telegram).
- Режим отладки: При ручном запуске workflow можно просмотреть входные и выходные данные для каждого узла, что критически важно для поиска проблем в логике или преобразованиях данных.
Узлы действий (Action Nodes) и их категории
Узлы действий выполняют основную работу по обработке данных, взаимодействию с API и управлению потоком.
1. Узлы для работы с приложениями и сервисами (App Nodes)
Самая обширная категория. Каждый узел представляет собой подключение к конкретному API сервиса.
Большинство таких узлов поддерживают несколько операций. Например, узел Google Sheets может: создать лист, прочитать данные, добавить строку, обновить ячейку, искать данные.
2. Узлы для манипуляции данными (Data Transformation)
Эти узлы изменяют, структурируют и извлекают данные без обращения к внешним сервисам.
HTML Extract: Извлекает данные из HTML-кода с помощью CSS-селекторов.
3. Узлы управления потоком (Flow Control)
Эти узлы определяют логику выполнения workflow: ветвление, слияние, циклы, задержки.
4. Узлы для работы с кодом (Code Nodes)
Предоставляют гибкость для выполнения операций, не покрытых стандартными узлами.
5. Узлы агрегации и фильтрации
6. Узлы для работы с файлами (File Nodes)
Читают и записывают файлы в локальной файловой системе или в оперативной памяти N8n.
Ключевые параметры и настройки узлов
Каждый узел имеет общий набор конфигурируемых параметров.
| Параметр | Описание | Пример |
|---|---|---|
| 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 раскрывается при использовании выражений для динамической подстановки значений в поля узлов. Выражения позволяют ссылаться на данные, полученные от предыдущих узлов.
Обработка ошибок и отладка
Каждый узел имеет два основных выхода: Success (успех) и Error (ошибка). Это позволяет построить отказоустойчивую логику.
Создание собственных узлов
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) Создать собственный пользовательский узел, что требует навыков разработки, но предоставляет максимальную интеграцию и удобство повторного использования.
Комментарии