LY Corporation Tech Blog

支持 LY Corporation 和 LY Corporation Group (LINE Plus, LINE Taiwan and LINE Vietnam) 服務,宣傳技術和開發文化。

LINE Messaging API 新功能介紹: 使用 Bot Mentions 讓你的聊天機器人更聰明回覆

在 2024 年 10 月 30 日,LINE Messaging API 推出了新的功能,讓用戶可以在群組聊天中提及機器人。這項功能的推出,讓開發者更容易識別用戶在群組聊天中對機器人的提及,並做出相應的回應。

新 API 功能介紹

提及識別功能

當用戶在群組聊天中提及機器人時,LINE Messaging API 現在會在發送到機器人伺服器的 webhook 事件物件中包含一個新的屬性。這個屬性可以幫助機器人識別何時被用戶提及。

(以往是無法 tag (標記) LINE Bot ,但是更新版本後就可以 Tag 了。)

目標版本

  • iOS 或 Android 的 LINE 版本 14.17.0 或更新版本。

新增規格

  1. mention.mentionees[].isSelf

    當用戶發送包含提及的訊息時,mention 屬性會被包含在發送到機器人伺服器的 webhook 事件中的文字訊息物件中。新的規格中,當提及用戶或機器人時,mention.mentionees[] 中會新增 isSelf 屬性。

    • mention.mentionees[].isSelf: Boolean
      • 是否提及到接收到 webhook 事件的機器人(目標)。
      • 當 mention.mentionees[].type 屬性值為 user 時才會包含。
      • true: 提及的是接收到 webhook 事件的機器人。
      • false: 提及的是其他用戶。
  2. 在 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,則表示機器人被提及,並可以在此處添加相應的處理邏輯。

這樣的設計可以幫助開發者快速實現對新提及功能的支持,並確保機器人能夠正確識別和回應用戶的提及。

未來展望

隨著這項新功能的推出,開發者可以探索更多創新的應用場景:

  1. 智能回應系統:利用提及功能,開發更智能的回應系統,根據不同的提及內容提供個性化的回應。

  2. 群組互動遊戲:設計基於提及的互動遊戲,讓用戶在群組中與機器人進行有趣的互動。

  3. 自動化通知:當機器人被提及時,自動觸發特定的通知或操作,提升群組管理的效率。

  4. 數據分析:分析提及數據,了解用戶與機器人的互動模式,進一步優化機器人的功能。

這些應用場景不僅能提升用戶體驗,也能為企業帶來更多的商業價值。開發者可以根據自身需求,靈活運用這項新功能,創造出更多元化的應用。