Line 在 2024/04/17 推出了新的 Messaging API,其中一個功能是可以顯示思考中動畫。讓使用者知道機器人正在思考中,並不是已讀不回。對於現在許多機器人會串接 LLM API 的應用來說,這個功能非常實用。為了讓大家更好理解,今天我們先不要急著串接生成式 AI,我們來使用 Google Apps Script 做一個簡單的 Demo 吧!

成果
成果

其實這個功能在發布當天我就收到通知了,今天終於抽出時間來玩玩看這個新功能。

介紹

在用戶和 LINE 官方帳戶之間的一對一聊天中顯示載入動畫。

經過指定的秒數(5 至 60 秒)後或當你的 LINE 官方帳戶收到新訊息時,載入動畫將自動消失。

只有當使用者查看與你的 LINE 官方帳戶的聊天畫面時,才會顯示載入動畫。如果你要求在使用者未查看聊天畫面時顯示載入動畫,則不會顯示任何通知。即使用戶稍後打開聊天螢幕,也不會顯示動畫。

如果你要求在載入動畫仍然可見時再次顯示該動畫,則該動畫將繼續顯示,並且動畫消失之前的時間將被第二個請求中指定的秒數覆蓋。

適用於 iOS 或 Android 的 LINE:13.16.0 或更高版本

以下是一個範例的呼叫方式

1curl -v -X POST https://api.line.me/v2/bot/chat/loading/start \
2-H 'Content-Type: application/json' \
3-H 'Authorization: Bearer {channel access token}' \
4-d '{
5    "chatId": "U4af4980629...",
6    "loadingSeconds": 5
7}'

使用

1. 建立 Line Bot

首先請你先建立一個 Line Bot,並取得 Channel Access Token。接著我們就可以開始實作了。

請到 Line Developers => 新增或選取 Provider => Create a new channel => Message API。

2. 建立 Google Apps Script

打開 Google Apps Script,並貼上以下程式碼。

我們希望在使用 doPost 接收到訊息時,回覆使用者一個思考中的動畫。等待 5 秒後,回應說「好喔」。記得將 token 替換成你的 Channel Access Token。

1const token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXx=";
2
3function doPost(e) {
4    var contents = JSON.parse(e.postData.contents);
5    var chatId = contents.events[0].source.userId;
6    var replyToken = contents.events[0].replyToken;
7
8    // Start the loading animation
9    sendLoading(chatId, 5);
10
11    // Set a timer to end the loading animation and send a reply after 5 seconds
12    Utilities.sleep(5000);
13    sendReply(replyToken, "好喔");
14}
15
16function sendLoading(chatId, seconds) {
17    var url = "https://api.line.me/v2/bot/chat/loading/start";
18    var payload = {
19        chatId: chatId,
20        loadingSeconds: seconds
21    };
22    var options = {
23        method: "post",
24        contentType: "application/json",
25        headers: {
26            Authorization: "Bearer " + token
27        },
28        payload: JSON.stringify(payload)
29    };
30    UrlFetchApp.fetch(url, options);
31}
32
33function sendReply(replyToken, message) {
34    var url = "https://api.line.me/v2/bot/message/reply";
35    var payload = {
36        replyToken: replyToken,
37        messages: [
38            {
39                type: "text",
40                text: message
41            }
42        ]
43    };
44    var options = {
45        method: "post",
46        contentType: "application/json",
47        headers: {
48            Authorization: "Bearer " + token
49        },
50        payload: JSON.stringify(payload)
51    };
52    UrlFetchApp.fetch(url, options);
53}

好了之後點擊執行▶️,你會需要授予你的程式 call API 的權限。因為你寫的程式沒有被 Google 驗證過所以會顯示不安全,但我相信你不會把你的帳號搞爆,對吧。執行後會看到錯誤,這是正常的,因為我們直接執行沒有給他訊息。

GAS 快速教學
GAS 快速教學

3. 設定 Webhook

部屬好了之後,你會看到一個網址,請將這個部屬的網址貼到 Line Bot 的 Webhook 的地方就完成了。

設定 Webhook
設定 Webhook

4. 測試

現在你可以在 Line 上傳送訊息給你的 Line Bot,你會看到 Line Bot 會回覆你一個思考中的動畫,等待 5 秒後,回應說「好喔」。

成果
成果

結語

以上就是使用 Line Messaging API 顯示思考中動畫的方法,希望能夠對你有幫助。如果你有任何建議或問題都可以在 IG 留言,也歡迎在 InstagramGoogle 新聞追蹤毛哥EM資訊密技

參考資料:https://developers.line.biz/en/docs/messaging-api/use-loading-indicator/

毛哥EM

一位喜歡把簡單的事,做得不簡單的高三生。