private BasicCard CreateGoogleCardFromHeroCard(HeroCard heroCard) { var imageUrl = heroCard.Images?.FirstOrDefault()?.Url; var buttons = new List <Button>(); var heroCardButtons = heroCard.Buttons .Where(b => b.Type == ActionTypes.OpenUrl && b.Value is string buttonValue && buttonValue.StartsWith("http", StringComparison.InvariantCultureIgnoreCase)) .ToList(); if (heroCardButtons?.FirstOrDefault() is CardAction button) { if (heroCardButtons.Count() > 1) { Logger.LogWarning("Only one 'button' is supported on Google basic card, using first button"); } buttons.Add(new Button() { Title = button.Title, OpenUrlAction = new OpenUrlAction() { Url = button.Value as string } }); } return(GoogleCardFactory.CreateBasicCard(heroCard.Title, heroCard.Subtitle, heroCard.Text, buttons, imageUrl != null ? new Image { Url = imageUrl } : null)); }
protected override async Task OnMessageActivityAsync(ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken) { switch (turnContext.Activity.Text.ToLower()) { default: await turnContext.SendActivityAsync(MessageFactory.Text($"Echo: {turnContext.Activity.Text}. What's next?", inputHint: InputHints.ExpectingInput), cancellationToken); break; case "finish": await turnContext.SendActivityAsync(MessageFactory.Text($"Ok, I won't ask anymore.", inputHint: InputHints.IgnoringInput), cancellationToken); break; case "card": var activityWithCard = MessageFactory.Text($"Ok, I included a simple card."); var basicCard = GoogleCardFactory.CreateBasicCard("card title", "card subtitle", "some text for the content"); activityWithCard.Attachments.Add(basicCard.ToAttachment()); await turnContext.SendActivityAsync(activityWithCard, cancellationToken); break; case "signin": var activityWithSigninCard = MessageFactory.Text($"Ok, I included a simple card."); var signinCard = new SigninCard(); activityWithSigninCard.Attachments.Add(signinCard.ToAttachment()); await turnContext.SendActivityAsync(activityWithSigninCard, cancellationToken); break; case "list": var activityWithListAttachment = MessageFactory.Text($"Ok, I included a list."); var listIntent = GoogleHelperIntentFactory.CreateListIntent( "List title", new List <OptionItem>() { new OptionItem( "List item 1", "This is the List Item 1 description", new OptionItemInfo() { Key = "Item1", Synonyms = new List <string>() { "first" } }, new OptionItemImage() { AccessibilityText = "Item 1 image", Url = "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png" }), new OptionItem( "List item 2", "This is the List Item 2 description", new OptionItemInfo() { Key = "Item2", Synonyms = new List <string>() { "second" } }, new OptionItemImage() { AccessibilityText = "Item 2 image", Url = "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png" }) }); activityWithListAttachment.Attachments.Add(listIntent.ToAttachment()); await turnContext.SendActivityAsync(activityWithListAttachment, cancellationToken); break; case "carousel": var activityWithCarouselAttachment = MessageFactory.Text($"Ok, I included a carousel."); var carouselIntent = GoogleHelperIntentFactory.CreateCarouselIntent( "List title", new List <OptionItem>() { new OptionItem( "List item 1", "This is the List Item 1 description", new OptionItemInfo() { Key = "Item1", Synonyms = new List <string>() { "first" } }, new OptionItemImage() { AccessibilityText = "Item 1 image", Url = "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png" }), new OptionItem( "List item 2", "This is the List Item 2 description", new OptionItemInfo() { Key = "Item2", Synonyms = new List <string>() { "second" } }, new OptionItemImage() { AccessibilityText = "Item 2 image", Url = "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png" }) }); activityWithCarouselAttachment.Attachments.Add(carouselIntent.ToAttachment()); await turnContext.SendActivityAsync(activityWithCarouselAttachment, cancellationToken); break; case "table": var activityWithTableCardAttachment = MessageFactory.Text($"Ok, I included a table card."); var tableCard = GoogleCardFactory.CreateTableCard( new List <ColumnProperties>() { new ColumnProperties() { Header = "Column 1" }, new ColumnProperties() { Header = "Column 2" } }, new List <Row>() { new Row() { Cells = new List <Cell> { new Cell { Text = "Row 1, Item 1" }, new Cell { Text = "Row 1, Item 2" } } }, new Row() { Cells = new List <Cell> { new Cell { Text = "Row 2, Item 1" }, new Cell { Text = "Row 2, Item 2" } } } }, "Table Card Title", "Table card subtitle", new List <Button>() { new Button() { Title = "Click here", OpenUrlAction = new OpenUrlAction() { Url = "https://www.microsoft.com" } } }); activityWithTableCardAttachment.Attachments.Add(tableCard.ToAttachment()); await turnContext.SendActivityAsync(activityWithTableCardAttachment, cancellationToken); break; } }