private async Task ReplyImageCarouselAsync(string replyToken, string blobDirectoryName) { var columns = BlobStorage.ListBlobUri(blobDirectoryName) .Select(uri => new ImageCarouselColumn(uri.ToString(), new MessageTemplateAction(uri.Segments.Last(), $"I selected image {uri.Segments.Last()}!"))).ToList(); if (columns.Count == 0) { await MessagingClient.ReplyMessageAsync(replyToken, "Upload image for \"Carousel Message\"."); return; } var template = new ImageCarouselTemplate(columns); await MessagingClient.ReplyMessageAsync(replyToken, new[] { new TemplateMessage("imageCarousel", template) }); }
private async Task UploadImageAsync(string replyToken, string messageId, string blobDirectoryName) { var imageStream = await MessagingClient.GetContentStreamAsync(messageId); var image = Image.FromStream(imageStream); var imageCount = BlobStorage.ListBlobUri(blobDirectoryName).Count(); if (imageCount == 5) { await BlobStorage.DeleteDirectoryAsync(blobDirectoryName); imageCount = 0; } await BlobStorage.UploadImageAsync(image, blobDirectoryName, (imageCount + 1) + ".jpeg"); await MessagingClient.ReplyMessageAsync(replyToken, $"Image uploaded ({imageCount + 1})."); }
protected override async Task OnMessageAsync(MessageEvent ev) { var msg = ev.Message as TextEventMessage; if (msg == null) { return; } switch (msg.Text) { case "Rectangle-Cover": await ReplyCarouselTemplateMessageAsync(ev.ReplyToken, ImageAspectRatioType.Rectangle, ImageSizeType.Cover); break; case "Square-Contain": await ReplyCarouselTemplateMessageAsync(ev.ReplyToken, ImageAspectRatioType.Square, ImageSizeType.Contain); break; case "Square-Cover": await ReplyCarouselTemplateMessageAsync(ev.ReplyToken, ImageAspectRatioType.Square, ImageSizeType.Cover); break; case "Rectangle-Contein": default: await ReplyCarouselTemplateMessageAsync(ev.ReplyToken, ImageAspectRatioType.Rectangle, ImageSizeType.Contain); break; } async Task ReplyCarouselTemplateMessageAsync(string replyToken, ImageAspectRatioType imageAspectRatio, ImageSizeType imageSize) { var imageUri = BlobStorage.ListBlobUri(blobDirectoryName).FirstOrDefault(uri => uri.ToString().EndsWith(imageName)); if (imageUri == null) { imageUri = await BlobStorage.UploadImageAsync(Properties.Resources.sample_image, blobDirectoryName, imageName); } var defaultAction = new MessageTemplateAction("Default-Action", "Default-Action"); var templateMessage = new TemplateMessage("CarouselTemplate", new CarouselTemplate(new[] { new CarouselColumn( imageAspectRatio + "-" + imageSize, imageUri.ToString(), "Test of thumbnail image settings", new [] { new MessageTemplateAction("Rectangle-Contain", "Rectangle-Contain") }, "#FF0000", defaultAction), new CarouselColumn( imageAspectRatio + "-" + imageSize, imageUri.ToString(), "Test of thumbnail image settings", new [] { new MessageTemplateAction("Rectangle-Cover", "Rectangle-Cover") }, "#00FF00", defaultAction), new CarouselColumn( imageAspectRatio + "-" + imageSize, imageUri.ToString(), "Test of thumbnail image settings", new [] { new MessageTemplateAction("Square-Contain", "Square-Contain") }, "#0000FF", defaultAction), new CarouselColumn( imageAspectRatio + "-" + imageSize, imageUri.ToString(), "Test of thumbnail image settings", new [] { new MessageTemplateAction("Square-Cover", "Square-Cover") }, "#FF00FF", defaultAction) }, imageAspectRatio, imageSize)); await MessagingClient.ReplyMessageAsync(replyToken, new[] { templateMessage }); } }