Updates from: 04/25/2024 03:21:42
Service Microsoft Docs article Related commit history on GitHub Change details
platform Interactive Notification Bot In Teams https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/interactive-notification-bot-in-teams.md
+
+ Title: Interactive notification bot in Teams
+
+description: Learn how an interactive notification bot works in Teams, and to customize notification behavior.
++
+ms.localizationpriority: high
++
+# Interactive notification bot in Teams
+
+Microsoft Teams Toolkit enables you to build applications that capture events and send them as interactive notifications to a personal, group chat, or a channel in Microsoft Teams. You can send notifications as plain text or [Adaptive Cards](../../../task-modules-and-cards/cards/cards-reference.md). The notification bot template creates an app that sends a message to Teams with Adaptive Cards triggered by HTTP post request.
+
+The app template is built using the TeamsFx SDK, which provides a simple set of functions over Microsoft Bot Framework to implement your requirement. For example, a travel agency builds an app in Teams for their users to keep them up-to-date with the weather forecast. In the following flowchart, a Teams app notifies about the weather forecast to the users using an Adaptive Card:
++
+You can send a bot notification in the following scenarios:
+
+* You want to notify everyone in a channel or chat about the same or related contentΓÇï.
+
+* Highly customizable UI in a CardΓÇï
+
+* Need quick response, include media content, or action buttonsΓÇï.
+
+* Send scheduled notificationsΓÇï
+
+* Light up double badges on both Activity and Chat, Channel or AppΓÇï
+
+* Add template in source codeΓÇï.
+
+* Handling localization manually.
+
+**Advantages**
+
+* Facilitates notifications to a personal, group chat, and in a channel, using APIs from TeamsFx SDK.
+* Enhances user experience by customizing notification with an Adaptive Card.
+* Provides multiple mechanisms to trigger notifications such as HTTP and schedule timer trigger with Azure Functions.
+
+* A notification card easily integrates with a bot and provides a consistent user experience within the Bot app.ΓÇï
+
+> [!NOTE]
+> Bot application needs to be installed with the corresponding scope before sending notification.
+
+[Back to top](#interactive-notification-bot-in-teams)
+
+## Notification based on events
+
+Bot Framework SDK provides the functionality to proactively message in Teams. TeamsFx SDK provides the functionality to manage bot's conversation references when a bot event is triggered. TeamsFx SDK recognizes the following bot events:
+
+|**Event** |**Behavior** |
+|||
+|The first time you install a bot to a person, group, or Team. |Add the target conversation reference to the storage. |
+|When the bot is uninstalled from a person, group, or Team. |Remove the target conversation reference from the storage. |
+|When the team installed by bot is deleted. |Remove the target conversation reference from the storage. |
+|When the team installed by bot is restored. |Add the target conversation reference to the storage. |
+|When the bot sends messages. |When the target conversation reference doesn't exist, add it to the storage. |
++
+When you send notifications, TeamsFx SDK creates a new conversation from the selected conversation reference, and then sends a message. For advanced usage, you can directly access the conversation reference to execute your own bot logic:
+
+# [TypeScript](#tab/ts1)
+
+```TypeScript
+// list all installation targets
+for (const target of await notificationApp.notification.installations()) {
+ // call Bot Framework's adapter.continueConversationAsync()
+ await target.adapter.continueConversationAsync(
+ target.botAppId,
+ target.conversationReference,
+ async (context) => {
+ // your own bot logic
+ await context...
+ }
+ );
+}
+```
+
+# [C#](#tab/csharp1)
+
+```C#
+ // list all installation targets
+ foreach (var target in await _conversation.Notification.GetInstallationsAsync()) {
+ // call Bot Framework's adapter.ContinueConversationAsync()
+ await target.Adapter.ContinueConversationAsync(
+ target.BotAppId,
+ target.ConversationReference,
+ async (context, ctx) =>
+ {
+ // your own bot logic
+ await context...
+ },
+ cancellationToken);
+}
+```
+++
+[Back to top](#interactive-notification-bot-in-teams)
+
+## Notification bot installation
+
+A notification bot needs to be installed into a team, or a group chat, or as personal app, depending on the required scope. You need to select the installation target before adding the bot to your app.
++
+For more install options, see [configure default install options](../../../concepts/deploy-and-publish/apps-publish-overview.md#configure-default-install-options).
+For uninstalling, see [remove an app from Teams](https://support.microsoft.com/en-us/office/remove-an-app-from-teams-0bc48d54-e572-463c-a7b7-71bfdc0e4a9d).
+
+[Back to top](#interactive-notification-bot-in-teams)
+
+## Customize notification
+
+You can make the following customizations to extend the notification template to fit your business need:
+
+* [Customize the trigger point from event source](#customize-the-trigger-point-from-event-source)
+* [Customize the notification content](#customize-the-notification-content)
+* [Customize where notifications are sent](#customize-where-notifications-are-sent)
+
+### Customize the trigger point from event source
+
+You can customize the following triggers:
+
+* `Restify` based notification:
+
+ * When an HTTP request is sent to `src/index.js` entry point, the default implementation sends an Adaptive Card to Teams. You can customize this event by modifying `src/index.js`. A typical implementation can call an API to retrieve events, data, or both that can send an Adaptive Card as required. You can perform the following to add more triggers:
+
+ * Create a new routing: `server.post("/api/new-trigger", ...)`.
+ * Add timer trigger(s) from widely used npm packages, such as [cron](https://www.npmjs.com/package/cron), [node-schedule](https://www.npmjs.com/package/node-schedule), or from other packages.
+
+ > [!NOTE]
+ > By default Teams Toolkit scaffolds a single `restify` entry point in `src/index.js`.
+
+* Azure Functions based notification:
+
+ * When you select `timer` trigger, the default implemented Azure Function timer trigger `src/timerTrigger.ts` sends an Adaptive Card every 30 seconds. You can edit the file `*Trigger/function.json` to customize the `schedule` property. For more information, see [Azure Function documentation](/azure/azure-functions/functions-bindings-timer?tabs=python-v2%2Cin-process&pivots=programming-language-javascript#ncrontab-expressions).
+
+ :::image type="content" source="../../../assets/images/notification-bot/notification-timer-triggered.png" alt-text="sample of timer triggered notification":::
+
+ * When you select `http` trigger, the HTTP request triggers the notification, and the default implementation sends an Adaptive Card to Teams. You can change this event by customizing `src/*Trigger.ts`. This implementation can call an API to retrieve events, data, or both, which can send an Adaptive Card as required.
+
+ :::image type="content" source="../../../assets/images/notification-bot/notification-http-triggered.png" alt-text="sample of HTTP triggered notification":::
+
+* Azure Function triggers:
+
+ * `Event Hub` trigger to send notifications when an event is pushed to Azure Event Hub.
+
+ * `Cosmos DB` trigger to send notifications when a Cosmos document is created or updated.
+
+For more information on support triggers, see [Azure Functions support triggers](/azure/azure-functions/functions-triggers-bindings?tabs=javascript#supported-bindings).
+
+### Customize the notification content
+
+The file `src/adaptiveCards/notification-default.json` defines the default Adaptive Card. You can use the [Adaptive Card designer](https://adaptivecards.io/designer/) to help visually design your Adaptive Card UI. The `src/cardModels.ts` defines a data structure that is used to load data for the Adaptive Card. The binding between the card model and the Adaptive Card is done by matching name such as `CardData.title` maps to `${title}` in the Adaptive Card. You can add, edit, or remove properties and their bindings to customize the Adaptive Card as required.
+
+You can also add new cards if needed. For more information on how to build different types of Adaptive Cards with a list or table of dynamic contents using `ColumnSet` and `FactSet`, see [Adaptive Card notification sample](https://github.com/OfficeDev/TeamsFx-Samples/tree/v3/adaptive-card-notification).
+
+### Customize where notifications are sent
+
+You can customize sending the notification to the following targets:
+
+* Notifications to a personal chat:
+
+ # [TypeScript](#tab/ts2)
+
+ ```TypeScript
+ // list all installation targets
+ for (const target of await notificationApp.notification.installations()) {
+ // "Person" means this bot is installed as Personal app
+ if (target.type === "Person") {
+ // Directly notify the individual person
+ await target.sendAdaptiveCard(...);
+ }
+ }
+ ```
+
+ # [C#](#tab/csharp2)
+
+ ```C#
+ // list all installation targets
+ foreach (var target in await _conversation.Notification.GetInstallationsAsync()) {
+ // "Person" means this bot is installed as Personal app
+ if (target.Type == NotificationTargetType.Person)
+ {
+ // Directly notify the individual person
+ await target.SendAdaptiveCard(...);
+ }
+ }
+ ```
+++
+* Notifications to a group chat:
+
+ # [TypeScript](#tab/ts3)
+
+ ```TypeScript
+ // list all installation targets
+ for (const target of await notificationApp.notification.installations()) {
+ // "Group" means this bot is installed to a Group Chat
+ if (target.type === "Group") {
+ // Directly notify the Group Chat
+ await target.sendAdaptiveCard(...);
+
+ // List all members in the Group Chat then notify each member
+ const members = await target.members();
+ for (const member of members) {
+ await member.sendAdaptiveCard(...);
+ }
+ }
+
+ }
+ ```
+
+ # [C#](#tab/csharp3)
+
+ ```C#
+ // list all installation targets
+ foreach (var target in await _conversation.Notification.GetInstallationsAsync()) {
+ // "Group" means this bot is installed to a Group Chat
+ if (target.Type == NotificationTargetType.Group)
+ {
+ // Directly notify the Group Chat
+ await target.SendAdaptiveCard(...);
+ // List all members in the Group Chat then notify each member
+ var members = await target.GetMembersAsync();
+ foreach (var member in members) {
+ await member.SendAdaptiveCard(...);
+ }
+ }
+ }
+ ```
+++
+* Notifications to a channel:
+
+ # [TypeScript](#tab/ts4)
+
+ ```TypeScript
+ // list all installation targets
+ for (const target of await notificationApp.notification.installations()) {
+ // "Channel" means this bot is installed to a Team (default to notify General channel)
+ if (target.type === "Channel") {
+ // Directly notify the Team (to the default General channel)
+ await target.sendAdaptiveCard(...);
+
+ // List all members in the Team then notify each member
+ const members = await target.members();
+ for (const member of members) {
+ await member.sendAdaptiveCard(...);
+ }
+
+ // List all channels in the Team then notify each channel
+ const channels = await target.channels();
+ for (const channel of channels) {
+ await channel.sendAdaptiveCard(...);
+ }
+ }
+ }
+ ```
+
+ # [C#](#tab/csharp4)
+
+ ```C#
+ // list all installation targets
+ foreach (var target in await _conversation.Notification.GetInstallationsAsync()) {
+ // "Channel" means this bot is installed to a Team (default to notify General channel)
+ if (target.Type == NotificationTargetType.Channel)
+ {
+ // Directly notify the Team (to the default General channel)
+ await target.SendAdaptiveCard(...);
+
+ // List all members in the Team then notify each member
+ var members = await target.GetMembersAsync();
+ foreach (var member in members) {
+ await member.SendAdaptiveCard(...);
+ }
+
+ // List all channels in the Team then notify each channel
+ var channels = await target.GetChannelsAsync();
+ foreach (var channel in channels) {
+ await channel.SendAdaptiveCard(...);
+ }
+ }
+ }
+ ```
+++
+* Notifications to a specific channel:
+
+ ```TypeScript
+ // find the first channel when the predicate is true.
+ const channel = await notificationApp.notification.findChannel(c => Promise.resolve(c.info.name === "MyChannelName"));
+
+ // send adaptive card to the specific channel.
+ await channel?.sendAdaptiveCard(...);
+ ```
+
+ > [!NOTE]
+ > To prevent an undefined output, ensure that you install the bot app in the **General** channel of a Team.
+
+* Notifications to a specific person:
+
+ ```TypeScript
+ // find the first person when the predicate is true.
+ const member = await notificationApp.notification.findMember(m => Promise.resolve(m.account.name === "Bob"));
+
+ // send adaptive card to the specific person.
+ await member?.sendAdaptiveCard(...);
+ ```
+
+ > [!NOTE]
+ > To prevent an undefined output and a missing notification, you need to include the specific person in notification installation scope.
+
+ [Back to top](#interactive-notification-bot-in-teams)
+
+## Customize initialization
+
+You need to create `ConversationBot` to send notification.
+
+> [!NOTE]
+> The code is generated in project.
+
+# [JavaScript/TypeScript](#tab/jsts)
+
+```JS/TS
+/** Javascript/Typescript: src/internal/initialize.*s **/
+const notificationApp = new ConversationBot({
+ // The bot id and password to create CloudAdapter.
+ // See https://aka.ms/about-bot-adapter to learn more about adapters.
+ adapterConfig: {
+ MicrosoftAppId: config.botId,
+ MicrosoftAppPassword: config.botPassword,
+ MicrosoftAppType: "MultiTenant",
+ },
+ // Enable notification
+ notification: {
+ enabled: true,
+ },
+});
+```
+
+# [C#](#tab/csharp5)
+
+```C#
+/** .NET: Program.cs or Startup.cs **/
+// Create the Conversation with notification feature enabled.
+builder.Services.AddSingleton(sp =>
+{
+ var options = new ConversationOptions()
+ {
+ // To use your own CloudAdapter
+ Adapter = sp.GetService<CloudAdapter>(),
+ Notification = new NotificationOptions
+ {
+ BotAppId = builder.Configuration["MicrosoftAppId"],
+ },
+ };
+
+ return new ConversationBot(options);
+});
+```
+++
+[Back to top](#interactive-notification-bot-in-teams)
+
+## Customize adapter
+
+You can customize by creating your own adapter, or customize the adapter after initialization. Following is the code sample for creating your adapter:
+
+```Typescript
+// Create your own adapter
+const adapter = new CloudAdapter(...);
+
+// Customize your adapter, e.g., error handling
+adapter.onTurnError = ...
+
+const notificationApp = new ConversationBot({
+ // use your own adapter
+ adapter: adapter;
+ ...
+});
+
+// Or, customize later
+notificationApp.adapter.onTurnError = ...
+```
+
+[Back to top](#interactive-notification-bot-in-teams)
+
+## Add storage
+
+Storage can be used to implement notification connections. You can add your own storage with the help of following code sample:
+
+# [TypeScript](#tab/ts5)
+
+```Typescript
+// implement your own storage
+class MyStorage implements NotificationTargetStorage {...}
+const myStorage = new MyStorage(...);
+
+// initialize ConversationBot with notification enabled and customized storage
+const notificationApp = new ConversationBot({
+ // The bot id and password to create CloudAdapter.
+ // See https://aka.ms/about-bot-adapter to learn more about adapters.
+ adapterConfig: {
+ MicrosoftAppId: config.botId,
+ MicrosoftAppPassword: config.botPassword,
+ MicrosoftAppType: "MultiTenant",
+ },
+ // Enable notification
+ notification: {
+ enabled: true,
+ storage: myStorage,
+ },
+});
+```
+
+# [C#](#tab/csharp6)
+
+```C#
+// implement your own storage
+public class MyStorage : INotificationTargetStorage {...}
+
+// initialize ConversationBot with notification enabled and customized storage
+builder.Services.AddSingleton(sp =>
+{
+ var options = new ConversationOptions()
+ {
+ Adapter = sp.GetService<CloudAdapter>(),
+ Notification = new NotificationOptions
+ {
+ BotAppId = builder.Configuration["MicrosoftAppId"],
+ // Use your own storage
+ Storage = new MyStorage(),
+ },
+ };
+
+ return new ConversationBot(options);
+});
+```
+++
+If storage isn't provided, you can use a default local file storage, which stores notification connections into:
+
+* `.notification.localstore.json` if running locally.
+* `${process.env.TEMP}/.notification.localstore.json`, if `process.env.RUNNING_ON_AZURE` is set to 1.
+
+If you're using the default local file storage, Azure web app and Azure Functions clean up the local file during a restart or redeploy. You can also uninstall the bot from Teams, then install it to again add connections to the storage.
+
+The `NotificationTargetStorage` is different from Bot Framework SDK's [custom storage](/azure/bot-service/bot-builder-custom-storage). The notification storage requires `read`, `write`, `delete`, and `list` functionalities but Bot Framework SDK's storage has `read`, `write`, and `delete` functionalities and doesnΓÇÖt have the `list` functionality.
+
+For more information about Azure blob storage, see the [notification storage implementation sample](https://github.com/OfficeDev/TeamsFx-Samples/blob/v3/adaptive-card-notification/src/store/blobStore.ts).
+
+> [!NOTE]
+>
+> * It's recommended to use your own shared storage for production environment.
+> * If you implement your own Bot Framework SDK's storage, for example, `botbuilder-azure-blobs.BlobsStorage`, you need to implement another storage for notification. You can share the same Blob Connection String with different containers.
+
+[Back to top](#interactive-notification-bot-in-teams)
+
+## Add authentication for notification API
+
+If you select HTTP trigger, the scaffolded notification API doesn't have authentication or authorization enabled. Ensure that you add authentication or authorization for the API before using it for production. You can perform one of the following actions:
+
+* Use an API key. You can use [function access keys](/azure/azure-functions/security-concepts?tabs=v4#function-access-keys), if you select Azure Functions to host your notification bot.
+
+* Use an access token issued by Microsoft Entra ID. For more information, see [Configure SSO for your bot in Microsoft Entra ID](../authentication/bot-sso-register-aad.md).
+
+There can be more authentication or authorization solutions for an API, you can select as required.
+
+[Back to top](#interactive-notification-bot-in-teams)
+
+## Connect to existing APIs
+
+If you don't have the required SDK and want to invoke external APIs in your code, the **Teams: Connect to an API** command in Microsoft Visual Studio Code Teams Toolkit extension, or the **teamsfx add api-connection** command in TeamsFx CLI can be used to bootstrap code to call target APIs. For more information, see [Integrate existing third-party APIs](../../../toolkit/add-API-connection.md).
+
+### Teams bot application or Teams Incoming Webhook
+
+TeamsFx supports two ways to help you send notifications from your system to Teams:
+
+* Create a Teams bot app.
+* Create Teams Incoming Webhook.
+
+In the following table, you can see the comparison of the two different ways:
+
+|&nbsp; |Teams bot app |Teams Incoming Webhook |
+||||
+|Message individual person | ✔️ | ❌ |
+|Message group chat | ✔️ | ❌ |
+|Message public channel | ✔️ | ✔️ |
+|Message private channel | ❌ | ✔️ |
+|Send card message | ✔️ | ✔️ |
+|Send welcome message | ✔️ | ❌ |
+|Retrieve Teams context | ✔️ | ❌ |
+|Require installation steps in Teams | ✔️ | ❌ |
+|Require Azure resource |Azure Bot Service | ❌ |
+
+### Incoming Webhook notification
+
+Incoming Webhooks help in posting messages from apps to Teams. If Incoming Webhooks are enabled for a Team in any channel, it exposes the HTTPS endpoint, which accepts correctly formatted JSON and inserts the messages into that channel. For example, you can create an Incoming Webhook in your DevOps channel, configure your build, and simultaneously deploy and monitor services to send alerts.
+TeamsFx provides you with an [Incoming Webhook notification sample](https://github.com/OfficeDev/TeamsFx-Samples/tree/v3/incoming-webhook-notification) that helps you to:
+
+* [Create an Incoming Webhook](../../../webhooks-and-connectors/how-to/add-incoming-webhook.md) in Teams.
+* Send notifications using Incoming Webhooks with Adaptive Cards.
+
+[Back to top](#interactive-notification-bot-in-teams)
+
+### Send activity feed notifications
+
+If you want to send activity feed notifications for your app, you can use the activity feed notification APIs in Microsoft Graph. For more information, see [Send activity feed notifications to users in Microsoft Teams](../../../tabs/send-activity-feed-notification.md).
+
+## FAQ
+
+<br>
+
+<details>
+
+<summary><b>Why is the notification installations empty even though the bot app is installed in Teams?</b></summary>
+
+Teams sends an event only at the first installation. If the bot app is already installed before your notification bot service is launched, either the installation event didn't reach the bot service or is omitted.
+
+You can resolve this issue in the following ways:
+
+* Send a message to your personal bot or mention your bot in group chat or channel, which helps you to reach the bot service again with correct installation information.
+* Uninstall the bot app from Teams then redebug or relaunch it. You can resend the installation event to bot service.
+
+Notification target connections are stored in the persistence storage. If you're using the default local file storage, all installations are stored under `.notification.localstore.json`.
+
+> [!NOTE]
+> For more information to add your own storage, see [add storage](#add-storage).
+
+<br>
+
+</details>
+
+<details>
+
+<summary><b>Why Bad Request or Bad Argument error occurs when sending notification?</b></summary>
+
+If the notification installation doesn't match the bot ID or password, you can get a **Failed to decrypt conversation ID** error. One possible cause for this error is that the bot ID or password is changed due to cleaning local state or reprovisioning.
+
+You can resolve this issue by cleaning your notification storage. After cleaning, notify in Teams to reinstall your bot, and ensure that the new installation is up to date. Each stored notification installation is bound with one bot. If you're able to check your notification storage, its bot field should match the bot you're running such as the bot ID with the same GUID.
+
+> [!NOTE]
+> In case of local storage the default location is `.notification.localstore.json`.
+
+<br>
+
+</details>
+
+<details>
+
+<summary><b>Why notification target is lost after restarting or redeploying the bot app?</b></summary>
+
+Notification target connections are stored in the persistence storage. If you're using the default local file storage, Azure web app and Azure Functions clean up the local file during a restart or redeploy. You can also uninstall the bot from Teams, then install it to again add connections to the storage. It's recommended to use your own shared storage for production environment.
+
+<br>
+
+</details>
+
+<details>
+
+<summary><b>Why is undefined error returned when using the API `findChannel`()?</b></summary>
+
+You can encounter an undefined error, when the bot app is installed into other channels instead of the `General` channel. To fix this error, you can uninstall the bot app from Teams and redebug and relaunch it. After you've redebug and relaunched, ensure that the bot app is installed into the `General` channel.
+
+<br>
+
+</details>
+
+<details>
+
+<summary><b>Can I know all the targets where my bot is installed in and out of the notification project?</b></summary>
+
+There are [Microsoft Graph APIs](/graph/api/team-list-installedapps) to list apps installed in a team, group, or chat. If necessary, iterate your team, group, or chat into an installed app to be targeted. In the notification project, it uses persistence storage to store installation targets. For more information, see [notification based on events](#notification-based-on-events).
+
+<br>
+
+</details>
+
+<details>
+
+<summary><b>How to customize the Azurite listening ports?</b></summary>
+
+If Azurite exits due to port in use, you can [specify another listening port](/azure/storage/common/storage-use-azurite?tabs=visual-studio#blob-listening-port-configuration) and update the [connection string](/azure/storage/common/storage-use-azurite?tabs=visual-studio#http-connection-strings) of `AzureWebJobsStorage` in `local.settings.json`.
+
+<br>
+
+</details>
+
+<details>
+
+<summary><b>How to extend my notification bot to support command and response?</b></summary>
+
+1. Go to `bot\src\internal\initialize.ts(js)` and update your `conversationBot` initialization to enable the notification feature:
+
+ :::image type="content" source="../../../assets/images/notification-bot/notification-bot-enable.png" alt-text="Conversation bot initialization to enable notification feature." lightbox="../../../assets/images/notification-bot/notification-bot-enable.png":::
+
+2. To add command to your bot, follow the instructions in [Command bot in Teams](command-bot-in-teams.md).
+
+<br>
+
+</details>
+
+<details>
+
+<summary><b>How to extend my notification bot by adding workflow bot Adaptive Card actions?</b></summary>
+
+The Adaptive Card action handler feature enables the app to respond to Adaptive Card actions that are triggered by end users to complete a sequential workflow. An Adaptive Card provides one or more buttons in the card to ask for user's input such as calling some APIs. The Adaptive Card then sends another Adaptive Card in the conversation to respond to the card action.
+
+For more information on how to add adaptive card actions to command bot, see [Workflow bot in Teams](workflow-bot-in-teams.md).
+
+<br>
+
+</details>
+
+[Back to top](#interactive-notification-bot-in-teams)
+
+## Step-by-step guide
+
+Follow the [step-by-step](../../../sbs-gs-notificationbot.yml) guide to build Teams notification bot.
+
+## See also
+
+* [Conversation basics](conversation-basics.md)
+* [Build bots for Teams](../../what-are-bots.md)
+* [Build your first bot app using JavaScript](../../../sbs-gs-bot.yml)
+* [Proactive messages](send-proactive-messages.md)
+* [Adaptive Cards](../../../task-modules-and-cards/cards/cards-reference.md#adaptive-card)
+* [TeamsFx SDK](../../../toolkit/TeamsFx-SDK.md)
+* [Bot Framework SDK](/azure/bot-service/bot-builder-basics)
+* [Send proactive installation messages](../../../graph-api/proactive-bots-and-messages/graph-proactive-bots-and-messages.md)
+* [Build your app using C#](../../../sbs-gs-csharp.yml)
platform Deep Link Teams https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/deep-link-teams.md
Title: Deep link to a Teams chat
-description: Learn how to create deep links to a teams chat and navigate using them in your Microsoft Teams.
+description: Learn how to create deep links to a teams chat and navigate using them in Microsoft Teams.
ms.localizationpriority: high
In this article, youΓÇÖll learn to create:
- [Deep link to start a new chat](#deep-link-to-start-a-new-chat)<br> - [Deep link to navigate to a chat](#deep-link-to-navigate-to-a-chat)<br>-- [Deep links to navigate to channel conversation](#deep-links-to-navigate-to-channel-conversation)<br>-- [Deep links to navigate to chat messages](#deep-links-to-navigate-to-chat-messages)<br>-- [Generate deep links to a file in a channel](#generate-deep-links-to-a-file-in-a-channel)
+- [Deep link to navigate to channel conversation](#deep-link-to-navigate-to-channel-conversation)<br>
+- [Deep link to navigate to chat messages](#deep-link-to-navigate-to-chat-messages)<br>
+- [Deep link to navigate to a team](#deep-link-to-navigate-to-a-team)<br>
+- [Deep link to navigate to channel](#deep-link-to-navigate-to-channel)<br>
+- [Generate deep link to a file in a channel](#generate-deep-link-to-a-file-in-a-channel)
## Deep link to start a new chat
The query parameter is `chatId`, which represents chat ID of the conversation. T
Example: `https://teams.microsoft.com/l/chat/19:c6d70e392a384916c3262b15406d763e@thread.v2/conversations`
-## Deep links to navigate to channel conversation
+## Deep link to navigate to channel conversation
You can use the following deep link format to go to a particular conversation within channel thread:
The query parameters are:
Example: `https://teams.microsoft.com/l/message/<channelId>/1648741500652?tenantId=<tenantId>&groupId=<groupId>&parentMessageId=1648741500652&teamName=<teamName>&channelName=<channelName>&createdTime=1648741500652`
-## Deep links to navigate to chat messages
+## Deep link to navigate to chat messages
Use the following deep link format to navigate a user to a message in a personal or group chat in Teams:
The query parameters are:
Example: `http://teams.microsoft.com/l/message/19:253f5895-9a62-4362-8d38-43f0205c702c_f1b94dcf-0aa3-4989-bcdf-ef4a5ed00f86@unq.gbl.spaces/1563480968434?context=%7B%22contextType%22:%22chat%22%7D`
-## Generate deep links to a file in a channel
+## Deep link to navigate to a team
+
+To navigate to a particular team, use the following deep link format:
+
+`https://teams.microsoft.com/l/team/<channelId>/conversations?groupId=<groupId>&tenantId=<tenantId>`
+
+The query parameters are:
+
+* `channelId`: Channel ID of the conversation (URL encoded). For example, 19%3ATWLPKo8lD4v8zDxyw4FnDYY-ovnBJG5CSjmrHUAoOz41%40thread.tacv2.
+* `groupId`: Group ID of the file. For example, 72602e12-78ac-474c-99d6-f619710353a9.
+* `tenantId`: Tenant ID, such as 72f988bf-86f1-41af-91ab-2d7cd011db47.
+
+> [!Note]
+> You can get `channelId` and `groupId` in the URL from the team.
+
+Example: `https://teams.microsoft.com/l/team/19%3ATWLPKo8lD4v8zDxyw4FnDYY-ovnBJG5CSjmrHUAoOz41%40thread.tacv2/conversations?groupId=72602e12-78ac-474c-99d6-f619710353a9&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47`
+
+## Deep link to navigate to channel
+
+You can use the following deep link formats to navigate to particular channels:
+
+* **Standard channel**: `https://teams.microsoft.com/l/channel/<channelId>/<channelName>?groupId=<groupId>&tenantId=<tenantId>`
+
+ Example: `https://teams.microsoft.com/l/channel/19%3A9be3de4e70874c71a608dee9ba803ed3%40thread.tacv2/My%20example%20channel?groupId=72602e12-78ac-474c-99d6-f619710353a9&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47`
+
+* **Private channel**: `https://teams.microsoft.com/l/channel/<channelId>/<channelName>?groupId=<groupId>&tenantId=<tenantId>&ngc=true`
+
+ Example: `https://teams.microsoft.com/l/channel/19%3A9be3de4e70874c71a608dee9ba803ed3%40thread.tacv2/My%20example%20channel?groupId=72602e12-78ac-474c-99d6-f619710353a9&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47&ngc=true`
+
+* **Shared channel**: `https://teams.microsoft.com/l/channel/<channelId>/<channelName>?groupId=<groupId>&tenantId=<tenantId>&ngc=true&allowXTenantAccess=true`
+
+ Example: `https://teams.microsoft.com/l/channel/19%3A9be3de4e70874c71a608dee9ba803ed3%40thread.tacv2/My%20example%20channel?groupId=72602e12-78ac-474c-99d6-f619710353a9&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47&ngc=true&allowXTenantAccess=true`
+
+The query parameters are:
+
+* `channelId`: Channel ID of the conversation (URL encoded). For example, `19%3A9be3de4e70874c71a608dee9ba803ed3%40thread.tacv2`.
+* `channelName`: Name of the team's channel (URL encoded). For example, `My%20example%20channel`.
+* `groupId`: Group ID of the team. For example, `72602e12-78ac-474c-99d6-f619710353a9`.
+* `tenantId`: Tenant ID, such as `72f988bf-86f1-41af-91ab-2d7cd011db47`.
+* `ngc`: Indicates a next-generation channel. For private channels needs to be set to `true`.
+* `allowXTenantAccess`: Indicates a channel that can be accessed across tenant boundaries. For shared channels needs to be set to `true`.
+
+## Generate deep link to a file in a channel
Use the following deep link format can be used in a bot, connector, or message extension card for configuring a deep link to connect to a file in a channel:
platform Deep Links https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/deep-links.md
Deep links function as URLs that direct users straight to specific content withi
You can use deep links in Teams in the following ways:
-* Deep link to an app.
-* Deep link to a chat.
-* Deep link to a workflow.
+* Deep link to an app
+* Deep link to a chat
+* Deep link to teams and channels
+* Deep link to a workflow
:::image type="content" source="~/assets/images/deep-links.png" alt-text="Diagram shows various scenarios for deep links.":::
You can use deep links in Teams in the following ways:
:::image type="content" source="~/assets/images/deeplink-chat.gif" alt-text="Graphical representation shows the user experience of deep links in chat.":::
+* **Deep link to teams and channels**: Use a deep link to navigate to a particular team or channel. For more information, see [deep link to a channel](~/concepts/build-and-test/deep-link-teams.md).
+
+ :::image type="content" source="~/assets/images/deeplink-teams-and-channels.gif" alt-text="Graphical representation shows the user experience of deep links in channel.":::
+ * **Deep link to a workflow**: Use a deep link to create a new chat, open a scheduling dialog, or navigate to an audio-video call. App users can benefit from an improved app experience by utilizing simplified or automated user tasks. These tasks include initiating a new chat or scheduling a meeting that can be made easier by prepopulating the deep links with necessary parameters. For more information, see [deep link to a workflow](~/concepts/build-and-test/deep-link-workflow.md).
platform Design App Notification https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/design/design-app-notification.md
+
+ Title: Plan to send app notifications
+
+description: Learn how to design effective app notifications and choose the right framework for your app.
++ Last updated : 02/23/2024++
+# Plan to send app notifications
+
+Notifications are one of the most effective ways to engage and retain users within Microsoft Teams. The platform apps can either send notifications to the activity feed using the Graph API or send Adaptive Cards through bots. Let's learn the effective notification types and select the most suitable notification framework for your app.
+
+Teams offers the following notification frameworks for your app:
+
+ :::column span="":::
+
+### Activity feed notification
+
+Teams activity feed enables users to efficiently manage items that require attention by notifying them of any updates. It allows your apps to provide rich and better user experiences with the latest updates on the tools and workflows.
+<br><br>
+Users can read the activity feed notifications in the preview within Teams activity pane. If the preview captures the userΓÇÖs interest, they can select the notification to view the content in the Teams window.
+
+ :::column-end:::
+
+ :::column span="":::
+
+### Interactive notification bot
+
+Microsoft Teams Toolkit allows you to build apps that capture events and send them as bot notifications to a personal chat, a group chat, or a channel. An interactive notification bot template creates an app that sends a message to Teams with Adaptive Cards or with plain text triggered by an HTTP post request.
+<br><br>
+When an interactive notification bot sends a message, the bot conversation is highlighted in bold or dotted in the Teams chat that draws the userΓÇÖs attention from where they can read and respond to the message.
+
+ :::column-end:::
++
+<br>
+Teams window has larger surface than Adaptive Card to load more assets in a tab app or a Personal app. If your app already has tab or personal app, we don't recommend building a bot only for sending notifications.
+
+## Notification types
+
+Based on your requirements between activity feed notification and interactive notification bot, you must evaluate and understand whether your notifications must be proactive or interactive.
+
+ :::column span="":::
+
+### Proactive notifications
+
+Informs users about news, events, requests, and reminders that require usersΓÇÖ immediate attention or specific actions. <br><br> If you need to send notifications that are proactive, attention-grabbing alert, announcements, reminders, and action-needed requests, **Activity notifications** is the recommended framework.
+
+ :::column-end:::
+
+ :::column span="":::
+
+### Interactive notifications
+
+Encourage users to respond to the sender with the information required for continuous communication. <br><br> If you need to send notifications that are interactive and require quick response in a light weighted and highly customizable cards, **Interactive notification bot** is the recommended framework.
+
+ :::column-end:::
++
+### Choose the right notification framework
+
+When you create your apps, enable notifications for your app to engage and retain users within Teams. Consider the following questions to determine the right notification framework for your app:
+
+What is the targeted user experience in Teams?
+
+* Use activity feed notifications when you want users to consume notifications in activity and Teams window.<br>
+* Use interactive notification bot when you want users to interact with Adaptive Card.
+
+How do you expect users to interact with the notification?
+
+* Use activity feed notifications when there's no further conversation is expected between the user and bot.
+* Use interactive notification bot to encourage conversations with the bot.
++
+Here's some example scenarios and recommended notification types:
+
+|Notification scenario|Notification type |Recommended notification|
+|-|-|-|
+|If a vice president makes an announcement to be broadcasted to the entire organization.|Proactive|Activity notification |
+|Colleague mentions a teammate and requests to collaborate in a shared document.|Proactive|Activity notification |
+|Proactive reminder to finish required a training course immediately.|Proactive|Activity notification|
+|Quick poll on a preferred place for team lunch.|Interactive|Notification bot|
+|Interactive reminder to take a break and choose a music to play.|Interactive|Notification bot|
+
+ :::column span="":::
+
+If you want a proactive notification for your app, go to:
+
+> [!div class="nextstepaction"]
+> [Activity feed notifications to users in Teams](/graph/teams-send-activityfeednotifications)
+
+ :::column-end:::
+
+ :::column span="":::
+
+If you want an interactive notification for your app, go to:
+
+> [!div class="nextstepaction"]
+> [Interactive notification bot in Teams](../../bots/how-to/conversations/interactive-notification-bot-in-teams.md)
+
+ :::column-end:::
+
platform Grant Resource Specific Consent https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/graph-api/rsc/grant-resource-specific-consent.md
Last updated 03/28/2023
Resource-specific consent (RSC) is a Microsoft Teams and Microsoft Graph API integration that enables your app to use API endpoints to manage specific resources, either teams, chats, or users within an organization.
-In this section, you'll learn to:
+In this section, you learn to:
1. [Add RSC permissions to your Teams app](#add-rsc-permissions-to-your-teams-app) 1. [Install your app in a team, chat, or user](#install-your-app-in-a-team-chat-or-user)
To install your app on which you've enabled RSC permission in a team, chat, or u
1. Ensure that you've configured [consent settings](#configure-consent-settings) for team, chat, or user. 1. [Upload your custom app in Teams](#upload-your-custom-app-in-teams).
+> [!NOTE]
+>
+> To see the RSC settings for team or chat, users must have one of these Microsoft 365 roles:
+> * Global Administrator
+> * Global Reader
+> * Teams Administrator
+> * Privileged Role Administrator
+ ### Configure consent settings The tenant-level controls of application RSC permissions vary based on the resource type.
platform Teamsjs Support M365 https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/teamsjs-support-m365.md
Title: The Teams JavaScript client library support across Microsoft 365
-date: 06/26/2023
description: Understand the level of support for different TeamsJS library capabilities running in different hosts for Teams apps, including Microsoft Teams, Outlook, and Microsoft 365 app. ms.localizationpriority: high Previously updated : 11/05/2023 Last updated : 04/12/2024 keywords: TeamsJS Teams JavaScript library capability Microsoft 365 M365
The following *TeamsJS Capability* table lists TeamsJS capabilities (public name
| :::image type="content" source="./images/preview-badge.png" alt-text="Image with the word 'Preview' inside a blue rectangle"::: | This capability is in preview and subject to change based on feedback. Don't use this capability in production. | | :::image type="content" source="./images/deprecated-badge.png" alt-text="Image with the word 'Deprecated' inside an orange rectangle"::: | This capability is deprecated in favor of newer functionality, though it's supported for backwards compatibility purposes. For new apps, use the capability recommended in the usage notes of the deprecated capability. |
-Microsoft 365 hosts are signified by the product icons in the following tables:
+Microsoft 365 hosts are signified by the product icons in the following table:
| Teams | Microsoft 365 app | Outlook | | :-: | :-: | :-: | | :::image type="content" source="./images/teams-icon.png" alt-text="Microsoft Teams icon"::: | :::image type="content" source="./images/microsoft-365-icon.png" alt-text="Microsoft 365 app icon"::: | :::image type="content" source="./images/outlook-icon.png" alt-text="Microsoft Outlook icon"::: |
+| :::image type="content" source="./images/new-teams-icon.png" alt-text="New Microsoft Teams icon"::: | | :::image type="content" source="./images/new-outlook-icon.png" alt-text="New Microsoft Outlook icon" ::: |
-Preview versions for both Teams and Outlook (launched through *Try the new Teams* and *Try the new Outlook* toggle controls in Teams and Outlook clients respectively) have different levels of support. The preview versions are designated by the following **PRE** (preview) icons:
-
-| Teams preview | Outlook preview |
-| :-: | :-: |
-| :::image type="content" source="./images/teams-preview-icon.png" alt-text="Microsoft Teams (Preview) icon"::: | :::image type="content" source="./images/outlook-preview-icon.png" alt-text="Microsoft Outlook preview icon"::: |
-
-Entries marked with a check and asterisk (&#x2713;*) indicate support for the host that is available only to preview audience who are enrolled in [Microsoft 365 Targeted Releases](prerequisites.md#enroll-your-developer-tenant-for-microsoft-365-targeted-releases-optional) for web clients or [Beta Channel apps](./prerequisites.md#install-microsoft-365-apps-in-your-test-environment) installed for desktop clients.
+For more information about the new Teams and Outlook, see [Outlook blog](https://techcommunity.microsoft.com/t5/outlook-blog/new-outlook-for-windows-now-available/ba-p/3932068) and [Teams adoption](https://adoption.microsoft.com/new-microsoft-teams/).
Using the following table, select any TeamsJS Capability for further details including reference docs, samples, usage notes, and limitations.
The following table lists host application support for TeamsJS capabilities that
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
The following table lists host application support for TeamsJS capabilities that
<tr> <th><a href="#app">app</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td>&#x2713;</td> <td>&#x2713;</td>
The following table lists host application support for TeamsJS capabilities that
<tr> <th><a href="#appinstalldialog">appInstallDialog</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
The following table lists host application support for TeamsJS capabilities that
<tr> <th><a href="#authentication">authentication</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td>&#x2713;</td> <td>&#x2713;</td>
The following table lists host application support for TeamsJS capabilities that
<td></td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
The following table lists host application support for TeamsJS capabilities that
<td></td> <td>&#x2713;</td> </tr>
- <tr>
+ <tr>
<th><a href="#call">call</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
The following table lists host application support for TeamsJS capabilities that
<tr> <th><a href="#chat">chat</a><img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
The following table lists host application support for TeamsJS capabilities that
</tr> <tr> <th><a href="#clipboard">clipboard</a><img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th>
- <td>&#x2713;</td>
- <td></td>
- <td>&#x2713;*</td>
- <td></td>
- <td>&#x2713;*</td>
<td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td></td>
- <td>&#x2713;*</td>
<td></td> <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
</tr> <tr> <th><a href="#dialog">dialog</a><img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
The following table lists host application support for TeamsJS capabilities that
<tr> <th><a href="#geolocation">geoLocation</a><img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td></td>
- <td>&#x2713;*</td>
+ <td></td>
<td>&#x2713;</td> <td></td> <td></td>
- <td>&#x2713;*</td>
+ <td></td>
<td>&#x2713;</td> <td>&#x2713;</td> <td></td>
The following table lists host application support for TeamsJS capabilities that
<td></td> <td></td> <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td></td>
<td></td> <td></td>
- <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
The following table lists host application support for TeamsJS capabilities that
<tr> <th><a href="#pages">pages</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td>&#x2713;</td> <td>&#x2713;</td>
The following table lists host application support for TeamsJS capabilities that
<td></td> <td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
- <td></td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
The following table lists host application support for TeamsJS capabilities that
<tr> <th><a href="#search">search</a><img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td>
+ <td>&#x2713; </td>
<td></td>
- <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td></td> <td></td> <td></td>
The following table lists host application support for TeamsJS capabilities that
<td></td> <td></td> <td></td>
- <td></td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td>
- <td></td>
- <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
</tr> </tbody> </table>
The following table lists support for TeamsJS capabilities that run only in the
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
The following table lists support for TeamsJS capabilities that run only in the
<tr> <th><a href="#people">people</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
The following table lists support for TeamsJS capabilities that run only in the
<tr> <th><a href="#sharing">sharing</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
- <td></td>
- <td></td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td></td> <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td> </tr> <tr> <th><a href="#stageview">stageView</a><img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
The following table lists support for TeamsJS capabilities that run only in the
<tr> <th><a href="#teamscore">teamsCore</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
- <td></td>
- <td></td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td></td> <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td> </tr>
The `app` namespace is supported globally across all application hosts and, ther
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
The `app` namespace is supported globally across all application hosts and, ther
<tr> <th>app</th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td>&#x2713;</td> <td>&#x2713;</td>
Deprecated. Namespace for initializing an app. For new apps, use [app.initialize
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace used to open a dialog for installing an application.
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace used to open a dialog for installing an application.
<tr> <th>appInstallDialog</th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
The `authentication` namespace is supported globally across all application host
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
The `authentication` namespace is supported globally across all application host
<tr> <th>authentication</th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td>&#x2713;</td> <td>&#x2713;</td>
Preview. Namespace to interact with the barcode scanning-related part of the lib
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace providing calendar-related functionality.
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace providing calendar-related functionality.
<td></td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
Namespace providing functionality to start a call with others.
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace providing functionality to start a call with others.
<tr> <th>call</th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
Preview. Namespace providing functionality to start a chat with others.
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Preview. Namespace providing functionality to start a chat with others.
<tr> <th>chat <img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
Preview. This capability enables users to copy and paste to the system clipboard
<thead> <tr> <th></th>
- <th colspan=3>Web</th>
+ <th colspan=4>Web</th>
<th colspan=5>Desktop</th> <th colspan=6>Mobile</th> </tr> <tr> <th></th>
- <th colspan=3></th>
+ <th colspan=4></th>
<th colspan=5>Windows</th> <th colspan=3>Android</th> <th colspan=3>iOS</th>
Preview. This capability enables users to copy and paste to the system clipboard
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Preview. This capability enables users to copy and paste to the system clipboard
<tbody> <tr> <th>clipboard<img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th>
- <td>&#x2713;</td>
<td></td> <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td>
- <td>&#x2713;*</td>
- <td></td>
- <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td></td>
- <td>&#x2713;*</td>
<td></td> <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
</tr> </tbody> </table>
Preview. This group of capabilities enables apps to show modal dialogs (referred
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Preview. This group of capabilities enables apps to show modal dialogs (referred
<tr> <th>dialog <img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
Preview. This group of capabilities enables apps to show modal dialogs (referred
<tr> <th><a href="#dialogadaptivecard">dialog.adaptiveCard</a> <img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
- <td></td>
<td>&#x2713;</td>
- <td></td>
<td>&#x2713;</td>
+ <td></td>
<td>&#x2713;</td> <td></td>
+ <td></td>
<td>&#x2713;</td>
+ <td></td>
+ <td></td>
</tr> <tr> <th><a href="#dialogadaptivecardbot">dialog.adaptiveCard.bot</a> <img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td></td>
- <td></td>
- <td></td>
- <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
Preview. This group of capabilities enables apps to show modal dialogs (referred
<td>&#x2713;</td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;</td>
+ <td></td>
<td></td> <td>&#x2713;</td>
+ <td></td>
+ <td></td>
</tr> <tr> <th><a href="#dialogupdate">dialog.update</a><img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
- <td></td>
- <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td> </tr> <tr> <th><a href="#dialogurl">dialog.url</a><img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
Preview. This group of capabilities enables apps to show modal dialogs (referred
<tr> <th><a href="#dialogurlbot">dialog.url.bot</a><img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
- <td></td>
+ <td>&#x2713;</td>
<td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
When an API doesn't support or generates an error, add logic to fail or provide
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
When an API doesn't support or generates an error, add logic to fail or provide
<tr> <th>geoLocation <img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td></td>
- <td>&#x2713;*</td>
+ <td></td>
<td>&#x2713;</td> <td></td> <td></td>
- <td>&#x2713;*</td>
+ <td></td>
<td>&#x2713;</td> <td>&#x2713;</td> <td></td>
Deprecated. Namespace providing location-related functionality (get and show loc
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace providing email-related functionality.
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace providing email-related functionality.
<td></td> <td></td> <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td></td>
<td></td> <td></td>
- <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
Namespace providing image file-related functionality.
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace providing in-meeting app functionality.
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace to interact with the menu-related part of the library. This module is
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Prior to TeamsJS version 2.0, all deep linking scenarios were handled using `sha
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Prior to TeamsJS version 2.0, all deep linking scenarios were handled using `sha
<tr> <th><a href="#pages">pages</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td>&#x2713;</td> <td>&#x2713;</td>
Prior to TeamsJS version 2.0, all deep linking scenarios were handled using `sha
<tr> <th><a href="#pagesappbutton">pages.appButton</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td> <td></td>
Prior to TeamsJS version 2.0, all deep linking scenarios were handled using `sha
<tr> <th><a href="#pagesbackstack">pages.backStack</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td> <td>&#x2713;</td>
- <td></td>
- <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td>
- <td></td>
+ <td>&#x2713;</td>
</tr> <tr> <th><a href="#pagescurrentapp">pages.currentApp</a></th> <td></td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td>&#x2713;</td> <td></td>
- <td>&#x2713;*</td>
<td>&#x2713;</td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
- <td></td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td>&#x2713;</td> <td>&#x2713;</td>
Prior to TeamsJS version 2.0, all deep linking scenarios were handled using `sha
<tr> <th><a href="#pagesconfig">pages.config</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
- <td></td>
- <td></td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
- <td></td>
<td></td> <td></td> <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td>
+ <td>&#x2713;</td>
<td></td> <td>&#x2713;</td> <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td>
+ <td>&#x2713;</td>
</tr> <tr> <th><a href="#pagestabs">pages.tabs</a></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
Namespace providing functionality for [People Picker API](../concepts/device-cap
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace providing functionality for [People Picker API](../concepts/device-cap
<tr> <th>people</th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
Preview. Namespace providing for profile-related functionality.
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Preview. Namespace providing for profile-related functionality.
<td></td> <td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
- <td></td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
Preview. Allows your application to interact with the host Microsoft 365 applica
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Preview. Allows your application to interact with the host Microsoft 365 applica
<tr> <th>search <img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td></td>
- <td>&#x2713;*</td>
<td>&#x2713;</td>
- <td></td>
+ <td>&#x2713;</td>
<td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td></td>
<td></td> <td></td> <td></td>
Preview. Namespace supporting in-app browser experiences of the host app. For ex
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Preview. Namespace supporting in-app browser experiences of the host app. For ex
<td></td> <td></td> <td></td>
- <td></td>
+ <td>&#x2713;</td>
<td>&#x2713;</td> <td></td>
- <td></td>
- <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
</tr> </tbody> </table>
Deprecated. Provides settings-related functionality. Use equivalent APIs from th
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace to open a share dialog for web content. For more information, see [Sha
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace to open a share dialog for web content. For more information, see [Sha
<tr> <th>sharing</th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
- <td></td>
- <td></td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td></td> <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td> </tr>
Preview. Namespace to interact with the Stageview specific part of the library.
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Preview. Namespace to interact with the Stageview specific part of the library.
<tr> <th>stageView <img src="./images/preview-badge.png" alt="Badge indicating this capability is in preview" /></th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td>&#x2713;</td>
- <td>&#x2713;*</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
The earlier version of the capability for providing modal dialogs (referred as t
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace containing the set of APIs that support Teams-specific functionalities
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Namespace containing the set of APIs that support Teams-specific functionalities
<tr> <th>teamsCore</th> <td>&#x2713;</td>
- <td>&#x2713;*</td>
- <td></td>
- <td></td>
<td>&#x2713;</td>
- <td>&#x2713;*</td>
<td></td> <td></td>
+ <td>&#x2713;</td>
+ <td>&#x2713;</td>
<td></td> <td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td>
+ <td>&#x2713;</td>
<td></td> <td></td> </tr>
Preview. Namespace representing functionality for in-meeting video effects.
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
Preview. Contains functionality to allow web apps to store data in webview cache
<tr> <td></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td> <td><img alt="Teams" src="./images/teams-icon.png"/></td>
- <td><img alt="Teams (Preview)" src="./images/teams-preview-icon.png"/></td>
+ <td><img alt="Teams (New)" src="./images/new-teams-icon.png"/></td>
<td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
- <td><img alt="Outlook (Preview)" src="./images/outlook-preview-icon.png"/></td>
+ <td><img alt="Outlook (New)" src="./images/new-outlook-icon.png"/></td>
<td><img alt="Teams" src="./images/teams-icon.png"/></td> <td><img alt="Microsoft 365 app" src="./images/microsoft-365-icon.png"/></td> <td><img alt="Outlook" src="./images/outlook-icon.png"/></td>
platform Cards Actions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/cards-actions.md
Title: Add card actions in a bot
-description: In this module, learn what are card actions in Microsoft Teams, action types and how to use them in your bots
+description: Learn what are card actions in Microsoft Teams, action types and how to use them in your bots.
ms.localizationpriority: medium Last updated 05/04/2023
Adaptive Cards support four action types:
In the Adaptive Card schema, the `data` property for Action.Submit is either a `string` or an `object`. A submit action behaves differently for each data property: * `string`: A string submit action automatically sends a message from the user to the bot and is visible in the conversation history.
-* `object`: An object submit action automatically sends an invisible message from the user to the bot that contains hidden data. An object submit action populates the activityΓÇÖs value property while the text property is empty.
+* `object`: An object submit action automatically sends an invisible message from the user to the bot that contains hidden data. An object submit action populates the activityΓÇÖs value property while the text property is empty.
-Action.Submit is equivalent to the Bot Framework actions. You can also modify the Adaptive Card `Action.Submit` payload to support existing Bot Framework actions using an `msteams` property in the `data` object of `Action.Submit`. When you define the `msteams` property under `data`, the `Action.Submit` behavior is defined by Teams client. If the `msteams` property isn't defined in the schema, `Action.Submit` works like a regular Bot Framework invoke action, where; the submit action triggers an invoke call to the bot and the bot receives the payload with all the input values defined in the input fields.
+Action.Submit is equivalent to the Bot Framework actions. You can also modify the Adaptive Card `Action.Submit` payload to support existing Bot Framework actions using an `msteams` property in the `data` object of `Action.Submit`. When you define the `msteams` property under `data`, the Teams client defines the behavior of `Action.Submit`. If the `msteams` property isn't defined in the schema, `Action.Submit` works like a regular Bot Framework invoke action, where; the submit action triggers an invoke call to the bot and the bot receives the payload with all the input values defined in the input fields.
> [!NOTE] >
+>* The bot doesnΓÇÖt receive user input unless the user submits their actions in the Adaptive Card through a button, such as **Save** or **Submit**. For example, the bot doesn't consider user actions, such as selecting an option from multiple choices or filling out fields in a form, as inputs unless the user submits them.
>* Adding `msteams` to data with a Bot Framework action doesn't work with an Adaptive Card dialog.
->* Primary or destructive `ActionStyle` isn't supported in Microsoft Teams.
+>* Primary or destructive `ActionStyle` isn't supported in Teams.
>* Your app has five seconds to respond to the invoke message. #### Example
For more information on cards and cards in bots, see [cards documentation](~/tas
### Adaptive Cards with messageBack action
-To include a `messageBack` action with an Adaptive Card include the following details in the `msteams` object:
+To include a `messageBack` action with an Adaptive Card, include the following details in the `msteams` object:
> [!NOTE] > You can include additional hidden properties in the `data` object, if required.
The following code shows an example of Adaptive Cards with `messageBack` action:
### Adaptive Cards with imBack action
-To include an `imBack` action with an Adaptive Card include the following details in the `msteams` object:
+To include an `imBack` action with an Adaptive Card, include the following details in the `msteams` object:
> [!NOTE] > You can include additional hidden properties in the `data` object, if required.
The following code shows an example of Adaptive Cards with `imBack` action:
### Adaptive Cards with sign-in action
-To include a `signin` action with an Adaptive Card include the following details in the `msteams` object:
+To include a `signin` action with an Adaptive Card, include the following details in the `msteams` object:
> [!NOTE] > You can include additional hidden properties in the `data` object, if required.
The following code shows an example of Adaptive Cards with `signin` action:
### Adaptive Cards with invoke action
-To include an `invoke` action with an Adaptive Card include the following details in the `msteams` object:
+To include an `invoke` action with an Adaptive Card, include the following details in the `msteams` object:
> [!NOTE] > You can include additional hidden properties in the `data` object, if required.
The following code shows an example of Adaptive Cards with `invoke` action with
|S.No.|Card| Description|.NET|Node.js|Python|Java|Manifest| |:--|:--|:--|--||--|-||
-|1|Adaptive card actions|This sample showscases different actions supported in adaptive cards.|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-adaptive-card-actions/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-adaptive-card-actions/nodejs)|NA|NA|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/bot-adaptive-card-actions/csharp/demo-manifest/bot-adaptivecard-actions.zip)|
+|1|Adaptive Card actions|This sample showcases different actions supported in Adaptive Cards.|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-adaptive-card-actions/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-adaptive-card-actions/nodejs)|NA|NA|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/bot-adaptive-card-actions/csharp/demo-manifest/bot-adaptivecard-actions.zip)|
|2|Using cards|Introduces all card types including thumbnail, audio, media etc. Builds on Welcoming user + multi-prompt bot by presenting a card with buttons in welcome message that route to appropriate dialog.|[View](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/csharp_dotnetcore/06.using-cards)|[View](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/javascript_nodejs/06.using-cards)|[View](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/python/06.using-cards)|[View](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/java_springboot/06.using-cards)|NA| |3|Adaptive cards|Demonstrates how the multi-turn dialog can use a card to get user input for name and age.|[View](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/csharp_dotnetcore/07.using-adaptive-cards)|[View](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/javascript_nodejs/07.using-adaptive-cards)|[View](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/python/07.using-adaptive-cards)|[View](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/java_springboot/07.using-adaptive-cards)|NA|
platform Teamsfx Preview And Customize App Manifest https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/TeamsFx-preview-and-customize-app-manifest.md
Title: Customize app manifest in Teams Toolkit
-description: In this module, learn how to edit, preview, and customize app manifest in different environment.
+description: Learn how to edit, preview, and customize app manifest in different environments.
ms.localizationpriority: medium
Last updated 05/13/2022
# Customize app manifest
-App manifest (previously called Teams app manifest) describes how your app integrates into Microsoft Teams. After scaffolding, the default app manifest file is available at `appPackage/manifest.json`. The app manifest file contains some environment variables with format of `${{XX_XX}}`, and the actual values are resolved using Microsoft Teams Toolkit with env files like `env/.env.dev` and `env/.env.local`.
+App manifest (previously called Teams app manifest) describes how your app integrates into Microsoft Teams. After scaffolding, the default app manifest file is available at `appPackage/manifest.json`. The app manifest file contains some environment variables with format of `${{XX_XX}}`, and the actual values are resolved using Microsoft Teams Toolkit with env files such as `env/.env.dev` and `env/.env.local`.
-To preview app manifest with actual content, Teams Toolkit generates the preview app manifest files under `appPackage/build` folder:
+To preview app manifest with actual content, Teams Toolkit generates the preview app manifest files under `appPackage/build` folder as shown in the following folder structure:
```text ΓööΓöÇΓöÇΓöÇappPackage
To preview app manifest with actual content, Teams Toolkit generates the preview
ΓööΓöÇΓöÇΓöÇmanifest.local.json - Previewed manifest of local Teams app ```
-You can preview the app manifest file in local and remove environments.
+You can preview the app manifest file in local and remote environments.
## Preview the app manifest file in local environment
-To preview the app manifest file in local environment, you can press F5 to run local debug. After you generate the environment variables in `env/.env.local`, the app package and the preview app manifest are built under `appPackage/build` folder.
+To preview the app manifest file in local environment, select the F5 key to run local debug. After you generate the environment variables in `env/.env.local`, the app package and the preview app manifest are built under `appPackage/build` folder.
-You can also trigger `Zip Teams App Package` from tree view or `Teams: Zip Teams app Package` from command palette to generate the previewed app manifest and app package.
+You can also trigger **Zip Teams App Package** from tree view or **Teams: Zip Teams App Package** from command palette to generate the preview app manifest and app package.
## Preview the app manifest file in remote environment
-To preview the app manifest file in remote environment, you can trigger `Provision` from tree view or `Teams: Provision in the cloud` from command palette. It generates environment variables for remote Teams app, build app package and the preview app manifest under `appPackage/build` folder.
+To preview the app manifest file in remote environment, you can trigger **Provision** from tree view or **Teams: Provision** from command palette. It generates environment variables for remote Teams app, build app package and the preview app manifest under `appPackage/build` folder.
-You can also trigger Zip Teams App Package from tree view or `Teams: Zip Teams app Package` from command palette to generate the preview app manifest and app package.
+You can also trigger **Zip Teams App Package** from tree view or **Teams: Zip Teams App Package** from command palette to generate the preview app manifest and app package.
-## Customize the app manifest for Visual Studio Code
+## Customize app manifest in Visual Studio Code
-During local debug or provision, Teams Toolkit loads app manifest from `appPackage/manifest.json` and resolves app manifest by environment variables defined in `env/.env.xx`, then creates or updates Teams app in [Teams Developer Portal](https://dev.teams.microsoft.com/home).
+During local debug or provision, Teams Toolkit loads app manifest from `appPackage/manifest.json` and resolves app manifest by environment variables defined in `env/.env.xx`, then creates or updates Teams app in [Developer Portal for Teams](https://dev.teams.microsoft.com/home).
1. You can define your own manifest.json file in `teamsapp.yml` and `teamsapp.local.yml`.
-For example, you can put your manifest.json file in `test/test.json`, and update the `manifestPath` parameters in yaml files.
+For example, you can put your manifest.json file in `test/test.json`, and update the `manifestPath` parameters in yaml files.
```text - uses: teamsApp/zipAppPackage # Build Teams app package with latest env value
For example, you can put your manifest.json file in `test/test.json`, and update
1. You can define your own environment variables. The default manifest.json contains some placeholders with format of ${{xx_xx}}. You can define your own environment variables and add placeholders in the manifest.json file. For example, you can customize app description by defining a new environment variable in env/.env.xx file, and update manifest.json with corresponding placeholder.
- `.env.dev`
+`.env.dev`
- ```text
+```text
TEAMS_APP_DESCRIPTION=This is an amazing app
- ```
+```
- `manifest.json`
+`manifest.json`
- ```text
+```json
{ "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.schema.json", "manifestVersion": "1.16",
For example, you can customize app description by defining a new environment var
"full": "Full description of tab0418" }, }
- ```
+```
-## Validate Application
+## Validate your app
-After customization, you may want to validate your app manifest or app package. You can trigger `Validate Application` from tree view, or `Teams: ValidateApplication` from command palette. There are two options, `Validate using manifest schema` or `Validate app package using validation rules`.
+After customization, you might want to validate your app manifest or app package. You can trigger **Validate Application** from tree view, or **Teams: Validate Application** from command palette. There are two options, **Validate using manifest schema** or **Validate app package using validation rules**.
### Validate using the app manifest schema This option renders `appPackage/manifest.json` with environment variables, and then validates your app manifest with its schema.
-CLI command:
+Alternatively, use the following Microsoft Teams Toolkit command line interface (Teams Toolkit CLI) command:
-```text
-teamsfx validate --manifest-path YOUR-PATH-TO-MANIFEST
+```bash
+teamsfx validate --manifest-path <YOUR-PATH-TO-MANIFEST>
```
-If you meet `MissingEnvironmentVariablesError`, it means that Teams Toolkit can't find corresponding environment variables defined in manifest.json. You may need to run Provision or F5 to generate environment variables, or manually update `.env.xx` file to fulfill the value.
+If you meet `MissingEnvironmentVariablesError`, it means that Teams Toolkit can't find corresponding environment variables defined in manifest.json. You may need to run **Provision** or select F5 to generate environment variables, or manually update `.env.xx` file to fulfill the value.
-**Validate app package using validation rules**
+### Validate app package using validation rules
This option validates the zipped app package with validation rules.
-CLI command:
+Alternatively, use the following Teams Toolkit CLI command:
-```text
-teamsfx validate --app-package-file-path YOUR-PATH-TO-APP-PACKAGE
+```bash
+teamsfx validate --app-package-file-path <YOUR-PATH-TO-APP-PACKAGE>
```
-It has another validation rules than the app manifest schema. For example, if static tab section has entityId "conversations" and name, the following error appears:
+It has other validation rules than the app manifest schema. For example, if static tab section has entityId `conversations` and name, the following error appears:
## Update Teams app
-After you've previewed and validated the app manifest file, you can sync your local changes to Teams Developer Portal by triggering `Teams: Update Teams app` command from command palette:
+After you've previewed and validated the app manifest file, you can sync your local changes to Teams Developer Portal by triggering **Teams: Update Teams App** command from command palette.
-CLI command:
+Alternatively, use the following Teams Toolkit CLI command:
-```text
+```bash
teamsfx update teams-app ``` > [!NOTE]
-> The change is reflected in Developer Portal. Any manual updates in Developer Portal are overwritten.
+>
+> * The change is reflected in Developer Portal. Any manual updates in Developer Portal are overwritten.
+> * To change the name of the published app, you must modify both the `local.manifest` and `manifest.json` files.
If the app manifest file is outdated due to configuration file change or template change, select any one of the following actions:
If the app manifest file is outdated due to configuration file change or templat
## To preview values for local and dev environment
-In `appPackage/manifest.json`, you can go to CodeLens to preview the values for `local` and `dev` environment.
+In `appPackage/manifest.json`, you can go to CodeLens to preview the values for `local` and `dev` environments.
:::image type="content" source="../assets/images/teams-toolkit-v2/customize app manifest/codelens-v5.png" alt-text="Screenshot shows the CodeLens v5."::: > [!NOTE] > Provision the environment or execute local debug to generate environment variables.
-You can go to `.env` file by selecting the CodeLens, which provide a dropdown list with all the environment names. After selecting one environment, the corresponding `.env` file opens.
+You can go to `.env` file by selecting CodeLens, which provides a dropdown list with all the environment names. After you select an environment, the corresponding `.env` file opens.
-To preview values for all the environment, you can hover over the placeholder. It shows a list of environment names and corresponding values. If you haven't provisioned the environment or executed the local debug, the environment variable may not exist. Select `Trigger Teams: Provision in the cloud command to see placeholder value` or `Trigger local debug to see placeholder value`.
+To preview values for all the environments, you can hover over the placeholder. It shows a list of environment names and corresponding values. If you didn't provision the environment or execute local debug, the environment variables might not exist. Provision or debug the app locally to see the placeholder value.
## See also
-* [Teams Toolkit Overview](teams-toolkit-fundamentals.md).
+* [Teams Toolkit Overview](teams-toolkit-fundamentals.md)
* [App manifest schema](../resources/schem) * [Developer Portal for Teams](../concepts/build-and-test/teams-developer-portal.md) * [Manage multiple environments](TeamsFx-multi-env.md)
platform Connectors Using https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/webhooks-and-connectors/how-to/connectors-using.md
To post a message to the webhook with PowerShell, follow these steps:
> * All native Adaptive Card schema elements, except `Action.Submit`, are fully supported. > * The supported actions are [**Action.OpenURL**](https://adaptivecards.io/explorer/Action.OpenUrl.html), [**Action.ShowCard**](https://adaptivecards.io/explorer/Action.ShowCard.html), and [**Action.ToggleVisibility**](https://adaptivecards.io/explorer/Action.ToggleVisibility.html).
-To send Adaptive Cards through an Incoming Webhook, follow these steps:
+To send Adaptive Cards with text or a Base64 encoded image through an Incoming Webhook, follow these steps:
1. [Set up a custom webhook](~/webhooks-and-connectors/how-to/add-incoming-webhook.md) in Teams. 1. Create Adaptive Card JSON file using the following code:
- ```json
+# [Text](#tab/text1)
+
+```json
{ "type":"message", "attachments":[
To send Adaptive Cards through an Incoming Webhook, follow these steps:
} ] }
- ```
+```
+
+The properties for Adaptive Card JSON file are as follows:
- The properties for Adaptive Card JSON file are as follows:
+* The `"type"` field must be `"message"`.
+* The `"attachments"` array contains a set of card objects.
+* The `"contentType"` field must be set to Adaptive Card type.
+* The `"content"` object is the card formatted in JSON.
- * The `"type"` field must be `"message"`.
- * The `"attachments"` array contains a set of card objects.
- * The `"contentType"` field must be set to Adaptive Card type.
- * The `"content"` object is the card formatted in JSON.
+# [Base64 encoded image](#tab/image1)
+
+```json
+ {
+ "type": "message",
+ "attachments": [
+ {
+ "contentType": "application/vnd.microsoft.card.adaptive",
+ "content": {
+ "type": "AdaptiveCard",
+ "body": [
+ {
+ "type": "Image",
+ "url": "data&colon;image/jpeg;base64,/xxxxxxxx"
+ }
+ ],
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "version": "1.0"
+ }
+ }
+ ]
+ }
+```
+
+In this example, the image is included as an attachment of type `Image` with the URL set to the Base64 encoded image data. Ensure that you replace `/xxxxxxxx` with the actual Base64 encoded image data.
+
+The properties for Adaptive Card JSON file are as follows:
+
+* The `"type"` field must be `"message"`.
+* The `"attachments"` array contains a set of card objects.
+* The `"contentType"` field must be set to Adaptive Card type.
+* The `"content"` object is the card formatted in JSON.
++ 1. Test your Adaptive Card with Postman:
- * Test the Adaptive Card using [Postman](https://www.postman.com) to send a POST request to the URL, created to set up Incoming Webhook.
- * Paste the JSON file in the body of the request and view the Adaptive Card message in Teams.
+ 1. Test the Adaptive Card using [Postman](https://www.postman.com) to send a POST request to the URL, created to set up Incoming Webhook.
+ 1. Paste the JSON file in the body of the request and view the Adaptive Card message in Teams.
> [!TIP] > Use Adaptive Card [code samples and templates](https://adaptivecards.io/samples) to test the body of POST request. ## Rate limiting for connectors
-Application rate limits control the traffic that a connector or an Incoming Webhook is permitted to generate on a channel. Teams track requests using a fixed rate window and incremental counter measured in seconds. If more than four requests are made in a second, the client connection is throttled until the window refreshes for the duration of the fixed rate.
+Application rate limits control the traffic that a connector or an Incoming Webhook is permitted to generate on a channel. Teams tracks requests using a fixed rate window and incremental counter measured in seconds. If more than four requests are made in a second, the client connection is throttled until the window refreshes for the duration of the fixed rate.
### Transactions per second thresholds
platform Whats New https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/whats-new.md
Explore updates from the previous GA releases listed here.
| 05/06/2019 | Application Certification program for Teams Store apps. | [Application Certification](~/concepts/deploy-and-publish/appsource/post-publish/overview.md#complete-microsoft-365-certification) | | 05/06/2019 | App Templates are now available | [App Templates](~/samples/app-templates.md) | | 04/23/2019 | Action-based Message Extensions are now available. | [Action-based Message Extensions](~/concepts/messaging-extensions/create-extensions.md) |
-| 02/18/2019 | Creating deep links to private chat. | [Deep linking to a chat](concepts/build-and-test/deep-link-teams.md#deep-links-to-navigate-to-chat-messages) |
+| 02/18/2019 | Creating deep links to private chat. | [Deep linking to a chat](concepts/build-and-test/deep-link-teams.md#deep-link-to-navigate-to-chat-messages) |
| 01/23/2019 | Surfacing SKU and licenceType information in the tab context. | [Tab Context](~/concepts/tabs/tabs-context.md) | </details>
Explore updates from the previous GA releases listed here.
| **Date** | **Update** | **Find here** | | -- | | | | 11/12/2018 | Tabs in group chat are now available in the released version of Teams. The tabs section is updated for clarity.| [Configurable tabs](~/concepts/tabs/tabs-configurable.md) |
-| 11/09/2018 | You can now create deep links to private chats between users. | [Deep linking to a chat](concepts/build-and-test/deep-link-teams.md#deep-links-to-navigate-to-chat-messages) |
+| 11/09/2018 | You can now create deep links to private chats between users. | [Deep linking to a chat](concepts/build-and-test/deep-link-teams.md#deep-link-to-navigate-to-chat-messages) |
| 11/08/2018 | SharePoint Framework 1.7 and a new feature to use Microsoft Teams tab as a SharePoint Framework web part is shipped. | [Tabs in SharePoint](~/concepts/tabs/tabs-in-sharepoint.md) | | 11/05/2018 | The **task module** feature is released. A task module allows you to create modal pop-up experiences in your Teams application, from both bots and tabs. Inside the pop-up, you can run your own custom HTML/JavaScript code, show an `<iframe>`-based widget such as a YouTube or Microsoft Stream video, or display an [Adaptive card](/adaptive-cards/). | [Task module Overview](~/concepts/task-modules/task-modules-overview.md), [task module in tabs](~/concepts/task-modules/task-modules-tabs.md), [task module in bots](~/concepts/task-modules/task-modules-bots.md) | | 10/05/2018 | Formatting information for cards is updated and tested in the desktop, iOS, and Android clients for Teams. | [Cards](~/concepts/cards/cards.md), [Card formatting](~/concepts/cards/cards-format.md) |