請啟用 JavaScript 來查看內容

LINE Bot 聊天機器人如何更改顯示圖示、名稱?以 Python 的 line-bot-sdk 為例

      前言

      我們一般創造 LINE Bot 聊天機器人,讓它推送或回覆訊息時,通常是如下截圖所示,會顯示與我們對話的 Bot 大頭貼(在一對一對話中並不會顯示名稱):

      聊天訊息
      聊天訊息

      但是!!
      你知道這可以隨我們自己改嗎?!

      來源:LINE Developers
      來源:LINE Developers

      * 為了防止用戶誤認為 LINE 官方賬號,所以在你顯示的帳號名稱後方會有 From 'account name' 文字。

      LINE Developers 的 Messaging API 就有提供我們可以「更改顯示圖示、名稱」,
      接下來,我以給 Python 的 SDK 套件來示範,跟著一起看看如何使用吧~


      套件

      這次教學主要使用到的 Python 套件:

      安裝

      1
      
      pip install line-bot-sdk
      

      實際介紹教學

      首先,我們可以在 LINE 官方 Messaging API 文檔中,查詢到相關介紹,以及在 Messaging API reference 中查到送出請求的參數和規範

      此設定可以使用在"推送訊息"和"回覆訊息",而為了防止用戶誤認為 LINE 官方賬號,在你顯示的帳號名稱後方會再自動加上 From 'account name' 文字。

      來源:LINE Developers
      來源:LINE Developers

      如果你跟我一樣使用 Python,也使用 line-bot-sdk 套件。在 GitHub 的 README 並沒有寫出來這部分的實際範例。
      但我到此套件的 API 文檔尋找,它還是有把「更改顯示圖示、名稱」這部分實做出來:linebot.models.send_messages.Sender


      程式一開始,需要將 Sender class 匯入到程式中:

      1
      
      from linebot.models import Sender
      

      這邊以"回覆訊息"為例子,一般純文字的訊息回覆程式碼如下:

      1
      2
      3
      4
      5
      6
      
      line_bot_api.reply_message(
          event.reply_token,
          TextSendMessage(
              text=f'你說:{event.message.text}',
          )
      )
      
      偏偏注定要落腳(預設訊息格式)
      偏偏注定要落腳(預設訊息格式)

      而要「更改顯示圖示、名稱」很簡單,只需要加上 sender 參數:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      line_bot_api.reply_message(
          event.reply_token,
          TextSendMessage(
              text='這是則文字訊息。',
              sender=Sender(
                  name="<顯示名稱>",
                  icon_url="<顯示圖示網址>")
          )
      )
      

      Sender 有兩個參數,分別是:

      name 參數
      設定顯示的帳號名稱。

      • 字數上限:20
      • 某些詞(例如LINE)可能會被限制無法使用。

      icon_url 參數
      設定顯示的帳號圖示網址。

      • 字數上限:1000
      • 網址只能用 https 的
      • 圖片格式需為 PNG
      • 圖片長寬比需為 1:1 (正方形) 不然可能會變形
      • 資料大小不能超過 1 MB

      * 我試過使用 JPG 格式的圖片也能正常顯示,但建議還是依照官方文件的規範。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      line_bot_api.reply_message(
          event.reply_token,
          TextSendMessage(
              text='這是則文字訊息。',
              sender=Sender(
                  name="顯示名稱",
                  icon_url="https://res.cloudinary.com/jiablog/coffee.png")
          )
      )
      
      自定義訊息格式
      自定義訊息格式

      當然~
      也可以像一般回覆,一次回覆多則訊息:

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      
      message1 = TextSendMessage(
          text=f"以下為\"{event.message.text}\"的搜尋結果...",
          sender=Sender(
              name="Google",
              icon_url="https://storage.googleapis.com/support-kms-prod/ZAl1gIwyUsvfwxoW9ns47iJFioHXODBbIkrK")
      )
      message2 = TextSendMessage(
          text="請為您的信仰加值",
          sender=Sender(
              name="Apple",
              icon_url="https://www.yusgroup.com.hk/wp-content/uploads/2012/03/Apple-Logo.jpg")
      )
      message3 = TextSendMessage(
          text=f"您想買\"{event.message.text}\"嗎? 我們都有!",
          sender=Sender(
              name="Amazon",
              icon_url="https://pngimg.com/uploads/amazon/amazon_PNG27.png")
      )
      message4 = TextSendMessage(
          text="[已取得您的個資]",
          sender=Sender(
              name="Facebook",
              icon_url="https://upload.wikimedia.org/wikipedia/commons/0/05/Facebook_Logo_%282019%29.png")
      )
      
      messages = [message1, message2, message3, message4]
      line_bot_api.reply_message(event.reply_token, messages)
      
      Amazon 請小心你的發言...
      Amazon 請小心你的發言...

      完整對話(手機版和電腦版)

      完整對話(手機版和電腦版)
      完整對話(手機版和電腦版)

      範例程式碼

      這邊附上完整範例程式碼,給需要的人參考
      GitHub Gist:line_bot.py

      結語

      之前都沒注意到 LINE Bot 聊天機器人能更改聊天對話中顯示的"圖示"、"名稱"呢,感覺可以拿來做一些有趣的應用~

      歡迎追蹤『IT空間』FB 粉專,取得最新發文通知🔔




      參考:
      LINE 官方 Messaging API 文檔
      LINE 官方 Messaging API reference
      LINE Messaging API SDK for Python 的 GitHub
      LINE Messaging API SDK for Python 的 文檔


      Nothing is necessary. Everything is a choice.
      沒有什麼事是必要的,每件事都是一個選擇。

      —— 電影《玩命關頭 8》


      🔻 如果覺得喜歡,歡迎在下方獎勵我 5 個讚~
      分享

      Jia
      作者
      Jia
      軟體工程師 - Software Engineer