# 如何在 LIFF 傳送隱藏資料給機器人
大家好,我是做出「LINE 數位版名片」的 LINE API 專家均民。
Hi 大家好,我今天來分享一個小技巧,讓你可以在 LIFF 中傳送隱藏資料給聊天機器人,並且還可以免費回覆訊息,很適合做出很漂亮的 LIFF 給使用者選擇東西喔!
在 LINE 的聊天機器人中,如果你希望使用者按下按鈕後看不到你傳的資料,你可以使用 postback 這個 action 來傳送隱藏資料,同時你也會拿到一個 replyToken 讓你回傳訊息。
但是在 LIFF 中該怎麼做到類似的事情呢?我們直接先用範例程式來試玩看看吧!
由於後端採用 Google Cloud Function,為了避免用量過高被收錢,所以有鎖執行上限,如果無回應的話,可以重新傳送訊息試試喔!
# 範例程式
加入這個聊天機器人後,你應該就能看到這個畫面:
Android | iOS |
---|---|
然後請點選第一個選擇 sender 的 LIFF 連結,點下去以後就會出現 Brown、Cony 和 Sally 給你選擇:
Android | iOS |
---|---|
如果我們點選 Brown 以後,你就會看到聊天機器人用最新的 Icon Switch 功能 (opens new window)來跟你打招呼囉!
Android | iOS |
---|---|
如果你把這段文字複製到「輔助開發 LINE Flex 訊息的工具」 (opens new window)文章裡面所介紹的「DEMO 開發 Flex」機器人中:
Android | iOS |
---|---|
並且在這個工具裡面打開 LIFF 選擇 sender 的話,你就可以成功看到這個 LIFF 到底送出了什麼隱藏內容喔!
Android | iOS |
---|---|
# 運作原理
首先,我們需要準備一張 3x1
的透明 png 圖:
https://i.imgur.com/MwS42AE.png
然後把隱藏資料放在 Image 的網址中:
https://i.imgur.com/MwS42AE.png?sender=Brown
接著,就可以在 LIFF 中呼叫 liff.sendMessages()
來把 Image 送給機器人:
await liff.sendMessages([{
type: 'image',
originalContentUrl: 'https://i.imgur.com/MwS42AE.png?sender=Brown',
previewImageUrl: 'https://i.imgur.com/MwS42AE.png?sender=Brown'
}])
然後在聊天機器人中就會收到類似這樣的 Event:
{
"type": "message",
"replyToken": "bfd16af576304062931ee39249d1c362",
"source": {
"userId": "Udeadbeefdeadbeefdeadbeefdeadbeef",
"type": "user"
},
"timestamp": 1586196950201,
"mode": "active",
"message": {
"type": "image",
"id": "11738027154079",
"contentProvider": {
"type": "external",
"originalContentUrl": "https://i.imgur.com/MwS42AE.png?sender=Brown",
"previewImageUrl": "https://i.imgur.com/MwS42AE.png?sender=Brown"
}
}
}
這時候聊天機器人就可以把 event.message.contentProvider.originalContentUrl
資料解析出來處理,並且還有 replyToken 可以使用喔!
# 原始碼及參考連結
TIP
本文範例程式的原始碼授權為 MIT License。