用Line機器人上傳imgur圖片教學(Express,@line/bot-sdk)

閱讀時間約 6 分鐘
用Line機器人上傳imgur圖片教學(Express,@line/bot-sdk)封面
本篇文章雖然是Line機器人操作教學,但如何申請機器人請自己去搜尋一下,創建也自己創一下,有很多篇手把手教學

目標想達到的效果

Line機器人收到圖片後將圖片上傳至imgur雲端空間,回傳使用者圖片url

閱讀前需具備知識

  • Line機器人創建設置
  • Nodejs與express基礎配置
  • @line/bot-sdkSDK的基本認知

步驟說明

收到line機器人訊息取得圖片訊息ID

每個使用者傳送圖片後程式這裡會收到訊息事件 大概是長成這樣
{
"destination": "xxxxxxxxxx",
"events": [
{
"type": "message",
"message": {
"type": "image",
"id": "354718705033693859",
"contentProvider": {
"type": "line"
},
"imageSet": {
"id": "xxxxxxxxxx",
"index": 1,
"total": 2
}
},
"timestamp": xxxxxxxxxx,
"source": {
"type": "user",
"userId": "xxxxxxxxxx"
},
"webhookEventId": "xxxxxxxxxx",
"deliveryContext": {
"isRedelivery": false
},
"replyToken": "xxxxxxxxxx",
"mode": "active"
}
]
}
主要先判斷訊息事件中類型是屬於image後即可確定是使用者傳送圖片
和一般的思路不一樣的地方是Line並不是直接把圖片整張丟過來 而且需要使用Line的API詢問這張圖片是什麼
記下圖片ID即可繼續操作
參考官方文件內容官方文檔

使用Line API取得圖片訊息內容

使用Line官方提供的 getContent API 簡單解釋ㄧ下大概就是圖片、影片、音訊、檔案等等訊息都要透過這個API來取得檔案本體
直接上官方範例程式SDK
const line = require('@line/bot-sdk');

const client = new line.Client({
channelAccessToken: '<channel access token>'
})
client.getMessageContent('<messageId>')
.then((stream) => {
stream.on('data', (chunk) => {
...
});
stream.on('error', (err) => {
// error handling
})
})
回來的資料並不是圖檔本體 而是readable stream的資料格式
操考官方文檔Get content

處理buffer資料

readable stream大概就是資料被切分很多小塊buffer 需要把資料全部搜集好以後再一次轉換成我們需要的格式
查詢過imgur API中上傳圖片的指定格式後發現可以接受3種格式 stream, base64, url
所以預計處理方式是把buffer的資料搜集完成後全部轉換成stream的圖片格式
  • 把buffer搜集起來
const buffers = []
readableBuffer.on('data', chunk => {
buffers.push(chunk)
})
  • 結束時將資料轉換成stream的格式
const { Readable } = require('stream')
readableBuffer.on('end', async () => {
const stream = Readable.from(buffers)
})

使用imgur API上傳

最後再使用api直接上傳,初始化成imgur_client 以後繼續操作
album 是指定相簿名稱,我有事先在imgur空間建立一個自己的相簿取得ID,往後要刪除照片比較方便
const imgur_client = require('../imgur/index')
const data = await imgur_client.upload({
image: stream,
type: 'stream',
album: process.env.IMGUR_ALBUM_ID
})
const link = data.data.link
成功上傳後會返回關於此次上傳的詳細資料 其中包含圖片的url位置
最後可以將url返回Line訊息即可。
為什麼會看到廣告
avatar-img
6會員
23內容數
沙龍新手
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
技術叢林 的其他內容
對於前端工程師來說github上的gh-page是一個很適合放置自己作品的地方 尤其適合想要練練手感的時候可以方便地展示成果的地方 在過去使用手動commit至gh-page的分支上,或是使用deploy.sh檔來部署,對於我這種懶人來說都是多一個步驟,時常會覺得麻煩 現在能夠透過github ac
對於前端工程師來說github上的gh-page是一個很適合放置自己作品的地方 尤其適合想要練練手感的時候可以方便地展示成果的地方 在過去使用手動commit至gh-page的分支上,或是使用deploy.sh檔來部署,對於我這種懶人來說都是多一個步驟,時常會覺得麻煩 現在能夠透過github ac
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
此為不負責任教學,介面操作依實際情況而有所異動 額外資源參考 [API] 串接 Imgur API 圖床服務,上傳到指定相簿 israynotarray超完整 Express Imgur 套件上傳教學 [前端筆記] 用 axios 串接 imgur API上傳圖片
Thumbnail
打造 LINE AI Chatbot,將 LINE 官方渠道串接 ChatGPT AI,讓 AI 根據用戶問題給予對應回覆,在回覆廣度或深度都更完整。輕鬆處理龐大訊息量,自動生成回覆並立即回應,提升訊息處理效率!更支援「針對 AI 回答設定框架」,於指定資料表內搜尋資料生成回覆,提高回覆準確性!
Thumbnail
本文章將介紹如何在LINE Notify上設定及使用權杖(access token)來進行通知功能。透過此API,可以使用curl或JAVA CODE來讓結果顯示在Line上面,達到及時的通知效果。
Thumbnail
設計程式來讀取欲傳送訊息之參數txt檔案,再利用程式自動傳出訊息至LINE群組。能簡易使用於任何場合。
Thumbnail
欲傳送之內容,由使用者輸入於文字檔內,執行本執行檔後,指定之LINE群組全員,將會收到推播訊息
Thumbnail
上回說明的手動下指令,傳出訊息。為了節省手動輸入之動作,將欲執行的curl指令內容,事先作成執行檔。當需要傳送訊息時,只要按兩下執行檔,便可立刻傳出訊息至LINE群組內之全員 2. 說明 2.1 因每次要傳送內容不同,將這些會變動的訊息資料,輸入後保存 於bat執行檔內
Thumbnail
如何將LINE訊息自動傳出,利用curl工具
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
本文將介紹如何使用 Python 實現 LINE Notify 功能。LINE Notify 允許用戶通過 Line 應用程序接收自定義通知,非常適合於個人項目或業務流程中。LINE Notify 是 LINE 提供的一項功能,允許用戶從他們的應用程序、服務或系統中,透過LINE 發送通知。
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
此為不負責任教學,介面操作依實際情況而有所異動 額外資源參考 [API] 串接 Imgur API 圖床服務,上傳到指定相簿 israynotarray超完整 Express Imgur 套件上傳教學 [前端筆記] 用 axios 串接 imgur API上傳圖片
Thumbnail
打造 LINE AI Chatbot,將 LINE 官方渠道串接 ChatGPT AI,讓 AI 根據用戶問題給予對應回覆,在回覆廣度或深度都更完整。輕鬆處理龐大訊息量,自動生成回覆並立即回應,提升訊息處理效率!更支援「針對 AI 回答設定框架」,於指定資料表內搜尋資料生成回覆,提高回覆準確性!
Thumbnail
本文章將介紹如何在LINE Notify上設定及使用權杖(access token)來進行通知功能。透過此API,可以使用curl或JAVA CODE來讓結果顯示在Line上面,達到及時的通知效果。
Thumbnail
設計程式來讀取欲傳送訊息之參數txt檔案,再利用程式自動傳出訊息至LINE群組。能簡易使用於任何場合。
Thumbnail
欲傳送之內容,由使用者輸入於文字檔內,執行本執行檔後,指定之LINE群組全員,將會收到推播訊息
Thumbnail
上回說明的手動下指令,傳出訊息。為了節省手動輸入之動作,將欲執行的curl指令內容,事先作成執行檔。當需要傳送訊息時,只要按兩下執行檔,便可立刻傳出訊息至LINE群組內之全員 2. 說明 2.1 因每次要傳送內容不同,將這些會變動的訊息資料,輸入後保存 於bat執行檔內
Thumbnail
如何將LINE訊息自動傳出,利用curl工具
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
本文將介紹如何使用 Python 實現 LINE Notify 功能。LINE Notify 允許用戶通過 Line 應用程序接收自定義通知,非常適合於個人項目或業務流程中。LINE Notify 是 LINE 提供的一項功能,允許用戶從他們的應用程序、服務或系統中,透過LINE 發送通知。