前言
我們一般創造 LINE Bot 聊天機器人,讓它推送或回覆訊息時,通常是如下截圖所示,會顯示與我們對話的 Bot 大頭貼(在一對一對話中並不會顯示名稱):
但是!!
你知道這可以隨我們自己改嗎?!
* 為了防止用戶誤認為 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'
文字。
如果你跟我一樣使用 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)
|
完整對話(手機版和電腦版)
範例程式碼
這邊附上完整範例程式碼,給需要的人參考
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 個讚~