前情提要
用 LINE Bot 做系統通知,結果某天發現通知完全停了,重啟也沒用。
查了一圈才發現根本原因不是程式問題,這篇記錄怎麼查用量、以及為什麼停的。
問題現象
LINE Bot 的 push 通知在某個時間點之後完全靜默。
程式沒報錯,因為程式碼裡的 push 用了 .catch(() => {}) 吃掉所有錯誤:
1 | async function push(text: string) { |
靜默失敗,完全看不出來哪裡出問題。
怎麼查用量
LINE 的用量統計不在 Developers Console,要去 LINE Official Account Manager:
- 打開 manager.line.biz
- 選你的 Official Account
- 左側 → 分析 → 訊息
可以看到:
| 欄位 | 說明 |
|---|---|
| 合計(所有訊息) | Reply + Push 總和 |
| Push | 主動推播的則數 |
| Reply | 回覆訊息的則數 |
可以選日期範圍,最長 60 天。
免費額度是多少
LINE Messaging API 免費方案每月有 500 則免費訊息(Push + Reply 合計)。
超過之後每則需要付費,或者訊息會被擋下來(依帳號設定而定)。
500 則聽起來很多,但如果 Bot 跑 AI 對話,Claude 回應很長,常常一次就切成好幾則 push(每則上限 5000 字),很快就會耗光。
這次的真正原因
查完用量才發現:5/1 用了 141 則,5/2 用了 59 則,5/3 之後全部是 0。
5/3 之後不是「發了但被擋」,是根本沒有觸發 webhook。
原因是 LINE Bot 用 Webhook 模式,需要一個對外的 HTTPS URL。
我的架構是:
1 | LINE 伺服器 → HTTPS Webhook URL → Cloudflare Tunnel → 本機 Express server |
Cloudflare Tunnel 的 launchd service 在 5/3 掛掉,LINE 打不到 webhook,所以什麼都沒發生。
Telegram 為什麼更穩
Telegram 用 Long Polling 模式,bot 主動去 Telegram 伺服器拉訊息,不需要對外開放任何 URL。
| LINE | Telegram | |
|---|---|---|
| 連線模式 | Webhook(需要 tunnel) | Long Polling(不需要) |
| 斷線風險 | tunnel 掛、IP 變、PORT 未開 | 幾乎沒有 |
| 免費額度 | 500 則/月 | 無限制 |
如果是用來做系統通知(不可中斷),Telegram 比 LINE 穩定很多。
小結
- LINE 用量在 LINE Official Account Manager → 分析 → 訊息
- 免費方案 500 則/月,用完靜默失敗
- Webhook 模式依賴 tunnel,tunnel 掛掉通知就停
- 對穩定性要求高的通知場景,Telegram Long Polling 更適合
(fin)