Overview of Bot Framework Composer
Note
This article applies to classic chatbots only. To extend agents created in Copilot Studio, you don't need to use Bot Framework Composer. All features described in this article are available for agents, directly in Copilot Studio.
Enhance your copilot by developing custom topics with Bot Framework Composer and then adding them to your Copilot Studio copilot.
Composer is integrated into Copilot Studio to allow developers and business users to build copilots together. Composer lets you extend your copilot with Bot Framework functionality, including:
- Adaptive dialogs
- Language Generation (LG)
- Regular expressions (RegEx)
- Adaptive Cards
Using Composer with Copilot Studio lets you access conversational memory and context, including the variables defined in Copilot Studio. This memory and context lets you create topics to handle interruptions, cancellations, and context switching. You can also add Adaptive Cards to display interactive elements like images and videos, forms, and more in the copilot.
There are various prebuilt functions and expressions in Composer for you to use, and the ability to define multiple variations of a phrase for the copilot to randomly select at runtime.
Custom topics added with Composer are deployed, hosted, and executed together with the rest of Copilot Studio copilot content, and don't require any more Azure hosting.
Important
Composer integration isn't available to users who only have the Teams Microsoft Copilot Studio license. You must have a trial or full Microsoft Copilot Studio license.
Prerequisites
Understand key Composer terms
Composer uses a different set of terms to describe similar concepts used in Copilot Studio. Here are some key terms to understand:
dialog: Dialogs are the basic building block in Composer and serve as containers for triggers. Each dialog represents a portion of the bot's functionality that contains instructions for what the bot does and how it reacts to user input. To learn more about dialogs, see Dialogs as conversational building blocks in Composer.
main dialog: A bot's main dialog is the first dialog that appears in the bot explorer and is created when you import your Copilot Studio copilot into Composer. The main dialog should never be deleted, as it corresponds to your Copilot Studio copilot.
trigger: Triggers are the main component of a dialog and let you catch and respond to events. Each trigger has a condition and a collection of actions to execute when the condition is met. You can think of triggers as the equivalent of topics in Copilot Studio. To learn more about triggers, see Triggers.
action: Actions are the main components of a trigger that enable you to send a response, create and assign values to properties, manipulate the conversational flow, manage dialogs, and many other activities. You can think of actions as the equivalent of nodes in Copilot Studio.
Composer features not supported with Copilot Studio
The following Composer features aren't supported with Copilot Studio:
Unsupported feature | Additional information |
---|---|
LUIS (language understanding) Recognizer | Default Recognizer in Composer is set to Microsoft Copilot Studio Natural Language Understanding (NLU). |
Bot Framework Orchestrator | Bot Framework Orchestrator isn't supported in Composer for Copilot Studio. |
Custom recognizer | Custom recognizer isn't supported in Composer for Copilot Studio. |
Bot skills | Can't invoke Bot skills in Composer content meant for Copilot Studio. |
QnA Maker | This feature isn't available in Composer for Copilot Studio. |
OAuth Login and User Sign Out | These types of actions aren't supported in Composer for Copilot Studio. |
Dialog Inputs and Outputs | Dialog Inputs and Outputs aren't supported in Composer for Copilot Studio. |
Entity detection in trigger phrases in Composer | Can't use # getUserName my name is {username=userName} in Composer. |
Testing in Bot Framework Emulator | All Composer content should be published and then tested in Copilot Studio. |
Guidelines for creating content for Copilot Studio in Composer
There are a few key guidelines to follow when using Composer to create content for Copilot Studio:
The topics from your Copilot Studio copilot are displayed in Composer as dialogs. You can't edit these dialogs in Composer; selecting them opens the relevant topics in Copilot Studio for editing.
Copilot Studio global variables are accessed in Composer by using the
virtualagent
scope. This scope doesn't appear in Composer's property reference menu, but you can access it by entering an expression directly.Publishing content in Composer makes the changes available for testing, but doesn't automatically publish your Copilot Studio copilot. To publish your copilot changes to channels, use the Publish feature in Copilot Studio.
Use a Begin a Microsoft Copilot Studio Topic action to call Copilot Studio topics in Composer.
You can add new Composer triggers of any kind to your main (also known as "root") dialog.
You can send messages and ask questions from these Composer triggers.
You can't use the Regular expression recognizer in the main dialog. Using the Regular expression recognizer in the main dialog prevents you from publishing your Composer content to Copilot Studio. However, you can use the Regular expression recognizer in any other Composer dialog.
You can add any Composer events and triggers to newly created dialogs.
On the Bot Responses page, the Common section should be empty. Using any assets there results in validation errors and prevents you from publishing your Composer content to Copilot Studio.
Each Composer dialog has its own bot response (.lg) and language understanding (.lu) resources. For example, a bot that speaks English (US) and has a dialog named
dialog1
has onedialog1.en-us.lg
file and onedialog1.en-us.lu
file.The main dialog in Composer should never be deleted, as it corresponds to your Copilot Studio copilot. The main dialog can have zero or more triggers.
You can capture telemetry in Composer dialogs and triggers and use Application Insights to analyze it with Kusto queries for adaptive dialogs. For more information, see Capture telemetry with Application Insights.
For a deep dive on Composer dialogs, events, triggers, and how to create advanced bot content with Bot Framework, refer to the following resources:
- Bot Framework Composer dialogs
- Bot Framework Composer events and triggers
- Language generation
- Conversation flow and memory
References
To learn more about developing in Composer, see these resources:
- Bot Framework Composer documentation
- Tour of Composer
- Tutorial: Create a new bot
- Tutorial: Add cards and buttons to your bot
- Tutorial: Add language generation to your bot
- Bot Framework Composer on GitHub