Introduction
The Bot Framework supports different types of rich cards and provides a richer interaction experience to the users. In this article, I will show how to integrate Hero Card UI design in a Bot application. The Hero card is a multipurpose card and contains an image, title text, subtext, multiple buttons, and a card tap action.
Prerequisite
I have explained about Bot framework installation, deployment, and implementation in the below articles.
- Getting Started with Chatbot Using Azure Bot Service
 - Getting Started with Bots Using Visual Studio 2017
 - Deploying A Bot to Azure Using Visual Studio 2017
 - How to Create ChatBot In Xamarin
 - Getting Started with Dialog Using Microsoft Bot Framework
 - Getting Started with Prompt Dialog Using Microsoft Bot Framework
 - Getting Started With Conversational Forms And FormFlow Using Microsoft Bot Framework
 - Getting Started With Customizing A FormFlow Using Microsoft Bot Framework
 - Sending Bot Reply Message With Attachment Using Bot Framework
 
Create New Bot Application
Let's create a new bot application using Visual Studio 2017. Open Visual Studio. Go to File > New Project (Ctrl + Shift +N) > Bot application.
![Bot Framework]()
The Bot application template gets created with all the components and all required NuGet references installed in the solution.
![Bot Framework]()
Create a new HeroCardDialog class
Step 1
You can create a new HeroCardDialog class to show the HeroCard dialog. Right-click on Project > select Add New Item > create a class that is marked with the [Serializable] attribute (so that the dialog can be serialized to state) and implement the IDialog interface.
- using Microsoft.Bot.Builder.Dialogs;  
 - using Microsoft.Bot.Connector;  
 - using System;  
 - using System.Collections.Generic;  
 - using System.Threading.Tasks;  
 -   
 - namespace BotHeroCard.Dialogs  
 - {  
 -     [Serializable]  
 -     public class HeroCardDialog : IDialog<object>  
 -     {   
 
 
Step 2
IDialog interface has only StartAsync() method. StartAsync() is called when the dialog becomes active. The method has passed the IDialogContext object that is used to manage the conversation.
- public async Task StartAsync(IDialogContext context)  
 -         {  
 -             context.Wait(this.MessageReceivedAsync);  
 -         }  
 
 
Step 3
Create a MessageReceivedAsync method and write the following code for the welcome message and show the list of demo options dialog.
-   
 -         
 -         
 -         
 -         
 -         
 -       public async virtual Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)  
 -       {  
 -           var message = await result;  
 -           var welcomeMessage = context.MakeMessage();  
 -           welcomeMessage.Text = "Welcome to bot Hero Card Demo";  
 -   
 -           await context.PostAsync(welcomeMessage);  
 -      
 -          await this.DisplayHeroCard(context);  
 -       }  
 -         
 -         
 -         
 -         
 -         
 -       public async Task DisplayHeroCard(IDialogContext context)  
 -       {  
 -   
 -           var replyMessage = context.MakeMessage();  
 -           Attachment attachment = GetProfileHeroCard(); ;  
 -           replyMessage.Attachments = new List<Attachment> { attachment };  
 -           await context.PostAsync(replyMessage);  
 -       }  
 
 
After the user enters the first message, the bot will reply with a welcome message, like below.
![Bot Framework]()
Step 4 Design Hero Card
The Hero Card typically contains a large image, one or more buttons, and text. Hero Card class has the following properties.
- Title - Title text of the card
 - Subtitle -subtitle text for the title
 - Text – Summary text to display on the card
 - Images – Display large image
 - Buttons - One or more buttons. The Skype allows only 5 buttons to display on a card. If you have more buttons, you can create two cards.
 - Tap - An action that is triggered when a user taps on the card.
 
The following code is used for showing the design to the user profile message with image, text, subtext, and action button.
- private static Attachment GetProfileHeroCard()  
 -   {  
 -       var heroCard = new HeroCard  
 -       {  
 -             
 -           Title = "Suthahar Jegatheesan",  
 -             
 -           Subtitle = "Microsoft certified solution developer",  
 -             
 -           Tap = new CardAction(ActionTypes.OpenUrl, "Learn More", value: "http://www.devenvexe.com"),  
 -             
 -           Text = "Suthahar J is a Technical Lead and C# Corner MVP. He has extensive 10+ years of experience working on different technologies, mostly in Microsoft space. His focus areas are  Xamarin Cross Mobile Development ,UWP, SharePoint, Azure,Windows Mobile , Web , AI and Architecture. He writes about technology at his popular blog http://devenvexe.com",  
 -             
 -           Images = new List<CardImage> { new CardImage("http://csharpcorner.mindcrackerinc.netdna-cdn.com/UploadFile/AuthorImage/jssuthahar20170821011237.jpg") },  
 -             
 -           Buttons = new List<CardAction> { new CardAction(ActionTypes.OpenUrl, "Learn More", value: "http://www.devenvexe.com") , new CardAction(ActionTypes.OpenUrl, "C# Corner", value: "http://www.c-sharpcorner.com/members/suthahar-j"), new CardAction(ActionTypes.OpenUrl, "MSDN", value: "https://social.msdn.microsoft.com/profile/j%20suthahar/") }  
 -       };  
 -   
 -       return heroCard.ToAttachment();  
 -   }  
 
 
The above code will generate a Hero Card and reply to the user.
![Bot Framework]()
Run Bot Application
The emulator is a desktop application that lets us test and debug our bot on localhost. Now, you can click on "Run the application" in Visual Studio and execute in the browser.
![Bot Framework]()
Test application on Bot Emulator
You can follow the below steps to test your bot application.
- Open Bot Emulator.
 - Copy the above localhost URL and paste it in the emulator, e.g., - http://localHost:3979
 - Append the /api/messages in the above URL; e.g. - http://localHost:3979/api/messages.
 - You won't need to specify Microsoft App ID and Microsoft App Password for localhost testing. So, click on "Connect".
![Bot Framework]()
 
Summary
In this article, you learned how to create a Bot application using Visual Studio 2017 and create Hero Card design using it. If you have any questions/feedback/issues, please write in the comment box.