在 2024 年 10 月 30 日,LINE Messaging API 推出了新的功能,讓用戶可以在群組聊天中提及機器人。這項功能的推出,讓開發者更容易識別用戶在群組聊天中對機器人的提及,並做出相應的回應。
新 API 功能介紹
提及識別功能
當用戶 在群組聊天中提及機器人時,LINE Messaging API 現在會在發送到機器人伺服器的 webhook 事件物件中包含一個新的屬性。這個屬性可以幫助機器人識別何時被用戶提及。
(以往是無法 tag (標記) LINE Bot ,但是更新版本後就可以 Tag 了。)
目標版本
- iOS 或 Android 的 LINE 版本 14.17.0 或更新版本。
新增規格
-
mention.mentionees[].isSelf
當用戶發送包含提及的訊息時,mention 屬性會被包含在發送到機器人伺服器的 webhook 事件中的文字訊息物件中。新的規格中,當提及用戶或機器人時,mention.mentionees[] 中會新增 isSelf 屬性。
mention.mentionees[].isSelf
: Boolean- 是否提及到接收到 webhook 事件的機器人(目標)。
- 當 mention.mentionees[].type 屬性值為 user 時才會包含。
true
: 提及的是接收到 webhook 事件的機器人。false
: 提及的是其他用戶。
-
在 webhook 事件物件中設置值
如果用戶發送的訊息中提及了機器人,則在發送到機器人伺服器的 webhook 事件中的文字訊息物件中會設置以下值:
mention.mentionees[].type
設置為user
。mention.mentionees[].userId
設置為機器人的用戶 ID。mention.mentionees[].isSelf
設置為true
。
新 API 欄位介紹
以下是新 API 欄位的詳細介紹:
- mention.mentionees[].isSelf: 用於識別提及是否針對機器人。
- mention.mentionees[].type: 設置為
user
,表示提及的是用戶。 - mention.mentionees[].userId: 機器人的用戶 ID。
如何使用 Golang 來開發相關部分
以下是使用 Golang 處理新提及功能的範例程式碼: (請注意 github.com/line/line-bot-sdk-go/v8 需要更新到 8.10 之後)
範例程式碼在: https://github.com/kkdai/linebot-gemini-pro-gcp
case webhook.TextMessageContent:
switch e.Source.(type) {
case webhook.UserSource:
log.Println("1 on 1 message")
// 1 對 1 要回覆,這裡省略相關程式碼
..........
case webhook.GroupSource:
// Bot only handle msg when it is mentioned
if message.Mention == nil {
log.Println("No mention")
return
}
for _, mention := range message.Mention.Mentionees {
log.Println("mention data=", mention)
switch mention.GetType() {
// 如果 mention 使用者
case "user":
botMention := mention.(webhook.UserMentionee)
log.Println("Mentioned user ID=", botMention.UserId, " isSelf=", botMention.IsSelf)
// 當標記 LINE Bot 這個就會為 True
if botMention.IsSelf {
if _, err = bot.ReplyMessage(
&messaging_api.ReplyMessageRequest{
ReplyToken: e.ReplyToken,
Messages: []messaging_api.MessageInterface{
messaging_api.TextMessage{
Text: "你好,我是 Gemini Chat Bot,請問有什麼可以幫助您的嗎?",
},
},
},
);
// ........
說明
- 當接收到 webhook 事件時,解析 JSON 並檢查
mention.mentionees[].isSelf
屬性。 - 如果
isSelf
為true
,則表示機器人被提及,並可以在此處添加相應的處理邏輯。
這樣的設計可以幫助開發者快速實現對新提及功能的支持,並確保機器人能夠正確識別和回應用戶的提及。
未來展望
隨著這項新功能的推出,開發者可以探索更多創新的應用場景:
-
智能回應系統:利用提及功能,開發更智能的回應系統,根據不同的提及內容提供個性化的回應。
-
群組互動遊戲:設計基於提及的互動遊戲,讓用戶在群組中與機器人進行有趣的互動。
-
自動化通知:當機器人被提及時,自動觸發特定的通知或操作,提升群組管理的效率。
-
數據分析:分析提及數據,了解用戶與機器人的互動模式,進一步優化機器人的功能。
這些應用場景不僅能提升用戶體驗,也能為企業帶來更多的商業價值。開發者可以根據自身需求,靈活運用這項新功能,創造出更多元化的應用。