跳轉到

LINE 節點清單與欄位 mapping

這份是搭配 11-line-echo-bot-webhook.json 一起使用的中文對照表。你在 n8n 裡匯入後,可以一邊看節點,一邊對照這份欄位表。

這份檔案在幫你解什麼問題

很多人匯入 workflow 之後,知道節點有接起來,卻不知道每個節點到底在拿什麼資料、吐出什麼資料。這份對照表的用途,就是把:

  • 節點用途
  • 核心欄位
  • expression 來源
  • 常見使用情境

一次整理清楚。

一、回聲機器人節點清單

1. Line Webhook

用途: - 接收 LINE 事件 - 驗證 signature - 依事件類型分 output

這個範例使用哪個 output: - text

必填: - Path - Webhook credential,裡面放 Channel Secret

你在 LINE 後台要填的 webhook URL:

https://你的公開網域/webhook/line-echo-demo

二、第一個節點拿到的原始資料

收到文字訊息後,Line Webhooktext output 會有兩個關鍵欄位:

{
  "destination": "xxxx",
  "event": {
    "type": "message",
    "replyToken": "xxxx",
    "timestamp": 1710000000000,
    "source": {
      "type": "user",
      "userId": "Uxxxx"
    },
    "message": {
      "id": "1111111111",
      "type": "text",
      "text": "你好"
    }
  }
}

所以你真正常抓的是 event 裡面的值。

三、Normalize Text Event 欄位 mapping

這個節點的目的,是把 LINE 原始 payload 轉成比較好用的標準欄位。

新欄位 Expression 說明
eventType {{$json.event.type}} 事件類型
replyToken {{$json.event.replyToken}} 回覆這次事件用
receivedText {{$json.event.message.text || ''}} 使用者傳來的文字
userId {{$json.event.source.userId || ''}} 使用者 ID
sourceType {{$json.event.source.type || ''}} user / group / room
messageId {{$json.event.message.id || ''}} 之後拿多媒體內容可用
receivedAt {{$json.event.timestamp || $now}} 收到時間

為什麼要多這一步

因為你後面幾乎一定會做這些事:

  • 寫入 Google Sheets
  • 分類訊息
  • 交給 AI 摘要或判斷
  • 依 userId 查使用者資料

如果一開始不先正規化,後面每個節點都要一直寫很長的 expression。

四、Build Echo Message 節點

節點類型: - Line Message

Message Type: - Text

欄位:

欄位
Text ={{'你剛剛說:' + $node["Normalize Text Event"].json.receivedText}}

輸出結果:

{
  "message": {
    "type": "text",
    "text": "你剛剛說:你好"
  }
}

注意: - 這個節點只負責組 message object - 它不會幫你送出 - 它的輸出主要就是 message

五、Reply to LINE 節點

節點類型: - Line Messaging API

Operation: - Send Message

欄位 mapping:

欄位 Expression 用途
ReplyToken {{$node["Normalize Text Event"].json.replyToken}} 對這次事件回覆
Message {{$json.message}} 拿上一個節點組好的 message object

這裡有一個初學者常見誤會:

Reply to LINE 的輸入資料來自 Build Echo Message,所以 $json 只有 message。如果你想拿 replyToken,就不能直接寫 $json.replyToken,而要回頭抓:

{{$node["Normalize Text Event"].json.replyToken}}

這是因為 Line Message 節點本身不會保留前一個節點所有欄位。

六、Respond to Webhook 節點

用途: - 回傳 HTTP 200 給 LINE

在這個範例裡,回傳內容是:

{
  "ok": true,
  "message": "LINE webhook processed"
}

這個回傳不是給 LINE 使用者看的,而是給 LINE 平台看的 HTTP 回應。

七、常見欄位總表

你最常遇到的 LINE event 欄位

欄位 位置 代表什麼
replyToken event.replyToken 回覆這次事件
userId event.source.userId 使用者對象 ID
groupId event.source.groupId 群組對象 ID
roomId event.source.roomId room 對象 ID
message.id event.message.id 取多媒體內容
message.type event.message.type text/image/audio/video/location/sticker
message.text event.message.text 使用者文字內容
timestamp event.timestamp 事件時間

八、常見場景對應哪個欄位

場景 1. 回覆當前訊息

你要用: - replyToken

場景 2. 排程主動推播

你要用: - userId - 或 groupId - 或 roomId

場景 3. 下載圖片或音訊

你要用: - message.id

場景 4. 記錄是誰送來的

你要用: - source.type - userId

九、這個套件目前比較適合怎麼用

最適合先拿來做: - 文字回覆 Bot - 關鍵字分流 Bot - LINE 通知出口 - 基本圖片接收與後續處理

比較不建議一開始就重壓: - 複雜 Flex 編排 - 音訊訊息發送 - 高度正式商業流程且沒有備援方案

十、下一個你可以自己改的方向

如果你已經把回聲機器人跑通,下一步最值得改的是:

  1. IF,做關鍵字分流
  2. Get User Profile
  3. Google Sheets 記錄對話
  4. OpenAI 做自動摘要或分類

對應教材

  • [[13 n8n LINE Bot 與 Line Webhook 教學]]
  • [[09 n8n Tool 全分類教學]]
  • [[05 n8n API 串接觀念與除錯手冊]]