Service | Microsoft Docs article | Related commit history on GitHub | Change details |
---|---|---|---|
platform | Build Bot Based Message Extension | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/build-bot-based-message-extension.md | Bot-based message extension takes advantage of the Bot Framework's messaging sch There are two types of message extension commands, action command and search command. The message extension command type defines the UI elements and interaction flows available to your web service. You can use a search command or an action command to interact with your web service through a bot in Teams. # [Search commands](#tab/search-commands) You must add the following search parameter details that define the text visible For more information, see [app manifest schema](~/resources/schem). +## Message extension as plugin for Copilot for Teams meetings ++Message extension plugins are supported in Copilot for Teams meetings. Extending bot-based message extension plugins to meetings allows you to enhance the Copilot for Teams meetings. Copilot can utilize various app capabilities during meetings, such as task modules, app sharing, and more, to improve user engagement and productivity. For example, a plugin can be used in Copilot for Teams meetings to summarize discussions, generate notes, and list tasks. It also extends the benefits of traditional plugins by enabling real-time interaction with external data and custom functionality. ++Meetings Copilot is interactive and efficient, it can assist with summarizing discussions, suggesting action items, and providing prompt-less assistance in real-time. Users can ask natural language questions to meeting copilot and get responses from your plugin that are relevant to the meeting context. Plugins are available for users to enable in both Copilot for Microsoft 365 and Copilot for Teams meetings. +++| Benefits | Description | +|-|| +| User Empowerment | Extending Meeting Copilot empowers users with various actions to enhance their meeting experience. | +| UI Commands | Users can easily access features like opening a task module or sharing an app to the stage. | +| Search Commands | Efficient data retrieval from app databases is made possible, streamlining the search process. | ++| Scenarios | Description | +|-|| +| Reactive Commands | Users can directly command Copilot to perform specific actions or provide information. | +| | - Natural Language Prompts: Users can instruct Copilot to carry out search commands. | +| | - Prompt Suggestions: Apps can offer static or enriched prompts for Copilot to execute. | +| Proactive Assistance | Copilot proactively listens to meeting signals and assists users by: | +| | - Suggesting prompts from apps: Contextually relevant suggestions based on the discussion topics. | +| | - Providing assistance without explicit prompts: Copilot can automatically suggest actions based on the discussion. | + ## Next step > [!div class="nextstepaction"] |
platform | Build Bot Based Plugin | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/build-bot-based-plugin.md | Last updated 11/14/2023 Microsoft Copilot for Microsoft 365, powered by an advanced processing and orchestration engine, integrates Microsoft 365 apps, Microsoft Graph, and Large Language Models (LLMs) to transform your words into a potent productivity tool. Although Copilot for Microsoft 365 can utilize apps and data within the Microsoft 365 ecosystem, many users rely on various external tools and services for work management and collaboration. By extending your message extension as a plugin in Copilot for Microsoft 365, you can enable users to interact with third-party tools and services, therefore empowering them to achieve more with Copilot for Microsoft 365. You can achieve this extension by developing a plugin or connecting to an external data source. See the video to learn more about extending Copilot for Microsoft 365 using Teams message extensions: </br> A plugin allows Copilot for Microsoft 365 to interact directly with third-party * Fetch real-time information, such as the latest news coverage on a product launch. * Retrieve knowledge-based information, such as a teamΓÇÖs design files in Figma.-* Perform actions on behalf of the user, such as creating a Contoso ticket. -Descriptions enhance the usability and effectiveness of a message extension plugin. The follwoing description offer a clear and concise summary of the appΓÇÖs features: +Descriptions enhance the usability and effectiveness of a message extension plugin. The following description offer a clear and concise summary of the appΓÇÖs features: * **App description**: App description helps improve your app discoverability in the Teams Store. * **Command description**: Command description maps user intent and utterance to search command inside a plugin and must be built based on the analysis of the user intent and keywords. * **Parameter description**: Parameter description explains the requirements of the system in a natural language with output format.-* **Semantic description**: Semantic description helps Copilot for Micrososft 365 generate content by providing a conceptual understanding of the plugin's capabilities and scenarios where it can help achieve user goals and match userΓÇÖs intent with the plugin's capabilities. +* **Semantic description**: Semantic description helps Copilot for Microsoft 365 generate content by providing a conceptual understanding of the plugin's capabilities and scenarios where it can help achieve user goals and match userΓÇÖs intent with the plugin's capabilities. For more information, see [define descriptions](high-quality-message-extension.md#define-descriptions). To run your message extension in Teams, follow these steps: 1. Select a product from the list. Teams unfurls the product as an Adaptive Card in the message compose area. 1. Select **Send**. -**Trigger message extension in M365 Chat** +**Trigger message extension in Copilot for Microsoft 365** -To trigger the message extension as plugin in M365 Chat, follow these steps: +To trigger the message extension as plugin in Copilot for Microsoft 365 in Teams, follow these steps: 1. Select **Apps**.-1. Search for **M365 Chat** and open the **M365 Chat** app. +1. Search for **Copilot** and open the **Copilot for Microsoft 365** app. 1. Select **Plugins**. 1. From the list of plugins, turn on the toggle for your message extension. :::image type="content" source="../assets/images/Copilot/bot-based-VSC-plugin-toggle.png" alt-text="Screenshot shows the Plugin option, list of plugins, and the toggle enabled for bot-based-ME-test-local plugin."::: -1. From the message compose area, send a message to M365 Chat to search for npm package information in Teams and Copilot. For example, find the npm package info on teamsfx-react in npm-searchlocal. +1. From the message compose area, send a message to Copilot for Microsoft 365 to search for npm package information in Teams and Copilot. For example, find the npm package info on teamsfx-react in npm-searchlocal. - :::image type="content" source="../assets/images/Copilot/bot-based-VSC-trigger-plugin.png" alt-text="Screenshot shows the plugin prompt and the response from M365 Chat."::: + :::image type="content" source="../assets/images/Copilot/bot-based-VSC-trigger-plugin.png" alt-text="Screenshot shows the plugin prompt and the response from Copilot for Microsoft 365."::: > [!NOTE]-> This prompt might not always make M365 Chat include a response from your message extension. If it happens, try some other prompts or leave feedback to us by downvoting the M365 Chat response and leave a message. +> This prompt might not always make Copilot for Microsoft 365 include a response from your message extension. If it happens, try some other prompts or leave feedback to us by downvoting the Copilot for Microsoft 365 response and leave a message. # [Visual Studio](#tab/visual-studio) To create a bot-based search message extension plugin using Visual Studio, follo :::image type="content" source="../assets/images/Copilot/bot-based-VS-debug-teams-send-card.png" alt-text="Screenshot shows Contoso. Base product sent as an Adaptive Card in Teams chat."::: -**Trigger message extension in M365 Chat** +**Trigger message extension in Copilot for Microsoft 365** -To trigger the message extension as plugin in M365 Chat, follow these steps: +To trigger the message extension as plugin in Copilot for Microsoft 365, follow these steps: 1. Go to **Visual Studio**. 1. In the debug dropdown, select **Copilot (browser)**. Visual Studio launches Teams web client. To trigger the message extension as plugin in M365 Chat, follow these steps: :::image type="content" source="../assets/images/Copilot/bot-based-VSC-debug-Copilot.png" alt-text="Screenshot shows the Copilot (Browser) debug option in Visual Studio."::: 1. Go to **Teams web client** > **Apps**.-1. Search for **M365 Chat** and open the **M365 Chat** app. +1. Search for **Copilot for Microsoft 365** and open the **Copilot for Microsoft 365** app. 1. Select **Plugins**. 1. From the list of plugins, turn on the toggle for your app. :::image type="content" source="../assets/images/Copilot/bot-based-VS-me-plugin-toggle.png" alt-text="Screenshot shows the Plugin option, list of plugins, and the toggle enabled for bot-based-ME-test-local plugin."::: -1. From the message compose area, send a message to M365 Chat to search for npm package information in Teams and Copilot. For example, find the npm package info on teamsfx-react in npmsearchlocal. +1. From the message compose area, send a message to Copilot for Microsoft 365 to search for npm package information in Teams and Copilot. For example, find the npm package info on teamsfx-react in npmsearchlocal. - :::image type="content" source="../assets/images/Copilot/bot-based-VS-trigger-plugin.png" alt-text="Screenshot shows the plugin prompt and the Adaptive Card response with content and preview card from M365 Chat. The response contains a list of four products with Contoso product name. "::: + :::image type="content" source="../assets/images/Copilot/bot-based-VS-trigger-plugin.png" alt-text="Screenshot shows the plugin prompt and the Adaptive Card response with content and preview card from Copilot for Microsoft 365. The response contains a list of four products with Contoso product name. "::: > [!NOTE]-> This prompt might not always make M365 Chat include a response from your message extension. If it happens, try some other prompts or leave feedback to us by downvoting the M365 Chat response and leave a message. +> This prompt might not always make Copilot for Microsoft 365 include a response from your message extension. If it happens, try some other prompts or leave feedback to us by downvoting the Copilot for Microsoft 365 response and leave a message. # [Toolkit CLI](#tab/toolkit-cli) To create a bot-based search message extension plugin using Teams Toolkit CLI, f 1. From the message extension fly-out menu, enter the name of your message extension in the search box. 1. Select your message extension and enter your search query. -**Trigger message extension in M365 Chat** +**Trigger message extension in Copilot for Microsoft 365** -To trigger the message extension through M365 Chat, follow these steps: +To trigger the message extension through Copilot for Microsoft 365, follow these steps: 1. Select **Apps**.-1. Search for **M365 Chat** and open the **M365 Chat** app. +1. Search for **Copilot for Microsoft 365** and open the **Copilot for Microsoft 365** app. 1. Select **Plugins**. 1. From the list of plugins, turn on the toggle for your app. :::image type="content" source="../assets/images/Copilot/bot-based-VSC-plugin-toggle.png" alt-text="Screenshot shows the Plugin option, list of plugins, and the toggle enabled for bot-based-ME-test-local plugin."::: -1. From the message compose area, send a message to M365 Chat to search for npm package information in Teams and Copilot. For example, find the npm package info on teamsfx-react in npm-searchlocal. +1. From the message compose area, send a message to Copilot for Microsoft 365 to search for npm package information in Teams and Copilot. For example, find the npm package info on teamsfx-react in npm-searchlocal. - :::image type="content" source="../assets/images/Copilot/bot-based-VSC-trigger-plugin.png" alt-text="Screenshot shows the plugin prompt and the response from M365 Chat."::: + :::image type="content" source="../assets/images/Copilot/bot-based-VSC-trigger-plugin.png" alt-text="Screenshot shows the plugin prompt and the response from Copilot for Microsoft 365."::: > [!NOTE]-> This prompt might not always make M365 Chat include a response from your message extension. If it happens, try some other prompts or leave feedback to us by downvoting the M365 Chat response and leave a message tagged with [MessageExtension]. +> This prompt might not always make Copilot for Microsoft 365 include a response from your message extension. If it happens, try some other prompts or leave feedback to us by downvoting the Copilot for Microsoft 365 response and leave a message tagged with [MessageExtension]. # [Developer Portal for Teams](#tab/developer-portal-for-teams) A bot-based search message extension is created. To test your bot-based message extension created in the Developer Portal for Teams, you can use the following methods: -* **Preview in Teams**: In Developer Portal, open your message extension and select **Preview in Teams** in the upper-right corner. You'll be redirected to Teams, where you can add the app to Teams to preview the app. +* **Preview in Teams**: In Developer Portal, open your message extension and select **Preview in Teams** in the upper-right corner. You're redirected to Teams, where you can add the app to Teams to preview the app. * **Download app package**: On the message extension page, select **App package** from the left pane and then, in the upper-left corner of the window, select **Download app package**. The app package is downloaded to your local machine in a .zip file. You can upload the app package to teams and test the message extension. -For more on testing your plugin in Copilot for Microsoft 365 chat, see [Debugging plugin selection](/microsoft-365-copilot/extensibility/orchestrator?tabs=tasks#debugging-plugin-selection). +For more on testing your plugin in Copilot for Microsoft 365, see [Debugging plugin selection](/microsoft-365-copilot/extensibility/orchestrator?tabs=tasks#debugging-plugin-selection). ++## Enable message extension as a plugin for Copilot for meetings ++Ensure that you've created a bot-based message extension and extended it as a plugin for Copilot for Microsoft 365. Before you get started, We recommend you to follow the guidelines listed in [Copilot for Microsoft 365 extension guidelines](high-quality-message-extension.md#extend-your-plugin-to-copilot-in-meetings) to extend your plugin for Copilot for meetings. ++To enable message extension as a plugin for Copilot for Teams meetings, follow these steps: ++1. Go to a **Teams meeting**. +1. Select **Join**. +1. In the meeting window, select **Copilot**. ++1. Select **Start transcription**. ++ :::image type="content" source="../assets/images/Copilot/meeting-copilot-start-transcription.png" alt-text="Screenshot shows the Copilot option and start transcription button in a Teams meeting."::: ++1. Select the Spoken language and select **Confirm**. The Copilot for Teams pane appears. ++ :::image type="content" source="../assets/images/Copilot/meeting-copilot-select-language.png" alt-text="Screenshot shows the dropdown to select a spoken language and a confirm button in Teams meeting."::: ++1. In the Copilot for Teams pane, at the bottom-right corner, select the **Copilot Plugin Button**. ++ :::image type="content" source="../assets/images/Copilot/meeting-copilot-trigger-plugin.png" alt-text="Screenshot shows the plugin icon in the copilot pane in a Teams meeting."::: ++1. Search for your plugin and turn on the toggle for your plugin. ++1. From the compose area, select **More prompts** to send a static prompt or you can type your own prompt and select **Send**. ++ :::image type="content" source="../assets/images/Copilot/meeting-copilot-static-prompts.png" alt-text="Screenshot shows the list of static prompts available in the copilot pane in a Teams meeting."::: ++Meeting Copilot helps your meetings to be better and more productive. You can make meetings more interactive, which helps users by giving them a smoother and more interesting experience. ## Step-by-step guide -Follow the [step-by-step guide](../sbs-messagingextension-searchcommand-plugin.yml) to build a bot-based search message extension plugin for M365 Chat. +Follow the [step-by-step guide](../sbs-messagingextension-searchcommand-plugin.yml) to build a bot-based search message extension plugin for Copilot for Microsoft 365. ## See also |
platform | High Quality Message Extension | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/high-quality-message-extension.md | The `semanticDescription` property isn't a mandatory field. However, if you add We recommend you to review the following guidelines for semantic description to increase the chances of your app to pass the Microsoft Teams Store submission process: * Avoid instructional phrases such as ΓÇ£if the user says X",ΓÇ¥ ΓÇ£ignore,ΓÇ¥ ΓÇ£delete,ΓÇ¥ ΓÇ£reset,ΓÇ¥ ΓÇ£new instructions,ΓÇ¥ ΓÇ£Answer in Bold,ΓÇ¥ or ΓÇ£Don't print anything.ΓÇ¥ *[Mandatory fix]*+ * Avoid URLs, emojis, or hidden characters such as hexadecimal, binary, or unconventional symbols. *[Mandatory fix]*+ * Avoid grammar and punctuation errors. *[Mandatory fix]*+ * Avoid overly verbose, flowery, or marketing language. *[Suggested fix]*+ * Avoid superlative claims such as ΓÇ£#1,ΓÇ¥ ΓÇ£amazing,ΓÇ¥ or ΓÇ£best.ΓÇ¥ *[Suggested fix]* The following table lists the command and semantic description examples for each category: Message extensions respond to a user input with an Adaptive Card. An Adaptive Ca * 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*] * Apart from thumbnails, any image in an Adaptive Card must have an alt-text. [*Recommended*]+* 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*] +* Apart from thumbnails, any image in an Adaptive Card must have an alt-text. [*Recommended*] ++## Extend your plugin to Copilot in meetings ++Copilot for Microsoft 365 is available in Teams meetings. We recommend you to implement the following best practices: ++* Adaptive Cards must not display a horizontal scroll. To avoid horizontal scrolls, donΓÇÖt specify a fixed width. *[Mandatory fix]* ++ * **ColumnSets** ++ * Don't define `ColumnSets` with more than three columns. + * DonΓÇÖt use explicit pixel width on more than one column in the set. + * Ensure the column doesn't exceed one-quarter of the narrowest card width, such as in a meeting chat or Copilot. + * Generally, an explicit width must not exceed 48 pixels, though some scenarios might allow for exceptions. ++ * **Sizing images** ++ * When using an image inside a `ColumnSet` with more than one Column, specify the size of the column containing an image rather than the image itself. + * If the image isnΓÇÖt in a `ColumnSet`, we recommend you to set its size to `auto` or `stretch`. + * If you want to define explicit width in pixels, ensure that they don't exceed 3/4 of the narrowest card width. + * If you want to define explicit size in pixels, define it for the width or height. Setting explicit size for any one parameter preserves the image's aspect ratio. + * We recommend you to set the width of the image, though some scenarios might allow for exceptions. ++For more information to create plugins for teams meetings, see [Enable message extension as a plugin for Copilot for meetings.](build-bot-based-plugin.md#enable-message-extension-as-a-plugin-for-copilot-for-meetings) ## Technical requirements |
platform | What Are Messaging Extensions | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/what-are-messaging-extensions.md | Title: Message extensions -description: Learn how message extensions are used, its types, and scenarios where it's used on the Teams platform. Samples on action and search based message extension. +description: Learn how message extensions are used, its types, and scenarios. Samples on action and search based message extension. ms.localizationpriority: medium Message extensions enable users to engage with your web service through buttons > [!IMPORTANT] > Message extensions are available in [Government Community Cloud (GCC), GCC-High, and Department of Defense (DOD)](~/concepts/app-fundamentals-overview.md#government-community-cloud) environments. -This document provides an overview of message extensions, tasks executed in various scenarios, the functioning of message extensions, action and search commands, and link unfurling. +The article provides an overview of message extensions, tasks executed in various scenarios, the functioning of message extensions, action and search commands, and link unfurling. The following image displays the locations from where message extensions can be invoked: A message extension consists of a web service that you host and an app manifest, > [!NOTE] > Though it's possible to manually create the web service, we recommend to use [Bot Framework SDK](https://github.com/microsoft/botframework-sdk) to work with the protocol. -In the app manifest (previously called as Teams app manifest), a single message extension is defined with up to 10 different commands. Each command defines a type, such as action or search and the locations in the client from where it's invoked. The invoke locations include the compose message area, command bar, and message. On invoke, the web service receives an HTTPS message with a JSON payload with all the relevant information. Respond with a JSON payload to inform the Teams client of the next interaction to enable. +In the app manifest (previously called as Teams app manifest), a single message extension is defined with up to 10 different commands. Each command defines a type, such as action or search and the locations in the client from where the message extension is invoked. The invoke locations include the compose message area, command bar, and message. On invoke, the web service receives an HTTPS message with a JSON payload with all the relevant information. Respond with a JSON payload to inform the Teams client of the next interaction to enable. ## Message extension commands types There are two types of message extension commands, action command and search com ### Action commands -Action commands are used to present the users with a modal pop-up to collect or display information. When the user submits the form, your web service responds by inserting a message into the conversation directly or into the compose message area. Subsequently, the user can submit the message. For more complex workflows, you can link multiple forms together. +Action commands are used to present the users with a modal pop-up to collect or display information. When the user submits the form, your web service responds by inserting a message into the conversation directly or into the compose message area. Later, the user can submit the message. For more complex workflows, you can link multiple forms together. Action commands are triggered from the compose message area, the command box, or a message. When the command is invoked from a message, the initial JSON payload sent to your bot includes the entire message from which it was invoked. The following image displays the message extension action command dialog (referred as task module in TeamsJS v1.x): The following image displays the message extension search command dialog: > [!NOTE] > Link unfurling is supported only for bot-based message extensions. -When a URL is pasted in the compose message area, a web service is invoked. This functionality is known as link unfurling. You can subscribe to receive an invoke when URLs containing a specific domain are pasted into the compose message area. Your web service can **unfurl** the URL into a detailed card, providing more information than the standard website preview card. You can add buttons to allow the users to immediately take action without leaving the Teams client. +When a URL is pasted in the compose message area, a web service is invoked. This functionality is known as link unfurling. You can subscribe to receive an invoke message when URLs containing a specific domain are pasted into the compose message area. Your web service can **unfurl** the URL into a detailed card, providing more information than the standard website preview card. You can add buttons to allow the users to immediately take action without leaving the Teams client. The following images display link unfurling feature when a link is pasted in a message extension: :::image type="content" source="../assets/images/messaging-extension/unfurl-link.png" alt-text="unfurl link"::: The following table helps you select a message extension type to get started: * More flexible. * Message extension uses a Bot Framework.-* Can leverage the full capabilities of a bot. +* Can use the full capabilities of a bot. * Ideal for scenarios where the message extension needs to communicate with multiple services, manage complex logic or user interactions, or maintain state across sessions. * Supports action commands, search commands, and link unfurling. The following table helps you select a message extension type to get started: | **Sample name** | **Description** | **.NET** | **Node.js** | **Python** | **Manifest**| ||-|-|||| | Message extension with action-based commands | This sample shows how to define action commands, create dialog, and respond to dialog submit action. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-action/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-action/nodejs) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-action/python) |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-action/csharp/demo-manifest/msgext-action.zip)-| Message extension with search-based commands | This sample shows how to build a Search-based Message Extension. It searches nuget packages and displays the results in search based messaging extension. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/nodejs) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/python) |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/csharp/demo-manifest/msgext-search.zip) +| Message extension with search-based commands | This sample shows how to build a Search-based Message Extension. It searches NuGet packages and displays the results in search based messaging extension. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/nodejs) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/python) |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-search/csharp/demo-manifest/msgext-search.zip) |Message extension action preview| This sample shows how to use action preview in Messaging Extensions using Bot Framework v4. |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-action-preview/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-action-preview/nodejs) |NA|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-action-preview/csharp/demo-manifest/msgext-action-preview.zip) |-|Message extension action for task scheduling|This sample shows how to schedule a task from message extension action command and get a reminder card at a scheduled date and time.|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-message-reminder/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-message-reminder/nodejs)| NA |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-message-reminder/csharp/demo-manifest/msgext-message-reminder.zip) +|Message extension action for task scheduling|This sample shows how to schedule a task from message extension action command and get a reminder card at a scheduled date and time.|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-message-reminder/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-message-reminder/nodejs)| NA |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/msgext-message-reminder/csharp/demo-manifest/msgext-message-reminder.zip)| +| Northwind inventory message extension| This sample demonstrates how to use a Teams message extension as a plugin in Microsoft Copilot for Microsoft 365. | NA |[View](https://github.com/OfficeDev/Copilot-for-M365-Plugins-Samples/tree/main/samples/msgext-northwind-inventory-ts) |NA |NA |
platform | Manifest Schema | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema.md | Your message extension must declare one or more commands with a maximum of 10 co Each command item is an object with the following structure: -|Name| Type| Maximum size | Required | Description| Copilot to show user prompts to start with +|Name| Type| Maximum size | Required | Description| |||||| |`id`|String|64 characters|✔️|The ID for the command.| |`type`|String|||Type of the command. One of `query` or `action`. Default: **query**.| |
platform | Cards Reference | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/cards-reference.md | The following code shows an example of an Adaptive Card: } ``` +### Adaptive Cards best practices ++Adaptive Cards must not display a horizontal scroll. To avoid horizontal scrolls, donΓÇÖt specify a fixed width. ++* **ColumnSets** ++ * Avoid defining ColumnSets with more than three columns. + * DonΓÇÖt use explicit pixel width on more than one column in the set. + * When using an explicit width, donΓÇÖt specify a value that would make the column use more than 1/4 of the narrowest possible card width (for example, the width of a card in the meeting chat pane or in Copilot). + * In general, 48 pixels is about the maximum explicit width youΓÇÖd want to use, although there may be exceptions depending on the scenario. ++* **Sizing images** + * When using an image inside a ColumnSet with more than one Column, prefer specifying the size of the column that contains the image rather than the image itself (set the imageΓÇÖs size to ΓÇ£autoΓÇ¥ or ΓÇ£stretchΓÇ¥). + * If your image isnΓÇÖt in a ColumnSet, itΓÇÖs generally advisable to set its size to ΓÇ£autoΓÇ¥ or ΓÇ£stretchΓÇ¥. + * If using an explicit width in pixels, make sure it doesnΓÇÖt exceed 3/4 of the narrowest card width. + * When using explicit sizing in pixels, either set the width or the height, but not both. Setting only one will ensure your image has the proper aspect ratio. + * In general, only set the width of the image, not the height, although there may be exceptions depending on the scenario. + #### Additional information on Adaptive Cards > [!Note] |
platform | Whats New | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/whats-new.md | Discover Microsoft Teams platform features that are generally available (GA). Yo Teams platform features that are available to all app developers. -**2024 June** +**2024 July** -* ***June 26, 2024***: [Introduced AI label, citations, feedback buttons, and sensitivity labels in bot messages.](bots/how-to/format-ai-bot-messages.md) -* ***June 26, 2024***: [Debug message extension app in Test Tool.](toolkit/debug-message-extension-app-in-test-tool.md) -* ***June 24, 2024***: [Static tabs are generally available for chats, channels, and meetings.](tabs/what-are-tabs.md) +***July 02, 2024***: [You can extend bot-based message extension plugins to Teams meetings.](messaging-extensions/build-bot-based-plugin.md#enable-message-extension-as-a-plugin-for-copilot-for-meetings) :::column-end::: :::row-end::: Teams platform features that are available to all app developers. | **Date** | **Update** | **Find here** | | -- | | -|+| 26/06/2024 | Introduced AI label, citations, feedback buttons, and sensitivity labels in bot messages. | Build bots > Build conversations > [Bot messages with AI-generated content](bots/how-to/format-ai-bot-messages.md)| +| 26/06/2024 | Debug message extension app in Test Tool. |Tools and SDKs > Teams Toolkit for Visual Studio Code > Prepare to build apps using Teams Toolkit > Debug your Teams app > [Debug message extension app in Test Tool](bots/how-to/format-ai-bot-messages.md)| +| 24/06/2024 | Static tabs are generally available for chats, channels, and meetings. | Build tabs > [Build tabs for Teams](tabs/what-are-tabs.md)| |17/05/2024|Deploy Teams app to container service.|Tools and SDKs > Teams Toolkit for Visual Studio Code > Host your app on Azure > [Deploy Teams app to container service](toolkit/deploy-Teams-app-to-container-service.md)| |12/04/2024|Implement authentication in API-based search message extensions to provide secure and seamless access to your app.|Build message extensions > Build message extensions using API > [Authentication](messaging-extensions/build-api-based-message-extension.md#authentication)| |12/04/2024|Introducing app manifest v1.17 with semanticDescription, samplePrompts, and dashboardCards.|[App manifest](resources/schem)| |