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 分鐘後會進入休眠,無法依靠內建的排程器在固定時間觸發推播。
和 AI 們討論後,決定另外建立一個 Azure Functions,以 Timer Trigger 每分鐘喚醒一次,呼叫 App Service 的內部 API 檢查資料庫中是否有到期的待發提醒,如果有則進行推播。App Service 本身只負責被動回應,推播的主動觸發完全交給 Functions 處理。


| 元件 | 技術 | 說明 |
|---|---|---|
| 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 |
