如何在WebHook中取得用戶上傳的圖片(Bytes)

Overview

本Lab介紹如何在WebHook中,取得用戶上傳的圖檔Body Bytes。

Prerequisites

  1. 請先建立好LINE Bot帳號,並取得Channel Access Token與UserId 參考這裡

  2. 下載安裝 .net core sdk 3.1 以上版本 here

  3. 安裝 Visual Studio Code 開發工具 here

  4. 建立 .net core WebAPI 專案,在專案中引用 nuget 上的 LineBotSDK 套件。

  5. 安裝好 Ngrok 便於在開發環境測試 here

  6. 完成 Lab 11,建立好可Echo的基本WebHook [可參考here]

Steps

依照Lab11,建立好可Echo的LINE Bot

請先完成先前介紹的Lab,建立好可以Echo的LINE Bot之後,請注意底下程式碼的第29行:

加入程式碼

請在29行下方,加入底下的程式碼:

else if (LineEvent.type.ToLower() == "message" && LineEvent.message.type == "image")
{
    responseMsg = $"你說了: {LineEvent.message.text}";
    var FileBody = this.GetUserUploadedContent(LineEvent.message.id);
    responseMsg = $"Hi, 收到你上傳了一個檔案,大小為 {FileBody.Length} Bytes";
}

上面這段程式碼是判斷用戶傳來的訊息是否為圖片,如果是,則透過 API 抓取該圖片的bytes,然後設定顯示文字,回應用戶圖片的大小。

撰寫完成後,即可透過 dotnet run執行此WebHook...

請注意,測試時你必須確定已可正確執行dotnet run(意即程式碼沒有撰寫或語法錯誤),
且建議你必須透過 ngrok 將運行的 endpoint 位置轉換成 LINE 伺服器能讀取的外部 URL。  
然後將其設定在LINE Bot的管理後台,這樣才能開始測試...  

Ngrok這部分如果不熟悉,可以參考 Lab 11。

可以正確抓到圖檔資訊了。

相關參考資料

電子書:https://www.pubu.com.tw/ebook/103305 實體書:https://www.tenlong.com.tw/products/9789865022662 線上課程:https://www.udemy.com/line-bot/ LineBotSDK:https://www.nuget.org/packages/LineBotSDK

如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。

Last updated