https://github.com/PhilippaLiao/LineClockBot-RingRingFish

專案起源

家人近期換工作,新公司採彈性工時制,以上班打卡後的 8.5 小時來計算,每天下班不固定,不容易記住下班時間,於是萌生念頭,設計一個具有自動計算並提醒下班時間的Line Bot。

後續家人又提出其他需求,包括「上班日的每天11:00提醒查看IG貼文」、「如果有設定的話,當天中午12:00要提醒發IG限動」,於是逐漸擴展為可以由使用者設定的鬧鐘機器人。

專案發想

架構延續去年使用 GitHub + Microsoft Azure 建置 LINE Bot 的經驗。這次最大的挑戰在於「按照排程主動推播訊息」,由於 App Service F1 免費方案沒有 Always On,閒置約 20~30 分鐘後會進入休眠,無法依靠內建的排程器在固定時間觸發推播。

用 LINE Bot 和 Azure 部署一個簡單的回覆機器人

和 AI 們討論後,決定另外建立一個 Azure Functions,以 Timer Trigger 每分鐘喚醒一次,呼叫 App Service 的內部 API 檢查資料庫中是否有到期的待發提醒,如果有則進行推播。App Service 本身只負責被動回應,推播的主動觸發完全交給 Functions 處理。

專案架構

架構圖.drawio.png

訊息流程圖.png

元件 技術 說明
LINE Bot LINE Messaging API 接收使用者訊息、轉發 Webhook、回覆/推播通知
App Service ASP.NET Core 10 + Razor Pages Webhook 處理、指令解析、Admin 管理介面
Azure Functions .NET 10 Isolated Worker 計時器每分鐘觸發,驅動提醒推播
SQLite DB Entity Framework Core 儲存使用者設定、打卡紀錄、提醒清單
GitHub Actions CI/CD push to main 時自動分路部署 Api / Functions

專案文件

LineClockBot 部署步驟

Admin 管理後台

工具腳本-批次匯入提醒


展示圖

1000002213.png