Updates from: 05/31/2024 05:30:24
Service Microsoft Docs article Related commit history on GitHub Change details
platform High Quality Message Extension https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/high-quality-message-extension.md
Title: Bot-based message extension plugin guidelines
-description: Learn about the guidelines and criteria to extend your message extension as a plugin for Microsoft Copilot for Microsoft 365.
+ Title: Copilot for Microsoft 365 extension guidelines
+description: Guidelines and criteria to extend your message extension as a plugin for Microsoft Copilot for Microsoft 365.
ms.localizationpriority: high
Last updated 11/14/2023
-# Guidelines to create or upgrade a message extension plugin for Copilot for Microsoft 365
+# Guidelines to create or upgrade Copilot extensions
> [!IMPORTANT] >
Microsoft 365 plugins provide integration with various Microsoft 365 products,
We recommend that you build or upgrade your existing message extensions to maximize their usefulness and usability in Copilot for Microsoft 365. Message extensions must support one or more search commands, as Copilot for Microsoft 365 recognizes them as skills it can execute on behalf of the user. Additionally, your extensions must meet the standards for compliance, performance, security, and user experience outlined in this article. +
+> [!NOTE]
+> If you want to configure a custom Graph connector for Copilot for Microsoft 365, ensure that you adhere to the [guidelines to create or upgrade Graph connectors](/graph/connecting-external-content-deploy-teams).
## Mandatory requirements
The requirements for building message extension plugins for Copilot for Microsof
## Define descriptions
-A good description offers a clear and concise summary of the appΓÇÖs features and allows Copilot for Microsoft 365 to efficiently discover and execute search operations. When a user enters the app name along with a verb, for example, **Find Contoso tickets**, the message extension plugin must be invoked from Copilot for Microsoft 365 (M365 Chat).
+A good description offers a clear and concise summary of the appΓÇÖs features and allows Copilot for Microsoft 365 to efficiently discover and execute search operations. When a user enters the app name along with a verb, for example, **Find Contoso tickets**, the message extension plugin must be invoked from Copilot for Microsoft 365.
- :::image type="content" source="../assets/images/Copilot/validation-guidelines-plugin-prompt-pass.png" alt-text="Screenshot shows a pass scenario with an example of a sample prompt for message extension plugin in M365 Chat.":::
+ :::image type="content" source="../assets/images/Copilot/validation-guidelines-plugin-prompt-pass.png" alt-text="Screenshot shows a pass scenario with an example of a sample prompt for message extension plugin in Copilot Chat.":::
- :::image type="content" source="../assets/images/Copilot/validation-guidelines-plugin-prompt-fail.png" alt-text="Screenshot shows a fail scenario without an example of sample prompt for message extension as a plugin in M365 Chat.":::
+ :::image type="content" source="../assets/images/Copilot/validation-guidelines-plugin-prompt-fail.png" alt-text="Screenshot shows a fail scenario without an example of sample prompt for message extension as a plugin in Copilot Chat.":::
Ensure that you adhere to the description guidelines listed in the following table:
The following table lists the short description examples for each category:
"description": { "short": "Search and view customer leads.", "full": "Resolve tickets faster, simplify employee workflows and improve team performance by integrating Contoso CRM to Microsoft Teams. Contoso CRM is a complete customer service solution thatΓÇÖs easy to use and scales with your business."
- },
+ }
``` # [General](#tab/general)
The following table lists the command and semantic description examples for each
### Parameter description
-Each message extension command supports has a corresponding `parameters' property which supports up to five parameters and the first parameter must be visible in the message extension search bar. A parameter must have a good description, which must contain a combination of acceptable parameters, enums, acronyms, and output format.
+Each message extension command supports has a corresponding `parameters' property, which supports up to five parameters and the first parameter must be visible in the message extension search bar. A parameter must have a good description, which must contain a combination of acceptable parameters, enums, acronyms, and output format.
The [semanticDescription](../resources/schem#composeextensionscommands) property is used to provide a detailed description of a command for Microsoft Copilot. Semantic description for parameters supports up to 2,000 characters and isn't displayed in the user interface. If the `semanticDescription` property is left empty, Copilot uses the information in the `description` field. When writing a `semanticDescription`, you must include information about expected values, limits, and ranges for the command.
Advanced search: Find top 10 stocks in NASDAQ with P/E less than 30 and P/B less
## Compound utterances > [!NOTE]
-> Search through dialog (referred as task module in TeamsJS v1.x) isn't supported in M365 Chat.
+> Search through dialog (referred as task module in TeamsJS v1.x) isn't supported in Copilot for Microsoft 365.
-For M365 Chat, a search-based message extension must support more than three unique compound utterances to perform deep retrieval of accurate information. To enable compound utterances, you must expand the scope of search to handle three or more search parameters by updating the [app manifest (previously called Teams app manifest)](../resources/schem#composeextensionscommands) and ensure the following:
+For Copilot for Microsoft 365, a search-based message extension must support more than three unique compound utterances to perform deep retrieval of accurate information. To enable compound utterances, you must expand the scope of search to handle three or more search parameters by updating the [app manifest (previously called Teams app manifest)](../resources/schem#composeextensionscommands) and ensure the following:
* Update your web service to support search based on multiple parameters. For more information on how to respond to user requests, see [Respond to search command](how-to/search-commands/respond-to-search.md). * Copilot for Microsoft 365 might pass an empty string or null value for parameters, which aren't part of user utterance, update your web service to handle the parameters.
-* A message extension supports upto 10 commands (9 usable) and each command has a corresponding `parameters` property which supports up to 5 parameters.
+* A message extension supports upto 10 commands (9 usable) and each command has a corresponding `parameters` property, which supports up to five parameters.
<br> <details><summary>The following code is an example of multiple parameters defined in app manifest:</summary>
The following code is an example of the `samplePrompts` property in app manifest
```json "composeExtensions": [
- {
- "canUpdateConfiguration": true,
- "botId": "bxxxxxx5-xxxx-xxxx-xxxx-4xxxxxx16599",
- "commands": [
- {
- "id": "orders",
- "title": "Orders",
- "context": [
- "Commandbox",
- "Compose"
- ],
- "description": "Search for orders",
- "semanticDescription": "Search for orders",
- "samplePrompts": [
- {
- "text": "Search for all orders"
- },
- {
- "text": "Search for orders related to Contoso"
- },
- {
- "text": "Search for all pending orders"
- },
- {
- "text": "Search for all completed ordered for Fabrikam"
- }
- ]
- }
- ]
- }
+ {
+ "canUpdateConfiguration": true,
+ "botId": "bxxxxxx5-xxxx-xxxx-xxxx-4xxxxxx16599",
+ "commands": [
+ {
+ "id": "orders",
+ "title": "Orders",
+ "context": [
+ "Commandbox",
+ "Compose"
+ ],
+ "description": "Search for orders",
+ "semanticDescription": "Search for orders",
+ "samplePrompts": [
+ {
+ "text": "Search for all orders"
+ },
+ {
+ "text": "Search for orders related to Contoso"
+ },
+ {
+ "text": "Search for all pending orders"
+ },
+ {
+ "text": "Search for all completed ordered for Fabrikam"
+ }
+ ]
+ }
+ ]
+ }
] ```
Message extensions respond to a user input with an Adaptive Card. An Adaptive Ca
* Adaptive Card response must include Adaptive Card content and preview card information as part of the same template. [*Mandatory*]
- :::image type="content" source="../assets/images/Copilot/validation-guidelines-app-response-copilot.png" alt-text="Screenshot shows an example of a sample app showing M365 Chat app response contains Preview and Content in the same response." lightbox="../assets/images/Copilot/validation-guidelines-app-response-copilot-ext.png":::
+ :::image type="content" source="../assets/images/Copilot/validation-guidelines-app-response-copilot.png" alt-text="Screenshot shows an example of a sample app showing Copilot app response contains Preview and Content in the same response." lightbox="../assets/images/Copilot/validation-guidelines-app-response-copilot-ext.png":::
<br/> <details><summary>Adaptive Card response template example</summary>
Message extensions respond to a user input with an Adaptive Card. An Adaptive Ca
* `Action.Execute`: Collects the input fields and sends them as a request to your bot service. * `Action.Submit`: Opens a dialog or Stageview using type invoke in data object.
- :::image type="content" source="../assets/images/Copilot/ailib-copilot-action-buttons.png" alt-text="Graphic shows an example of the Update Stock, restock, and Cancel restock action buttons in an Adaptive Card response in M365 Chat.":::
+ :::image type="content" source="../assets/images/Copilot/ailib-copilot-action-buttons.png" alt-text="Graphic shows an example of the Update Stock, restock, and Cancel restock action buttons in an Adaptive Card response in Copilot.":::
* If a user can change any information on the card through dialog, Stageview, or directly from the card, we recommend the Adaptive Card to support universal actions and automatic refresh. [*Recommended*] * Adaptive Cards must include a URL as part of the [metadata](https://adaptivecards.io/explorer/Metadata.html), which allows cards to be easily copied from one hub to another. [*Recommended*]