iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
生成式 AI

「解放自動化新利器!深入了解 n8n 如何助你輕鬆打造專屬工作流程」系列 第 13

Day 13:Webhook 即時推送 × 資料格式化 × 自動同步 Discord & Google Sheets

  • 分享至 

  • xImage
  •  

一、為什麼要用 Webhook?

傳統的 Schedule Trigger(定時輪詢)會有延遲,Webhook 則能讓外部服務(如 Alchemy、Portaly、各種鏈上監控平台)即時推送資料到 n8n,實現「零延遲」自動化。


二、完整流程設計

1. 建立 Webhook 節點

  1. 在 n8n 新增一個工作流,拖入 Webhook 節點。
  2. 設定 HTTP Method 為 POST,Path 例如填 whale-alert
  3. 啟用(Active)工作流,複製 Production URL(如 http://localhost:5678/webhook/whale-alert)。
  4. 將這個 URL 設定到你的鏈上監控服務(如 Alchemy、Portaly)作為 Webhook 目標。

https://ithelp.ithome.com.tw/upload/images/20250927/2017873686ZDXPeyJb.png

2. 格式化資料(Function/Code 節點)

Webhook 來源的資料格式通常和你原本的 Etherscan API 不一樣,必須「翻譯」成你後續流程能吃的格式。

  1. 在 Webhook 節點後方新增一個 Function(Code)節點
  2. 設定 Mode 為「Run Once for Each Item」。
  3. 貼上下方範例程式碼(請根據你實際收到的資料調整):
// 假設 Webhook 傳來的資料格式如下:
// {
//   "event": {
//     "activity": [
//       {
//         "fromAddress": "0x...",
//         "toAddress": "0x...",
//         "value": 10000.00,
//         "asset": "USDC",
//         "hash": "0x..."
//       }
//     ]
//   }
// }

const activity = $input.item.json.event?.activity?.[0];
if (!activity) {
  return { error: 'No activity found', raw: $input.item.json };
}
return {
  timeStamp: Math.floor(Date.now() / 1000), // 產生時間戳
  hash: activity.hash,
  from: activity.fromAddress,
  to: activity.toAddress,
  value: activity.value * 1e6, // 假設 USDC 小數位是6
  tokenSymbol: activity.asset,
  tokenDecimal: "6"
};

https://ithelp.ithome.com.tw/upload/images/20250927/20178736NQ9c6qdIPB.png

3. 發送到 Discord

  1. 在 Function 節點後方新增 Discord 節點。
  2. 設定好 Discord Webhook 憑證。
  3. 在 Message 欄位填入:

{{
💸 **代幣巨鯨快訊!** 💸\\n\\n +
偵測到一筆大額 **${$json.tokenSymbol}** 轉帳!\\n\\n +
**金額**: **${($json.value / 1e6).toLocaleString('en-US', { maximumFractionDigits: 2 })} ${$json.tokenSymbol}**\\n +
**From**: \\${$json.from}`\n+To: \${$[json.to](http://json.to/)}\\n\n+點此立即查看交易詳情`
}}
https://ithelp.ithome.com.tw/upload/images/20250927/20178736YGfSdXZv8j.png

4. 寫入 Google Sheets

  1. 在 Function 節點後方再新增 Google Sheets 節點(可與 Discord 節點平行)。
  2. 設定 Operation 為 Append row in sheet
  3. 選擇正確的 Google 憑證與目標 Sheet(建議直接用 Day 12 建立的那一份表格)。
  4. 選擇 Map Each Column Manually,對應欄位如下:
    • Timestamp ← {{$json.timeStamp}}
    • Token ← {{$json.tokenSymbol}}
    • Amount ← {{$json.value / 1e6}}
    • From ← {{$json.from}}
    • To ← {{$json.to}}
    • TxHash ← {{$json.hash}}

三、重點回顧

  • Webhook 節點:即時接收外部推送資料。
  • Function 節點:標準化資料格式,讓後續節點都能吃到一致的欄位。
  • Discord 節點:自動發送格式化告警訊息。
  • Google Sheets 節點:自動記錄每一筆巨鯨交易。
  • 建議直接用 Day 12 的 Google Sheets 表格,讓所有紀錄集中管理。

這樣你就完成了 Day 13 的「即時推送+自動格式化+多平台同步」自動化流程!


上一篇
Day 12:好記性不如爛筆頭——用 Google Sheets 儲存巨鯨告警
下一篇
Day 14:n8n 錯誤處理與自動告警
系列文
「解放自動化新利器!深入了解 n8n 如何助你輕鬆打造專屬工作流程」15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言