第12 屆iT邦幫忙鐵人賽系列文章 (Day27)

婚禮現場一定會有各種親朋好友視角的照片,以往都要一個一個傳在社群媒體之類的,本次來實作 chatbot 來廣收各種朋友拍的照片.. XD

上傳到 Imgur

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

懶人包,本次學到了什麼?