public static ITemplateAction ParseTemplateAction(dynamic dynamicObject) { var type = (TemplateActionType)System.Enum.Parse(typeof(TemplateActionType), (string)dynamicObject?.type, true); return(type switch { TemplateActionType.Message => MessageTemplateAction.CreateFrom(dynamicObject), TemplateActionType.Uri => UriTemplateAction.CreateFrom(dynamicObject), TemplateActionType.Postback => PostbackTemplateAction.CreateFrom(dynamicObject), TemplateActionType.Datetimepicker => DateTimePickerTemplateAction.CreateFrom(dynamicObject), TemplateActionType.Camera => CameraTemplateAction.CreateFrom(dynamicObject), TemplateActionType.CameraRoll => CameraRollTemplateAction.CreateFrom(dynamicObject), TemplateActionType.Location => LocationTemplateAction.CreateFrom(dynamicObject), _ => null, });
public static ITemplateAction ParseTemplateAction(dynamic dynamicObject) { var type = (TemplateActionType)System.Enum.Parse(typeof(TemplateActionType), (string)dynamicObject?.type, true); switch (type) { case TemplateActionType.Message: return(MessageTemplateAction.CreateFrom(dynamicObject)); case TemplateActionType.Uri: return(UriTemplateAction.CreateFrom(dynamicObject)); case TemplateActionType.Postback: return(PostbackTemplateAction.CreateFrom(dynamicObject)); case TemplateActionType.Datetimepicker: return(DateTimePickerTemplateAction.CreateFrom(dynamicObject)); default: return(null); } }
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 }); } }
public (RichMenu newRichMenu, RenderTargetBitmap bitmap) RenderingRichMenu() { var body = this.FindName("menu_body") as UIElement; if (body == null) { return(null, null); } var areas = new List <ActionArea>(); foreach (var area in Enumerable.Range(1, 20).Select(n => "area_" + n)) { var areaObj = this.FindName(area) as UIElement; if (areaObj == null) { continue; } var menuAction = RichMenuProperties.GetAction(areaObj); ITemplateAction action = null; switch (menuAction.Type) { case TemplateActionType.Message: action = new MessageTemplateAction(menuAction.Label, menuAction.Text); break; case TemplateActionType.Postback: action = new PostbackTemplateAction(menuAction.Label, menuAction.Data, menuAction.Text); break; case TemplateActionType.Uri: action = new UriTemplateAction(menuAction.Label, menuAction.Uri); break; case TemplateActionType.Datetimepicker: action = new DateTimePickerTemplateAction(menuAction.Label, menuAction.Data, menuAction.DateTimeMode, menuAction.initialDateTime, menuAction.minDateTime, menuAction.maxDateTime); break; } if (action == null) { continue; } ; var topLeft = areaObj.TransformToVisual(body).Transform(new Point(0, 0)); areas.Add(new ActionArea() { Bounds = new ImageArea( (int)topLeft.X, (int)topLeft.Y, (int)areaObj.RenderSize.Width, (int)areaObj.RenderSize.Height), Action = action }); } var details = RichMenuProperties.GetSettings(body); var menu = new RichMenu() { Name = details.Name, ChatBarText = details.ChatBarText, Selected = details.Selected, Size = new ImageSize((int)body.RenderSize.Width, (int)body.RenderSize.Height), Areas = areas }; var bmp = new RenderTargetBitmap(menu.Size.Width, menu.Size.Height, 96, 96, PixelFormats.Pbgra32); bmp.Render(body); return(menu, bmp); }