LINE Messaging API 的 mention 功能功能介紹
緣由
在群組聊天中,LINE 的 @ 功能可以讓用戶標註特定成員,確保訊息能夠引起被對方注意到。這對於需要即時回應或要求特定成員參與討論時特別有用。過去,LINE對談機器人(也就是 LINE Bot, OA帳號)無法被 @ ,也不容易判斷出誰被用戶 @ 。現在,透過 LINE Messaging API 的提及 (mention) 功能,開發者可以實現自動回應並處理提及事件,提升互動體驗。
提及 (mention) 功能可以達成的效果
- 檢查被提及的用戶:在 WebHook內,檢查訊息中是否有提及其他用戶,並可在回覆中顯示被提及的用戶 ID。
- 標註 bot 本身:如果被提及的是 bot 本身,也可以識別出來。
- 提及所有用戶:如果是透過 @ALL 提及所有用戶,也可以識別出來。
JSON架構說明
"message": {
"id": "444573844083572737",
"type": "text",
"quoteToken": "q3Plxr4AgKd...",
"text": "@example_bot Good Morning!!",
"mention": {
"mentionees": [
{
"index": 0,
"length": 12,
"userId": "{user ID of the bot}",
"type": "user",
"isSelf": true
}
]
}
在新版的 WebHook JSON當中,添加了 mention
屬性,用於標識提及(@)事件。當用戶在訊息中提及其他用戶時,mention
屬性會包含被提及的用戶資訊。透過這個屬性,開發者可以輕鬆識別出提及事件,並進行相對應的處理。
其中的 mentionees
屬性包含了被提及的用戶的資訊,由於一句話中,可能會有多個用戶被提及,因此你會發現上面的JSON當中,mentionees是陣列的形式,而其中的內容,則包括了用戶 ID(UserId)、被提及的位置(index)和長度(length, @example_bot共12個字元)等。開發者可以根據這些資訊,識別出被提及的用戶,並在回覆中顯示相關資訊。另外,如果 isSelf 為 true,則表示提及的是 bot 本身。如果 type 是 ALL,則代表提及所有人。
如何使用 C# 的 LineBotSDK
我所開發的 LneBotSdk,也在新版(2.14.40)中支援了mention。
開發者可以透過 SDK 輕鬆處理 @ 事件,並實現更多有趣的功能。以下是使用 LineBotSdk 的重要說明,展示如何處理提及事件。
讀者可參考 GitHub 上的專案,了解更多關於 LineBotSdk 的使用方法。
- 設定 ChannelAccessToken 和 AdminUserId:
在LineWebHookController.cs
中,將ChannelAccessToken
和AdminUserId
替換為您的 LINE Bot 資訊。// 設定 ChannelAccessToken this.ChannelAccessToken = "👉____replace_with_ChannelAccessToken"; // 設定 AdminUserId var AdminUserId = "👉____replace_with_AdminUserId";
- 處理提及事件:
在LineWebHookController.cs
中,處理提及事件的邏輯如下:// ...existing code... if (LineEvent.message.mention != null && LineEvent.message.mention.mentionees != null && LineEvent.message.mention.mentionees.Count() > 0) { responseMsg += "\n有用戶被提到:"; foreach (var mention in LineEvent.message.mention.mentionees) { responseMsg += $"\n {(string.IsNullOrEmpty(mention.userId) ? "ALL" : mention.userId)}...被提及。"; if (mention.isSelf) responseMsg += "(此帳號為 bot 本身)"; } } // ...existing code...
你會發現在上面的程式碼當中,我們先判斷 mention
是否為空,然後使用 for…each 遍覽 mentionees
,並在回覆中顯示被提及的用戶 ID。如果被及的是 bot 本身(isSelf==true),則會在用戶 ID 後面標註 “(此帳號為 bot 本身)”。
透過上述步驟,您可以實現 LINE Messaging API 的提及功能,提升用戶互動體驗。
GitHub Example:
https://github.com/isdaviddong/ex_LineBotMetionExample
ref doc:
https://developers.line.biz/en/news/2024/10/30/text-message-v2/#details-20241030
留言