Ask Questions of Users Using Bot Framework Composer

Introduction

 
The Bot Framework Composer is a fantastic tool for creating/developing Microsoft bots, as it gives you the ability to sketch out and compose entire simple and complex Bot applications within a visual interface instead of writing actual code. Use composer to create the bot solution’s code and run it immediately to test it in the emulator and deploy it to Azure using the CLI. Bot developers should check out  the awesome Composer tool, as this will make your Bot development even easier in terms of building smart and engaging bots with ease. 
 
A conversation between a bot and a user often involves asking the user for information and parsing the user's response. Bots should track the context of a conversation, so that it can manage the behavior and remember answers to previous questions. Bot Framework composer has provided different question formats, in this article we are going to see how we can use Text, Number and Datetime input from users and how we can retrieve state information from Bot state.
 
Ask Question To Users Using Bot Framework Composer 
 
Prerequisites
  1. Read my previous article to build and setup the bot framework Composer development environment.
  2. Read, How to create Multiple Dynamic Greeting Message using Bot Framework Composer

Create New Bot Application

 
On the Bot Framework Composer homepage, click on New. Select Create from scratch. Click On Next. Give your bot a name. Once created, you should be able to see the following screen.
 
Ask Question To Users Using Bot Framework Composer 
 

Asking Users Questions

 
Bot Framework Composer makes it easier to collect information from the user and Composer provides a feature for validation and a variety of data types as follows: 
  1. Text Input
  2. Number Input 
  3. Confirmation 
  4. Multiple Choice 
  5. File or attachment 
  6. Date or time
  7. OAuth Login
Ask Question To Users Using Bot Framework Composer 
 
In this article, you are going to learn more about Text, Number and Date/Time Input format and how bots can ask questions of the users. 
 

Composer Input Control Property – Bot Ask 

 
Ask question Input dialog has 3 category options - Bot Asks, User Input and other. 
  1. Prompt Property -Create your custom message for Bot to send as a message to the user .
  2. Max turn Count – Maximum number of re- prompt attempts to collect information from user
  3. Default Value - Expression to examine on each turn of the conversation as possible value to the property.
  4. Allow interruptions - A boolean expression that determines whether the parent should be allowed to interrupt the input.

    Ask Question To Users Using Bot Framework Composer

User Input 

 
User Input tab options have “ Property to Fill”. It’s a Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).
 
Example (user.name), user.name property can access anywhere you want to display or store. While displaying you need to use @{user.name} format.
 
Ask Question To Users Using Bot Framework Composer 
 

Bot Text Input Question 

 
At the Greeting conversation activity screen, you can click on the “+” button and select the Ask question options and click on Text input .
 
Step 1
 
Add “Bot Asks” prompt of text in the text box, which your Bot is required to ask as questions to the user and the type of value will allow only as text .
 
Step 2
 
If you want to save user input and display somewhere else or store into the database, you can select “user Input” section and add the variable property as - user.name.
 
Ask Question To Users Using Bot Framework Composer 
 

Bot Number Input Format

 
The Bot can ask users to enter any number value using number input. To prompt a user for a number click the + button in your screen, mouse over Ask a Question and Select the Number input.
  • In this following example the Bot is asking users to enter the no of years experience and provided max turn count as 1 and provided default value as 2.
  • Suppose users enter any text or any invalid character at one time, Bot will take the default value as 2.
  • In user inputs options Bot will save the value “exp” property, it will be helpful for retrieval somewhere else.

    Ask Question To Users Using Bot Framework Composer

Bot DateTime Input Format

 
Bot DateTime Input format controls what is returned as a timex. 
  • You can add the “Bot Ask” question to the Prompt text box 
  • Create Property for store the datetime value, here property as “user.date”.
  • After asking for a date, the bot returns a timex into “user.date” like below 
    1. [{  
    2.    "value""2020-02-01",  
    3.    "timex""2020-02-01"  
    4. }]  

  • Because it's a json array with one item, you can access the components like user.date[0].timex (or) user.date[0].value

    Ask Question To Users Using Bot Framework Composer

Confirmation Message 

 
We have asked 3 different question to the user, now let us show confirmation message to the user with whatever user responded to the bot. You can compose the message like below,
 
Hello @{user.name} , You have @{user.exp} years’ experience and please join our company on @{user.date[0].value}
 
Ask Question To Users Using Bot Framework Composer 

Test Bot Application 

 
Next, click on “Test in Emulator”. After that browser will ask you permission to open the bot emulator, once you confirm the message, Bot emulator will open and automatically navigate to your Bot service. You can start responding to the message to the bot.
 
Ask Question To Users Using Bot Framework Composer 
 

Summary 

 
You have successfully created and run the “Ask Question bot” using Bot framework composer. I hope you have enjoyed learning. If you have any questions/feedback/issues, please write them in the comment box.