跳至主要內容

里程碑

幫你記運動 ^_<:LINE 運動紀錄小幫手

JANEEEE @janeeee發布於 已編輯

一、專案背景:我為什麼想做這個 bot?

因為我平常會跑步、騎腳踏車和重訓,但紀錄都放在不同的 App 裡:跑步和騎車用 Strava,重訓用 BurnFit。有時候騎完車,才發現自己忘記開 Strava,那次運動就沒有留下紀錄(大哭)。

所以我開始想:能不能有一個地方,讓我直接說「今天做了什麼運動」,就幫我記下來?想回顧的時候,也能直接問它?

因此我決定用 LINE 官方帳號+n8n+AI,做一個可以用聊天方式操作的運動紀錄小幫手。

原本也想串接 Strava,但發現 Strava 免費仔拿不到 API 😭 因此這次先把範圍縮小,完成一個可以獨立使用的版本:讓使用者透過文字新增、刪除、查詢及統計運動紀錄。

二、想解決的問題

1. 忘記開 App,也能方便補登

運動完不一定想再打開表單、逐欄填資料。我希望使用者只要傳:

昨天重訓 45 分鐘。

就能留下紀錄,降低記錄的麻煩程度。

2. 想知道累積運動量,不用自己翻紀錄、拿計算機加總

除了記錄,我也想讓 bot 回答這類問題:

我這個月跑了幾公里?
這週各種運動分別做了幾次?
這個月比上個月多跑幾公里?

讓資料不只是存起來,也能在需要時拿出來用。

3. 使用者不需要學一套操作格式

我希望用戶可以自然地說話,不必記住特定指令,也不用知道資料表的欄位或紀錄編號。需要選擇或確認時,再由 bot 提供按鈕引導。

三、我是怎麼做的?

整體架構

這個專案主要用到:

  • LINE 官方帳號:使用者傳訊息、看結果的地方。
  • n8n:把接收訊息、判斷需求、讀寫資料和回覆串起來。
  • AI Agent:理解使用者想做什麼,將自然語言整理成固定格式。
  • Data Table:儲存每位使用者的運動紀錄。
  • JavaScript Code 節點:負責查詢條件的篩選與數值計算。
  • LINE Flex Message:把紀錄和結果整理成比較好閱讀的卡片。

使用者傳訊息後,LINE 會透過 Webhook 把訊息送到 n8n。第一個 AI Agent 先判斷需求,再由 Switch 分流到對應功能。

資料表會保存運動日期、種類、時長、距離和備註,也會記下使用者 ID,讓後續操作只處理該使用者的紀錄。

功能一:新增運動紀錄

例如使用者傳:

我今天跑步 30 分鐘、5 公里。

AI 會把這段話整理成日期、運動種類、時長和距離,再寫入資料表。新增完成後,bot 會回傳一張卡片,顯示剛剛記下的內容。

這樣用戶傳完訊息,就能清楚知道系統到底記錄了什麼!如果內容有誤,也比較容易發現。

功能二:刪除運動紀錄

刪除比新增多了一些處理,因為使用者說的話不一定能直接對應到唯一一筆資料。

例如:

幫我刪掉昨天的跑步紀錄。

如果昨天有多筆跑步紀錄,bot 就會列出候選資料,讓使用者按按鈕選擇。選好後,還會再次顯示摘要,按下「確認刪除」才真正刪除。

如果使用者完全沒有紀錄,bot 也會說明目前沒有資料可以刪除,並引導他如何新增。

功能三:查詢與統計

這個部分,我最後採用的方式是:

AI 理解問題,程式負責篩選與計算。

例如使用者問:

我這個月跑了幾公里?

AI 先把問題轉成「本月的日期範圍、跑步、加總距離」等條件,再交給 Code 節點處理。這樣既能接受比較自然的問法,也能讓加總的規則更明確。

目前流程已納入以下需求:

  • 查詢指定日期、運動種類的紀錄。
  • 找出超過指定時長或距離的紀錄。
  • 統計紀錄筆數、總時長和總距離。
  • 依運動種類分別統計。
  • 比較兩個期間的運動量。
  • 計算平均配速。

這裡也需要處理資料不完整的情況。例如,只記了跑步距離、沒有記時長,就不能計算配速。

功能四:告訴使用者怎麼用

如果用戶傳來的訊息不屬於已支援的操作,bot 會回覆功能介紹卡片,附上新增、刪除、查詢與統計的範例。

我原本想做圖文選單,但期中前已經爆炸沒時間,最後決定先把重點放在主要功能,透過歡迎訊息與功能引導,讓第一次使用的人知道可以怎麼問。

四、做出來的結果

目前已經串好新增、刪除、查詢統計和功能引導的流程,可以透過 LINE 傳送訊息,並收到對應的卡片回覆。

目前這個 bot 還沒有串接其他運動 App,修改紀錄的 flow 也還沒完成;如果有地方想修改的話,就只能先刪掉原本的那一條紀錄再重新新增(好陽春)。

最下面連結有 LINE 實際聊天互動 demo(在新分頁開啟) ^o^

0 個愛心0 則留言

登入並驗證手機後就能留言。登入