Cách tạo các nút tùy chỉnh trong N8N

How to Create Custom Nodes in n8n

Hiểu N8N và các nút tùy chỉnh

N8N là một công cụ tự động hóa dòng công việc nguồn mở cho phép người dùng kết nối các ứng dụng và dịch vụ khác nhau thông qua giao diện trực quan. Một trong những tính năng nổi bật của nó là khả năng tạo các nút tùy chỉnh, giúp tăng cường tính linh hoạt và chức năng. Trong hướng dẫn này, chúng tôi sẽ khám phá cách tạo các nút tùy chỉnh trong N8N, từng bước, đồng thời đảm bảo sự rõ ràng và khả năng tiếp cận.

Điều kiện tiên quyết để tạo các nút tùy chỉnh

Trước khi đi sâu vào quá trình tạo các nút tùy chỉnh, điều cần thiết là phải đảm bảo các điều kiện tiên quyết sau đây:

  1. Kiến thức cơ bản về JavaScript: Vì các nút N8N được viết theo kịch bản bằng JavaScript, nên sự quen thuộc với ngôn ngữ lập trình này là thuận lợi.
  2. Node.js đã cài đặt: Đảm bảo rằng Node.js được cài đặt trên hệ thống của bạn. Đó là môi trường mà N8N chạy bên trong.
  3. Truy cập vào một thể hiện N8N: Bạn nên có một phiên bản cục bộ hoặc đám mây của N8N được thiết lập (bạn có thể chạy nó bằng Docker hoặc cài đặt trực tiếp).
  4. Mã trình chỉnh sửa mã: Sử dụng Trình chỉnh sửa mã đơn giản như Visual Studio Code hoặc Sublime Text để có trải nghiệm mã hóa tốt hơn.

Thiết lập môi trường phát triển của bạn

  1. Bản sao kho lưu trữ N8N:
    Để bắt đầu, chúng ta hãy sao chép kho lưu trữ GitHub N8N để truy cập vào thiết lập nút hiện có.

    git clone https://github.com/n8n-io/n8n.git
    cd n8n
  2. Cài đặt phụ thuộc:
    Cài đặt các phụ thuộc cần thiết bằng cách sử dụng NPM hoặc sợi.

    npm install
  3. Chạy N8N ở chế độ phát triển:
    Điều này cho phép bạn kiểm tra các nút tùy chỉnh của bạn khi bạn tạo chúng.

    npm run dev

Tạo một nút tùy chỉnh mới

Bước 1: Tạo thư mục nút của bạn

Điều hướng đến packages/nodes-base/nodes Thư mục trong kho N8N và tạo một thư mục mới cho nút tùy chỉnh của bạn:

mkdir MyCustomNode
cd MyCustomNode

Bước 2: Tạo các tệp nút

Bạn sẽ cần ít nhất hai tệp để bắt đầu:

  1. Triển khai nút (mycustomnode.node.ts): Tệp này chứa logic cho hoạt động của nút.
  2. Mô tả nút (mycustomnode.node.json): Tệp JSON này mô tả các thuộc tính và cấu trúc của nút.

Bước 3: Xác định mô tả nút

Mở MyCustomNode.node.json Tệp trong trình soạn thảo của bạn và xác định các thuộc tính của nút tùy chỉnh của bạn. Đây là một cấu trúc mẫu:

{
  "name": "My Custom Node",
  "icon": "file",
  "group": ["transform"],
  "version": 1,
  "description": "This is a custom node that performs XYZ functions.",
  "defaults": {
    "name": "My Custom Node",
    "color": "#FFB800"
  },
  "inputs": [],
  "outputs": [
    {
      "name": "main",
      "type": "output",
      "outputKey": "output_0",
      "description": "The output data"
    }
  ],
  "properties": [
    {
      "displayName": "Input Data",
      "name": "inputData",
      "type": "string",
      "default": "",
      "placeholder": "Enter your input data",
      "required": true
    }
  ]
}

Cấu trúc JSON này xác định tên, nhóm, đầu vào, đầu ra và thuộc tính của nút.

Bước 4: Thực hiện logic nút

Bây giờ, tạo ra MyCustomNode.node.ts Tệp và thực hiện chức năng của nút:

import { IExecuteFunctions } from 'n8n-core';
import { INodeType, INodeTypeDescription } from 'n8n-workflow';

export class MyCustomNode implements INodeType {
    description: INodeTypeDescription = {
        displayName: 'My Custom Node',
        name: 'myCustomNode',
        group: ['transform'],
        version: 1,
        description: 'This is a custom node that performs XYZ functions.',
        defaults: {
            name: 'My Custom Node',
            color: '#FFB800',
        },
        inputs: ['main'],
        outputs: ['main'],
        properties: [
            {
                displayName: 'Input Data',
                name: 'inputData',
                type: 'string',
                default: '',
                placeholder: 'Enter your input data',
                required: true,
            },
            {
                displayName: 'Output Data',
                name: 'outputData',
                type: 'string',
                default: 'Result will be shown here',
                placeholder: 'Output generated from input',
                required: true,
            },
        ],
    };

    async execute(this: IExecuteFunctions): Promise<void> {
        const inputData = this.getNodeParameter('inputData', 0) as string;
        const outputData = `Processed: ${inputData}`;
        this.prepareOutputData([{ json: { outputData } }]);
    }
}

Kiểm tra nút tùy chỉnh của bạn

  1. Đăng ký nút của bạn: Thêm nút mới được tạo của bạn vào packages/nodes-base/nodes/index.ts tài liệu.

     import { MyCustomNode } from './MyCustomNode/MyCustomNode.node';
     NodeClassRegistry.registerType(MyCustomNode);
  2. Bắt đầu phiên bản N8N của bạn: Với nút mới được tạo, khởi động lại N8N để tải các thay đổi.

  3. Sử dụng nút trong quy trình làm việc:
    Mở giao diện người dùng N8N trong trình duyệt của bạn, tạo một quy trình làm việc mới và thêm nút tùy chỉnh của bạn. Bây giờ nó sẽ được nhìn thấy trong bảng điều khiển nút.

  4. Chức năng kiểm tra: Kết nối nút của bạn với các nút khác trong luồng có thể sử dụng để kiểm tra nó. Dữ liệu đầu vào và kiểm tra đầu ra như được xác định.

Ghi lại nút của bạn

Tài liệu thích hợp là điều cần thiết cho khả năng duy trì và khả năng sử dụng của nút tùy chỉnh của bạn. Bạn nên tạo tệp readme trong thư mục của nút với cấu trúc sau:

  1. Tổng quan: Chi tiết những gì nút tùy chỉnh của bạn làm.
  2. Cài đặt: Giải thích cách người dùng có thể thêm nút của bạn vào thể hiện N8N của họ.
  3. Hướng dẫn sử dụng: Cung cấp hướng dẫn từng bước về cách sử dụng nút tùy chỉnh của bạn trong quy trình công việc.
  4. Ví dụ: Bao gồm các trường hợp sử dụng khác nhau cho thấy tính linh hoạt của nút.

Những cạm bẫy phổ biến để tránh

  1. Bỏ qua xử lý lỗi: Thực hiện xử lý lỗi trong triển khai nút của bạn để quản lý các lỗi đầu vào hoặc hoạt động bất ngờ.
  2. Tài liệu không đầy đủ: Luôn duy trì tài liệu kỹ lưỡng, vì nó hỗ trợ cả bạn và những người khác có thể sử dụng nút tùy chỉnh của bạn.
  3. Cân nhắc hiệu suất: Đảm bảo nút của bạn hoạt động hiệu quả; Sự phức tạp không cần thiết có thể làm chậm quy trình làm việc.

Các tính năng và chức năng nâng cao

Khi thoải mái với việc tạo các nút tùy chỉnh cơ bản, hãy xem xét khám phá các chức năng nâng cao hơn:

  1. Tích hợp API: Tích hợp API bên ngoài trực tiếp trong các nút của bạn.
  2. Chuyển đổi dữ liệu: Bao gồm logic phức tạp hơn để thao tác dữ liệu trước khi xuất nó.
  3. Xác thực đầu vào của người dùng: Thực thi xác thực chặt chẽ hơn trên đầu vào của người dùng để giảm thiểu lỗi.

Duy trì và cập nhật nút tùy chỉnh của bạn

Khi N8N phát triển, điều cần thiết là giữ cho nút tùy chỉnh của bạn được cập nhật:

  1. Thường xuyên kiểm tra các thay đổi API: Nếu nút của bạn giao diện với API bên ngoài, hãy để mắt đến tài liệu cho các thay đổi có thể ảnh hưởng đến chức năng của nút của bạn.
  2. Giám sát phát hành N8N: Được thông báo về các bản cập nhật N8N để tận dụng các tính năng mới và duy trì khả năng tương thích.
  3. Phản hồi của người dùng: Nếu bạn phát hành nút của mình cho cộng đồng, hãy thu thập phản hồi của người dùng và kết hợp các cải tiến.

Phần kết luận

Tạo các nút tùy chỉnh trong N8N mở ra một loạt các khả năng để tự động hóa và tích hợp. Với sự hiểu biết vững chắc về JavaScript, sự quen thuộc với cấu trúc N8N và một chút sáng tạo, bạn có thể phát triển các nút giúp tăng cường đáng kể khả năng quy trình làm việc. Cho dù đối với các dự án cá nhân hoặc đóng góp của cộng đồng, quá trình xây dựng các nút tùy chỉnh không chỉ cải thiện cá nhân hóa trong tự động hóa mà còn thúc đẩy sự hiểu biết sâu sắc hơn về cách kết nối các hệ thống. Nắm bắt những thách thức và tận dụng những lợi ích mà các nút tùy chỉnh trong N8N hiện tại!