iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
生成式 AI

打造自己的 AI 新聞小編:每天自動抓新聞、摘要、推送到 LINE!系列 第 15

【Day 15】LINE Bot 的記憶庫:收集並分析使用者訂閱主題

  • 分享至 

  • xImage
  •  

前天我們成功為 LINE Bot 建立了第一個「大腦」── Google Cloud Firestore,並完成了必要的設定與憑證準備。現在,我們要讓 Bot 讀懂使用者資訊了!

今天我們要在 n8n 新增幾個節點,讓 Bot 能夠接收使用者的訂閱指令,以便之後儲存到 Firestore 資料庫中。

為什麼需要寫入資料庫?

在沒有資料庫之前, LINE Bot 每次收到訊息都是一個獨立的事件。
它無法「記得」誰是誰,也無法「記得」某位使用者過去做了什麼;它不會建立記憶庫,不會像 ChatGPT 一樣記得你之前說過的話。

透過將使用者 ID 和他們的偏好(例如訂閱的主題)寫入資料庫,你的 Bot 就擁有了記憶。這將為所有個人化功能打下基礎,例如:

  • 個人化新聞推播:每天只固定傳送使用者感興趣的主題。
  • 閱讀次數限制:記錄使用者當天已閱讀的新聞數量,防止超過限制。

n8n 工作流程設計

這個工作流程的目的很簡單,當使用者輸入「訂閱」相關訊息時,就將他們的 LINE ID 和訂閱主題儲存到 記下來。

步驟一:到主頁新增一個空白工作流

新增 Webhook 節點(負責接收來自 LINE 的訊息) 。

步驟二:使用 Switch 節點來判斷訊息

Switch 節點接在 Webhook 節點後面。
我們需要判斷使用者傳來的訊息內容,字是否包含「訂閱」這個關鍵詞。

https://ithelp.ithome.com.tw/upload/images/20250820/20178067am7wOhoea7.png

  • Value 1{{ $json.message.text }} (取得使用者輸入的訊息文字)
  • OperationStringContains
  • Value 2:訂閱(當文字包含「訂閱」時,就執行後續流程)

步驟二:使用者到 LINE 傳送訊息

  1. 先去 LINE Official Account Manager 停用自動回覆訊息功能。

https://ithelp.ithome.com.tw/upload/images/20250820/20178067o27XTV9aGw.png

  1. 執行 Webhook 節點,開始「監聽」。
  2. 到 LINE APP 傳送訊息:「訂閱國際」。

https://ithelp.ithome.com.tw/upload/images/20250820/20178067gaNJYc9NQP.png

  1. 回到 n8n 看輸出結果,在 events 底下的 text 會顯示你剛剛傳的文字。

https://ithelp.ithome.com.tw/upload/images/20250820/20178067UorCQe24YU.png

步驟三:使用 Code 節點解析主題

雖然我們可以用多個 Switch 節點來判斷「訂閱國際」、「訂閱財經」等,
但一個更有效率的做法是使用 Code 節點,用程式碼來解析使用者輸入的文字,從中提取出主題關鍵字。

  1. 新增 Code 節點
    https://ithelp.ithome.com.tw/upload/images/20250820/20178067QewrUQSaUL.png
    https://ithelp.ithome.com.tw/upload/images/20250820/20178067xxlkotyC2V.png

  2. 輸入以下程式碼:

const userMessage = $input.first().json.body.events[0].message.text;
const parts = userMessage.split('訂閱');
 // 將訊息用訂閱分割

let subscribedTopic = '未指定';

// 檢查分割後是否有第二個部分,並且該部分不是空字串
if (parts.length > 1 && parts[1].trim() !== '') {
  // 將第二個部分(主題)賦予變數,並移除前後的空格
  subscribedTopic = parts[1].trim();
}
// 將主題和使用者的 LINE ID 傳遞給下一個節點
return [{
  json: {
    userId: $input.first().json.body.events[0].source.userId,
    subscribedTopic: subscribedTopic
  }
}];

這串程式碼會將使用者傳送的訊息分析並擷取需要的資訊。

下篇預告

明天(Day 16)開始使用 Google Cloud Firestore,讓 LINE Bot 能夠「記住」使用者。


上一篇
【Day 14】LINE Bot 的雙向溝通橋樑:Webhook 與 ngrok 設定教學
系列文
打造自己的 AI 新聞小編:每天自動抓新聞、摘要、推送到 LINE!15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言