iT邦幫忙

2023 iThome 鐵人賽

DAY 28
1
Software Development

再騙小心沒朋友🥵 用LIFF實作LINE整人工具系列 第 28

[Day28] 如何讓人發白目訊息到聊天室?🤔

  • 分享至 

  • xImage
  •  

如果只是照著前面 27 天的教學來實作,充其量也只會做出按了沒反應的圖文訊息而已。為了讓整人更加完整,現在要加上逼迫點訊息的人發尷尬訊息到當前聊天室造成大家困擾的功能!

如何強迫別人發送奇怪訊息?

之前講過的 shareTargetPicker 是用來分享訊息給指定聊天室,是屬於把訊息傳送給別人的功能;LIFF API 還提供一種功能可以讓目前登入的使用者傳送你指定的訊息到當前聊天室,這個功能叫做 sendMessages,常在用品牌 LINE@
帳號的人應該都會遇到點擊按鈕或圖片會跳出訊息的功能,像這樣:

其實不只文字訊息,sendMessages 還支援發送多種類型的訊息,像是圖片、影片、音訊、貼圖等訊息都可以靠切換參數來實現。

sendMessages 的功能和使用方式

sendMessages 可以代替登入者將訊息傳送到開啟 LIFF 應用程式的聊天室,也就是說只有在 LINE 聊天室內點擊 LIFF 的連結才能使用這個功能,如果是在 Chrome 打開含有 sendMessages 功能的 LIFF 連結,會出現下方的錯誤訊息喔!

  • 使用 sendMessages 傳送文字程式碼:
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 的參數來選擇傳送不同種類的訊息:

  • 使用 sendMessages 傳送圖片程式碼:
liff
  .sendMessages([
    {
      "type": "image",
      "originalContentUrl": "https://example.com/original.jpg",
      "previewImageUrl": "https://example.com/preview.jpg"
    }
  ])
  • 使用 sendMessages 傳送座標位置程式碼:
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 整人網頁。因為程式碼非常長,所以這邊直接上連結!
所有程式碼連結

因為建立不同訊息類型的連結也是很深的一門學問,所以明天再一次教學喔!


上一篇
[Day27] 教你用 GitHub 架免費網站 把整人連結分享給朋友用
下一篇
[Day29] 教你設定會傳奇怪訊息的可怕連結
系列文
再騙小心沒朋友🥵 用LIFF實作LINE整人工具30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言