Updates from: 03/09/2022 02:26:56
Service Microsoft Docs article Related commit history on GitHub Change details
platform API References https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/API-references.md
The following table provides a list of APIs available across the Microsoft Teams
|||-| |[**Get user context**](#get-user-context-api)| Get contextual information to display relevant content in a Teams tab.| MSTC SDK| |[**Get participant**](#get-participant-api)| Fetch participant information by meeting ID and participant ID. |MSBF SDK|
-|[**Send notification signal**](#send-notification-signal-api)| Provide meeting signals using the existing conversation notification API for user-bot chat and allows to notify user action that shows an in-meeting dialog box. |MSBF SDK|
+|[**Send in-meeting notification**](#send-an-in-meeting-notification)| Provide meeting signals using the existing conversation notification API for user-bot chat and allows to notify user action that shows an in-meeting notification. |MSBF SDK|
|[**Get meeting details**](#get-meeting-details-api)| Get a meeting's static metadata. |MSBF SDK | |[**Send real-time captions**](#send-real-time-captions-api)| Send real-time captions to an ongoing meeting. |MSTC SDK| |[**Share app content to stage**](#share-app-content-to-stage-api)| Share specific parts of the app to meeting stage from the app side panel in a meeting. |MSTC SDK|
The following table provides the response codes:
| **401** | The app responds with an invalid token.| | **404** | The meeting has either expired or participants are not available.|
-## Send notification signal API
+## Send an in-meeting notification
-All users in a meeting receive the notifications sent through the `NotificationSignal` API. `NotificationSignal` API enables you to provide meeting signals that are delivered using the existing conversation notification API for user-bot chat. You can send signal based on user action, an in-meeting dialog box. The API includes query parameter, examples, and response codes.
+All users in a meeting receive the notifications sent through in-meeting notification payload. In-meeting notification payload triggers an in-meeting notification and enables you to provide meeting signals that are delivered using the existing conversation notification API for user-bot chat. You can send an in-meeting notification based on user action. The payload is available through Bot Services.
> [!NOTE]
-> * When an in-meeting dialog box is invoked, the content is presented as a chat message.
-> * Currently, sending targeted notifications is not supported.
+> * When an in-meeting notification is invoked, the content is presented as a chat message.
+> * Currently, sending targeted notifications and support for webapp are not supported.
+> * You must invoke the [submitTask()](../task-modules-and-cards/task-modules/task-modules-bots.md#submit-the-result-of-a-task-module) function to dismiss automatically after a user takes an action in the web view. This is a requirement for app submission. For more information, see [Teams SDK task module](/javascript/api/@microsoft/teams-js/microsoftteams.tasks?view=msteams-client-js-latest#submittask-stringobject--stringstring&preserve-view=true).
+> * If you want your app to support anonymous users, initial invoke request payload must rely on `from.id` request metadata in `from` object, not `from.aadObjectId` request metadata. `from.id` is the user ID and `from.aadObjectId` is the Microsoft Azure Active Directory (Azure AD) ID of the user. For more information, see [using task modules in tabs](../task-modules-and-cards/task-modules/task-modules-tabs.md) and [create and send the task module](../messaging-extensions/how-to/action-commands/create-task-module.md?tabs=dotnet#the-initial-invoke-request).
### Query parameter
The `Bot ID` is declared in the manifest and the bot receives a result object.
> [!NOTE] > * The `completionBotId` parameter of the `externalResourceUrl` is optional in the requested payload example. > * The `externalResourceUrl` width and height parameters must be in pixels. For more information, see [design guidelines](design/designing-apps-in-meetings.md).
-> * The URL is the page, which loads as `<iframe>` in the in-meeting dialog box. The domain must be in the apps' `validDomains` array in your app manifest.
+> * The URL is the page, which loads as `<iframe>` in the in-meeting notification. The domain must be in the apps' `validDomains` array in your app manifest.
# [C#](#tab/dotnet)
platform Enable And Configure Your App For Teams Meetings https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/enable-and-configure-your-app-for-teams-meetings.md
In a meeting chat, enter the **@** key and select **Get bots**.
### During a meeting
-During a meeting, you can use the `meetingSidePanel` or the in-meeting dialog box to build unique experiences for your apps.
+During a meeting, you can use the `meetingSidePanel` or in-meeting notification to build unique experiences for your apps.
#### Meeting SidePanel
Messaging extension works as expected when a user is in an in-meeting view. The
> [!NOTE] > Use version 1.7.0 or higher of [Teams SDK](/javascript/api/overview/msteams-client?view=msteams-client-js-latest&preserve-view=true), as versions prior to it do not support the side panel.
-#### In-meeting dialog box
+#### In-meeting notification
-The in-meeting dialog box is used to engage participants during the meeting and collect information or feedback during the meeting. Use the [SendNotificationSignal API](API-references.md#send-notification-signal-api) to trigger a bubble notification. As part of the notification request payload, include the URL where the content to be shown is hosted.
+The in-meeting notification is used to engage participants during the meeting and collect information or feedback during the meeting. Use an [in-meeting notification payload](API-references.md#send-an-in-meeting-notification) to trigger an in-meeting notification. As part of the notification request payload, include the URL where the content to be shown is hosted.
-In-meeting dialog must not use task module. Task module isn't invoked in a meeting chat. An external resource URL is used to display the content bubble in a meeting. You can use the `submitTask` method to submit data in a meeting chat.
+In-meeting notification must not use task module. Task module isn't invoked in a meeting chat. An external resource URL is used to display in-meeting notification. You can use the `submitTask` method to submit data in a meeting chat.
-> [!NOTE]
-> * You must invoke the [submitTask()](../task-modules-and-cards/task-modules/task-modules-bots.md#submit-the-result-of-a-task-module) function to dismiss automatically after a user takes an action in the web view. This is a requirement for app submission. For more information, see [Teams SDK task module](/javascript/api/@microsoft/teams-js/microsoftteams.tasks?view=msteams-client-js-latest#submittask-stringobject--stringstring&preserve-view=true).
-> * If you want your app to support anonymous users, initial invoke request payload must rely on `from.id` request metadata in `from` object, not `from.aadObjectId` request metadata. `from.id` is the user ID and `from.aadObjectId` is the Microsoft Azure Active Directory (Azure AD) ID of the user. For more information, see [using task modules in tabs](../task-modules-and-cards/task-modules/task-modules-tabs.md) and [create and send the task module](../messaging-extensions/how-to/action-commands/create-task-module.md?tabs=dotnet#the-initial-invoke-request).
#### Shared meeting stage
platform In App Purchase Flow https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/prepare/in-app-purchase-flow.md
The following example shows the users to purchase subscription plans for a ficti
1. In the Teams **Store**, find and select the app.
-1. In the app details dialog, select **Buy a subscription** or **Add for me**.
+1. In the app details dialog, select **Buy a subscription** or **Add for me**.
:::image type="content" source="~/assets/images/saas-offer/buysubscriptionplancontoso.png" alt-text="Buying the subscription for the selected app." border="true":::
-
1. **Add for me** offers a free trial version of the app and later **Upgrade** it to a paid version.
- :::image type="content" source="~/assets/images/saas-offer/upgradeapp.png" alt-text="Upgrading to the subscription for the selected app." border="true":::
+ :::image type="content" source="~/assets/images/saas-offer/upgradeapp.png" alt-text="Upgrading to the subscription for the selected app." lightbox="../../../../assets/images/saas-offer/upgradeapp.png" border="true":::
1. In the **Choose a subscription plan** dialog, choose the plan and select **Checkout**.
- :::image type="content" source="~/assets/images/saas-offer/choosingsubscriptionplancontoso.png" alt-text="Selecting the appropriate subscription plan." border="true":::
+ :::image type="content" source="~/assets/images/saas-offer/choosingsubscriptionplancontoso.png" alt-text="Selecting the appropriate subscription plan." lightbox="../../../../assets/images/saas-offer/choosingsubscriptionplancontoso.png" border="true":::
1. Complete the transaction and select **Configure now** to set up your subscription.
- :::image type="content" source="~/assets/images/saas-offer/saas-offer-configure-now.png" alt-text="Setting up the subscription." border="true":::
+ :::image type="content" source="~/assets/images/saas-offer/saas-offer-configure-now.png" alt-text="Setting up the subscription." lightbox="../../../../assets/images/saas-offer/saas-offer-configure-now.png" border="true":::
- :::image type="content" source="~/assets/images/saas-offer/getstarted.png" alt-text="Landing page of the subscription." border="true":::
+ :::image type="content" source="~/assets/images/saas-offer/getstarted.png" alt-text="Landing page of the subscription." lightbox="../../../../assets/images/saas-offer/getstarted.png" border="true":::
## Next step
platform Tabs Mobile https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/design/tabs-mobile.md
keywords: app mobile tab channel group authentication distribution
When you are building a Microsoft Teams app that includes a tab, you must test how your tab functions on both the Android and iOS Microsoft Teams clients. This article outlines some of the key scenarios you must consider.
-If you choose to have your channel or group tab appear on Teams mobile clients, the `setSettings()` configuration must have a value for the `websiteUrl` property. To ensure optimal user experience, you must follow the guidance for tabs on mobile in this article when creating your tabs.
+If you choose to have your channel or group tab appear on Teams mobile clients, the [`setSettings()`](/javascript/api/@microsoft/teams-js/microsoftteams.settings?view=msteams-client-js-latest#@microsoft-teams-js-microsoftteams-settings-setsettings&preserve-view=true) configuration must have a value for the `websiteUrl` property. To ensure optimal user experience, you must follow the guidance for tabs on mobile in this article when creating your tabs.
Apps [distributed through the Teams store](~/concepts/deploy-and-publish/appsource/publish.md) have a separate approval process for mobile clients. The default behavior of such apps is as follows:
platform Access Teams Context https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/access-teams-context.md
The following code provides an example of context variable:
## Retrieve context in private channels
-> [!Note]
-> Private channels are currently in private developer preview.
- When your content page is loaded in a private channel, the data you receive from the `getContext` call is obfuscated to protect the privacy of the channel. The following fields are changed when your content page is in a private channel:
The following fields are changed when your content page is in a private channel:
* `teamSitePath`: Set to the path of a distinct, unique SharePoint site for the private channel * `teamSiteDomain`: Set to the domain of a distinct, unique SharePoint site domain for the private channel
-If your page makes use of any of these values, you must check the `channelType` field to determine if your page is loaded in a private channel and respond appropriately.
+If your page makes use of any of these values, the value of `channelType` field must be `Private` to determine if your page is loaded in a private channel and can respond appropriately.
+
+## Retrieve context in Microsoft Teams Connect shared channels
+
+> [!NOTE]
+> Currently, Microsoft Teams Connect shared channels are in [developer preview](../../resources/dev-preview/developer-preview-intro.md) only.
+
+When your content page is loaded in a Microsoft Teams Connect shared channel, the data you receive from the `getContext` call is altered due to the unique roster of users in shared channels.
+
+The following fields are changed when your content page is in a shared channel:
+
+* `groupId`: Undefined for shared channels.
+* `teamId`: Set to the `threadId` of the team, the channel is shared for the current user. If the user has access to multiple teams, the `teamId` is set to the team that hosts (creates) the shared channel.
+* `teamName`: Set to the name of the team, the channel is shared for the current user. If the user has access to multiple teams, the `teamName` is set to the team that hosts (creates) the shared channel.
+* `teamSiteUrl`: Set to the URL of a distinct, unique SharePoint site for the shared channel.
+* `teamSitePath`: Set to the path of a distinct, unique SharePoint site for the shared channel.
+* `teamSiteDomain`: Set to the domain of a distinct, unique SharePoint site domain for the shared channel.
+
+In addition to these field changes, there are two new fields available for shared channels:
+
+* `hostTeamGroupId`: Set to the `groupId` associated with the hosting team, or the team that created the shared channel. The property can make Microsoft Graph API calls retrieve membership of the shared channel.
+* `hostTeamTenantId`: Set to the `tenantId` associated with the hosting team, or the team that created the shared channel. The property can be cross referenced with the current user's tenant ID found in the `tid` field of `getContext` to determine if the user is internal or external to the hosting team's tenant.
-> [!Note]
-> `teamSiteUrl` also works well for standard channels.
+If your page makes use of any of these values, the value of `channelType` field must be `Shared` to determine if your page is loaded in a shared channel and can respond appropriately.
## Handle theme change
The `theme` argument in the function is a string with a value of `default`, `dar
* [Teams tabs](~/tabs/what-are-tabs.md) * [Create a personal tab](~/tabs/how-to/create-personal-tab.md) * [Create a channel or group tab](~/tabs/how-to/create-channel-group-tab.md)
-* [Use task modules in tabs](~/task-modules-and-cards/task-modules/task-modules-tabs.md)
+* [Use task modules in tabs](~/task-modules-and-cards/task-modules/task-modules-tabs.md)
platform Create Channel Group Tab https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/create-channel-group-tab.md
## Create a custom channel or group tab
-You can create a channel or group tab using Node.js and the Yeoman Generator, ASP.NETCore, or ASP.NETCore MVC.
+You can create a channel or group tab using Node.js and the Yeoman Generator, ASP.NETCore, or ASP.NETCore MVC. For a channel or group tab on Microsoft Teams mobile, see [tabs on mobile](~/tabs/design/tabs-mobile.md).
# [Node.js](#tab/nodejs)
platform Create Personal Tab https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/create-personal-tab.md
keywords: yeoman ASP.NET MVC package appmanifest conversation domain permission
## Create a custom personal tab
-You can create a personal tab using Node.js and the Yeoman Generator, ASP.NET Core, or ASP.NET Core MVC.
+You can create a personal tab using Node.js and the Yeoman Generator, ASP.NET Core, or ASP.NET Core MVC. For a personal tab on Microsoft Teams mobile, see [tabs on mobile](~/tabs/design/tabs-mobile.md).
# [Node.js](#tab/nodejs)
platform User Specific Views https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/User-Specific-Views.md
ms.localizationpriority: medium
Earlier if Adaptive Cards were sent in a Teams conversation, all users see the exact same card content. With the introduction of the Universal Actions model and `refresh` for Adaptive Cards, bot developers can now provide User Specific Views of Adaptive Cards to users. The same Adaptive Card can now refresh to a User Specific Adaptive Card. Maximum 60 different users can see a different version of the card with additional information or actions. The Adaptive Card provides powerful scenarios like approvals, poll creator controls, ticketing, incident management, and project management cards.
+> [!NOTE]
+> User Specific View is supported for Adaptive Cards sent by a bot and is dependent on Universal Actions.
+ For example, Megan, a safety inspector at Contoso, wants to create an incident and assign it to Alex. Megan also wants everyone in the team to be aware about the incident. Megan uses Contoso incident reporting message extension powered by Universal Actions for Adaptive Cards. # [Mobile](#tab/mobile)
Card design guidelines to keep in mind while designing User Specific Views:
* [Work with Universal Actions for Adaptive Cards](Work-with-universal-actions-for-adaptive-cards.md) * [Up to date views](Up-To-Date-Views.md)
-* [Form completion feedback](~/bots/how-to/conversations/conversation-messages.md#form-completion-feedback)
+* [Form completion feedback](~/bots/how-to/conversations/conversation-messages.md#form-completion-feedback)