LINE Bot 不再只會單向通知!N8N 視覺化工作流實戰,打造你的 AI 智慧客服大腦

2025/12/6 | API 串接與自動化, N8N大補帖, 技術教學資源

N8N 驅動:告別罐頭訊息,打造你的 LINE 智慧客服

厭倦了只會單向推播的 LINE 機器人嗎?本文揭露如何利用強大的 N8N 視覺化工作流,將您的 LINE Bot 從「數位傳單」升級為「會思考」的智慧客服大腦。我們將實戰教學 Webhook 設定、關鍵字邏輯分流、到發送吸睛的 Flex Message。停止讓使用者訊息石沉大海!立即掌握這項自動化神技,釋放雙向溝通的潛力,為您的企業打造 24 小時不間斷的專業互動體驗。立刻動手,讓您的服務脫胎換骨!

需要專業協助?

聯絡浪花專案團隊 →

LINE Bot 不再只會單向通知!N8N 視覺化工作流實戰,打造你的 AI 智慧客服大腦

哈囉,各位朋友,又是我,浪花科技的 Eric。最近接手了幾個案子,發現很多企業的 LINE 官方帳號,都還停留在「單向廣播」的遠古時代——發優惠券、推播新文章,然後…就沒有然後了。使用者傳來的訊息,十之八九都是石沉大海,或是被罐頭訊息打發。這哪叫互動?根本是數位版的傳單嘛!

身為一個有點龜毛的工程師,我實在看不下去。今天,我們不聊 WordPress 底層那些硬梆梆的程式碼,來玩點有趣又實用的東西:用 N8n 這個自動化神器,打造一個真正「會思考」、能互動的 LINE 聊天機器人。忘掉那些複製貼上的罐頭回覆吧!這篇 N8n line bot 教學 將帶你從零開始,用視覺化的拖拉點選,建立一個能根據關鍵字回覆、甚至能秀出精美圖文選單的智慧小助理。

你可能會想:「之前不是有篇 n8n x LINE 串接的文章 嗎?」沒錯,那篇是入門,教你如何把通知『推』出去。今天我們要玩的是進階版——讓你的 Bot 學會『聽』和『說』,建立一個雙向溝通的橋樑。準備好了嗎?泡杯咖啡,跟著我一起動手吧!

戰前準備:你的 N8N x LINE Bot 軍火庫

在我們開始打造這個自動化大腦之前,總得先把工具和材料備齊。這就像組裝電腦,你總不能兩手空空就想開工吧?放心,過程不複雜,但請務必確認以下幾點都準備妥當。

必備條件,缺一不可

  • 一個 N8n 執行個體:無論你是使用 N8n Cloud 還是像我一樣,喜歡自己動手在 VPS 上用 Docker 架設,都可以。自己架設的好處是彈性超高,沒有執行次數的限制,對於我們這種喜歡實驗各種自動化的工程師來說,簡直是天堂。(小小囉嗦一下,自己管主機雖然多了點責任,但那種完全掌控的感覺,真的很棒!)
  • 一個 LINE Developer 帳號:這是免費的,去 LINE Developers 官網註冊一下,然後建立一個「Messaging API」類型的 Channel。這就是我們未來 Bot 的身份證。
  • Webhook 的基本概念:你不需要是個網路專家,但至少要知道 Webhook 就像一個專屬的門鈴。LINE 那邊有使用者傳訊息(有人按門鈴),LINE 就會通知你家(N8n 的 Webhook URL),然後告訴你是誰、說了什麼。

取得你的 LINE Channel 金鑰

這是整個串接過程中最關鍵也最需要保密的部分。請登入你的 LINE Developers Console,找到你剛剛建立的 Channel。

  1. 點進你的 Channel,切換到「Messaging API」分頁。
  2. 往下滑,你會找到「Channel access token (long-lived)」。點擊「Issue」按鈕,你會得到一長串的英數字元。這就是 N8n 代表你的 Bot 去發言的「令牌」。
  3. 再往下,找到「Channel secret」。這是用來驗證收到的訊息是否真的來自 LINE 的「密鑰」。

工程師警告:這兩組金鑰,特別是 Channel access token,絕對、絕對不要外洩!它就跟你的伺服器 root 密碼或 SSH 私鑰一樣重要。一旦洩漏,任何人都可以用你的 Bot 名義亂發訊息,後果不堪設想。

實戰第一步:打造「你說我回」的關鍵字機器人

萬事俱備,我們就從最經典的「關鍵字回覆」功能開始。目標是當使用者輸入特定字詞(例如:「營業時間」),我們的 Bot 就能自動回覆對應的資訊。

步驟一:架設 Webhook 接收站:N8n 的耳朵

首先,在 N8n 開一個新的 Workflow。

  1. 第一個節點,請選擇「Webhook」。這個節點就是我們剛剛提到的「門鈴」。
  2. 建立後,你會在右邊看到「Test URL」和「Production URL」。在開發階段,我們先用「Test URL」。把它複製下來。
  3. 回到 LINE Developers Console 的「Messaging API」設定頁面,找到「Webhook settings」,點擊「Edit」,把剛剛複製的 N8n Test URL 貼上去,然後開啟「Use webhook」。
  4. 重點來了:LINE 的 Webhook 只接受 HTTPS 加密的連線。如果你是自己架設 N8n,請務必確認你的伺服器已經設定好 SSL 憑證(例如用 Let’s Encrypt)。安全性是網路世界的基本功,沒得商量。

步驟二:解析 LINE 訊息:拆解 Payload 的藝術

設定好 Webhook 之後,N8n 還不知道 LINE 會送來什麼樣的資料。所以我們要先「監聽」一次。

  1. 在 N8n 的 Webhook 節點,點擊右上角的「Listen for test event」。
  2. 現在,拿起你的手機,對你的 LINE Bot 發送一則測試訊息,例如「哈囉」。
  3. 你會看到 N8n 的節點開始轉圈,然後出現一個綠色的勾勾,代表它成功收到了資料!

點開收到的資料,你會看到一堆 JSON 格式的內容。先別慌,這不是亂碼,這是 LINE 送來的「情資」,我們要學會拆解它。最重要的幾個欄位是:

  • events[0].type: 事件類型,收到文字訊息時會是 message
  • events[0].replyToken: 極度重要!這是一次性的回覆令牌,我們必須用這個 token 才能回覆「這則」訊息。它的壽命很短,所以要馬上用掉。
  • events[0].message.text: 使用者傳送的文字內容。這就是我們要判斷的關鍵字。

步驟三:邏輯分流:用 Switch Node 當總機

收到訊息後,總不能所有訊息都回覆一樣的內容吧?這時候就需要「Switch」節點來扮演總機的角色,根據不同的關鍵字,把流程導向不同的地方。

  1. 在 Webhook 節點後面,新增一個「Switch」節點。
  2. 在「Property」欄位,我們要指定判斷的依據。用滑鼠拖拉,或手動輸入 {{$json["body"]["events"][0]["message"]["text"]}}。這串看起來很長的語法,其實就是去抓我們剛剛看到的「使用者輸入文字」。
  3. 接著,在下方的「Routing Rules」設定規則。例如:
    • Output 0: Operation 設為「Equal」,Value 設為「營業時間」。
    • Output 1: Operation 設為「Equal」,Value 設為「聯絡我們」。
  4. 這樣一來,如果使用者輸入「營業時間」,流程就會從 Output 0 繼續;如果輸入「聯絡我們」,就會走 Output 1。其他的訊息則會走預設的 default output。

步驟四:回覆訊息:讓 N8n 開口說話

總機把電話轉接好了,接下來就是各個分機要回話了。我們需要使用「HTTP Request」節點來呼叫 LINE 的 Reply Message API。

  1. 在 Switch 節點的 Output 0 後面,新增一個「HTTP Request」節點。
  2. Method: 設為 POST
  3. URL: 填入 LINE 的回覆 API 端點:https://api.line.me/v2/bot/message/reply
  4. Authentication: 選擇「Header Auth」。
  5. 在「Headers」區塊,新增一個 Name 為 Authorization,Value 為 Bearer YOUR_CHANNEL_ACCESS_TOKEN 的欄位。(請把你自己的 Channel Access Token 貼上去。但更好的做法是使用 N8n 的 Credentials 功能,後面會提到!)
  6. Body Content Type: 選擇「JSON」。
  7. 在「Body」欄位,貼上以下 JSON 內容。這就是我們要回覆的訊息格式:
{
  "replyToken": "{{$json.body.events[0].replyToken}}",
  "messages": [
    {
      "type": "text",
      "text": "我們的營業時間是週一至週五,早上 9:00 到下午 6:00 喔!"
    }
  ]
}

看到了嗎?replyToken 我們直接從 Webhook 收到的資料動態代入,而 text 欄位就是我們要回覆的內容。同樣的步驟,你可以在 Switch 的 Output 1 後面再接一個 HTTP Request 節點,回覆不同的聯絡資訊。一個簡單的關鍵字機器人就這樣完成了!

進階挑戰:用 Flex Message 打造互動式圖文選單

只會回文字太無聊了,我們來玩點酷的。LINE 提供了強大的「Flex Message」功能,可以讓你用 JSON 定義出像 App 介面一樣的卡片式選單,非常吸睛。

坦白說,Flex Message 的 JSON 結構寫起來有點囉唆,就算是資深工程師也可能寫到眼花。但幸好,LINE 佛心地提供了官方的視覺化編輯器!

步驟一:使用 Flex Message 模擬器

請前往 LINE Flex Message Simulator。這是一個網頁工具,你可以在左邊用拖拉點選的方式設計你的卡片,右邊會即時產生對應的 JSON 程式碼。你可以設計包含圖片、按鈕、文字的複雜版面。設計完成後,把右邊的 JSON 完整複製下來。

步驟二:在 N8n 中發送 Flex Message

流程跟發送文字訊息很像,只是 Body 的內容要換掉。

  1. 在你的 Switch 節點新增一個規則,例如關鍵字是「主選單」。
  2. 在這個規則的 Output 後面接上一個 HTTP Request 節點。
  3. 設定跟之前一樣,重點在 Body。你需要把從模擬器複製來的 JSON,包在一個更大的結構裡:
{
  "replyToken": "{{$json.body.events[0].replyToken}}",
  "messages": [
    {
      "type": "flex",
      "altText": "這是一則 Flex Message",
      "contents": { ...把你從模擬器複製的 JSON 貼在這裡... }
    }
  ]
}

altText 是指在手機推播通知或無法顯示 Flex Message 的地方,會看到的替代文字。contents 裡面,就原封不動地把你設計好的 JSON 貼進去。這樣一來,當使用者輸入「主選單」,就會收到你精心設計的互動圖文卡片了!是不是很有成就感?

工程師的小囉嗦:部署與維護的注意事項

一個功能「能動」只是第一步,要讓它「穩定可靠」,還有一些細節要注意。這也是區分業餘和專業的關鍵。

安全性驗證 (Security Validation)

任何人只要知道你的 Webhook URL,都可以對它發送請求。為了確保收到的訊息真的來自 LINE,我們應該要驗證請求標頭 (Header) 中的 X-Line-Signature。這是 LINE 用你的 Channel Secret 對訊息內容做 HMAC-SHA256 加密後產生的簽章。

你可以在 N8n 的 Webhook 節點後,加上一個「Code」節點,用 Javascript 來做驗證。這段程式碼稍微進階,但能大幅提升你的 Bot 安全性。

const crypto = require('crypto');
const channelSecret = 'YOUR_CHANNEL_SECRET'; // 最好從 Credentials 讀取
const body = JSON.stringify(items[0].json.body);
const signature = items[0].json.headers['x-line-signature'];

const hash = crypto.createHmac('sha256', channelSecret)
                   .update(Buffer.from(body, 'utf8'))
                   .digest('base64');

if (signature === hash) {
  return items;
} else {
  // 驗證失敗,可以回傳空陣列中斷流程
  return []; 
}

善用憑證 (Credentials)

我前面一直強調不要把金鑰寫死。N8n 提供了「Credentials」功能來安全地儲存這些敏感資訊。在你的 HTTP Request 節點的 Authentication 選擇「Header Auth」,然後在 Credential for Header Auth 欄位選擇「Create New」。

  • Credential Name: 給它一個好記的名字,例如「My LINE Bot Auth」。
  • Name: Authorization
  • Value: Bearer YOUR_CHANNEL_ACCESS_TOKEN

儲存後,未來所有需要用到這個授權的地方,你都可以直接選用這個憑證,而不需要重複貼上 Token。如果要更換 Token,也只需要更新憑證一次就好。這才是專業的作法!

錯誤處理 (Error Handling)

如果 LINE API 暫時掛了,或是你的 JSON 格式寫錯,HTTP Request 節點會失敗,整個 workflow 就會中止。在節點的「Settings」中,打開「Continue on Fail」選項,這樣即使這個節點出錯,流程也可以繼續。你可以另外設計一條錯誤處理路徑,例如當 API 呼叫失敗時,發送一封 Email 或 Slack 通知給自己,才能在第一時間發現問題。

透過 N8n,我們不只可以打造一個會回話的 LINE Bot,更能將它與成千上百種應用程式串連,例如把使用者問題記錄到 Google Sheets、串接 OpenAI API 讓 Bot 變得更聰明、或是在 WordPress 網站上新增一筆客服紀錄等等,可能性無窮無盡。

希望這篇詳細的教學能幫助你踏出打造智慧 LINE Bot 的第一步。自動化的世界非常廣闊,而 N8n 就是你手中最強大的瑞士刀。

延伸閱讀

如果你在打造自動化流程時遇到了更複雜的情境,或是需要將 LINE Bot 與企業內部的 CRM、ERP 系統做更深度的整合,這往往需要更客製化的解決方案。浪花科技團隊擁有豐富的 API 串接與系統整合經驗,歡迎隨時與我們聯繫,讓我們幫助你打造真正能解決商業痛點的自動化引擎!

常見問題 (FAQ)

Q1: N8n 跟自己寫程式碼開發 LINE Bot 差在哪?

A: 兩者各有優劣。N8n 的優勢在於「視覺化」與「快速開發」,對於邏輯相對單純、需要串接多種現成服務(如 Google Sheets, Slack, Trello 等)的情境非常高效,不需寫太多程式碼就能完成。而自己寫程式碼(例如用 Node.js 或 PHP)則提供最高的「彈性」與「效能」,適合需要處理極高流量、複雜演算法、或是有特殊主機環境需求的應用。簡單來說,N8n 適合快速打造 80% 的應用,而剩下的 20% 複雜場景則需要靠程式碼來實現。

Q2: 我可以用 N8n 的 LINE Bot 串接我的 WordPress 網站嗎?

A: 當然可以!這是 N8n 非常強大的應用之一。你可以在 N8n 的 workflow 中,使用「HTTP Request」節點去呼叫 WordPress 的 REST API。例如,當 LINE Bot 收到「最新文章」的關鍵字時,可以去 GET 你的 WordPress 網站 /wp-json/wp/v2/posts 端點,抓取最新的幾篇文章標題與連結,再整理成 Flex Message 回覆給使用者。反之,你也可以讓 LINE 使用者透過對話,在 WordPress 網站上建立一筆訂單或客服工單,實現真正的雙向互動。

Q3: 為什麼我在 LINE Developers Console 的 Webhook 驗證會失敗?

A: 這是新手最常遇到的問題!有幾個常見原因:1. URL 不是 HTTPS: LINE 強制要求 Webhook 必須是安全的 HTTPS 連線。2. N8n Workflow 未啟動: 請確認你的 Workflow 右上角的開關是「Active」狀態,並且你使用的是「Production URL」,而非 Test URL(Test URL 只有在手動監聽時才有效)。3. 防火牆或網路問題: 確認你的伺服器防火牆沒有擋掉來自 LINE 伺服器的請求。4. 驗證機制: LINE 的「Verify」按鈕會發送一個不帶任何內容的請求到你的 Webhook,你的 N8n workflow 需要能正確處理這種「空」請求並回傳 HTTP 200 OK 狀態碼,才能驗證成功。

Q4: 除了文字和 Flex Message,還能回覆什麼格式?

A: LINE Messaging API 支援非常多樣的訊息格式!除了文字和 Flex Message,你還可以傳送圖片 (Image)、影片 (Video)、音訊 (Audio)、地圖位置 (Location)、貼圖 (Sticker),以及可以左右滑動的範本訊息 (Template Messages),例如按鈕範本、確認範本、輪播範本等。你只需要在 HTTP Request 節點的 Body 中,根據 LINE API 官方文件,建構出對應的 JSON 結構即可。

 
立即諮詢,索取免費1年網站保固