[推薦] 方便使用的自動化 workflow 工具 – n8n

n8n 是個可以透過串接方式完成一連串任務的 workflow 工具,類似於收費服務的 pipedream 與 zapier ,主打不寫程式來完成一連串的事情,而如果要彈性功能也可以使用 javascript 或是 python 來執行一些較客製化的事情,有提供 GUI 可以進行流設定,並且會將每個執行的流程記錄下來,介面上類似於 AWS 的 step function

官方網站:https://n8n.io/
原始碼:https://github.com/n8n-io/n8n
管理用 API 文件:https://docs.n8n.io/api/

介紹

其可以使用許多方式驅動一連串的事情,其中包括:

  • webhook
  • cronjob 排程
  • 手動點擊驅動
  • IMAP 收到信件時
  • …其他

其串接的功能也非常多,可以自行撰寫程式處理客製化行為或是使用提供的多樣化工具

啟動

使用官方的 docker 啟動

如果用的功能很基本的話,並且想快速安裝,可以直接使用官方的 docker images

docker run -it -d \
  --restart=always \
  --name n8n \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

加上需要使用的 npm 套件 (非必要)

如果 workflow 中有需要使用「Code」這個功能,並且會需要使用第三方套件 (例如:lodash),預設會是無法使用的,需要額外安裝並且設定進環境變數中

主要步驟為:

  • 在 n8n 中安裝所要套件

  • 設定環境變數 NODE_FUNCTION_ALLOW_EXTERNAL

如果是 Docker 的話可以使用 Dockerfile 來建立自己所要的 image:

FROM n8nio/n8n

RUN cd /usr/local/lib/node_modules/n8n

RUN npm install lodash

ENV NODE_FUNCTION_ALLOW_EXTERNAL=moment

ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"]

一些範例

範例一:使用 javascript 執行行為並產生 response

我們使用 webhook 驅動

在 Response 選擇 Using 'Respond to Webhook' Node

接著第二個 Node 選擇 Code

並且輸入自己的程式碼

最後一個則選擇 Respond to Webhook

在選項選 First Incoming Item

範例二:註冊一個事件,過段時間執行

我們使用 webhook 驅動

在 response 選擇 Immediately 讓使用者不需要等待後續任務

在第二個 node 選擇 Wait

設定要等待的時間

第三個 Node 選擇自己要做的步驟

這邊使用 Http Request做示範

輸入要 callback 的 API

發表迴響