LINE Messaging API 的 mention 功能功能介紹

enter image description here

緣由

在群組聊天中,LINE 的 @ 功能可以讓用戶標註特定成員,確保訊息能夠引起被對方注意到。這對於需要即時回應或要求特定成員參與討論時特別有用。過去,LINE對談機器人(也就是 LINE Bot, OA帳號)無法被 @ ,也不容易判斷出誰被用戶 @ 。現在,透過 LINE Messaging API 的提及 (mention) 功能,開發者可以實現自動回應並處理提及事件,提升互動體驗。

提及 (mention) 功能可以達成的效果

  1. 檢查被提及的用戶:在 WebHook內,檢查訊息中是否有提及其他用戶,並可在回覆中顯示被提及的用戶 ID。
  2. 標註 bot 本身:如果被提及的是 bot 本身,也可以識別出來。
  3. 提及所有用戶:如果是透過 @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 的使用方法。

  1. 設定 ChannelAccessToken 和 AdminUserId
    LineWebHookController.cs 中,將 ChannelAccessTokenAdminUserId 替換為您的 LINE Bot 資訊。
    // 設定 ChannelAccessToken
    this.ChannelAccessToken = "👉____replace_with_ChannelAccessToken";
    // 設定 AdminUserId
    var AdminUserId = "👉____replace_with_AdminUserId";
    
  2. 處理提及事件
    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

參考 課程:
https://www.studyhost.tw/NewCourses/LineBot

留言

這個網誌中的熱門文章

使用LM Studio輕鬆在本地端以API呼叫大語言模型(LLM)

VS Code的字體大小

使用 Dify 建立企業請假機器人

使用 Dify 以No Code方式建立記帳機器人

使用 Dify API 快速建立一個包含前後文記憶的對談機器人