Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Note
This article applies to classic chatbots only. This feature isn't available for Copilot Studio agents powered by the standard or GitHub Copilot harness.
Important
This article includes information about Azure Bot Service skills, a code-based way to extend the capabilities of an agent in the standard harness. These skills shouldn't be confused with agentic skills in the GitHub Copilot harness. Learn more about how to use agentic skills in Skills overview for agents.
When you use a classic chatbot as an Azure Bot Service skill with a Bot Service bot, the Bot Service bot checks if anything the user says matches the classic chatbot's trigger phrases. If there's a match, the Bot Service bot passes the conversation to the classic chatbot. The classic chatbot extracts any entities and triggers the matching topic.
Important
To use classic chatbots as Azure Bot Service skills, you must have a trial or full Copilot Studio license. This capability isn't available with the Copilot Studio for Teams plan.
To set up your classic chatbot as an Azure Bot Service skill:
Add the Bot Service bot to the allow list for the classic chatbot.
Download the Azure Bot Service skill manifest for the classic chatbot.
Connect to a classic chatbot as an Azure Bot Service skill from your Bot Service bot.
Confirm the classic chatbot works as an Azure Bot Service skill.
Prerequisites
Add your Bot Service bot to the allow list for your classic chatbot
Add the Bot Service bot's app ID to the allow list for the classic chatbot that you want to use as a skill. The bots must be in the same tenant.
Get the Microsoft app ID for your Bot Services bot. You can find this information in the Azure portal or in the bot configurations.
In Copilot Studio, open the classic chatbot you want to use as an Azure Bot Service skill.
Go to Settings, select Security, and then select Allowlist.
Select Add allowed caller.
Paste your Bot Service bot's app ID and select Next.
Caution
A classic chatbot can't act as an Azure Bot Service skill for other classic chatbots. If you try to add an app ID that belongs to a classic chatbot to the allow list, you get an error. You can only add an app ID for a Bot Service bot.
Copilot Studio validates the Bot Service bot's app ID and confirms that it belongs to a bot in the same tenant.
(Optional) Add a Display name for the bot you added to the allow list.
Select Save.
The Bot Service bot appears by its display name if you entered one, or by its app ID if you didn't enter a display name. To delete or edit it at any time, select the icon to the right of the bot's display name or app ID.
Note
Bot Service bots added to the allow list aren't exported as part of the bot content.
Download the Azure Bot Service skill manifest for your classic chatbot
All classic chatbots have Azure Bot Service skill manifests. A skill manifest is a JSON file that includes the skill's name, interface, and trigger phrases. Bot Service bots can use the Azure Bot Service skill manifest from a Copilot Studio classic chatbot to configure a connection to the classic chatbot that produced the manifest.
A Bot Service bot uses an Azure Bot Service skill manifest to know when to trigger the classic chatbot (for example, in response to something a user says).
Azure Bot Service skill manifests for classic chatbots follow version 2.2 of the Bot Service skill manifest schema and consist of intents.lu and manifest.json files.
Based on the manifest data, a Bot Service bot might decide that a classic chatbot should handle the user's request. The bot passes everything the user said to the chatbot. Then, the chatbot matches what the user said to a topic, extracts any entities that are needed for slot filling, and triggers the topic.
Copilot Studio automatically generates and updates Azure Bot Service skill manifests. A classic chatbot has two manifests:
Test manifest: Allows the Bot Service bot to connect to the test version of your classic chatbot. Use the test manifest to validate changes to your skill before you publish it.
- The test manifest is immediately available for every newly created classic chatbot.
- It's automatically updated to reflect changes every time you save your classic chatbot.
Published manifest: Allows the Bot Service bot to connect to the published version of your classic chatbot.
- The published manifest is only available for classic chatbots that were published at least once.
- It's automatically updated to reflect changes every time you publish your classic chatbot.
Both skill manifests appear on the Manage allowlist panel.
The skill manifests also appear on the chatbot's Details page. Go to Settings, then select Details. The Details page shows other metadata, including Environment ID, Tenant ID, and Bot app ID.
To download a manifest, select it. It downloads as a .zip file labeled _<bot name>manifest for the Published manifest, or <bot name>test__manifest for the Test manifest.
Note
The skill manifest doesn't include system topics. Only topics that chatbot authors create and intent triggers that authors add to the bot are included.
Connect to a classic chatbot as an Azure Bot Service skill from your bot
Use the information from your Azure Bot Service skill manifest to create a skill connection in your Bot Service bot.
Learn more about the structure of the Azure Bot Service skill manifest in Azure Bot Service skills manifest.
The activities section of the Azure Bot Service skill manifest contains the topics that are available in your classic chatbot.
You can implement an Azure Bot Service skill consumer in your Bot Service bot to call a classic chatbot as an Azure Bot Service skill.
Test your classic chatbot as an Azure Bot Service skill with a Bot Service bot
Use the Bot Service Emulator to test that your Bot Service bot is properly calling a classic chatbot as an Azure Bot Service skill.
Important
You must add your Bot Service bot to the classic chatbot's allow list for the skill connection to work.
Update a multitenant Bot Service bot to a single-tenant bot
The following illustration shows the scenario where a Bot Service bot calls a classic chatbot, to use it as an Azure Bot Service skill.
Both the Bot Service bot and the classic chatbot have a Microsoft Entra ID app registration, which the Azure Bot instances reference. You create these Microsoft Entra ID app registrations as multitenant. The Bot Service bot requests a token from the Bot Service tenant and uses this token to authenticate to Copilot Studio by using Azure Bot Service. Copilot Studio uses the same mechanism to contact the Bot Service bot.
Because the Copilot Studio chatbot's application registration is now single-tenant, this communication no longer works. Microsoft Entra ID refuses to create tokens for single-tenant application registrations that aren't in the same tenant.
Additionally, Copilot Studio validates the incoming token and rejects requests from tenants it doesn't expect, such as the tenant ID in which the classic chatbot's application registration was created.
To resolve this issue, follow the guidance that applies to your situation:
Classic chatbots in the same tenant as the Azure Bot Service bot: In scenarios where the Copilot Studio chatbot is already deployed in the same tenant as the Bot Service bot and is only used by this bot, update the Azure Bot Service bot to a single-tenant configuration, then redeploy. Learn more in Provision and publish a bot.
Copilot Studio chatbot that can't be updated to single-tenant: In scenarios where the Copilot Studio chatbot is already deployed in the same tenant as the Bot Service bot, but the bot can't be updated to single-tenant, update the code in the Bot Service bot to create the token to communicate with the Copilot Studio chatbot. The token needs to be created for the tenant in which the Copilot Studio chatbot was also created. In addition, the response must be accepted, which probably requires that you follow the steps in Convert an existing Azure Bot Service skill from multitenant to single-tenant.