Designing and implementing an Azure AI solution requires developers to be familiar with several key components that help to build robust dialogs, handle different activities, and manage triggers appropriately. Knowledge of these components is essential for those who are preparing for the AI-102 Designing and Implementing a Microsoft Azure AI Solution exam. This article will focus on three important aspects: activity handlers, dialogs or topics, and triggers.
1. Activity Handlers
Activity handlers in the Azure Bot Framework help to manage the interaction flow between the bot and the user. They function like event handlers in programming, responding to different activities that the bot receives from the user.
public class MyBot : ActivityHandler
{
protected override async Task OnMessageActivityAsync(ITurnContext
{
await turnContext.SendActivityAsync(MessageFactory.Text($"Echo: {turnContext.Activity.Text}"), cancellationToken);
}
}
In this C# example, the `MyBot` class extends `ActivityHandler`. When the bot receives a message (an activity) from the user, the `OnMessageActivityAsync` method is called and the bot sends back an echo of the user’s message.
2. Dialogs or Topics
In the context of Azure Bot Framework, a dialog or topic is an encapsulated conversation flow. There are several built-in dialog classes, such as the Waterfall dialog and the Component dialog, that developers can use to model their conversation.
A Waterfall dialog, for example, is a linear sequence of steps that the bot will walk through with the user.
Here’s an example of a Waterfall dialog:
WaterfallDialog waterfallDialog = new WaterfallDialog(
"waterfallDialog",
new WaterfallStep[]
{
async (stepContext, cancellationToken) =>
{
return await stepContext.PromptAsync(
"textPrompt",
new PromptOptions { Prompt = MessageFactory.Text("Hello! What's your name?") },
cancellationToken);
},
async (stepContext, cancellationToken) =>
{
string name = (string)stepContext.Result;
return await stepContext.PromptAsync(
"numberPrompt",
new PromptOptions { Prompt = MessageFactory.Text($"Nice to meet you, {name}! How old are you?") },
cancellationToken);
},
// More steps can be added here...
});
The Waterfall dialog flows from top to bottom, asking the user for their name and age sequentially in this example.
3. Triggers
Triggers are the conditions that cause a particular dialog to start. For example, a trigger can check for a particular intent that has been recognized in the user’s input through LUIS (Language Understanding Intelligent Service).
Here’s an example of a trigger where LUIS recognizes the “BookFlight” intent and starts the corresponding dialog.
onTurn(async (context, next) => {
const recognizerResult = await this.luisRecognizer.executeLuisQuery(context);
let topIntent;
topIntent = LuisRecognizer.topIntent(recognizerResult);
const intent = LuisRecognizer.topIntent(recognizerResult);
if (intent === 'BookFlight') {
return await dialogContext.beginDialog('flightBookingDialog');
}
await next();
});
In this way, Activity handlers, dialogs or topics, and triggers form the backbone of bot’s conversational flow management in Azure AI solutions.
This knowledge isn’t just important in passing the AI-102 exam, but is also very useful in day-to-day tasks when building conversational AI solutions on the Azure platform. For more in-depth study of these concepts, be sure to explore Microsoft’s official documentation and resources.
Practice Test
True/False: An activity handler is used to process incoming activities and is required for implementing bot logic.
- True
- False
Answer: True.
Explanation: An activity handler is a type of middleware that processes incoming activities. It’s essential for implementing bot logic in your application.
True/False: Dialogs are typically used in places where a typical conversation is expected.
- True
- False
Answer: True.
Explanation: Dialogs represent a conversational process, where a typical back-and-forth conversation is held between the bot and the user.
Multiple select: Which of the following are types of common activities that an activity handler may process?
- a) Message activities
- b) Conversation update activities
- c) Reaction activities
- d) Typing activities
Answer: a, b, c, d
Explanation: Activity handlers can process all of these types of activities. They are designed to process any type of activity that comes from the connector service.
Single select: Which of the following is a method tied to a specific type of activity that is tied to your activity handlers?
- a) Activity-specific methods
- b) Activity generic methods
- c) Activity specific functions
- d) Activity tied functions
Answer: a) Activity-specific methods
Explanation: Activity handlers include activity-specific methods tied to specific types of activities.
True/False: Triggers in Azure AI solutions are used to initiate actions based on certain events.
- True
- False
Answer: True.
Explanation: Triggers in Azure AI solutions are used to initiate actions when specific events occur such as receiving a message, a user joining a conversation, etc.
True/False: All dialogs are designed to be composable and can be called from other dialogs.
- True
- False
Answer: True.
Explanation: Dialogs are designed to be composable and can be reused across other dialogs, hence promoting reusability.
Multiple select: Which of the following are necessary to manage the dialog stack in a bot?
- a) Save the state
- b) Make HTTP calls
- c) PowerBI analysis
- d) Access storage
Answer: a, d
Explanation: Saving the state and accessing the storage are necessary to manage the dialog stack in a bot efficiently.
Single select: Which of the following is not a type of built-in dialog?
- a) Prompts
- b) Waterfall
- c) Component
- d) Networking
Answer: d) Networking
Explanation: Networking is not a type of built-in dialog in bot frameworks.
True/False: When a bot sends an activity, a respond-request is triggered.
- True
- False
Answer: True.
Explanation: When the bot sends an activity, it triggers an “on turn” request to process the response.
Multiple select: What roles do triggers typically perform?
- a) Initiating dialog
- b) Maintaining state
- c) Routing messages
- d) Saving conversation
Answer: a, b, c
Explanation: Triggers typically initiate dialog, maintain state, and route messages in the application.
True/False: In Azure AI, a dialog only executes when the conversation update activity comes from the user.
- True
- False
Answer: False.
Explanation: Dialog execution is not just limited to conversation update activities from the user. It could also be triggered by other activity types.
True/False: Activity handlers can only process message activities.
- True
- False
Answer: False.
Explanation: Activity handlers can process several types of activities, not just message activities. These include conversation update activities, reaction activities, and typing activities.
Single select: Which of the following is the method to process message reactions?
- a) OnMessageActivityAsync
- b) OnMessageReactionActivityAsync
- c) OnConversationUpdateActivityAsync
- d) OnTypingActivityAsync
Answer: b) OnMessageReactionActivityAsync
Explanation: The OnMessageReactionActivityAsync is the method to process message reactions.
True/False: Dialogs in Azure AI solutions can only be used for multi-turn conversation.
- True
- False
Answer: False.
Explanation: Dialogs in Azure AI can be used for both single turn and multi-turn conversations.
Single select: Who initiates the first activity in a conversation?
- a) The bot
- b) The user
- c) The system
- d) The developer
Answer: b) The user
Explanation: For most channels, the first activity in a conversation is an activity sent by the user.
Interview Questions
What is the purpose of activity handlers in Microsoft Azure AI Solution?
Activity handlers manage the different types of incoming activities. For example, when the user sends a message, an activity is generated which is then passed to the bot’s activity handlers.
What is a Dialog in the context of Microsoft Azure AI Solutions?
A Dialog is an object in Bot Framework that manages a conversation or a portion of a conversation. They can contain steps like asking questions, awaiting responses or calling other dialogs.
What role does a ‘trigger’ play in Microsoft Azure’s bot framework?
A ‘trigger’ is a set of conditions that, once met, starts the execution of specific actions or dialogs within a bot. Triggers can be based on messages, events, intents, or a set of criteria.
How can you implement an activity handler in a Microsoft Azure AI Solution?
Activity handlers can be implemented by creating a class that extends the ActivityHandler or TeamsActivityHandler base classes and implements the onTurn method.
What is the function of a ‘topic’ in Microsoft Azure AI Solution?
A ‘topic’ in Microsoft Azure’s Bot Framework Composer is a group of related dialogs tied to a specific user intent. It is used to guide conversations toward obtaining useful information.
What is a ‘Prompt’ in dialog context?
A ‘Prompt’ is a part of a dialog used to ask the user for input. It presents a question, awaits a response, and validates the response before proceeding.
How can a Dialog be implemented in the Azure Bot service framework?
A dialog can be implemented by creating an instance of the Dialog class or any set of classes that extend from the Dialog class. The dialog stack manages the state of the dialog.
Can you change the order of activity handlers in Microsoft Azure AI?
Yes, the order of activity handlers can be customized based on the type of incoming activity. The developer can define a waterfall of handlers to handle various activities.
What is a ‘Waterfall dialog’ in Microsoft Azure AI?
A waterfall dialog is a type of dialog that enforces a sequence of steps. At each step, it calls the next dialog in the list, effectively allowing the bot to walk through a particular conversation path.
How are triggers activated in Microsoft Azure AI?
Triggers are activated when certain conditions are met. These conditions could be a particular type of incoming activity, a dialogue step, a user’s response, or other system events.
What is the ‘BeginDialog’ function used for in Microsoft Azure AI?
‘BeginDialog’ function is used to start a new dialog and push it onto the dialog stack.
What are Adaptive Dialogs in Microsoft Azure AI?
Adaptive dialogs provide a way to declaratively define conversation flow, steps, and context switches to manage more complex, dynamic conversations for bots.
What is ‘Activity’ in the context of Azure bot framework?
An ‘Activity’ in Azure bot framework represents a communication between the bot and the user.
How can you implement a trigger action in bot framework composer?
Trigger actions can be implemented in bot framework composer by defining the type of trigger (message, event, etc.), the conditions for the trigger, and the dialogs or actions to execute.
What are the benefits of using the dialog stack in Microsoft Azure AI?
The dialog stack in Microsoft Azure AI helps manage the dialog flow. It provides an orderly manner to handle prompts and user responses. It also allows the interception of dialog steps for validation or re-prompting.