A bot communicates with a user via conversations. To manage conversational flow we use dialogs.
According to Microsoft’s Azure BOT Builder SDK for Node.js , Dialogs can contain waterfall steps, and prompts.
They will be able to switch between dialogs according to the requirements during the conversation. To build a meaning full conversational bot we have to use dialogs smartly.
Here is a quick example,
// Create your bot with a function to receive messages from the user var bot = new builder.UniversalBot(connector); bot.set('storage', tableStorage); bot.dialog('/', [ function (session) { builder.Prompts.text(session, 'Hi! What is your name?'); }, function (session, results) { session.endDialog(`Hello ${results.response}!`); } ]);
It would produce the following coversation in result,
Some of things you should know before using dialogs,
- To start a new dialog (and push it onto the stack), use
session.beginDialog()
. - To end a dialog (and remove it from the stack, returning control to the calling dialog), use either
session.endDialog()
orsession.endDialogWithResult()
. - A prompt is used whenever a bot needs input from the user like builder.Prompts.text(session, ‘Hi! What is your name?’);
Waterfall model – Using Prompts to add features in the BOT
Adding choices as Buttons
bot.dialog('/', [ function (session) { session.send("Welcome to the Pizza Place."); builder.Prompts.choice(session, "What would you like to order today?", "Margherita|Cheese Pizza|Chicken Pizza", { listStyle: builder.ListStyle.button }); }, function (session, results) { session.dialogData.pizzaOrder= results.response; builder.Prompts.choice(session, "Which size do you prefer?", "Large|Medium|Small", { listStyle: builder.ListStyle.button }); }, function (session, results) { session.dialogData.pizzaSize = results.response; builder.Prompts.text(session, "Who's name will this order be under?"); }, function (session, results) { session.dialogData.customerName = results.response; session.send(`Order confirmed. Order details: Pizza: ${session.dialogData.pizzaOrder} Pizza size: ${session.dialogData.pizzaSize} Customer name: ${session.dialogData.customerName}`); session.endDialog(); } ]);
Choices as buttons would look like below, click them to choose:
Other Prompt Types:
Prompt type | Description |
---|---|
Prompts.text | Asks the user to enter a string of text. |
Prompts.confirm | Asks the user to confirm an action. |
Prompts.number | Asks the user to enter a number. |
Prompts.time | Asks the user for a time or date/time. |
Prompts.choice | Asks the user to choose from a list of options. |
Prompts.attachment | Asks the user to upload a picture or video. |
For more details, visit the official docs here.
One thought on “Using Dialogs and Prompts to build a conversational BOT on Azure”