4
votes

I'm trying to use adaptive cards by adding it on my luis response, and was following a guide: https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-add-rich-card-attachments.

How come my buttons is not showing up on my bot emulator? did i miss anything? see picture: enter image description here

my code:

 [LuisIntent("Test")]
    public async Task Test(IDialogContext context, LuisResult result)
    {

        Activity replyToConversation = (Activity)context.MakeMessage();
        //Activity replyToConversation = message.CreateReply("Should go to conversation");
        replyToConversation.Attachments = new List<Attachment>();
        AdaptiveCard card = new AdaptiveCard();

       // Add text to the card.
        card.Body.Add(new TextBlock()
        {
            Text = "Adaptive Card design session",
            Size = TextSize.Large,
            Weight = TextWeight.Bolder
        });

        // Add text to the card.
        card.Body.Add(new TextBlock()
        {
            Text = "Conf Room 112/3377 (10)"
        });

        // Add text to the card.
        card.Body.Add(new TextBlock()
        {
            Text = "12:30 PM - 1:30 PM"
        });

        // Add list of choices to the card.
        card.Body.Add(new ChoiceSet()
        {
            Id = "snooze",
            Style = ChoiceInputStyle.Compact,
            Choices = new List<Choice>()
            {
                new Choice() { Title = "5 minutes", Value = "5", IsSelected = true },
                new Choice() { Title = "15 minutes", Value = "15" },
                new Choice() { Title = "30 minutes", Value = "30" }
            }
        });

        // Add buttons to the card.
        card.Actions.Add(new HttpAction()
        {
            Url = "http://foo.com",
            Title = "Snooze"
        });

        card.Actions.Add(new HttpAction()
        {
            Url = "http://foo.com",
            Title = "I'll be late"
        });

        card.Actions.Add(new HttpAction()
        {
            Url = "http://foo.com",
            Title = "Dismiss"
        });

        // Create the attachment.
        Attachment attachment = new Attachment()
        {
            ContentType = AdaptiveCard.ContentType,
            Content = card
        };

        replyToConversation.Attachments.Add(attachment);

        // var reply = await connector.Conversations.SendToConversationAsync(replyToConversation);
        await context.PostAsync(replyToConversation);
        context.Done(true);
    }
1

1 Answers

5
votes

Change your HttpAction to OpenUrlAction (or SubmitAction, depending on your needs) and you will get your buttons:

demo

When you look at the documentation, Actions possibilities are:

  • Action.OpenUrl
  • Action.Submit
  • Action.ShowCard

Their equivalent in C# objects are OpenUrlAction, SubmitAction and ShowCardAction