如果只是照著前面 27 天的教學來實作,充其量也只會做出按了沒反應的圖文訊息而已。為了讓整人更加完整,現在要加上逼迫點訊息的人發尷尬訊息到當前聊天室造成大家困擾的功能!
之前講過的 shareTargetPicker 是用來分享訊息給指定聊天室,是屬於把訊息傳送給別人的功能;LIFF API 還提供一種功能可以讓目前登入的使用者傳送你指定的訊息到當前聊天室,這個功能叫做 sendMessages,常在用品牌 LINE@
帳號的人應該都會遇到點擊按鈕或圖片會跳出訊息的功能,像這樣:
其實不只文字訊息,sendMessages 還支援發送多種類型的訊息,像是圖片、影片、音訊、貼圖等訊息都可以靠切換參數來實現。
sendMessages 可以代替登入者將訊息傳送到開啟 LIFF 應用程式的聊天室,也就是說只有在 LINE 聊天室內點擊 LIFF 的連結才能使用這個功能,如果是在 Chrome 打開含有 sendMessages 功能的 LIFF 連結,會出現下方的錯誤訊息喔!
liff
.sendMessages([
{
type: "text",
text: "Hello, World!",
},
])
.then(() => {
console.log("message sent");
})
.catch((err) => {
console.log("error", err);
});
注意:要實現 sendMessages 功能之前一定要允許 LIFF Scopes 設定的
chat_message.write
功能,不然就沒有權限發送訊息了喔!
如果想測試 sendMessages 是否能成功送出訊息不能像 shareTargetPicker 功能一樣用 liff playground 來測試,因為 sendMessages 只能在 LINE 內部使用, liff playground 屬於外部瀏覽器所以按了 RUN 按鈕不會有反應喔!(人家都說 LINE Client only 了)
如果想讓使用者發送除了文字以外的訊息,可以藉由改變 type
的參數來選擇傳送不同種類的訊息:
liff
.sendMessages([
{
"type": "image",
"originalContentUrl": "https://example.com/original.jpg",
"previewImageUrl": "https://example.com/preview.jpg"
}
])
liff
.sendMessages([
{
"type": "location",
"title": "my location",
"address": "1-3 Kioicho, Chiyoda-ku, Tokyo, 102-8282, Japan",
"latitude": 35.67966,
"longitude": 139.73669
}
])
幾年前有一個風靡台灣的 LINE 整人連結出現,只要在連結加上特定訊息編碼,就可以傳送指定訊息到當前群組。現在那個連結不知道跑到哪裡去,我只記得作者是 hao 大神。因為他在愚人節會把他的 LIFF 功能暫時關閉導致我沒辦法害人,所以我模擬他的程式碼架了一個 LIFF V2 整人網頁。因為程式碼非常長,所以這邊直接上連結!
所有程式碼連結
因為建立不同訊息類型的連結也是很深的一門學問,所以明天再一次教學喔!