Composer lets you export a bot as a skill, which allows it to provide conversational logic to other bots.
For example, the Enterprise Assistant Bot template uses a root bot connected to multiple skills.
This article describes how to publish a skill as an Azure Web App.
As part of this process:
Composer publishes your bot to Azure, along with a skill manifest. The manifest allows your bot to be used as a skill.
You can update your bot's allowed callers list, the app IDs of bots that are allowed to use your bot as a skill.
You can use the steps in this article to publish any existing bot as a skill.
On the Select dialogs page, select the dialogs that will be accessible to consumer bots—For the EchoSkill bot, this is the EchoSkill dialog.
Select Next.
On the Select triggers page, select the triggers to include that can start a task.
Don't select any of the triggers. Your skill is expecting an event activity named "startSkill" as the initial activity sent by a root bot to the skill. By default, all new skill manifests include an event activity as an initial activity. However, you'll later need to edit the manifest and republish the skill.
Select Next.
On the Which bots can connect to this skill? page, select Next.
Don't add allowed callers at this time. It's not needed for this article. You can add allowed callers and republish the skill later.
To restrict callers to specific bots, you would add the app ID of each allowed caller.
If you already have a publishing profile for this bot, Composer will use that.
If the skill doesn't have a publishing profile yet, Composer displays the Create a publish profile to continue page and prompts you to create a new publishing profile.
Select Create new publish profile to continue.
Follow the instructions and create the publishing profile. Composer will provision resources for your skill bot. For detailed instructions, see how to Publish a bot.
Publish to Azure.
Create new resources.
No optional resources are required for the echo skill.
Composer then provisions and publishes your skill to Azure, which can take a minute or two.
When it completes, it displays a notification that your skill is ready to be shared.
Copy the skill manifest URL. You use the skill manifest URL to connect a consumer bot to the deployed skill.
Edit the skill manifest and republish
The skill manifest describes the capabilities of the skill.
The skill manifest is located in the skill's project folder, in the manifests subdirectory.
This directory also contains a language model (.lu) file for the skill. The language model for this echo skill will be empty.
Edit the skill manifest locally, outside of Composer.
Review the endpoints array.
Important: if there are any empty objects in the endpoints array, remove them. Other bots can't consume a poorly formed skill manifest.
You'll publish your skill once to provision the bot resources and a second time to add a manifest to the bot to be accessible as a skill by other published bots.
The first step is to publish your skill to Azure.
Navigate to the Publish page and select the skill bot. Select Manage profiles and then follow the instructions in the Publish a bot article to publish your skill to Azure.
At this point, your skill bot is accessible in Azure as a user facing bot, but not yet accessible as a skill to other bots.
The second step is to use the creation wizard in Composer to generate your skill manifest and republish the bot.
Select Create to go back to the Authoring canvas. On the Navigation pane, select the three-dot icon to the right of your skill. Select Create/edit skill manifest from the drop-down menu.
On the Create or edit skill manifest window, select a manifest version and then select Create.
On the Describe your skill window, enter values to describe your skill's manifest in the form. Select Next.
This table describes these values.
Category
Type
Required
Description
Name
String
Required
The name of the skill.
Version
String
Required
The version of the skill the manifest describes.
Publisher Name
String
Required
The name of the skill publisher.
Description
String
Optional
A human-readable description of the skill.
Privacy Url
String
Optional
The URI of the privacy description for the skill.
Copyright
String
Optional
The copyright notice for the skill.
License
String
Optional
The license agreement for the skill.
Icon Url
String
Optional
The URL of the icon to show for the skill.
Tags
String
Optional
A set of tags for the skill. If present, each tag must be unique.
On the Skills endpoints window, enter the values for Name, Endpoint Url, Microsoft App Id, and optionally enter a description in the Description field. Select Next.
The Name will be the human-readable name for the endpoint.
The Description should describe what features available through this endpoint.
This is useful when a skill exposes more than one endpoint.
The Endpoint Url should be the messaging endpoint of your remote skill.
The Microsoft App Id should be the value of the Bot Channel Registration of your published skill.
On the next screen, select the dialogs to be included in the skill manifest. Check Select all to select all the dialogs. Select Next.
On the next screen, select the triggers to be included in the skill manifest. Check Select all to select all the dialogs. Select Generate.
On the Review and generate screen, review the manifest file generated. Select Next.
Finally, on the Save your skill manifest screen, enter a name for the skill manifest. You can select Edit in JSON if you want to make changes to the manifest file. Select Save.
Now you can find the generated skill manifest file in your skill bot's project folder such as C:\Users\UserName\Documents\Composer\SkillBotName\manifests. Record the skill manifest file name. You'll use it in step 2 of the republish the skill to Azure section to concatenate your remote skill's manifest URL.
Here is a sample skill manifest.
{
"$schema": "https://schemas.botframework.com/schemas/skills/skill-manifest-2.0.0.json",
"$id": "TodoSimple",
"name": "Todo skill",
"version": "1.0",
"description": "This skill echoes whatever the user says",
"publisherName": "Microsoft",
"privacyUrl": "https://myskill.contoso.com/privacy.html",
"copyright": "Copyright (c) Microsoft Corporation. All rights reserved.",
"license": "",
"iconUrl": "https://myskill.contoso.com/icon.png",
"tags": [
"sample",
"echo"
],
"endpoints": [
{
"name": "default",
"protocol": "BotFrameworkV3",
"description": "Production endpoint for SkillBot.",
"endpointUrl": "http://localhost:3983/api/messages",
"msAppId": "0000000-0000-0000-0000-0000000000000"
}
],
"activities": {
"message": {
"type": "message",
"description": "A message activity containing the utterance that the skill will echo back to the user"
}
}
}
Update the allowedCallers setting
Before republishing your skill to Azure, make sure the following setting is updated in your skill,
On the Project Settings page, toggle Advanced Settings View (json). Update the allowedCallers property of the skillConfiguration settings.
You can test your skill as a root bot directly in Azure. To do so, use Azure's Test in Web Chat feature.
Since you're accessing the bot directly, it behaves as a root bot, and doesn't behave like a skill.
Additional information
A skill's manifest can include dispatch and language model information. This information describes the intents and questions the skill is designed to respond to. It can also provide language models for multiple locales.
When you publish your skill, Composer can add dispatch and language model information to the skill's manifest. It uses the language models from the skill bot to do so.
When you create a bot that consumes a skill, Composer can use the skill's manifest to generate triggers in the root bot to invoke the skill.