文章
[n8n學習心得] AI表示:我正在處理! - 用 n8n 接上 Loading API
Chris @koclu發布於
一、讓回覆更有互動感
n8n 裡有很多工具,能讓小精靈不只「收到訊息、回一段文字」,還可以查資料、呼叫 AI、傳送圖片,或依照使用者的選擇走不同流程。把這些節點串起來,小精靈的回覆就能更即時、更有互動感。今天要介紹的小技巧叫「 Loading API」:當小精靈需要多一點時間思考或查資料時,LINE 聊天室可以先顯示「載入動畫」,讓使用者知道這個小精靈沒有當機,也沒有漏掉訊息,或者,就當小精靈正在裝個深沉的逼。
二、Loading API 是什麼?
Loading API 是 LINE Messaging API 提供的一個功能。n8n 透過 HTTP Request 告訴 LINE:「這位使用者的機器人正在處理,請顯示載入動畫。」它使用 POST https://api.line.me/v2/bot/chat/loading/start,並需要兩項資料:chatId 是使用者的 LINE user ID;loadingSeconds 是動畫最多顯示幾秒,例如 10 秒。時間可設 5 到 60 秒,且必須以 5 秒為間隔。
最容易理解的使用情境是:使用者問問題 → 聊天室顯示載入動畫 → AI 或資料庫完成工作 → 機器人送出答案。收到機器人的新訊息後,載入動畫會消失;如果一直沒有新訊息,動畫也會在設定時間到期時消失。這不是進度條,不能換成自己的文字或顯示百分比。
附件一的短 GIF 是示意動畫,幫助理解「等待時顯示狀態、回覆後結束」的效果;它不是 LINE App 的實際截圖,真實畫面會依 LINE App 顯示。
三、在 n8n 使用哪個節點?
使用 HTTP Request 節點。它就像一位幫你把資料送到網路服務的信差:我們把 LINE API 網址、授權資料和 JSON 內容填好,n8n 就會替我們送出請求,不需要自己寫程式。
新增 HTTP Request 節點後,依序設定:
- Method 選
POST。 - URL 填入
https://api.line.me/v2/bot/chat/loading/start。 - 在 Headers 加入
Authorization,值為Bearer 你的 Channel access token;再加入Content-Type: application/json。建議把 token 存在 n8n Credentials,不要直接貼在工作流程裡分享。 - 開啟 Send Body,選擇 JSON,填入:
{
"chatId": "{{ $('Webhook').item.json.body.events[0].source.userId }}",
"loadingSeconds": 10
}Webhook 要換成你的 Webhook 節點名稱。中間雙大括號是 n8n 的表達式,意思是「執行時,從收到的 LINE 訊息裡取出這個使用者的 ID」。若你的節點名稱是 webhook,就把表達式中的 Webhook 改成 webhook。
設定完成後,把 HTTP Request 節點接在 Webhook 後面,先測試節點能否呼叫成功,再把耗時工作接在後面。LINE 官方文件中的成功回應是 HTTP 202;實際測試時,使用者要正打開與 Official Account 的一對一聊天室,才看得到動畫。
四、前後節點的限制與注意事項
一個常見流程會長這樣:
LINE Webhook → 判斷事件 → Loading API → AI/資料查詢 → LINE Reply API- Loading API 放在耗時工作前面
它只負責請 LINE 顯示動畫,不會讓 n8n 暫停或等待;工作流程會馬上繼續跑到下一個節點。因此不要把它當成 Wait 節點。如果把它放在 AI 節點後面,使用者就要等 AI 做完才看到動畫,也就失去提示等待的效果。
- 只適用於一對一聊天
chatId 必須是個人使用者 ID;群組和多人聊天室不能使用這個 Loading API。若流程也會收到群組事件,可以在前面加 IF 節點,先確認事件來源是個人聊天再呼叫。使用者必須已加入 Official Account、沒有封鎖帳號,並且當下正在看聊天室,動畫才會顯示。LINE 有時仍會回 202,但這只代表請求被接受,不保證使用者畫面一定出現動畫。
- 設定時間要配合工作速度
動畫最長 60 秒,會在時間到期時消失;如果工作可能超過原本時間,可以在動畫仍顯示時再次呼叫 Loading API 延長倒數。工作完成後,接著送出 LINE 回覆即可,動畫會隨新訊息消失。
- 注意 LINE Reply Token 的期限
LINE webhook 帶來的 replyToken 只能用一次,無論是上哲或官方都建議盡快使用;收到 webhook 超過一分鐘後,就不保證還能成功回覆。因此,Loading API 可以改善等待時的感受,卻不會替回覆延長期限。如果 AI 或外部服務常常執行很久,要設計好逾時與錯誤處理,並避免工作卡住後完全沒有回覆。
- 先確認事件資料再取 userId。
範例用 events[0] 取得第一個事件,對入門測試很直觀;實際工作流也可能收到非文字事件,或一個請求包含多個 events。遇到讀不到 source.userId 時,到 n8n 的 Execution 檢查 Webhook 收到的 JSON,再依事件類型分流;不要把群組 ID 當成個人 chatId。
掌握這些條件後,你就能用幾個 n8n 節點替 LINE Bot 加上一個小小的等待提示。不妨可以試試把 Loading API 接在 AI Agent 前面,觀察同一個機器人在「立即回答」和「需要查資料」時,使用者感受到的差別。
這個小玩意兒,提供給大家參考,我覺得這個東西讓我的小精靈逼格滿滿XD
2 個愛心1 則留言
登入並驗證手機後就能留言。登入