第12 屆iT邦幫忙鐵人賽系列文章 (Day27)
婚禮現場一定會有各種親朋好友視角的照片,以往都要一個一個傳在社群媒體之類的,本次來實作 chatbot 來廣收各種朋友拍的照片.. XD
Imgur是個圖床服務,如果是非商業使用,是完全免費的,串接起來也很容易,首先先到 https://api.imgur.com/oauth2/addclient 註冊一個 OAuth 服務
會得到 client id 和 client secret
回到 LineBotApp.cs,我們可以針對圖片類型的訊息做處理
GetContentBytesAsync
public async Task<Stream> GetContentBytesAsync(string messageId)
{
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), $"https://api-data.line.me/v2/bot/message/{messageId}/content"))
{
request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {accessToken}");
var response = await httpClient.SendAsync(request);
var results = await response.Content.ReadAsStreamAsync();
return results;
}
}
}
UploadToImgurAsync
可以透過 Nuget 安裝 Imgur.API
public async Task<string> UploadToImgurAsync(Stream stream)
{
var apiClient = new ApiClient("<Your Imgur ClientId>");
var httpClient = new HttpClient();
var imageEndpoint = new ImageEndpoint(apiClient, httpClient);
var imageUpload = await imageEndpoint.UploadImageAsync(stream);
return imageUpload.Link;
}
接著試著在 Line 傳一張圖片試試看,這樣幾個步驟後就能成功取得圖片網址啦~ 後續可以將這網址存到資料庫或前幾篇講的Azure Table
接收 Line Image Message Type
https://developers.line.biz/en/reference/messaging-api/#message-event
用 Message Id 取得存放在 Line Server 的圖片
https://developers.line.biz/en/reference/messaging-api/#get-content
使用 Imgur.API 來上傳圖片
https://github.com/DamienDennehy/Imgur.API
本篇文章同步發佈於我的 Medium 如果這篇文章對你有幫助,就大力追蹤和拍手鼓掌下去吧 !!