Section 2 Class Notes
Section 2 Class Notes
Home: Overview of your agent’s status, recent activity, and quick-start templates.
Topics: The heart of the logic. Here you define Custom Topics (user-defined) and
System Topics (pre-built logic like Greeting or Goodbye).
Plugins: Where you manage AI actions and connectors that allow the agent to "do"
things (e.g., querying a database).
Knowledge: The section for uploading documents or linking websites for Generative
Answers.
Analytics: A suite of dashboards to track performance (CSAT, Deflection, and
Resolution rates).
This is a visual, low-code interface where you drag and drop "Nodes."
[Link]
Always visible or easily togglable, this pane allows for real-time debugging. A critical feature
here is "Track between topics," which highlights the active node in the authoring canvas as you
chat with the bot, allowing you to see exactly where logic may be breaking.
1. Knowledge Tab: Instead of building 50 topics for 50 products, the developer navigates
to the Knowledge section and uploads the product PDF.
2. System Topics: They navigate to the Greeting system topic to customize the welcome
message to include "Welcome to the TrendSetters Holiday Guide!"
3. Test Pane: They use the Variable Watcher in the test pane to ensure that when a user
mentions a budget, the value is correctly captured in a {[Link]} variable.
4. Publishing: Within 4 hours, the developer uses the Channels menu to grab the code
snippet for the retail website's homepage.
1. Create a New Topic: Navigate to the Topics tab on the left. Click + New Topic >
Create from description.
2. Define Trigger: In the Trigger node, enter "Check Order Status."
3. Add a Question Node: Click the + icon below the trigger. Select Ask a question.
o Question text: "What is your 5-digit Order ID?"
o Identify: Select Number.
[Link]
o Save response as: Click the variable name and rename it to OrderNumber.
4. Open the Test Pane: Ensure the Test Copilot pane is open (bottom left).
5. Enable Tracking: Click the Track between topics icon (a small refresh/map icon) at the
top of the test pane.
6. Simulate: Type "Check Order Status" in the test chat.
o Observe the Authoring Canvas: The node you are currently on will be highlighted
in purple.
o Enter "12345": Watch the Variables tab in the test pane to see OrderNumber
update to 12345.
Answer: B Explanation: The Test Copilot pane is the only area providing real-time debugging.
The Variable Watcher (part of the test experience) allows developers to see how data is stored
and manipulated during a live conversation trace.
Q2. Where in the Copilot Studio interface would you go to modify the "Fallback" logic (the
message shown when the bot doesn't understand the user)? A) Home > Templates B) Topics
> System Tab C) Plugins > Custom Actions D) Channels > Mobile App
Q3. A developer wants to connect their agent to a SharePoint folder to enable Generative
Answers. Which primary navigation section should they select? A) Topics B) Analytics C)
Knowledge D) Publish
Answer: C Explanation: The Knowledge section is the dedicated area for managing data
sources (SharePoint, Web URLs, Uploaded Files) that power the Generative AI capabilities of
the agent.
[Link]
Chapter: Designing High-Retention Topics
and Trigger Phrases
1. Chapter Title & Objective
Chapter Name: Designing High-Retention Topics and Trigger Phrases Objective: In this
chapter, you will master the art of conversation triggering and topic architecture. You will learn
how to craft robust trigger phrases that minimize "no-match" errors and design topic flows that
keep users engaged, ensuring high retention and successful task completion within Copilot
Studio.
A Trigger is the entry point to a conversation. In Copilot Studio, triggers are powered by Natural
Language Understanding (NLU). Unlike old-school keyword bots, Copilot Studio uses intent
recognition to map a user's utterance to a specific topic.
Trigger Phrases: These are the example sentences you provide to train the agent.
Precision vs. Recall: If phrases are too similar across different topics, the agent will
suffer from Topic Overlap, leading to the "Did you mean...?" disambiguation prompt.
[Link]
C. Designing for High Retention
Retention in an AI Agent context means the user completes their goal without abandoning the
chat. This is achieved through:
Progressive Disclosure: Don't overwhelm the user with a wall of text. Break information
into bite-sized nodes.
Variable Persistence: Use variables to remember user data (like their name or order ID)
throughout the session so they don't have to repeat themselves.
Slot Filling: If a user says "I want to check my order #12345," the agent should be smart
enough to extract the ID immediately and skip the question "What is your order ID?".
The Problem: Analytics showed that 40% of users were being asked "Did you mean Repair or
Replacement?" because the trigger phrases were too similar (e.g., "My laptop is broken" was
assigned to both). This friction led to a 15% drop-off rate (Low Retention).
The Solution: The team consolidated both into a single "Hardware Support" topic. Within the
topic, they used a "Multiple Choice" question node to ask the user if they were interested in
repair or replacement.
[Link]
3. Add Trigger Phrases:
o "Where is the nearest shop?"
o "Find a store in London"
o "Are there any branches in New York?"
1. The NLU automatically identifies "London" and "New York" if you use Entities.
2. Add a Question Node: "Which city are you looking for?"
3. Set Identify to City (Prebuilt Entity).
4. Set the Selection Skip behavior: In the node properties, ensure "Ask every time" is
unchecked.
o Result: If the user says "Find a store in London," the bot skips the question and
moves straight to the search logic.
If we were to represent this logic in a technical backend, it would look like this:
Python
def store_locator_topic(user_input):
# Simulated NLU Entity Extraction
city = extract_entity(user_input, "City")
if not city:
city = input("Which city are you looking for?")
Answer: B Explanation: The "Did you mean?" prompt (Disambiguation) occurs when the NLU
engine finds a high confidence score for multiple topics simultaneously. This usually happens
because the trigger phrases are too similar across those topics.
[Link]
Q2. Which of the following is a key strategy for increasing "Retention" within a Copilot
Studio conversation? A) Forcing the user to restart the conversation if they make a typo. B)
Using "Slot Filling" to avoid asking for information the user has already provided. C) Using only
one trigger phrase per topic to keep logic simple. D) Disabling the "Back" button in the chat
interface.
Answer: B Explanation: Slot filling increases retention by making the conversation feel natural
and efficient. If an agent asks for information the user already provided in the initial trigger, it
creates frustration and leads to abandonment.
Q3. When designing trigger phrases for a "Flight Status" topic, which set of phrases
follows the recommended best practices? A) "Flight", "Status", "Plane", "Check" B) "I want to
check my flight", "What is the status of flight UA123?", "Is my plane on time?" C) Create 100
identical phrases to ensure the bot learns. D) Use only technical flight codes like "FL-STAT-01".
Answer: B Explanation: Option B provides a mix of natural language, varying lengths, and
specific intents. Option A is just a list of keywords (bad for NLU), and Option C leads to
"overfitting" which can break other topics.
[Link]
Chapter: The Power of Global vs. Local
Variables
1. Chapter Title & Objective
Chapter Name: The Power of Global vs. Local Variables Objective: In this chapter, you will
learn the critical differences between Variable Scopes in Microsoft Copilot Studio. You will
master how to store, retrieve, and manage data using Topic (Local) and Global (Bot) variables
to create personalized, context-aware AI agents that can carry information across complex
conversational boundaries.
Topic Variables are ephemeral. They are designed to live and die within a single conversation
thread or "Topic."
Persistence: They are cleared as soon as the conversation moves to a different topic
(unless passed as a parameter).
Best Use Case: Temporary data like a "Yes/No" confirmation for a specific question or a
temporary calculation.
[Link]
Benefit: Keeps the bot’s memory clean and prevents "Variable Pollution" where old data
interferes with new logic.
Global Variables (prefixed with Global.) are the persistent memory of the agent.
Persistence: Once set, the value remains accessible across all topics for the duration of
the user's session.
Best Use Case: User profile data (e.g., [Link]), authentication tokens, or a
unique [Link] that might be referenced in multiple support scenarios.
Persistence across Sessions: Some global variables can be marked for "External Source"
or "Start of conversation" to pre-populate data from the hosting environment (like a
logged-in SharePoint user).
C. System Variables
The Challenge: When a user identifies themselves in the "Loan Inquiry" topic, the bank wants
that identity to remain known if the user later switches to "Account Settings." If they use Local
variables, the user is forced to re-identify, leading to a high "Interaction Friction" score.
[Link]
Result: A 35% improvement in user satisfaction (CSAT) due to the reduced need for repetitive
data entry.
[Link]
Answer: B Explanation: Topic variables only exist within the specific topic where they were
created. Once the conversation moves to Topic B, all Topic-level variables from Topic A are
flushed from memory. Global variables must be used for cross-topic persistence.
Q2. Which of the following is a potential risk of using Global Variables for every piece of
data collected? A) The bot will run out of storage space in the cloud. B) The LLM will become
slower at generating text. C) "Variable Pollution," where old data from a previous part of the
chat might lead to incorrect logic in a new topic. D) Global variables cannot be used in Power
Automate flows.
Answer: C Explanation: If every variable is global, the bot's memory becomes cluttered. If a
user starts a second task within the same session, the bot might incorrectly assume the "Old"
global value still applies to the "New" task, causing logic errors.
Q3. You want to pass the user's name from a website's login cookie directly into the Copilot
without the user typing it. What feature should you configure? A) A local variable with a
default value. B) A Global Variable with "Always fill this variable" and "External sources can
set values" (URL parameters/Context) enabled. C) A System Fallback topic. D) A Power
Automate flow that scrapes the browser's history.
Answer: B Explanation: Global variables can be configured to accept inputs from external
sources (like JavaScript on a webpage or a Teams context). This allows the agent to be "Context
Aware" before the first message is even sent.
[Link]
In the context of Microsoft Copilot Studio, Entities are the specialized tools used by the Natural
Language Understanding (NLU) engine to identify and categorize specific types of information
within a user's sentence.
A. What is an Entity?
If a Variable is a bucket that holds information, an Entity is the filter that ensures only the right
kind of information gets into that bucket. For example, if a user says, "I want to book a flight for
3 people on Friday," the agent uses entities to extract:
3 (Number Entity)
Friday (Date and Time Entity)
B. Prebuilt Entities
Microsoft provides a library of pre-trained entities that recognize common concepts out of the
box. Using these saves development time and increases accuracy.
Age, City, Color, Date/Time, Email, Money, Number, Person Name, and Phone
Number.
Advantage: These handle variations automatically (e.g., the Date entity recognizes
"tomorrow," "Jan 1st," and "next Monday").
C. Custom Entities
When your business uses specific terminology (like SKU numbers or service tiers), you must
build Custom Entities.
1. Closed List Entities: Use these when there is a set list of options. You can provide
Synonyms to help the bot understand that "Gold Tier," "Premium," and "Level 1" all
refer to the same value.
2. Regular Expression (Regex) Entities: Use these for highly structured data that follows a
pattern, such as Employee IDs (e.g., EMP-12345) or Tracking Numbers.
[Link]
The Problem: Initially, Eco-Stream used a generic "User's Entire Response" variable. However,
users often typed extra words (e.g., "My number is SN-9042, I think"). This caused the backend
database query to fail because it was searching for the whole sentence instead of just the ID.
The Solution: The developer implemented a Regex Custom Entity in Copilot Studio using the
pattern ^[A-Z]{2}-\d{4}$.
The Result: The agent now ignores the "fluff" in the sentence and extracts only the SN-9042
string. This increased successful database lookups from 45% to 98%, significantly reducing the
need for human intervention.
When you use a Regex entity, Copilot Studio essentially runs a match function similar to the
following:
Python
import re
def extract_meter_id(user_input):
# The Regex pattern defined in the Studio
pattern = r"[A-Za-z]{2}-\d{4}"
[Link]
match = [Link](pattern, user_input)
if match:
extracted_id = [Link](0)
return f"Successfully extracted: {extracted_id}"
else:
return "Extraction failed. Pattern not found."
# Example usage
print(extract_meter_id("It's on the sticker, it says SN-9042"))
# Output: Successfully extracted: SN-9042
Answer: C Explanation: When using a Closed List entity with synonyms, Copilot Studio
performs "Normalization." It maps the detected synonym (crimson) back to the "Reference
Value" (Red), ensuring that backend systems receive consistent data regardless of how the user
phrased it.
Q2. Which Entity type is most appropriate for capturing a UK Postal Code (e.g., SW1A
1AA)? A) Prebuilt City Entity B) Closed List Entity C) Regular Expression (Regex) Entity D)
Boolean Entity
Answer: C Explanation: Postal codes follow a specific alphanumeric pattern but have too many
variations to list in a Closed List. A Regex entity is designed specifically to identify these types
of structured patterns.
Q3. What is the primary benefit of using the "Smart Matching" feature in a Closed List
Entity? A) It allows the bot to search the internet for missing values. B) It allows the NLU to
recognize values even if the user makes minor spelling mistakes or uses morphological
variations. C) It automatically translates the list into 40 different languages. D) It encrypts the
data so it can be stored in a Global Variable.
Answer: B Explanation: Smart Matching leverages the power of the NLU to bridge the gap
between a user's "fuzzy" input (e.g., "lapotop") and the intended list value ("Laptop"). This
significantly reduces the need for "Did you mean?" prompts.
[Link]
Chapter: Logic Gates: Using Conditions and
Loops Effectively
1. Chapter Title & Objective
[Link]
Chapter Name: Logic Gates: Using Conditions and Loops Effectively Objective: In this
chapter, you will learn how to transition from linear conversations to dynamic, intelligent
dialogues. You will master the use of Condition Nodes to branch logic based on user data and
understand the implementation of Loops and Lists to handle repetitive tasks and multiple data
points within Microsoft Copilot Studio.
A Condition node allows the agent to evaluate a statement as True or False. You can build
branches based on:
While Copilot Studio is primarily a low-code environment, handling "Lists" of items (like a list
of recent orders or available appointment slots) requires structured iteration.
Loops are frequently paired with Adaptive Cards. Instead of sending five separate messages,
you can loop through a list to build a single, formatted response that presents all options to the
user simultaneously.
[Link]
Scenario: "Velocity Logistics" uses an AI Agent to help drivers report vehicle issues. The agent
needs to determine the urgency of a repair.
The Result: By using logical branching, the company reduced "Critical Failure" response times
by 80% because the agent no longer treated every repair request with the same priority.
[Link]
Python
def calculate_discount(total_spend):
# This reflects the branching logic inside a Condition Node
if total_spend >= 1000:
discount = "20% (Platinum)"
elif 500 <= total_spend < 1000:
discount = "10% (Gold)"
else:
discount = "0% (Standard)"
# Example Check
print(calculate_discount(1200)) # Output: Platinum
Answer: B Explanation: To evaluate two separate criteria simultaneously, you use a Condition
node with an "And" operator. This ensures the branch is only taken if both requirements are met.
Q2. When an agent receives a "List" of items from a Power Automate flow, which node is
used to process each item in that list individually? A) Condition Node B) Variable Set Node
C) For Each Node D) Redirect Node
Answer: C Explanation: The "For Each" node is the specific looping mechanism in Copilot
Studio designed to iterate through a collection (List) of data.
Q3. What happens to the conversation if a user's input does not match any of the defined
branches in a Condition node? A) The agent crashes and restarts. B) The agent follows the "All
other conditions" (Else) path. C) The agent automatically redirects to the Home topic. D) The
agent asks the user to repeat the question 3 times.
Answer: B Explanation: Every Condition node includes a default "All other conditions"
branch. If no specific logic matches the user's data, the agent follows this path to ensure the
conversation doesn't hit a dead end.
[Link]
Chapter: Handling Conversation
Interruptions and Topic Switching
1. Chapter Title & Objective
Chapter Name: Handling Conversation Interruptions and Topic Switching Objective: In this
chapter, you will master the "Contextual Intelligence" of Copilot Studio. You will learn how to
configure agents that can gracefully handle user interruptions, understand the mechanics of
Topic Switching, and manage Global Interruptions to ensure a natural, human-like
conversational flow without losing the user's original intent.
A. What is an Interruption?
An interruption occurs when a user provides input that does not relate to the current question but
matches a different Trigger Phrase in another topic.
The Switch: If a user is in a "Book Flight" topic and suddenly asks "What's the weather
in London?", the bot identifies the "Weather" intent.
Contextual Switching: The bot pauses the current topic, moves to the new topic, and—if
configured correctly—returns to the original topic.
C. Configuration Options
You can control how the agent reacts to interruptions at two levels:
1. Topic Level: You can enable or disable "Allow status transitions" to prevent users from
leaving critical flows (like a payment process).
2. Global Level: Using System Topics, you can define how the bot asks for confirmation
before switching (e.g., "I see you want to talk about X, should we leave our current
conversation about Y?").
[Link]
D. The "Backfill" and Variables
When a switch occurs, Global Variables persist, but Topic Variables are stored in the stack. If
the user returns to the original topic, the bot remembers where it left off and which questions
were already answered.
Result: A 40% reduction in "Abandonment Rate" during long-form data collection topics.
1. On the Authoring Canvas, click on the Topic Settings (the "..." or Details icon in the top
right).
2. Look for Interruption Policy.
[Link]
3. Toggle the setting to "Off" if you want to force the user to finish the current flow before
the bot will recognize other intents.
While the Studio handles this visually, the underlying logic follows a "stack" pattern:
Python
conversation_stack = ["Topic_Warranty_Claim"]
def handle_user_input(input_text):
current_topic = conversation_stack[-1]
Q2. You want to ensure that once a user starts the "Submit Payment" topic, they cannot
switch to any other topic until the transaction is complete. How should you configure this?
A) Delete all other topics from the bot. B) Set the Interruption Policy for the "Submit Payment"
topic to "Off" or "Disabled". C) Use a Global Variable to lock the keyboard. D) Set the "Submit
Payment" trigger phrases to "None".
Answer: B Explanation: By disabling interruptions at the topic level, you ensure the agent
ignores other intents until the current logic branch is finished. This is standard practice for secure
or transactional flows.
[Link]
Q3. What happens to the values stored in Topic Variables when a user switches to a
different topic and then returns? A) They are permanently deleted. B) They are reset to their
default values. C) They are maintained in the stack and are available when the topic resumes. D)
They are automatically converted into Global Variables.
Answer: C Explanation: Copilot Studio maintains the state of the conversation. When a topic is
interrupted and later resumed, the values collected during that specific session of the topic are
preserved, preventing the user from having to answer the same questions twice.
[Link]
Chapter: Advanced Slot Filling Techniques
1. Chapter Title & Objective
Chapter Name: Advanced Slot Filling Techniques Objective: In this chapter, you will learn
how to optimize conversational efficiency using advanced slot filling. You will master the
configuration of "Proactive Extraction," learn how to manage multi-slot inputs in a single
utterance, and understand how to use entity mapping to skip redundant questions, resulting in a
more fluid, human-like user experience.
Slot filling is the process where the AI agent identifies and extracts specific pieces of
information (entities) from a user’s initial statement to fill required variables. Instead of the agent
asking five separate questions, it "fills the slots" it already has the answers for.
Reactive Prompting: The bot asks, "What is your city?" -> User answers "Seattle." ->
Bot asks, "What is your travel date?"
Proactive Extraction: User says, "I want to go to Seattle this Friday." The bot extracts
both City and Date immediately and skips those questions.
In Copilot Studio, every Question Node has a property for Question Behavior. To master
advanced slot filling, you must configure the "Selection Skip" logic.
Ask Every Time: The bot will ask the question even if it already knows the answer.
[Link]
Skip if Value Exists: (The Default/Advanced setting) The bot checks if the variable is
already populated via a trigger phrase or a global variable. If it is, the bot moves to the
next node silently.
D. Multi-Entity Disambiguation
Advanced slot filling also involves handling complex sentences where a user might provide two
similar entities (e.g., "Move money from Savings to Checking"). You will learn to map these to
specific slots like SourceAccount and DestinationAccount.
The Problem: The initial bot design was too "chatty." Even if a user said, "I need a refill for
Amoxicillin at the Downtown branch," the bot would still ask, "Which medication do you need?"
This caused high user frustration and a 20% abandonment rate.
The Result: Experienced users could complete a refill in a single sentence ("Refill my
Amoxicillin at Downtown"). The "Turn-Count" (number of messages sent) dropped from 8 to 2,
and user satisfaction scores increased by 45%.
[Link]
1. In Copilot Studio, ensure you have a Custom Entity for CarModel (e.g., SUV, Sedan,
Coupe).
2. Create a new topic: "Book Test Drive".
3. Add Trigger Phrases:
o "I want to test drive a Sedan in London."
o "Book a test drive."
1. Click the Question Node 1. In the properties pane, click Question behavior.
2. Ensure Skip question is enabled (set to "If variable has a value").
3. Repeat for Question Node 2.
If we were to represent this advanced extraction in code, it would look like this:
Python
def test_drive_booking(user_utterance):
# Slots to be filled
slots = {"SelectedModel": None, "TargetCity": None}
if not slots["TargetCity"]:
slots["TargetCity"] = input("In which city would you like to drive?")
[Link]
5. Multiple-Choice Questions (MCQs)
Q1. A user says "Book a room for 2 people in Paris." If the agent is configured with proper
slot filling, what happens to the Question Node that asks "How many guests?" A) The node
is deleted from the topic. B) The node is executed, but the user's previous answer is ignored. C)
The node is skipped because the 'Number' entity was proactively extracted. D) The agent asks for
confirmation: "Did you mean 2 people?"
Answer: C Explanation: When slot filling is active and the "Skip if value exists" behavior is
set, the agent identifies the '2' as a Number entity and 'Paris' as a City entity. It populates the
variables and bypasses those specific Question Nodes.
Q2. Which property must be checked to ensure an agent doesn't ask a question for a
variable that has already been provided via a URL parameter or a previous topic? A) Ask
every time B) Skip if value exists C) Always prompt D) Secure variable
Answer: B Explanation: "Skip if value exists" is the engine behind slot filling. It tells the agent
to check the current memory (Global or Topic variables) before interrupting the user with a
question.
Q3. What is the main benefit of Slot Filling for Business Value ROI? A) It reduces the cost
of Azure hosting. B) It reduces "Turn-Count," making the bot more efficient and increasing task
completion rates. C) It allows the bot to speak more languages. D) It prevents the bot from
needing an internet connection.
Answer: B Explanation: Efficiency is a key metric in AI ROI. By reducing the number of steps
a user must take to reach their goal, you improve the user experience and reduce the likelihood of
the user abandoning the conversation out of frustration.
[Link]
Chapter: Designing the Fallback Strategy:
When the Agent is Stuck
1. Chapter Title & Objective
Chapter Name: Designing the Fallback Strategy: When the Agent is Stuck Objective: In this
chapter, you will learn how to manage conversational failures gracefully. You will master the
configuration of the System Fallback Topic, understand how to implement "Escalation" logic to
human agents, and learn best practices for using Generative AI to minimize dead-ends, ensuring
your agent remains helpful even when it doesn't have a direct answer.
[Link]
A. The System Fallback Topic
The Fallback is a built-in system topic that triggers when the Natural Language Understanding
(NLU) engine is "stuck."
The Intent Threshold: Every input is assigned a confidence score. If no topic score
exceeds the threshold (usually 0.1 - 0.2), the Fallback is activated.
Default Behavior: By default, the bot may say, "I'm sorry, I didn't understand that. Can
you rephrase?"
Customization: Pro developers customize this topic to offer alternative paths, such as
searching a knowledge base or offering a menu of popular topics.
B. Escalation Path
When an agent fails repeatedly (usually after 2 or 3 attempts), the blueprint should dictate an
Escalation.
Handoff to Live Agent: Transfers the transcript and context to a human via Dynamics
365 Omnichannel or a third-party service.
Asynchronous Handoff: Creating a ticket in a system like Jira or ServiceNow via Power
Automate if a live agent is unavailable.
Before hitting a hard fallback, you can use Generative Answers. This allows the agent to search
unstructured data (SharePoint, Websites) to find an answer that wasn't manually programmed.
The Failure: Originally, the agent used a standard fallback: "I don't understand. Please try
again." The user tried three times and eventually closed the chat, resulting in a lost lead.
[Link]
3. Level 3 (Human Handoff): If the user still clicked "This didn't help," the bot triggered a
Power Automate flow to create an urgent callback task for the sales team.
Result: Lead abandonment dropped by 55%, and "Unresolved Queries" decreased as the
Generative AI found the exotic bird policy in a buried PDF.
1. On the Fallback authoring canvas, delete the default "I'm sorry" message.
2. Click the + icon and select Create generative answers.
3. In the Input field, use the variable [Link].
4. In the Data Sources, ensure your company website or SharePoint is linked.
Python
def fallback_logic(user_input, retry_count):
if retry_count < 2:
# Attempt Generative Search
answer = search_knowledge_base(user_input)
if answer:
return answer
else:
[Link]
return "I couldn't find a direct match. Can you rephrase?"
else:
# Escalate to human
return trigger_human_handoff(user_input)
Answer: B Explanation: [Link] is the pre-built variable that stores the exact
text the user typed which failed to trigger a topic. It is essential for passing context to Generative
Answers or a human agent.
Q2. When designing a fallback strategy, what is the primary purpose of "Escalation"? A)
To restart the bot's server. B) To increase the price of the subscription. C) To transition the user
to a human agent or a ticketing system when the bot cannot resolve the issue. D) To delete the
user's conversation history for privacy.
Answer: C Explanation: Escalation ensures that the user's journey doesn't end in frustration. It
moves the "stuck" conversation to a human resource, maintaining the business value of the
interaction.
Q3. If an agent is constantly triggering the Fallback topic for common phrases like "Check
my status," what is the most likely technical fix? A) Increase the number of Fallback topics.
B) Add "Check my status" as a trigger phrase to the relevant Custom Topic. C) Disable the
Fallback topic entirely. D) Change the bot's name.
Answer: B Explanation: If a specific phrase is hitting the fallback, it means the NLU does not
recognize it as a trigger. Adding it (or variations of it) to a manual topic improves the agent's
"Recall" and prevents unnecessary fallbacks.
[Link]
Chapter: Building Multilingual Agents for
Global Markets
1. Chapter Title & Objective
Chapter Name: Building Multilingual Agents for Global Markets Objective: In this chapter,
you will learn how to design, configure, and manage AI agents that support multiple languages
within a single interface. You will master the selection of primary and secondary languages,
[Link]
understand the mechanics of automatic language detection, and learn how to provide localized
content to ensure your agent resonates with a global audience.
When you create a copilot, you define a Primary Language. This sets the baseline for the NLU
(Natural Language Understanding) model. To support global markets, you add Secondary
Languages.
The Model: Copilot Studio uses a multilingual NLU model that allows the agent to
understand intents across different languages while maintaining the same logic flow.
Localization: You must provide localized versions of trigger phrases, messages, and
question prompts for each secondary language added.
Copilot Studio can automatically detect the language a user is typing in.
The Switch: If a user begins a conversation in French, the agent can switch its responses
to the French localized strings defined in the "Localization" table.
Manual Override: You can use system variables to force a specific language if the user's
preference is already known (e.g., from a website setting).
C. Translation Methods
1. Manual Localization: Exporting the localization file (JSON or ResX), translating it via
professional services, and re-importing it. This ensures the highest "Warm Storytelling"
quality.
2. Generative Answers Translation: When using Generative AI, the agent can often
translate knowledge base content on the fly, though this is less controlled than manual
localization for core topics.
[Link]
The localization file contains "Keys" (the original English string) and "Values" (the translated
string). At runtime, the agent looks up the value based on the current [Link] setting.
The Solution:
1. Consolidation: They created one "Master Agent" with English as the Primary language
and added French and German as Secondary languages.
2. Logic Sharing: The complex "Refund Policy" logic, which involves multiple Power
Automate calls to banking APIs, was built once.
3. Localization: They exported the localization spreadsheet. While the logic remained the
same, the user saw "How can I help?" in London, "Comment puis-je vous aider ?" in
Paris, and "Wie kann ich Ihnen helfen?" in Berlin.
The Result: Maintenance time was reduced by 60% because API updates only needed to be
performed in one topic, while the agent remained natively accessible to all three markets.
[Link]
5. Save the file and click Upload localization data in the Studio.
If you were handling this via an API or custom code, the logic follows a dictionary lookup:
Python
# Conceptual Localization Dictionary
translations = {
"es": {"greet": "¡Hola!", "help": "¿Cómo puedo ayudar?"},
"fr": {"greet": "Bonjour !", "help": "Comment puis-je vous aider ?"},
"en": {"greet": "Hello!", "help": "How can I help?"}
}
def get_localized_response(user_input):
# Detect language (simplified)
lang = detect_language(user_input) # e.g., returns 'es'
Answer: B Explanation: The primary benefit of the multilingual feature in Copilot Studio is
"Logic Reuse." You build the complex flows (variables, conditions, actions) once, and only
translate the user-facing text.
Q2. Which file format is commonly used when exporting/importing localization data in
Copilot Studio? A) .EXE B) .MP4 C) .JSON or .ResX D) .PDF
[Link]
Answer: C Explanation: Localization data is structured as key-value pairs. JSON and ResX are
standard developer formats for storing strings that allow for easy editing by translation teams or
AI translation tools.
Q3. If a user starts a conversation in English but then switches to Italian, what is the best
way for the agent to adapt? A) The agent will crash and needs a restart. B) The agent relies on
Automatic Language Detection to identify the shift and switch to the Italian localization strings.
C) The agent will continue in English but use a "Translator" plugin for every word. D) The user
must manually select "Italian" from a settings menu.
Answer: B Explanation: Copilot Studio features built-in language detection. When the NLU
identifies a high-confidence language switch, it seamlessly begins using the localized values for
that language, provided they have been uploaded by the author.
Before touching the canvas, a pro builder "sketches" the conversation. This involves identifying:
The Happy Path: The shortest route from the user's question to a successful resolution.
The Edge Cases: Where the user might provide invalid data or change the subject.
The Integration Points: Where the agent needs to stop talking and start "doing" (calling
an API or Power Automate).
Microsoft Copilot Studio allows you to prototype using natural language. Instead of manually
dragging nodes, you describe the topic.
How it works: You provide a prompt like, "Create a topic that asks for a user's loyalty
ID, checks the status in a database, and offers a discount if they are a Gold member."
The Output: The Studio generates a functional "sketch" with trigger phrases, question
nodes, and condition branches automatically.
[Link]
4. Harden: Replace placeholder text with brand-aligned "Warm Storytelling" language.
1. The Sketch: The team identified that the user needs to provide a "Speaker Name" to get
a "Room Number."
2. The AI Draft: They used the "Create from Description" tool with the prompt: "Build a
flow that asks for a speaker's name, searches a SharePoint list, and tells the user which
room the speaker is in."
3. The Refinement: The generated prototype worked but was too robotic. The trainer
refined the flow by adding a Generative Answers node as a backup in case the speaker's
name was misspelled.
The Result: A functional agent was prototyped and deployed to the event website in under 3
hours, handling 1,500 queries on day one with a 92% accuracy rate.
"Ask the user for their Order ID. If the order starts with 'RE', tell them it's a retail
order and cannot be canceled here. Otherwise, ask for a reason and send a
confirmation message."
5. Click Create.
[Link]
Phase 2: Refining the AI Sketch
1. Observe the Canvas: Notice that the AI created a Condition Node to check for the 'RE'
prefix.
2. Fix Variables: Check the OrderID variable. If the AI identified it as a 'Number', but your
IDs are 'RE-123', change the Identity to String.
3. Add Logic: Add a Message Node at the end to provide a "Ticket Number" for the
cancellation.
In the background, the prototyping engine maps your description to a JSON-based flow
structure:
JSON
{
"Trigger": ["cancel my order", "stop shipment"],
"Nodes": [
{ "Type": "Question", "Variable": "OrderID", "Entity": "String" },
{ "Type": "Condition", "Expression": "StartsWith([Link], 'RE')",
"Branch": "Retail_Flow" },
{ "Type": "Message", "Text": "Your cancellation is being processed." }
]
}
Answer: B Explanation: The "Create from Description" tool is a Generative AI feature. The
more specific you are about the conversational requirements (e.g., "If the user is a guest, redirect
to login"), the more accurate the initial "sketch" will be.
Q2. You have used AI to prototype a topic. During testing, you notice the agent incorrectly
accepts "Twelve" as a response to a question intended only for numeric digits. What
should you refine in the prototype? A) The Trigger Phrases. B) The Entity type assigned to the
variable in the Question Node. C) The Fallback Topic. D) The Bot's display name.
[Link]
Answer: B Explanation: If the agent is accepting the wrong format of data, the issue lies with
the Entity (the filter). Changing the entity from "String" or "Text" to "Number" will force the
agent to validate that the input is a digit.
Q3. What is the primary benefit of the "Sketch-to-Flow" prototyping approach for a
Project Manager? A) It allows them to write the final code in Python immediately. B) It allows
for rapid stakeholder feedback on the "Happy Path" before complex backend integrations are
built. C) It automatically publishes the bot to the Apple App Store. D) It eliminates the need for
any testing or analytics.
[Link]