里程碑
n8n+Line 第一個AI自動化專案 AI備忘錄
Judao @0222發布於 已編輯
最近我使用 n8n 串接 LINE 官方帳號與 OpenAI,打造了一個具備「增、刪、改、查 (CRUD)」功能的智能備忘錄助理。它可以聽懂自然語言,並自動將行程記錄到資料庫中,或者在用戶詢問時回報行程。以下是我的實作過程與踩坑紀錄。
💡 我的做法與架構
整個 n8n Workflow 的核心邏輯在於「讓 AI 負責語意理解與分流,讓 n8n 節點負責執行」。
接收訊息 (Webhook):透過 Webhook 接收 LINE 傳來的用戶訊息。
語意解析 (AI Agent):使用 AI Agent 提取出四大核心要件:日期、時間、地點、事項,同時讓 AI 判斷用戶意圖並輸出 action 變數(create, read, update, delete)。
流程分流 (Switch):利用 Switch 節點,根據 action 變數將流程分為四條獨立路線。
資料庫操作 (Data tables):每一條路線連接對應的資料庫節點(Insert, Get, Update, Delete)。
整合回覆 (HTTP Request):資料處理完畢後,由 AI 潤飾成自然語言,統一透過 HTTP Request 發送回 LINE。
🚧 卡住的地方與踩坑紀錄
在開發過程中,我遇到了幾個意想不到的技術瓶頸,但最終都順利解決了:
坑一:Switch 節點的型別比對錯誤 (Wrong type)
一開始在 Switch 節點設定路由規則時,系統報錯提示字串無法與 dateTime 格式比較。
解法:將比較模式從「日曆圖示 (DateTime)」改為單純的「字串比較 (String)」,確認變數型別一致,成功打通了四條路線。
坑二:資料庫刪除 (Delete) 找不到目標
原以為可以直接告訴 Delete 節點「刪除明天的開會」,卻發現系統根本不認識這筆資料,因為它需要的是唯一識別碼 (ID)。
解法:改變邏輯為「先查後刪」。在 Delete 節點前插入一個 Get row(s) 節點,利用日期和事項作為條件撈出那筆資料的隱藏 id,再把 {{ $json.id }} 傳遞給 Delete 節點執行。
坑三:查詢多筆資料時 AI 變成迴圈執行
當同一天有 3 筆行程時,Get row(s) 會輸出 3 items,導致後面的 AI 節點被觸發 3 次,而且直接將 JSON 餵給 AI 會變成 [object Object]。
解法:在 AI 節點前加入 Aggregate 節點,將多筆資料打包成一個 Array (1 item)。接著在 AI 的 Prompt 中使用 {{ JSON.stringify($json) }},讓 AI 能一次看懂所有的行程清單並統整成一段白話文。另外,開啟查詢節點的 Always Output Data,解決了「當天無行程」導致流程中斷的問題。
🎉 最終成果
現在,這個 LINE 機器人已經不再是只有七秒記憶的金魚腦。
我可以對它說:「幫我記下明天下午 5 點在XX大學划船」,它會乖乖存入資料庫;隔天我問它:「我今天有什麼行程?」,它能精準撈出資料庫內容,並用親切的語氣回覆:「您今天下午 5 點在XX大學有一場划船行程喔!」。
這次實作讓我深刻體會到 n8n 在自動化流程上的強大,只要把資料庫當作 AI 的工具,就能大幅拓展聊天機器人的應用邊界。
1 個愛心1 則留言
登入並驗證手機後就能留言。登入