Updates from: 02/29/2024 06:56:44
Service Microsoft Docs article Related commit history on GitHub Change details
platform Build Tabs For Meeting https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/build-tabs-for-meeting.md
description: Learn how to build a tab for a meeting chat, meeting side panel, an
ms.localizationpriority: high Previously updated : 04/07/2022 Last updated : 12/05/2023 # Build tabs for meeting
In public scheduled channel meetings, after a meeting tab is added, you can sele
> [!NOTE] > On mobile, anonymous users can't access apps in scheduled public channel meetings.
+### Meeting apps in Outlook
+
+Tabs in Teams meetings are also supported in Microsoft Outlook from app manifest version 1.13 or later. You can build meeting tab apps that can be configured and added to Teams meetings scheduled from Outlook for Windows. For more information, see [extend a Teams meeting app to Outlook](../m365-apps/extend-m365-meeting-app.md).
+ ### Advanced tab APIs TeamsJS is a rich library used to create Tabs using JavaScript. Use the latest TeamsJS (V.2.0 or later) to work in Teams, Microsoft 365 app, and Outlook. For more information, see [Teams JavaScript client library](/microsoftteams/platform/tabs/how-to/using-teams-client-library).
platform Locally With An Ide https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/debug/locally-with-an-ide.md
# Test and debug your bot locally with IDE
-When testing your bot, you need to consider both the contexts you want your bot to run in, and any functionality you may have added to your bot that requires data specific to Microsoft Teams. Ensure that the method you choose to test your bot aligns with its functionality.
+When testing your bot, you need to consider both the contexts you want your bot to run in, and any functionality you add to your bot that requires data specific to Microsoft Teams. Ensure that the method you choose to test your bot aligns with its functionality.
## Test by uploading to Teams
Use the https endpoint provided by ngrok in your [app manifest](../../../resourc
## Test your bot without uploading to Teams
-Occasionally, it's necessary to test your bot without installing it as an app in Teams. We provide two methods for testing the bot. Testing your bot without installing it as an app can be useful to ensure your bot is available and responding. However, it won't allow you to test the full breadth of Microsoft Teams functionality you've added to your bot. If you want to fully test your bot, see [testing by uploading](#test-by-uploading-to-teams).
+Occasionally, it's necessary to test your bot without installing it as an app in Teams. We provide two methods for testing the bot. Testing your bot without installing it as an app can be useful to ensure your bot is available and responding. However, it doesn't allow you to test the full breadth of Microsoft Teams functionality you've added to your bot. If you want to fully test your bot, see [testing by uploading](#test-by-uploading-to-teams).
### Use the Bot Emulator
-The Bot Framework Emulator is a desktop application that permits bot developers to test and debug their bots locally or remotely. The emulator helps you to chat with your bot and inspect the messages that your bot sends and receives. This is useful to verify that your bot is available and responding. However, the emulator doesn't permit you to test any Teams-specific functionality you've added to the bot, nor the responses from your bot are an accurate visual representation of how they're rendered in Teams. If you need to test either of these, it's best to [upload your bot](#test-by-uploading-to-teams).
+The Bot Framework Emulator is a desktop application that permits bot developers to test and debug their bots locally or remotely. The emulator helps you to chat with your bot and inspect the messages that your bot sends and receives. This is useful to verify that your bot is available and responding. However, the emulator doesn't permit you to test any Teams-specific functionality you add to the bot. The responses from your bot aren't an accurate visual representation of how they're rendered in Teams. If you need to test either of these, it's best to [upload your bot](#test-by-uploading-to-teams).
For more information, see [complete instructions on the Bot Framework Emulator](/azure/bot-service/bot-service-debug-emulator?view=azure-bot-service-4.0&preserve-view=true). ### Talk to your bot directly by ID > [!Important]
-> Talking to your bot by ID is intended for basic testing purposes only. Any Teams-specific functionality you have added to your bot fails to work.
+>
+> * Talking to your bot by ID is intended for basic testing purposes only. Any Teams-specific functionality you add to your bot fails to work.
+> * From January 31 2024, users can't chat with bots that aren't connected to a Microsoft Teams app such as Azure bots created through the Bot Framework or Power Virtual Agents. We recommend you to create a new Teams app connected to the Azure Bot using the [Developer Portal](../../../concepts/build-and-test/manage-your-apps-in-developer-portal.md#configure), publish it to Teams, and allow users to install the app using the [app permission policies](/microsoftteams/teams-app-permission-policies#edit-an-app-permission-policy). If you want to test the app, you can assign users an [app setup policy](/microsoftteams/teams-app-setup-policies#manage-app-setup-policies) that allows uploading custom apps and chat with the Azure bot through a direct link to a chat.
Initiate a conversation with your bot by using its ID. When a bot is added through one of these methods, it isn't addressable in channel conversations, and you can't take advantage of other Teams app capabilities like tabs or message extensions. Initiate a conversation in one of the following ways: * On the [Bot Dashboard](https://dev.botframework.com/bots) page for your bot, under **Channels**, select **Add to Microsoft Teams**. Teams launches a personal chat with your bot. * Directly reference your bot's app ID from within Teams:
- 1. On the [Bot Dashboard](https://dev.botframework.com/bots) page for your bot, under **Details**, copy the **Microsoft App ID** for your bot.
-
- ![Getting the AppID for the bot](~/assets/images/bots_appid_botframework.png)
-
- 2. Open Microsoft Teams, on the Chat pane, selects the **Add chat** icon. In **To:**, paste your bot's Microsoft App ID.
+ 1. Go to [Bot Dashboard](https://dev.botframework.com/bots) > **Details** and copy the **Microsoft App ID** for your bot.
+
+ :::image type="content" source="../../../assets/images/bots_appid_botframework.png" alt-text="Screenshot shows the Microsoft App ID in the details page.":::
- ![Uploading bots](~/assets/images/bots_uploading.png)
+ 2. Open Microsoft Teams, on the Chat pane, select the **New chat** icon. In the **To:** filed, enter your bot's Microsoft App ID.
+
+ :::image type="content" source="../../../assets/images/bots_uploading.png" alt-text="Screenshot shows the New chat icon and the To field in Teams.":::
The app ID must resolve to your bot name.
Your bot receives the `conversationUpdate` event as you add the bots to a team,
## Block a bot in personal chat
-Users can choose to block your bot from sending personal chat messages. They may toggle this by right-clicking your bot in the chat channel and choosing **Block bot conversation**. This means, your bots continue to send messages, however, the user doesn't receive the messages.
+Users can choose to block your bot from sending personal chat messages. They might toggle this by right-clicking your bot in the chat channel and choosing **Block bot conversation**. This means, your bots continue to send messages, however, the user doesn't receive the messages.
-![Blocking a bot](~/assets/images/bots/botdisable.png)
## Remove a bot from a team
-Users can delete the bot by choosing the trash-can icon on the bots list in their team's view. This only removes the bot from that team's use. Individual users can still interact in personal context. Bots in personal context can't be disabled or removed by users.
+Users can delete the bot by choosing the trash-can icon on the bots list in their team's view. This only removes the bot from that team's use. Individual users can still interact in personal context. Users can't remove or disable bots in personal context.
## Disable a bot in Teams
platform Deep Link Application https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/deep-link-application.md
Last updated 05/04/2023
# Deep link to an application
-You can configure deep links to a tab, to open an app install dialog, to browse within the app, and more. Use deep links in [bot](~/bots/what-are-bots.md) and [connector](~/webhooks-and-connectors/what-are-webhooks-and-connectors.md) messages that inform users about changes to your tab, or to items within it. Deep links to custom apps are supported, however, if there's an app in the Microsoft Teams Store with the same app ID as the custom app ID specified in its app manifest (previously called Teams app manifest), then deep link opens the app from the Teams Store instead of the custom app.
+Deep links are configured to perform various actions such as opening a tab, initiating an app install dialog, or browsing within the app. Use deep links in [bot](~/bots/what-are-bots.md) and [connector](~/webhooks-and-connectors/what-are-webhooks-and-connectors.md) messages to inform users about changes to your tab or its items.
-If your app is approved for Teams mobile platform, you can create a deep link to the app on mobile. If you want the deep link to work on Teams iOS, you need the Apple App Store Connect Team ID for the deep link to work. For more information, see [how to update Apple App Store Connect Team ID](../deploy-and-publish/appsource/prepare/update-apple-store-team-connect-id.md).
+You can create a deep links for a custom app, however, if an app in the Microsoft Teams Store shares the same app ID as the custom app ID, the deep link opens the app from Teams Store instead of the custom app. You can also create a deep link to the app for mobile, after your app is approved for the Teams mobile platform. For the deep link to work on Teams iOS, you need the Apple App Store Connect Team ID. For more information, see [how to update Apple App Store Connect Team ID](../deploy-and-publish/appsource/prepare/update-apple-store-team-connect-id.md).
Deep links allow users to know more about an app and install it in different scopes. You can also create deep links for your app users to go to specific pages within your app. In this article, learn how to create a deep link:
Deep links allow users to know more about an app and install it in different sco
## Deep link to open application install dialog
-You can use deep links to allow app user to open an app install dialog to know more information about the app or install it in other contexts. You can create a deep link in the following ways:
+Deep links allow app users to open an application install dialog to know more information about the app or install it in different contexts. You can create a deep link to application in the following ways:
* [Configure deep link manually using your app ID](#configure-deep-link-manually-using-your-app-id). * [Configure deep link using TeamsJS library](#configure-deep-link-using-teamsjs-library). #### Configure deep link manually using your app ID
-Following is the deep link format to open an app install dialog from your Teams client:
+Here's the deep link format you need to open an app install dialog from your Teams client using app ID:
`https://teams.microsoft.com/l/app/<your-app-id>?tenantId=<tenantId>`
-Where `<your-app-id>` is your application ID (f46ad259-0fe5-4f12-872d-c737b174bcb4). To know more about different app IDs see, [app ID used for different apps](#app-id-used-for-different-apps).
+Where `<your-app-id>` is your application ID (f46ad259-0fe5-4f12-872d-c737b174bcb4).
##### App ID used for different apps
Following are the different app IDs that are used for deep links:
#### Configure deep link using TeamsJS library
-Applications can use the TeamsJS library to open the app install dialog without manually generating the deep link. Following is an example to open the app install dialog using TeamsJS at the trigger of your choice in the app:
+Applications can use TeamsJS library to initiate the app installation dialog, eliminating the need for manual deep link generation. Here's an example of how to trigger the app installation dialog using TeamsJS within your application:
# [TeamsJS v2](#tab/teamsjs-v2)
microsoftTeams.executeDeepLink("https://teams.microsoft.com/l/app/<appId>");
## Deep link to browse within your app
-App users can browse through content in Teams from your tab using TeamsJS library. This is useful if your tab needs to connect users with other content in Teams, such as to a channel, message, another tab, or to open a scheduling dialog. In few instances navigation can also be accomplished using the TeamsJS library and it's recommended to use typed capabilities of the TeamsJS library wherever possible.
+App users can browse through content in Teams from your tab using TeamsJS. You can use deep link to browse within your app, if your tab needs to connect users with other content in Teams, such as to a channel, message, another tab, or to open a scheduling dialog. In few instances navigation can also be accomplished using TeamsJS and it's recommended to use typed capabilities of TeamsJS wherever possible.
-One of the benefits of using TeamsJS, particularly for Teams app that might run in other hosts (Outlook and Office), is that it's possible to check if the host supports the capability you're attempting to use. To check a host's support of a capability, you can use the `isSupported()` function associated with the namespace of the API. The TeamsJS library organizes APIs into capabilities by way of namespaces. For example, prior to usage of an API in the `pages` namespace, you can check the returned Boolean value from `pages.isSupported()` and take the appropriate action within the context of your app and app's UI.
+One of the benefits of using TeamsJS, particularly for Teams app that might run in other hosts (Outlook and Office), is that it's possible to check if the host supports the capability you're attempting to use. To check a host's support of a capability, you can use the `isSupported()` function associated with the namespace of the API. TeamsJS organizes APIs into capabilities by way of namespaces. For example, prior to usage of an API in the `pages` namespace, you can check the returned Boolean value from `pages.isSupported()` and take the appropriate action within the context of your app and app's UI.
-For more information about capabilities and the APIs in the TeamsJS library, see [Building tabs and other hosted experiences with the TeamsJS library](~/tabs/how-to/using-teams-client-sdk.md#apis-organized-into-capabilities).
+For more information about capabilities and the APIs in TeamsJS, see [Building tabs and other hosted experiences with the TeamsJS library](~/tabs/how-to/using-teams-client-sdk.md#apis-organized-into-capabilities).
You can configure deep links to browse within your app in the following ways: * [Configure deep link to browse within your app manually](#configure-deep-link-to-browse-within-your-app-manually)
-* [Configure deep link to a tab using TeamsJS library](#configure-deep-link-to-a-tab-using-teamsjs-library)
+* [Configure deep link to a tab using TeamsJS](#configure-deep-link-to-a-tab-using-teamsjs)
#### Configure deep link to browse within your app manually
The query parameters are:
| Parameter name | Description | Example | |:|:--|:| | `appId`&emsp; | The ID from Microsoft Teams admin center. |fe4a8eba-2a31-4737-8e33-e5fae6fee194|
-| `entityId`&emsp; | The ID of the tab, which you provided when [configuring the tab](~/tabs/how-to/create-tab-pages/configuration-page.md). When generating a URL for deep linking, continue to use entity ID as a parameter name in the URL. When configuring the tab, the context object refers to the `entityId` as `page.id`. |Tasklist123|
+| `entityId`&emsp; | The ID of the tab, which you provided when [configuring the tab](~/tabs/how-to/create-tab-pages/configuration-page.md). When generating a URL for deep linking, continue to use entity ID as a parameter name in the URL. When configuring the tab, the context object refers to the `entityId` as `page.id`. |Tasklist 123|
| `entityWebUrl` or `subEntityWebUrl`&emsp; | An optional field with a fallback URL to use if the client doesn't support rendering the tab. | `https://tasklist.example.com/123` or `https://tasklist.example.com/list123/task456` | | `entityLabel` or `subEntityLabel`&emsp; | A label for the item in your tab to use when displaying the deep link. | Task List 123 or Task 456 |
-| `context.subEntityId`&emsp; | An ID for the item within the tab. When generating a URL for deep linking, continue to use `subEntityId` as the parameter name in the URL. When configuring the tab, the context object refers to the `subEntityId` as `page.subPageId`. |Task456 |
+| `context.subEntityId`&emsp; | An ID for the item within the tab. When generating a URL for deep linking, continue to use `subEntityId` as the parameter name in the URL. When configuring the tab, the context object refers to the `subEntityId` as `page.subPageId`. |Task 456 |
| `context.channelId`&emsp; | Microsoft Teams channel ID that is available from the tab [context](~/tabs/how-to/access-teams-context.md). This property is available only in configurable tabs with a scope of **team**. It isn't available in static tabs, which has a **personal** scope.| 19:<cbe3683f25094106b826c9cada3afbe0@thread.skype> | | `context.chatId`&emsp; | Chat ID that is available from the tab [context](~/tabs/how-to/access-teams-context.md) for group and meeting chat. | 17:b42de192376346a7906a7dd5cb84b673@thread.v2 | | `context.contextType`&emsp; | Chat is the only supported `contextType` for meetings. | chat |
The query parameters are:
> var taskItemUrl = 'https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=' + encodedWebUrl + '&context=' + encodedContext; > ```
-#### Configure deep link to a tab using TeamsJS library
+#### Configure deep link to a tab using TeamsJS
-You can configure deep links in your app through the TeamsJS library to allow the app users browse different pages within your app. The following code demonstrates how to navigate to a specific entity within your Teams app:
+You can configure deep links in your app through TeamsJS to allow the app users browse different pages within your app. The following code demonstrates how to navigate to a specific entity within your Teams app:
# [TeamsJS v2](#tab/teamsjs-v2)
platform Deep Link Teams https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/deep-link-teams.md
Last updated 01/31/2023
# Deep link to Teams chat
-You can create a deep link to a Teams chat, such as to start a new chat, browse to a channel conversation, and to a file in a channel.
+You can create a deep link to a Teams chat, such as to start a new chat, go to a channel conversation, and access a file within a channel.
In this article, youΓÇÖll learn to create a deep link:
In this article, youΓÇÖll learn to create a deep link:
You can navigate to or create private chats between users with the Microsoft Teams JavaScript client library (TeamsJS) by specifying the set of participants. If a chat doesnΓÇÖt exist with the specified participants, the user is navigated to an empty new chat.
-When a user creates a new chat using a deep link, Teams creates the new chat in the draft state until the user sends the first message. You can also provide the name of the chat if it doesnΓÇÖt already exist, along with text that should be inserted into the user's compose box. You can think of this as a shortcut for the user taking the manual action of navigating to or creating the chat, and then typing out the message.
+When a user creates a new chat using a deep link, Teams creates the new chat in the draft state until the user sends the first message. You can also provide the name of the chat if it doesnΓÇÖt already exist, along with text that should be inserted into the user's compose box. Consider this a shortcut for the user taking the manual action of navigating to or creating the chat and then compose the message.
As a use-case example, if youΓÇÖre retrieving a Microsoft 365 user profile information from your bot as a card, this deep link can allow the app user to easily chat with that person.
Example: `https://teams.microsoft.com/l/message/19:253f5895-9a62-4362-8d38-43f02
The query parameters are:
-* `chatId`: Chat ID of the conversation. The supported format for `chatId` is 19:xxx. For example, `19:253f5895-9a62-4362-8d38-43f0205c702c_f1b94dcf-0aa3-4989-bcdf-ef4a5ed00f86@unq.gbl.spaces`.</br>
+* `chatId`: Chat ID of the conversation. The supported format for `chatId` is 19: xxx. For example, `19:253f5895-9a62-4362-8d38-43f0205c702c_f1b94dcf-0aa3-4989-bcdf-ef4a5ed00f86@unq.gbl.spaces`.</br>
Apps can read a chat ID through app context in Teams, incoming payload to bot, or through [Microsoft Graph APIs](/graph/api/chat-get?view=graph-rest-1.0&tabs=http&preserve-view=true). > [!NOTE] > For one-on-one chats with bot, the incoming payload to bot contains the conversation ID in a:xxx format.
platform Prepare Your O365 Tenant https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/prepare-your-o365-tenant.md
Microsoft 365 subscribers can develop apps for Microsoft Teams with one of the f
## Create your development environment
-If you don't have a Microsoft 365 account, you must sign up for a [Microsoft 365 Developer Program](https://developer.microsoft.com/microsoft-365/dev-program) subscription. The subscription is free for 90 days and continues to renew as long as you're using it for development activity. If you have a Visual Studio Enterprise or Professional subscription, both programs include a free Microsoft 365 [developer subscription](https://aka.ms/MyVisualStudioBenefits). It's active as long as your Visual Studio subscription is active. For more information, see [set up a Microsoft 365 developer subscription](/office/developer-program/office-365-developer-program-get-started).
+If you have a Visual Studio Enterprise or Professional subscription, both programs include a free Microsoft 365 [developer subscription](https://aka.ms/MyVisualStudioBenefits). It's active as long as your Visual Studio subscription is active. For more information, see [Microsoft 365 developer subscription](https://developer.microsoft.com/microsoft-365/dev-program).
+
+If you don't have any Microsoft 365 tenant, you might qualify for a Microsoft 365 E5 developer subscription through the [Microsoft 365 Developer Program](https://aka.ms/m365devprogram); for details, see the [FAQ](/office/developer-program/microsoft-365-developer-program-faq#who-qualifies-for-a-microsoft-365-e5-developer-subscription-). Alternatively, you can sign up for a [1-month free trial](https://www.microsoft.com/microsoft-365/try) or [purchase a Microsoft 365 plan](https://www.microsoft.com/microsoft-365/business/compare-all-microsoft-365-business-products-g).
## Enable Teams for your organization
platform Apps Upload https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/apps-upload.md
You can upload Microsoft Teams apps without having to publish to your organizati
> * App installation is supported only on Teams desktop client. > * We recommend you to avoid multiple uploads of your message extension app to Teams, as it results in multiple instances of the message extension.
-From January 31 2024, users can't chat with bots that aren't connected to a Microsoft Teams app such as Azure bots created through the Bot Framework or Power Virtual Agents. We recommend you to create a new Teams app connected to the Azure Bot using the [Developer Portal](../build-and-test/manage-your-apps-in-developer-portal.md#configure), publish it to the Teams, and allow users to install the app using the [app permission policies](/microsoftteams/teams-app-permission-policies#edit-an-app-permission-policy).
+From January 31 2024, users can't chat with bots that aren't connected to a Microsoft Teams app such as Azure bots created through the Bot Framework or Power Virtual Agents. We recommend you to create a new Teams app connected to the Azure Bot using the [Developer Portal](../build-and-test/manage-your-apps-in-developer-portal.md#configure), publish it to Teams, and allow users to install the app using the [app permission policies](/microsoftteams/teams-app-permission-policies#edit-an-app-permission-policy).
If you want to test the app, you can assign users an [app setup policy](/microsoftteams/teams-app-setup-policies#manage-app-setup-policies) that allows uploading custom apps and chat with the Azure bot through a direct link to a chat.
platform Design Teams App Light Box View https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/design/design-teams-app-light-box-view.md
+
+ Title: Design your app with lightbox UI components
+
+description: Learn how to use lightbox UI component from Teams UI kit to build Microsoft Teams apps.
+ms.localizationpriority: medium
++ Last updated : 01/29/2023++
+# Designing lightbox for your Microsoft Teams app
+
+The lightbox is a display component that emphasizes important information by deactivating the page layout behind it. Information in the lightbox is noneditable and non-interactive. The lightbox view enables users to preview media content, including images, videos, audio files on a large surface over the main Teams window.
+
+The lightbox component is designed for quick reviews, understanding, or verification. It doesn't support actions for editing or collaboration. Users can initiate the lightbox in a new Teams window or open it directly in a native app or browser.
+
+# [Desktop](#tab/desktop)
++
+# [Mobile](#tab/mobile)
++++
+## Anatomy
+
+# [Desktop](#tab/desktop)
+
+The lightbox view includes a header, center stage, and carousel.
++
+|Counter|Description|
+|-|--|
+|1|**Back**: Button to navigate to the previoius screen|
+|2|**Open in**: Button (basic or split) to navigate to the external window|
+|3|Buttons with content actions: Zoom in or out, Share, Download, or open chat panel|
+|4|Chevrons for slide show|
+|A|**Lightbox header**: Actionable|
+|B|**Center stage**: Main content container|
+|C|**Carousel**: Actionable|
+
+# [Mobile](#tab/mobile)
++
+|Counter|Description|
+|-|--|
+|A|**Header**: Provide file name and additional functions as Chat, Download, Share|
+|1|**Content**: Center stage|
+++
+## Sizing of the components
+
+Following is the default sizing for the container with the main content:
+
+# [Image](#tab/image)
++
+# [Carousel](#tab/carousel)
+
+Contains all media files from the current chat, channel post, or file folder.
++++
+## Best practices
+
+Recommended best practices for Lightbox
+
+#### Do: Use a lightbox component to preview files that present media such an image, video, audio in a full-screen view
+
+Help to save time during file opening. Opening on top of the main content. With easy navigation through the files and fast soft dismiss.
++
+#### Don't: Use a lightbox for content editing or interaction
+
+Information in the lightbox is noneditable and non-interactive. Provide clear options in **Open in** menu, where users can start to interact with content.
++
+#### Do: Use a Lightbox component to preview documents
+
+Documents, which are intended just for the preview option or have **Preview** option from **More option**.
++
+#### Don't: Use a lightbox in collaborative environments where itΓÇÖs helpful to see live presence
+
+Users wonΓÇÖt be able to see who else is in the file and making changes from the lightbox.
++
+#### Do: Back button in the header will take to the previous screen and close the lightbox or clicking on the sides from the main content
++
+#### Don't use more button to close the lightbox
+
+You can exit the lightbox by either going back to the previous screen or tapping outside of it.
++
+#### Do: Highlight the chat panel to communicate about the previewed file
++
+#### Don't: Refer to commenting in a lightbox experience
+
+Users canΓÇÖt comment in lightbox files.
++
+#### Do: Open the file in a new window if the file requires more time to focus and is editable.
++
+#### Don't: Use lightbox for files as Word, Excel, PowerPoint, and PDF. Lightbox is a good component for content preview.
+
platform Extend M365 Meeting App https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/extend-m365-meeting-app.md
+
+ Title: Extend a Teams meeting app to Outlook
+description: Here's how to ensure your Teams meeting app experience works seamlessly when extended to Outlook
Last updated : 2/28/2024+++
+ms.localizationpriority: medium
++
+# Extend a Teams meeting app to Outlook
+
+Across the Microsoft 365 ecosystem, most monthly users schedule their Microsoft Teams meetings from Outlook. To help users stay in the flow of their work, Teams meeting apps are now supported on Outlook. You can configure and add meeting apps to the Teams meetings scheduled from Outlook and also run meeting apps within the Outlook calendar.
+
+Meeting apps are essentially Teams tab apps that are designed to foster collaboration before, during, and after meetings. You can specify which contexts your meeting app supports from the app manifest (previously called Teams app manifest) through the [configurableTabs.context](../resources/schem#configurabletabs) property.
+
+> [!NOTE]
+> In addition to `configurableTabs`, your meeting app must contain at least one [app capability in personal scope](../concepts/design/personal-apps.md) (for example, `staticTabs`), for it to be available in Outlook.
+
+The following table shows the Teams meeting app contexts supported in Outlook:
+
+| Teams meeting context | App manifest value | TeamsJS value | Outlook support |
+|--|--|--|--|
+| [Meeting details view](../apps-in-teams-meetings/build-tabs-for-meeting.md#meeting-details-view) | `meetingDetailsTab` | `frameContext.content` | ✔️ |
+| [Meeting chat view](../apps-in-teams-meetings/build-tabs-for-meeting.md#meeting-chat-view) | `meetingChatTab` | `frameContext.content` | ✔️ |
+| [Meeting side panel view](../apps-in-teams-meetings/build-tabs-for-meeting.md#meeting-side-panel-view) | `meetingSidePanel` | `frameContext.sidePanel` | ✔️ |
+| [Meeting stage view](../apps-in-teams-meetings/build-tabs-for-meeting.md#meeting-stage-view) | `meetingStage` | `frameContext.meetingStage` | ❌ |
+
+If your meeting app supports stage view, other in-meeting effects, or contains capabilities such as message extensions and bots, these continue to work in Teams when the meeting is scheduled from Outlook, but doesn't appear or run in Outlook.
+
+## Prerequisites
+
+To preview your Teams meeting app in Outlook, ensure the following:
+
+* A [Microsoft 365 developer sandbox](./prerequisites.md#prepare-a-developer-tenant-for-testing) tenant with uploading enabled.
+* A test environment with Outlook for Windows desktop installed from the [Microsoft 365 Apps *Current Channel*](./prerequisites.md#install-microsoft-365-apps-in-your-test-environment).
+* [NodeJS](https://nodejs.org/download) (with npm) installed.
+* [TeamsFx CLI v2](../toolkit/TeamsFx-CLI.md) library installed from npm.
+* [Visual Studio Code](https://code.visualstudio.com/) installed to your development environment.
+* [Teams Toolkit](https://marketplace.visualstudio.com/items?itemName=TeamsDevApp.ms-teams-vscode-extension) extension for Visual Studio Code.
+
+To preview your Teams meeting app in Outlook, you can either build a new meeting app with Teams Toolkit or extend an existing Teams meeting app in Outlook.
+
+# [Build Teams meeting app for Outlook](#tab/ttk)
+
+You can build a Teams meeting app for Outlook through the Teams Toolkit extension for Visual Studio Code. To build a Teams meeting app to preview in Outlook:
+
+1. Go to Teams and sign in using your sandbox tenant account.
+
+1. Select **Calendar** > **New meeting** and schedule a meeting.
+
+ :::image type="content" source="images/teams-new-meeting.png" alt-text="New meeting panel in Teams":::
+
+1. Open the **Teams Toolkit** extension in Visual Studio Code and select **View Samples**.
+
+1. Select **My First Meeting App** > **Create** and specify the folder to create the workspace.
+
+ :::image type="content" source="images/toolkit-meeting-app-sample.png" alt-text="My First Meeting App sample in Teams Toolkit":::
+
+1. Press the **F5** key to debug and run the sample locally in Teams. Teams prompts you to install the app.
+
+1. Select **Add to a meeting** from the dropdown and select the meeting that you've scheduled earlier.
+
+ :::image type="content" source="images/teams-add-to-meeting.png" alt-text="Add app to meeting option in Microsoft Teams":::
+
+1. Select the sample tab configuration and select **Save**. The app is available in the meeting chat view.
+
+ :::image type="content" source="images/teams-meeting-chat-view.png" alt-text="{alt-text}":::
+
+# [Extend an existing Teams meeting app to Outlook](#tab/existing-app)
+
+To extend your existing Teams meeting app in Outlook, ensure the following:
+
+> [!div class="checklist"]
+>
+> * [Update your app manifest](#update-your-app-manifest).
+> * [Use Microsoft Teams JavaScript client library (TeamsJS) v2.5.0 or later](#use-teamsjs-version-250-or-later).
+> * [Configure Content Security Policy headers](#configure-csp-headers-for-outlook).
+> * [Update Microsoft Entra app registration for single sign-on (SSO)](#update-microsoft-entra-app-registration-for-sso).
+> * [Upload your updated app in Teams Admin Center](#upload-your-custom-app-in-teams-admin-center).
+
+If you have an existing meeting app, make a copy or a branch of your production project and update your app `id` in the app manifest to use a new identifier that is different from the production app ID for testing.
+
+## Update your app manifest
+
+Update the [app manifest](~/resources/schem) (previously called Teams app manifest) schema version to 1.13 or later.
+
+Open your Teams app manifest and update the `$schema` and `manifestVersion` properties as follows:
+
+```json
+{
+ "$schema" : "https://developer.microsoft.com/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
+ "manifestVersion" : "1.16"
+}
+```
+
+### Use TeamsJS version 2.5.0 or later
+
+Use TeamsJS client library version 2.5.0 or later to extend your Teams meeting app to run in Outlook. If your app uses TeamsJS v2.5.0 or later, application code changes aren't required to run in Outlook.
+
+If you need to upgrade your TeamsJS npm package from v1.x.x to the latest v2.x.x TeamsJS, you can use Teams Toolkit to help identify and automate the required code changes. For more information, see [TeamsJS library](../tabs/how-to/using-teams-client-library.md#whats-new-in-teamsjs-version-2xx).
+
+Follow these steps to update your TeamsJS to the latest version using Teams Toolkit:
+
+1. Open your app in Visual Studio Code and select **Teams Toolkit** extension.
+1. Under **View**, select **Command Palette...** or **Ctrl+Shift+P**.
+1. Run the command `Teams: Upgrade Teams JS SDK and code references`.
+
+Your package.json file references `@microsoft/teams-js@2.x.x` and your `*.js/.ts` and `*.jsx/.tsx` files are updated with:
+
+* Import statements for `teams-js@2.x.x`.
+* [Function, Enum, and Interface calls](../tabs/how-to/using-teams-client-library.md#whats-new-in-teamsjs-version-2xx) for `teams-js@2.x.x`.
+* New `"TODO"` comment reminders flagging areas that might be impacted by [Context](../tabs/how-to/using-teams-client-library.md#updates-to-the-context-interface) interface changes.
+* New `"TODO"` comment reminders to [convert callback functions to promises](../tabs/how-to/using-teams-client-library.md#callbacks-converted-to-promises).
+
+> [!NOTE]
+>
+> Upgrading to the latest TeamsJS version through Teams Toolkit doesn't update the code in the html files. You must update the html files manually.
+
+### Configure CSP headers for Outlook
+
+Teams tab applications are hosted within [iframe elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) in Outlook, as they are in Teams. If your app uses [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) (CSP) headers, add `outlook.office.com` as a [frame-ancestor](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
+
+### Update Microsoft Entra app registration for SSO
+
+[Microsoft Entra single sign-on (SSO)](../tabs/how-to/authentication/tab-sso-overview.md) for meeting apps works the same way in Outlook as it does in Teams. However, you need to manually add the Outlook application ID to your Microsoft Entra app registration.
+
+1. Sign in to [Azure portal](https://portal.azure.com) with your test tenant account.
+1. Open **App registrations**.
+1. Select your app.
+1. Select **Manage** > **Expose an API**.
+1. In the **Authorized client applications** section, add the following `Client Id` value:
+
+ |Microsoft 365 client application | Client ID |
+ |--|--|
+ |Outlook desktop | d3590ed6-52b3-4102-aeff-aad2292ab01c |
+
+ For more information on client application IDs used to extend Teams apps across the Microsoft 365, see [Teams tabs in Microsoft 365 and Outlook](extend-m365-teams-personal-tab.md#update-azure-ad-app-registration-for-sso).
+++
+You can [upload your custom app in Teams admin center](#upload-your-custom-app-in-teams-admin-center) and [preview your meeting app in Outlook](#preview-your-meeting-app-in-outlook).
+
+### Upload your custom app in Teams admin center
+
+To test your app in Microsoft 365 and Outlook, upload your [app package](../concepts/build-and-test/apps-package.md) to Teams admin center.
+
+1. Package your Teams [app manifest](../resources/schem#build-app-package)
+
+1. Go to [Teams admin center](https://admin.teams.microsoft.com) and select **Teams apps** > **Manage apps**.
+
+1. Select **Upload new app**, and select your app package.
+
+After your meeting app is uploaded to Teams admin center, it's available in both Teams and Outlook. For your app to display in the **Apps** menu wait for few minutes and restart Outlook for Windows.
+
+### Preview your meeting app in Outlook
+
+To preview your meeting app in Outlook for Windows ensure the app is running locally and follow the steps:
+
+1. Open Outlook for Windows signed in with your test tenant account. If Outlook is already running, close and restart it again.
+
+1. Open **Calendar** > **New Meeting**. For a meeting app to run in Outlook, ensure the meeting is a **Teams Meeting** as other meetings scheduled from Outlook aren't supported.
+
+1. From the meeting scheduling window, select **All Apps**. Your uploaded meeting app appears among your installed meeting apps.
+
+ :::image type="content" source="images/outlook-meeting-all-apps.png" alt-text="Uploaded meeting app showing in `All Apps` menu of Outlook meeting scheduler":::
+
+1. Select your meeting app. A configuration dialog appears, where the user configures any relevant app settings for their specific meeting.
+
+ :::image type="content" source="images/outlook-meeting-app-configuration.png" alt-text="Meeting app configuration page showing from Outlook meeting scheduler":::
+
+1. Select **Add**. Your meeting app displayed in the **Apps** section and in the side panel of the scheduling window.
+
+To remove or configure your app in the scheduling window, select the dropdown menu on your app and select the following:
+
+* **About**: How the app appears in the Microsoft Teams Store.
+* **Settings**: Update the app configuration for the specific meeting.
+* **Remove**: Remove the app from the meeting.
+
+ :::image type="content" source="images/outlook-meeting-app-side-panel.png" alt-text="Meeting app running in Outlook meeting scheduler side panel":::
+
+## Code sample
+
+| **Sample Name** | **Description** | **Node.js** |
+||--|--|
+| HelloWorld In-meeting app| Simple meeting app demonstrating meeting details view, chat view, and side panel. Works in Teams and Outlook. | [View](https://github.com/OfficeDev/TeamsFx-Samples/tree/dev/hello-world-in-meeting) |
+
+## See also
+
+* [Extend Teams apps across Microsoft 365](overview.md)
+* [Support and feedback](~/feedback.md)
platform Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/overview.md
Title: Extend Teams apps across Microsoft 365 description: Learn how to extend Teams apps across Microsoft 365 (running in Teams, Outlook, and Microsoft 365 as application hosts). Previously updated : 01/26/2024 Last updated : 02/02/2024
# Extend Teams apps across Microsoft 365
-With the latest releases of [Microsoft Teams JavaScript client library](../tabs/how-to/using-teams-client-library.md) (TeamsJS version 2.0.0 and later), [app manifest (previously called Teams app manifest)](../resources/schem), you can build and update Teams apps to run in other high-usage Microsoft 365 products and publish them to the Microsoft commercial marketplace ([Microsoft AppSource](https://appsource.microsoft.com/)) or your organization's private app store.
+With the latest releases of [Microsoft Teams JavaScript client library](../tabs/how-to/using-teams-client-library.md) (TeamsJS version 2.0.0 and later), [app manifest](../resources/schem), you can build and update Teams apps to run in other high-usage Microsoft 365 products and publish them to the Microsoft commercial marketplace ([Microsoft AppSource](https://appsource.microsoft.com/)) or your organization's private app store.
Extending your Teams app across Microsoft 365 provides a streamlined way to deliver cross-platform apps to an expanded user audience: from a single codebase, you can create app experiences tailored for Teams, Outlook, and Microsoft 365 app environments. End users don't have to leave the context of their work to use your app, and administrators benefit from a consolidated management and deployment workflow.
The Teams app platform continues to evolve and expand holistically into the Micr
| Teams app features| App manifest element | Teams support |Outlook support | Microsoft 365 app support | Notes | |--|--|--|--|--|--| | [**Tabs-personal scope**](../tabs/how-to/create-personal-tab.md) |`staticTabs` | Web, Desktop, Mobile | Web, Desktop, Mobile (Android, iOS) | Web, Desktop, Mobile (Android, iOS)| Channel and group scopes aren't supported for Microsoft 365. For more information, see [Teams JavaScript client library](../tabs/how-to/using-teams-client-sdk.md#microsoft-365-support-running-teams-apps-in-office-and-outlook).
+| [**Meeting apps**](extend-m365-meeting-app.md)|`configurableTabs`|Web, Desktop, Mobile|Desktop|-|Meeting stage view isn't supported in Outlook. See [notes](extend-m365-meeting-app.md).|
| [**Message extensions-search-based**](../messaging-extensions/how-to/search-commands/define-search-command.md)| `composeExtensions` | Web, Desktop, Mobile| Web, Desktop | - |For limitations and troubleshooting, see [notes](extend-m365-teams-message-extension.md#limitations). | | [**Action-based message extensions**](../messaging-extensions/how-to/action-commands/define-action-command.md)| `composeExtensions` | Web, Desktop, Mobile| Web | - | Viewable/actionable (not composable) in Teams/Outlook mobile preview (iOS, Android). For limitations and troubleshooting, see [notes](extend-m365-teams-message-extension.md#limitations). | | [**Link unfurling (including Stage View)**](../tabs/tabs-link-unfurling.md) | `composeExtensions.messageHandlers` | Web, Desktop | Web, Desktop | - | See notes on [link unfurling](extend-m365-teams-message-extension.md) and [Stage View](extend-m365-teams-message-extension.md)| | [**Adaptive Card Loop components**](./design-loop-components.md)|`composeExtensions.messageHandlers`|Web, Desktop |Web, Desktop (only for [new Outlook](https://support.microsoft.com/office/getting-started-with-the-new-outlook-for-windows-656bb8d9-5a60-49b2-a98b-ba7822bc7627) |-| Viewable (not composable) in Teams/Outlook mobile preview (iOS, Android). See [notes](cards-loop-component.md).| | [**Stage View**](extend-m365-teams-message-extension.md)|`composeExtensions.messageHandlers`|Web, Desktop, Mobile|Web (preview), Desktop (preview)|-| Viewable/actionable (not composable) in Outlook mobile preview (iOS, Android). See [notes](extend-m365-teams-message-extension.md).|
-| [**Office Add-ins**](/office/dev/add-ins/develop/json-manifest-overview) (preview) | `extensions` | - | Web, Desktop | - | Only available in [devPreview](../resources/schem) app manifest version. See [notes](#office-add-ins-preview).|
+| [**Outlook Add-ins**](/office/dev/add-ins/develop/json-manifest-overview) (preview) | `extensions` | - | Web, Desktop | - | Only available in [devPreview](../resources/schem) app manifest version. See [notes](#outlook-add-ins-preview).|
Enrollment to [Microsoft 365 Targeted Release](/microsoft-365/admin/manage/release-options-in-office-365) and [Microsoft 365 Apps update channel](/deployoffice/change-update-channels) requires admin opt-in for the entire organization or selected users. Update channels are device specific and apply only to installations of Microsoft 365 running on Windows.
Enrollment to [Microsoft 365 Targeted Release](/microsoft-365/admin/manage/relea
For guidance about the app manifest and TeamsJS versioning guidance, and further details about current Teams platform capability support across Microsoft 365, see the [Teams JavaScript client library overview](../tabs/how-to/using-teams-client-library.md).
-## Personal tabs and messaging extensions in Outlook and Microsoft 365 app
+## Personal tabs in Outlook and Microsoft 365 app
Reach your users where they are, right in the context of their work by extending your web app as a [Teams personal tab](extend-m365-teams-personal-tab.md) application that also runs in both Outlook and Microsoft 365 app. Teams personal tabs built and hosted with [SharePoint Framework](extend-m365-teams-personal-tab.md#sharepoint-framework-spfx-apps) (SPFx) version 1.16 and later are also supported in Outlook and Microsoft 365 app.
On mobile, you can test and debug your Teams personal tab running on Microsoft 3
-You can also extend your search-based [Teams message extensions](extend-m365-teams-message-extension.md) to Outlook on the web and Windows desktop, enabling your customers to search and share results through the compose message area of Outlook, in addition to Microsoft Teams clients.
+## Message extensions in Outlook
+
+You can extend your [Teams message extensions](extend-m365-teams-message-extension.md) to Outlook on the web and Windows in addition to Microsoft Teams clients.
:::image type="content" source="images/outlook-teams-messaging-ext.png" alt-text="The screenshot is an example that shows Message extension running in Outlook and Teams.":::
Link unfurling works in Outlook web and Windows environments the same way it doe
Build your app with the latest [app manifest](../resources/schem) to benefit the latest consolidated Microsoft 365 app development process. Then deliver a streamlined deployment, installation, and admin experience for your customers that expands the reach and usage of your app.
+## Meeting apps in Outlook
+
+Users can discover and use your meeting app right in the flow of their work when you [extend your meeting app to Outlook](extend-m365-meeting-app.md) for Windows.
++ ## Use app manifest across Microsoft 365 With an aim toward simplifying and streamlining the Microsoft 365 developer ecosystem, we're continuing to expand the app manifest into other areas of Microsoft 365 with the following.
-### Office Add-ins (preview)
+### Outlook Add-ins (preview)
-You can now define and deploy Office Add-ins in the [developer preview version](../resources/schem) of the Microsoft Teams app manifest. Currently, this preview is limited to Outlook Add-ins running on subscription Microsoft 365 for Windows app.
+You can now define and deploy Outlook Add-ins in the [developer preview version](../resources/schem) of the app manifest.
For more information, see [app manifest for Office Add-ins (preview)](/office/dev/add-ins/develop/json-manifest-overview).
platform Prerequisites https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/prerequisites.md
To install Microsoft 365 applications in your test environment:
|Teams personal tabs in Outlook | `Current`| |Teams search-based message extensions in Outlook | `Current`| |Outlook Add-ins | `BetaChannel` |
- |Meeting apps in Outlook | `BetaChannel` |
+ |Meeting apps in Outlook | `Current` |
1. Open Command Prompt and go to the local folder path. 1. Run `setup.exe /configure configuration-Office365-x86.xml` (or use the **x64.xml* file, depending on your setup).
platform High Quality Message Extension https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/high-quality-message-extension.md
For M365 Chat, a search-based message extension must support compound utterances
* 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. <br>
-<details><summary>The following code is an example of multiple parameters defined in app manifest:</summary>
+<details><summary>The following JSON code is an example of multiple parameters defined in app manifest:</summary>
```json "commands": [
Message extensions respond to a user input with an Adaptive Card. An Adaptive Ca
:::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":::
- <details><summary>Adaptive Card response example</summary>
+ <br/>
+ <details><summary>Adaptive Card response template example</summary>
```json {
- "version": "1.0",
- "responseLayout": "grid",
- "responseCardTemplate": {
- "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
- "type": "AdaptiveCard",
- "version": "1.4",
- "body": [
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "type": "AdaptiveCard",
+ "version": "1.5",
+ "body": [
+ {
+ "type": "Container",
+ "items": [
+ {
+ "type": "TextBlock",
+ "text": "${companyName}",
+ "size": "Medium",
+ "wrap": true,
+ "style": "heading"
+ },
+ {
+ "type": "TextBlock",
+ "text": "${stockExchange} ${stockSymbol}",
+ "isSubtle": true,
+ "spacing": "None",
+ "wrap": true
+ },
+ {
+ "type": "TextBlock",
+ "text": "${formattedDate} ${formattedTime}",
+ "wrap": true
+ }
+ ]
+ },
+ {
+ "type": "Container",
+ "spacing": "None",
+ "items": [
+ {
+ "type": "ColumnSet",
+ "columns": [
+ {
+ "type": "Column",
+ "width": "stretch",
+ "items": [
+ {
+ "type": "TextBlock",
+ "text": "${currentPrice} ",
+ "size": "ExtraLarge",
+ "wrap": true
+ },
+ {
+ "type": "TextBlock",
+ "text": "${priceChange} ${percentChange}",
+ "color": "${changeColor}",
+ "spacing": "None",
+ "wrap": true
+ }
+ ]
+ },
{
- "type": "Container",
- "items": [
+ "type": "Column",
+ "width": "auto",
+ "items": [
+ {
+ "type": "FactSet",
+ "facts": [
{
- "type": "ColumnSet",
- "columns": [
- {
- "type": "Column",
- "width": "stretch",
- "items": [
- {
- "type": "TextBlock",
- "text": "Title: ${if(title, title, 'N/A')}",
- "wrap": true
- },
- {
- "type": "TextBlock",
- "text": "Description: ${if(description, description, 'N/A')}",
- "wrap": true
- },
- {
- "type": "TextBlock",
- "text": "Assigned To: ${if(assignedTo, assignedTo, 'N/A')}",
- "wrap": true
- },
- {
- "type": "Image",
- "url": "${image}",
- "size": "Medium",
- "$when": "${image != null}"
- }
- ]
- },
- {
- "type": "Column",
- "width": "auto",
- "items": [
- {
- "type": "Image",
- "url": "${if(image, image, '')}",
- "size": "Medium"
- }
- ]
- }
- ]
+ "title": "Open",
+ "value": "${openPrice} "
}, {
- "type": "FactSet",
- "facts": [
- {
- "title": "Repair ID:",
- "value": "${if(id, id, 'N/A')}"
- },
- {
- "title": "Date:",
- "value": "${if(date, date, 'N/A')}"
- }
- ]
+ "title": "High",
+ "value": "${highPrice} "
+ },
+ {
+ "title": "Low",
+ "value": "${lowPrice} "
}
- ]
+ ]
+ }
+ ]
}
- ]
- },
- "previewCardTemplate": {
- "title": "Title: ${if(title, title, 'N/A')}",
- "subtitle": "Description: ${if(description, description, 'N/A')}",
- "text": "Assigned To: ${if(assignedTo, assignedTo, 'N/A')}",
- "image": {
- "url": "${image}",
- "$when": "${image != null}"
- }
+ ]
}
+ ]
+ }
+ ],
+ "previewCard": {
+ "contentType": "application/vnd.microsoft.card.hero",
+ "content": {
+ "title": "${companyName}",
+ "text": "${stockSymbol}"
}
+ }
} ```
For a plugin to be validated, invoked, and work seamlessly, ensure that it meets
| Manifest version | App manifest version must be 1.13 or later. [*Mandatory*] | |Microsoft 365 Channel| For users to interact with your message extension from Outlook, you need to add Microsoft 365 channel to your bot. For more information, see [Add Microsoft 365 channel](../m365-apps/extend-m365-teams-message-extension.md#add-microsoft-365-channel-for-your-app). [*Mandatory*]| | Response Time | Response time must not exceed 9 seconds for 99 percent, 5 Seconds for 75 percent and 2 Seconds for 50 percent. [*Mandatory*] |
-| Reliability | Apps must maintain 99.9% availability. For instance, if Microsoft 365 Chat calls a plugin 1000 times, it must provide a meaningful response 999 times. [*Mandatory*] |
-| Zero Regressions | If you need to resubmit your app for validation, the existing message extension functionality that was working earlier mustn't break. This requirement is only applicable to ISV apps and not apps built for your organization. [*Mandatory*] |
+| Reliability | Apps must maintain 99.9% availability. For instance, if Microsoft 365 Chat calls a plugin 1,000 times, it must provide a meaningful response 999 times. [*Mandatory*] |
+| Zero Regressions | If you need to resubmit your app for validation, the existing message extension functionality that was working earlier mustn't break. This requirement is only applicable to independent software vendor (ISV) apps and not apps built for your organization. [*Mandatory*] |
| Single sign-on (SSO) | If applicable, update your Microsoft Entra ID app registration for SSO. [*Recommended*] | | Content Security Policy |If applicable, modify your Content Security Policy headers. [*Recommended*] |
For a plugin to be validated, invoked, and work seamlessly, ensure that it meets
## Code samples
-|Sample name | Description |TypeScript |
+|Sample name | Description |TypeScript |
|-|--|--| | Northwind inventory message extension| This sample demonstrates how to use a Teams message extension as a plugin in Microsoft Copilot for Microsoft 365. | [View](https://github.com/OfficeDev/Copilot-for-M365-Plugins-Samples/tree/main/samples/msgext-northwind-inventory-ts) |
platform Tab Navigation https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/tab-navigation.md
else {/*Handle situation where capability isn't supported*/}
> [!NOTE] > The tab app navigation is supported only in [new Teams client](/microsoftteams/platform/resources/teams-updates).
-Use the [pages.navigateToApp()](/javascript/api/%40microsoft/teams-js/pages#@microsoft-teams-js-pages-navigatetoapp) function or [deep links](~/concepts/build-and-test/deep-link-application.md#configure-deep-link-to-a-tab-using-teamsjs-library) for tab app navigation.
+Use the [pages.navigateToApp()](/javascript/api/%40microsoft/teams-js/pages#@microsoft-teams-js-pages-navigatetoapp) function or [deep links](~/concepts/build-and-test/deep-link-application.md#configure-deep-link-to-a-tab-using-teamsjs) for tab app navigation.
## Configure back button navigation
platform Tab Requirements https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/tab-requirements.md
Ensure that you adhere to the following prerequisites while building your Teams
* Enable discovery of your tab pages in an iFrame by utilizing X-Frame-Options and [Content-Security-Policy HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) response headers.
+* Ensure that all Teams app pages are hosted on HTTPS endpoints.
+ * Set Content Security Policy headers to allow Teams and any other [host applications](../../m365-apps/overview.md) of your app: [!INCLUDE [CSP headers for multi-hub apps](~/includes/tabs/content-security-policy-headers.md)]
platform Debug Local https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/debug-local.md
Toolkit launches a new Microsoft Edge or Chrome browser instance based on your s
Teams Toolkit launches your browser instance and opens a webpage to load Teams client.
+# [Command line](#tab/cli)
+
+1. Install [dev tunnel.](/azure/developer/dev-tunnels/get-started?tabs=windows)
+
+1. Run the following command to login to dev tunnel:
+
+ ```cmd
+ devtunnel user login
+ ```
+ :::image type="content" source="../assets/images/teams-toolkit-v2/debug/devtunnel-user-login.png" alt-text="Screenshot shows the devtunnel login.":::
+
+1. Run the following command to start your local tunnel service:
+
+ ```cmd
+ devtunnel host -p 3978 --protocol http --allow-anonymous
+ ```
+
+1. In a separate terminal, run the following command to update the `BOT_DOMAIN` and `BOT_ENDPOINT` values in the `env/.env.local` file:
+
+ ```cmd
+ BOT_DOMAIN=sample-id-3978.devtunnels.ms
+ BOT_ENDPOINT=https://sample-id-3978.devtunnels.ms/
+ ```
+ :::image type="content" source="../assets/images/teams-toolkit-v2/debug/bot-domain.png" alt-text="Screenshot shows the bot domain and endpoint.":::
+
+1. Run the following command to provision the app to Teams:
+
+ ```cmd
+ teamsapp provision --env local
+ ```
+ :::image type="content" source="../assets/images/teams-toolkit-v2/debug/provision-env-local.png" alt-text="Screenshot shows provision the app to Teams.":::
+
+1. Run the following command to deploy the app to Teams:
+
+ ```cmd
+ teamsapp deploy --env local
+ ```
+ :::image type="content" source="../assets/images/teams-toolkit-v2/debug/deploy-env-local.png" alt-text="Screenshot shows deploy the app to Teams.":::
+
+1. Run the following command to preview your application locally:
+
+ ```cmd
+ teamsapp preview --env local
+ ```
+
+If you want to preview a notification bot hosted on Azure Functions, run the following command in your project directory:
+
+```cmd
+npm run prepare-storage:teamsapp
+```
## Debug your app
Teams Toolkit in Microsoft Visual Studio Code gives you the features to automate
The following steps help you set up your Teams Toolkit before you initiate the debug process:
-# [Windows](#tab/Windows)
+# [Windows](#tab/Windows1)
1. Select **Debug (Edge)** or **Debug (Chrome)** from the **RUN AND DEBUG Γû╖** dropdown.
The following steps help you set up your Teams Toolkit before you initiate the d
Toolkit launches a new Microsoft Edge or Chrome browser instance based on your selection and opens a web page to load Teams client.
-# [macOS](#tab/macOS)
+# [macOS](#tab/macOS1)
1. Select **Debug Edge** or **Debug Chrome** from the **RUN AND DEBUG Γû╖** dropdown.
platform Debug Your Teams App Test Tool https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/debug-your-Teams-app-test-tool.md
Teams App Test Tool (Test Tool) makes debugging bot-based apps effortless. You c
The following image shows a sample app displaying an Adaptive Card with a list of commands in Test Tool. It also provides a description of the commands so that you can test your app without manually searching your code:
- :::image type="content" source="../assets/images/teams-toolkit-v2/debug/sample-app-output.png" alt-text="Screenshot shows the Teams App Test Tool Adaptive Card.":::
+ :::image type="content" source="../assets/images/teams-toolkit-v2/debug/sample-app-output.png" alt-text="Screenshot shows Teams App Test Tool Adaptive Card.":::
The following are the advantages of Test Tool:
To use a Teams bot on Test Tool, you need to provide:
Test Tool offers a faster debug experience for bot applications when compared to the Teams client.
+# [Visual Studio Code](#tab/vscode)
+ 1. Open Visual Studio Code. 1. Select the Teams Toolkit :::image type="icon" source="../assets/images/teams-toolkit-v2/teams-toolkit-sidebar-icon.PNG" border="false"::: icon in the Visual Studio Code **Activity Bar**.
Test Tool offers a faster debug experience for bot applications when compared to
:::image type="content" source="../assets/images/teams-toolkit-v2/debug/test-tool.png" lightbox="../assets/images/teams-toolkit-v2/debug/test-tool.png" alt-text="Screenshot shows the bot open in Test Tool.":::
+# [Command line](#tab/cli)
+
+1. You can use command line for JavaScript and TypeScript or C# to debug your app in Test Tool. To get started select the following language:
+
+ # [JavaScript/TypeScript](#tab/clijs)
+
+ 1. Run the following command to install Teams app Test Tool CLI from `npm`:
+
+ ```cmd
+ npm install -g @microsoft/teams-app-test-tool
+ ```
+
+ :::image type="content" source="../assets/images/teams-toolkit-v2/debug/npm-teams-app-test-tool.png" alt-text="Screenshot shows install teams app test tool cli.":::
+
+ 1. Use the `teamsapp` command from [Teams Toolkit CLI](Teams-Toolkit-CLI.md) to create your first project. Start from the folder where you want to create the project folder.
+
+ ```cmd
+ teamsapp new
+ ```
+
+ You can use the CLI to create a new Teams app. The CLI leads you through a series of questions. Use the arrow keys to select an option. After you make a choice, select **Enter** to confirm. After you enter a suitable name for your app, your project is created.
+
+ :::image type="content" source="../assets/images/teams-toolkit-v2/debug/teamsapp-new.png" alt-text="Screenshot shows the process of creating a new app on Teams.":::
+
+ 1. Run the following command to deploy your app and install the required dependencies and npm packages:
+
+ ```cmd
+ teamsapp deploy --env=testtool
+ ```
+
+ :::image type="content" source="../assets/images/teams-toolkit-v2/debug/teamsapp-deploy-env-testtool.png" alt-text="Screenshot shows the process of installing the required dependencies and npm packages.":::
+
+ 1. Run the following command to start your bot app:
+
+ ```cmd
+ npm run dev:teamsapp:testtool
+ ```
+
+ 1. Run the following command in a separate terminal to launch Teams App Test Tool:
+
+ ```cmd
+ npm run dev:teamsapp:launch-testtool
+ ```
+
+ # [C#](#tab/clicsharp)
+
+ 1. [Create a new Teams app](toolkit-v4/create-new-project-vs.md).
+
+ 1. Download Teams App Test Tool CLI from the [GitHub](https://github.com/OfficeDev/TeamsFx/releases?q=teams-app-test-tool&expanded=true) release.
+
+ 1. Unzip the downloaded package to a folder. You'll find an executable binary file `teamsapptester.exe`.
+
+ 1. Copy the `teamsapptester.exe` file to the folder where you've created your app.
+
+ 1. Open command prompt and go to the folder where you've created your app.
+
+ 1. Run the following command to launch profile:
+
+ ```cmd
+ dotnet run --launch-profile "Teams App Test Tool (browser)"
+ ```
+
+ 1. Run the following command in a separate terminal to define your bot message endpoint:
+
+ 1. For Command Prompt:
+
+ ```cmd
+ set BOT_ENDPOINT=http://127.0.0.1:5130/api/messages
+ ```
+
+ 1. For PowerShell:
+
+ ```powershell
+ $env:BOT_ENDPOINT = "http://127.0.0.1:5130/api/messages"
+ ```
+
+ 1. Run the following command to initiate Teams App Test Tool:
+
+ 1. For Command Prompt:
+
+ ```cmd
+ teamsapptester.exe start
+ ```
+
+ 1. For PowerShell:
+
+ ```powershell
+ teamsapptester.exe start
+ ```
+
+ If the Test Tool for C# doesn't initiate because of a port conflict, alter the Test Tool's port number in the `TEAMSAPPTESTER_PORT` environment variable where you run `teamsapptester.exe start`.
+
+1. Test Tool opens the bot in a webpage.
+
+ :::image type="content" source="../assets/images/teams-toolkit-v2/debug/test-tool.png" lightbox="../assets/images/teams-toolkit-v2/debug/test-tool.png" alt-text="Screenshot shows the bot open in Test Tool."
+++ ## Activity triggers You can mock an activity in Test Tool using activity triggers. There are two types of activity triggers:
platform Tools Prerequisites V4 https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/tools-prerequisites-v4.md
Ensure that you have the following accounts before you start building your Teams
> [!NOTE] > To build Teams apps, you must have a work or school [Microsoft 365 account](#microsoft-365-developer-program). Microsoft 365 personal account can't be used.
-If you don't have any, to create a developer account, sign up for a Microsoft 365 developer program subscription. The subscription is free for 90 days and continues to renew as long as you're using it for development activity.
- If you have a Visual Studio Enterprise or Professional subscription, both programs include a free Microsoft 365 [developer subscription](https://aka.ms/MyVisualStudioBenefits). It's active as long as your Visual Studio subscription is active. For more information, see [Microsoft 365 developer subscription](https://developer.microsoft.com/microsoft-365/dev-program).
+If you don't have any Microsoft 365 tenant, you might qualify for a Microsoft 365 E5 developer subscription through the [Microsoft 365 Developer Program](https://aka.ms/m365devprogram); for details, see the [FAQ](/office/developer-program/microsoft-365-developer-program-faq#who-qualifies-for-a-microsoft-365-e5-developer-subscription-). Alternatively, you can sign up for a [1-month free trial](https://www.microsoft.com/microsoft-365/try) or [purchase a Microsoft 365 plan](https://www.microsoft.com/microsoft-365/business/compare-all-microsoft-365-business-products-g).
+ You can sign up for the developer program using one of the following account types: * **Microsoft account for personal use**
platform Tools Prerequisites https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/tools-prerequisites.md
Ensure that you have the following accounts before you start building your Teams
> [!NOTE] > To build Teams apps, you must have a work or school [Microsoft 365 account](#microsoft-365-developer-program). Microsoft 365 personal account can't be used.
-If you don't have any, to create a developer account, sign up for a Microsoft 365 developer program subscription. The subscription is free for 90 days and continues to renew as long as you're using it for development activity.
- If you have a Visual Studio Enterprise or Professional subscription, both programs include a free Microsoft 365 [developer subscription](https://aka.ms/MyVisualStudioBenefits). It's active as long as your Visual Studio subscription is active. For more information, see [Microsoft 365 developer subscription](https://developer.microsoft.com/microsoft-365/dev-program).
+If you don't have any Microsoft 365 tenant, you might qualify for a Microsoft 365 E5 developer subscription through the [Microsoft 365 Developer Program](https://aka.ms/m365devprogram); for details, see the [FAQ](/office/developer-program/microsoft-365-developer-program-faq#who-qualifies-for-a-microsoft-365-e5-developer-subscription-). Alternatively, you can sign up for a [1-month free trial](https://www.microsoft.com/microsoft-365/try) or [purchase a Microsoft 365 plan](https://www.microsoft.com/microsoft-365/business/compare-all-microsoft-365-business-products-g).
+ You can sign up for the developer program using one of the following account types: * **Microsoft account for personal use**
platform Whats New https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/whats-new.md
Teams platform features that are available to all app developers.
**2024 February**
+* ***February 28, 2024*** : [Extend a Teams meeting app to work with Outlook.](m365-apps/extend-m365-meeting-app.md)
+* ***February 28, 2024***: [Design Teams app lightbox view to emphasize important information.](concepts/design/design-teams-app-light-box-view.md)
* ***February 15, 2024***: [Share to Teams from personal app or tab for mobile clients.](concepts/build-and-test/share-to-teams-from-personal-app-or-tab.md) * ***February 01, 2024***: [Use Adaptive Card-based Loop components to build collaborative experiences within Teams message extensions that work across Microsoft 365.](m365-apps/cards-loop-component.md) * ***February 01, 2024***: [Use application RSC permissions for chat scope.](graph-api/rsc/resource-specific-consent.md#rsc-permissions-for-a-chat-or-meeting)