Day 04 完成了 SubWise 與 LINE Messaging API 的 Webhook 連線,當時的架構已經可以讓 LINE 平台把事件通知送到我的後端 /callback:
LINE 使用者 → LINE Platform → Webhook → Flask Backend → Render Server
不過當時的 SubWise 還只是「能收到通知」——可以驗證 Webhook、可以接收 LINE Request,但還沒有處理訊息內容,也無法回覆使用者。
今天 Day 05 的目標是:讓 SubWise 真正具備聊天能力,從單純接收事件,進化成可以理解使用者輸入並回覆訊息的 LINE Bot。
首先加入 LINE SDK 的訊息事件監聽:
@handler.add(MessageEvent, message=TextMessageContent)
def handle_message(event):
當使用者傳送文字訊息時,會依序觸發「使用者輸入 → LINE Webhook → MessageEvent → handle_message()」,後端就能透過 event.message.text 取得使用者輸入的內容。
完成最基本的回覆功能,例如使用者輸入「你好」,Bot 回覆「你剛剛說:你好」:
text = event.message.text
reply_message(
text=f"你剛剛說:{text}"
)
這是 SubWise 第一個真正與使用者互動的版本,代表「LINE → Backend → 程式邏輯 → LINE Reply API → 使用者」整條通訊鏈正式打通。
雖然 Echo Bot 成功運作,但如果未來要打造 AI 智慧記帳、發票辨識、訂閱提醒這些功能,單純 Echo 並不足夠。例如使用者輸入「我要記帳」,Bot 不應該只是回覆「你剛剛說:我要記帳」。這讓我開始思考:如何讓 Bot 根據不同輸入,執行不同功能?
新增 process_command() 作為訊息分流中心,架構從「收到訊息 → 直接回覆」,升級成:
收到訊息 → handle_message() → process_command() → 判斷使用者需求 → 產生回覆
這讓未來擴充功能更加容易。
新增常見招呼判斷:
greetings = [
"hi",
"hello",
"你好",
"哈囉"
]
當使用者輸入「你好」,SubWise 會回覆完整的產品介紹訊息,讓 Bot 開始具有自我介紹的能力。
為了讓使用者更容易了解 SubWise 目前提供的功能,我新增 help 與 menu 指令作為功能導覽入口。
當使用者輸入 help 或 menu,Bot 會回覆目前已完成與規劃中的功能列表,例如:
這個功能除了提升目前 Bot 的使用體驗,也提前建立未來 LINE Rich Menu 的基礎架構。未來加入更多功能後,只需要擴充選單內容,就能讓使用者快速找到對應功能,而不需要記憶複雜指令。
新增 about 指令,讓使用者可以直接在 LINE 對話中了解 SubWise 的定位與目前開發進度,回覆內容包含:
這讓 Bot 不只是單純回覆訊息,而開始具備「產品介紹」的能力,也方便未來 Demo 展示時,使用者可以透過 Bot 直接了解目前系統發展方向。
新增 ping 指令,建立簡單的 Bot 健康檢查機制。當使用者輸入 ping,Bot 會回覆 Pong! 🏓。
雖然功能簡單,但在開發過程中非常實用,可以快速確認:
未來當 SubWise 加入更多服務,例如 Gemini API、Google Sheets API 或排程提醒功能後,這類簡單的健康檢查指令也能作為系統除錯與維護工具。
修改完成後,本機測試正常,但 LINE 仍然回覆舊版 Echo Bot。檢查 git status 才發現:
Your branch is ahead of 'origin/main' by 1 commit.
原因是本機已經修改並 commit,但沒有 push 到 GitHub,導致 Render 部署的還是舊版本。執行 git push 更新 GitHub 後重新部署,LINE 才成功取得最新版本。
完成後的 SubWise 已經可以:
| 使用者輸入 | Bot 回覆 |
|---|---|
| 你好 | 👋 歡迎使用 SubWise!我是你的 AI 智慧記帳與訂閱管理管家 |
| menu | 📒 SubWise 功能選單 |
| ping | Pong! 🏓 |
| about | 🤖 SubWise,AI 智慧記帳與訂閱管理管家 |
Day 05 完成後的系統架構:
LINE User → LINE Messaging API → Webhook → Flask Backend
→ MessageEvent Handler → Command Router → Reply Message API → LINE User
實際在 LINE 上測試的畫面如下:
1.「你好」指令:
2.「menu」指令:
3.「help」指令:
4.「ping」指令:
5.「about」指令:
下一步將進入資料儲存階段。Day 06,我將建立 Google Cloud Console 環境,設定 Service Account 與 API 憑證,讓 SubWise 後端具備存取 Google 服務的權限,為之後串接 Google Sheets API 打下基礎。我們明天見!