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 Webhook 的 text 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 編排 - 音訊訊息發送 - 高度正式商業流程且沒有備援方案
十、下一個你可以自己改的方向¶
如果你已經把回聲機器人跑通,下一步最值得改的是:
- 加
IF,做關鍵字分流 - 加
Get User Profile - 加
Google Sheets記錄對話 - 加
OpenAI做自動摘要或分類
對應教材¶
- [[13 n8n LINE Bot 與 Line Webhook 教學]]
- [[09 n8n Tool 全分類教學]]
- [[05 n8n API 串接觀念與除錯手冊]]