LLM + LINE Bot 開發難題。
首先,直接回答您的問題:強烈建議不要用「每 5 秒 Notify 一次思考中」這個做法。 原因有二:
使用者體驗極差:手機一直震動會讓使用者感到煩躁,導致封鎖。
技術與流程混亂:使用者要在 LINE OA(官方帳號)和 LINE Notify 之間跳轉,體驗很割裂。
而且有一個致命的技術限制您必須知道:Reply Token 是「一次性」的,且時效只有約 60 秒(1分鐘)。
這意味著:如果您收到使用者問題後,立刻 Reply「思考中」,這張 Reply Token 就失效了。等 2 分鐘後 LLM 算好了,您無法再用同一個 Token 回覆答案,這時您只能用 Push Message(要扣錢)。
為了達到**「不扣額度(免費)」且「體驗良好」**的目標,這裡提供給您三個針對長耗時任務(Long-polling Task)的標準解決方案:
方案一:主動查詢法 (Polling Button) —— 最推薦、零成本
這是目前最流行、開發成本最低的省錢做法。既然不能主動推播,就讓使用者「主動」來要答案(產生新的 Reply Token)。
流程:
使用者問問題。
Bot 立刻 Reply 一個 Flex Message:
文字:「收到!這是一個複雜的問題,我需要大約 2 分鐘思考。」
按鈕:文字寫「查看答案」,Action 設定為 Postback 或 Message(例如傳送 action=check_status&task_id=123)。
使用者等待一會兒,點擊「查看答案」。
(關鍵) 此時使用者觸發了新的事件,Bot 拿到新的 Reply Token。
Bot 後端檢查 LLM 跑完沒:
沒跑完:Reply「還在努力運算中,請再等一下... 💦」。
跑完了:Reply 正式答案。
優點: 完全免費,邏輯簡單。
缺點: 使用者需要自己按按鈕確認(但在 2 分鐘的等待下,這通常是可以接受的)。
方案二:LIFF 網頁法 —— 體驗最好,但開發較難
如果您希望體驗像 ChatGPT 網頁版一樣,看著字慢慢跑出來,或者不希望使用者一直按按鈕,可以用 LIFF (LINE Front-end Framework)。
流程:
使用者問問題。
Bot Reply 一個連結:「點此開啟 AI 思考視窗」。
使用者點擊,在 LINE 裡面打開一個半版或全版的網頁 (LIFF)。
網頁端透過 WebSocket 或 API 輪詢您的後端。
當 LLM 算好時,直接顯示在網頁上。
優點:
完全不消耗訊息額度(網頁流量不計費)。
可以做 Streaming(字一個一個打出來的效果),體驗最像原生 AI。
缺點: 需要會寫前端網頁 (HTML/JS),開發成本較高。
方案三:Loading 動畫法 (僅限 60秒內)
如果您能將 LLM 優化到 60 秒內 回覆,可以使用 LINE 官方提供的「Loading 動畫」。
API: POST /v2/bot/chat/loading/start
流程:
收到使用者訊息。
呼叫 Loading API(使用者聊天室下方會出現「...」的載入動畫)。
後端讓程式 sleep 或等待 LLM(必須在 60 秒內完成)。
LLM 完成後,呼叫 Reply Message 回傳答案。
注意: 如果超過 60 秒,Reply Token 會過期,這個 Request 會失敗。所以這只適合短中程思考的 AI。
總結建議
針對您的 30秒 ~ 2分鐘 的情境:
不要用 Notify 狂炸使用者,也不要用 Push Message。
最佳解法(方案一):
用戶提問 -> Reply「收到,思考中(附帶一個『查看結果』的按鈕)」。
用戶點按鈕 -> 檢查 DB -> 有結果就 Reply 答案,沒結果就 Reply 進度條。
這樣做一毛錢都不用花,而且能確保使用者是在準備好的時候接收訊息。
Loading api + 超時「working…我稍後推播跟你說」+完成後「notify:完成,想知道我的想法嗎?(請送出:好)」