Updates from: 03/26/2021 04:20:45
Service Microsoft Docs article Related commit history on GitHub Change details
platform Create Apps For Teams Meetings https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/apps-in-teams-meetings/create-apps-for-teams-meetings.md
keywords: teams apps meetings user participant role api
## Prerequisites and considerations
-* Apps in meetings require some basic knowledge of [Teams app development](../overview.md). An app in a meeting can comprise of [tabs](../tabs/what-are-tabs.md), [bots](../bots/what-are-bots.md), and [messaging extensions](../messaging-extensions/what-are-messaging-extensions.md) features and will require updates to the Teams [app manifest](#update-your-app-manifest) to indicate that the app is available for meetings
+Before you create apps for Teams meetings, you must have an understanding of the following:
-* For your app to function in the meeting lifecycle as a tab, it must support configurable tabs in the [groupchat scope](../resources/schem#post-meeting-app-experience) chats.
+* You must have knowledge of how to develop Teams apps. For more information, see [Teams app development](../overview.md).
-* Meeting API URL parameters may require `meetingId`, `userId`, and the [tenantId](/onedrive/find-your-office-365-tenant-id) These are available as part of the Teams Client SDK and bot activity. Additionally, reliable information for user ID and tenant ID can be retrieved using [Tab SSO authentication](../tabs/how-to/authentication/auth-aad-sso.md).
+* You must update the Teams app manifest to indicate that the app is available for meetings. For more information, see [app manifest](#update-your-app-manifest).
-* Some meeting APIs, such as `GetParticipant`, require a [bot registration and ID](../build-your-first-app/build-bot.md) to generate auth tokens.
+* For your app to function in the meeting lifecycle as a tab, it must support configurable tabs in the groupchat scope. For more information, see [groupchat scope](../resources/schem).
-* You must adhere to general [Teams tab design guidelines](../tabs/design/tabs.md) for pre- and post-meeting scenarios. For experiences during meetings, refer to the [in-meeting tab](../apps-in-teams-meetings/design/designing-apps-in-meetings.md#use-an-in-meeting-tab) and [in-meeting dialog](../apps-in-teams-meetings/design/designing-apps-in-meetings.md#use-an-in-meeting-dialog) design guidelines.
+* You must adhere to general Teams tab design guidelines for pre- and post-meeting scenarios. For experiences during meetings, refer to the in-meeting tab and in-meeting dialog design guidelines. For more information, see [Teams tab design guidelines](../tabs/design/tabs.md), [in-meeting tab design guidelines](../apps-in-teams-meetings/design/designing-apps-in-meetings.md#use-an-in-meeting-tab) and [in-meeting dialog design guidelines](../apps-in-teams-meetings/design/designing-apps-in-meetings.md#use-an-in-meeting-dialog).
-* For your app to update in real time, it must be up-to-date based on event activities in the meeting. These events can be within the in-meeting dialog (refer to completion `bot Id` parameter in `Notification Signal API`) and other surfaces across the meeting lifecycle
+* You must support the `groupchat` scope to enable your app in pre-meeting and post-meeting chats. With the pre-meeting app experience, you can find and add meeting apps and perform pre-meeting tasks. With post-meeting app experience, you can view the results of the meeting, such as poll survey results or feedback.
+
+* Meeting API URL parameters must have `meetingId`, `userId`, and `tenantId`. These are available as part of the Teams client SDK and bot activity. In addition, reliable information for user ID and tenant ID can be retrieved using [Tab SSO authentication](../tabs/how-to/authentication/auth-aad-sso.md).
+
+* The `GetParticipant` API must have a bot registration and ID to generate auth tokens. For more information, see [bot registration and ID](../build-your-first-app/build-bot.md).
+
+* For your app to update in real time, it must be up-to-date based on event activities in the meeting. These events can be within the in-meeting dialog box and other stages across the meeting lifecycle. For the in-meeting dialog box, see completion `bot Id` parameter in `Notification Signal API`.
## Meeting apps API reference |API|Description|Request|Source| |||-||
-|**GetUserContext**| Get contextual information to display relevant content in a Teams tab. |_**microsoftTeams.getContext( ( ) => { /*...*/ } )**_|Microsoft Teams client SDK|
-|**GetParticipant**|This API allows a bot to fetch a participant information by meeting id and participant id.|**GET** _**/v1/meetings/{meetingId}/participants/{participantId}?tenantId={tenantId}**_ |Microsoft Bot Framework SDK|
-|**NotificationSignal** |Meeting signals will be delivered using the following existing conversation notification API (for user-bot chat). This API allows developers to signal based on end-user action to show-case an in-meeting dialog bubble.|**POST** _**/v3/conversations/{conversationId}/activities**_|Microsoft Bot Framework SDK|
+|**GetUserContext**| This API enables you to get contextual information to display relevant content in a Teams tab. |_**microsoftTeams.getContext( ( ) => { /*...*/ } )**_|Microsoft Teams client SDK|
+|**GetParticipant**| This API allows a bot to fetch participant information by meeting ID and participant ID. |**GET** _**/v1/meetings/{meetingId}/participants/{participantId}?tenantId={tenantId}**_ |Microsoft Bot Framework SDK|
+|**NotificationSignal** | This API enables you to provide meeting signals that are delivered using the existing conversation notification API for user-bot chat. It allows you to signal based on user action that shows an in-meeting dialog box. |**POST** _**/v3/conversations/{conversationId}/activities**_|Microsoft Bot Framework SDK|
### GetUserContext
-Please refer to our [Get context for your Teams tab](../tabs/how-to/access-teams-context.md#getting-context-by-using-the-microsoft-teams-javascript-library) documentation for guidance on identifying and retrieving contextual information for your tab content. As part of meetings extensibility, a new value has been added for the response payload:
-
-Γ£ö **meetingId**: used by a tab when running in the meeting context.
+To identify and retrieve contextual information for your tab content, see [get context for your Teams tab](../tabs/how-to/access-teams-context.md#getting-context-by-using-the-microsoft-teams-javascript-library). `meetingId` is used by a tab when running in the meeting context and is added for the response payload.
### GetParticipant API > [!NOTE]
->
-> * Do not cache participant roles since the meeting organizer can change a role at any point in time.
->
+> * Do not cache participant roles since the meeting organizer can change a role any time.
> * Teams does not currently support large distribution lists or roster sizes of more than 350 participants for the `GetParticipant` API. #### Query parameters
Please refer to our [Get context for your Teams tab](../tabs/how-to/access-teams
|Value|Type|Required|Description| |||-|| |**meetingId**| string | Yes | The meeting identifier is available through Bot Invoke and Teams Client SDK.|
-|**participantId**| string | Yes | The participantId is the user ID. It is available in Tab SSO, Bot Invoke, and Teams Client SDK. It is highly recommended to get a participantId from the Tab SSO. |
-|**tenantId**| string | Yes | The tenantId is required for the tenant users. It is available in Tab SSO, Bot Invoke, and Teams Client SDK. It is highly recommended to get a tenantId from the Tab SSO. |
+|**participantId**| string | Yes | The participant ID is the user ID. It is available in Tab SSO, Bot Invoke, and Teams Client SDK. It is recommended to get a participant ID from the Tab SSO. |
+|**tenantId**| string | Yes | The tenant ID is required for the tenant users. It is available in Tab SSO, Bot Invoke, and Teams Client SDK. It is recommended to get a tenant ID from the Tab SSO. |
#### Example
-# [C#/.NET](#tab/dotnet)
+# [C#](#tab/dotnet)
```csharp protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
export class MyBot extends TeamsActivityHandler {
GET /v1/meetings/{meetingId}/participants/{participantId}?tenantId={tenantId} ```
-The response body is:
+* * *
+
+The JSON response body for `GetParticipant` API is:
```json {
The response body is:
} ```
-* * *
- #### Response codes
-* **403**: The app is not allowed to get participant information. This is the most common error response and is triggered if the app is not installed in the meeting. For example, if the app is disabled by tenant admin or blocked during livesite mitigation.
-* **200**: Participant information successfully retrieved.
-* **401**: Invalid token.
-* **404**: Participant cannot be found.
-* **500**: The meeting has either expired (more than 60 days since the meeting ended) or the participant does not have permissions based on their role.
--
-**Coming Soon**
-
-* **404**: The meeting has either expired or participant cannot be found.
-
+|Response code|Description|
+|||
+| **403** | The app is not allowed to get participant information. This is the most common error response and is triggered if the app is not installed in the meeting. For example, if the app is disabled by tenant admin or blocked during live site migration.|
+| **200** | The participant information is successfully retrieved.|
+| **401** | The app responds with an invalid token.|
+| **404** | The meeting has either expired or participant cannot be found.|
+| **500** | The meeting has either expired more than 60 days since the meeting ended or the participant does not have permissions based on their role.|
### NotificationSignal API
-All users in a meeting receive the notifications sent through the NotificationSignal API.
+All users in a meeting receive the notifications sent through the `NotificationSignal` API.
> [!NOTE]
-> Currently, sending targetted notifications is not supported.
-> When an in-meeting dialog is invoked, the same content will also be presented as a chat message.
+> * When an in-meeting dialog box is invoked, the content is presented as a chat message.
+> * Currently, sending targeted notifications is not supported.
#### Query parameters
All users in a meeting receive the notifications sent through the NotificationSi
#### Example
-The `Bot ID` is declared in the manifest and the bot receives a result object. In the following example, the `completionBotId` parameter of the `externalResourceUrl` is optional in the requested payload:
+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. `Bot ID` is declared in the manifest and the bot receives a result object.
> * The `externalResourceUrl` width and height parameters must be in pixels. To ensure the dimensions are within the allowed limits, see [design guidelines](design/designing-apps-in-meetings.md).
-> * The URL is the page loaded as an `<iframe>` in the in-meeting dialog. The domain must be in the app's `validDomains` array in your app manifest.
+> * The URL is the page loaded as an `<iframe>` in the in-meeting dialog box. The domain must be in the app's `validDomains` array in your app manifest.
-# [C#/.NET](#tab/dotnet)
+# [C#](#tab/dotnet)
```csharp Activity activity = MessageFactory.Text("This is a meeting signal test");
POST /v3/conversations/{conversationId}/activities
* * *
-#### Response Codes
+#### Response codes
-* **201**: Activity with signal is successfully sent.
-* **401**: Invalid token.
-* **403**: The app is unable to send the signal. This can happen due to various reasons such as the tenant admin disables the app, the app is blocked during live site migration, and so on. In this case, the payload contains a detailed error message.
-* **404**: Meeting chat does not exist.
-
+|Response code|Description|
+|||
+| **201** | The activity with signal is successfully sent |
+| **401** | The app responds with an invalid token. |
+| **403** | The app is unable to send the signal. This can happen due to various reasons such as the tenant admin disables the app, the app is blocked during live site migration, and so on. In this case, the payload contains a detailed error message. |
+| **404** | The meeting chat does not exist. |
## Enable your app for Teams meetings ### Update your app manifest
-The meetings app capabilities are declared in your app manifest through the **configurableTabs** -> **scopes** and **context** arrays. *Scope* defines to whom and *context* defines where your app will be available.
+The meetings app capabilities are declared in your app manifest using the `configurableTabs`, `scopes`, and `context` arrays. Scope defines to whom and context defines where your app is available.
> [!NOTE]
-> Please use [Developer Preview manifest schema](../resources/schem) to try this in your app manifest.
+> Try updating your app manifest with the [manifest schema](../resources/schem).
```json
The meetings app capabilities are declared in your app manifest through the **co
### Context property
-The tab `context` and `scopes` properties work in harmony to allow you to determine where you want your app to appear. Tabs in the `team` or `groupchat` scope can have more than one context. The possible values for the context property are as follows:
+The tab `context` and `scopes` properties enable you to determine where your app must appear. Tabs in the `team` or `groupchat` scope can have more than one context. Following are the values for the `context` property from which you can use all or some of the values:
-* **channelTab**: a tab in the header of a team channel.
-* **privateChatTab**: a tab in the header of a group chat between a set of users not in the context of a team or meeting.
-* **meetingChatTab**: a tab in the header of a group chat between a set of users in the context of a scheduled meeting.
-* **meetingDetailsTab**: a tab in the header of the meeting details view of the calendar.
-* **meetingSidePanel**: an in-meeting panel opened via the unified bar (u-bar).
+|Value|Description|
+|||
+| **channelTab** | A tab in the header of a team channel. |
+| **privateChatTab** | A tab in the header of a group chat between a set of users not in the context of a team or meeting. |
+| **meetingChatTab** | A tab in the header of a group chat between a set of users in the context of a scheduled meeting. |
+| **meetingDetailsTab** | A tab in the header of the meeting details view of the calendar. |
+| **meetingSidePanel** | An in-meeting panel opened via the unified bar (U-bar). |
> [!NOTE]
-> "Context" property is currently not supported and thus will be ignored on mobile clients
+> `Context` property is currently not supported on mobile clients.
## Configure your app for meeting scenarios > [!NOTE]
-> * For your app to be visible in the tab gallery it needs to **support configurable tabs** and the **group chat scope**.
->
-> * Mobile clients support Tabs only in Pre and Post Meeting Surfaces. The in-meeting experiences (in-meeting dialog and tab) on mobile will be available soon. Follow the [guidance for tabs on mobile](../tabs/design/tabs-mobile.md) when creating your tabs for mobile.
+> * For your app to be visible in the tab gallery it must support configurable tabs and the group chat scope.
+> * Mobile clients support tabs only in pre and post meeting stages.
+> * The in-meeting experiences that is in-meeting dialog box and tab is currently not supported on mobile clients. For more information, see [guidance for tabs on mobile](../tabs/design/tabs-mobile.md) when creating your tabs for mobile.
### Before a meeting
-Users with organizer and/or presenter roles add tabs to a meeting using the plus Γ₧ò button in the meeting **Chat** and meeting **details** pages. Messaging extensions are added to via the ellipses/overflow menu &#x25CF;&#x25CF;&#x25CF; located beneath the compose message area in the chat. Bots are added to a meeting chat using the "**@**" key and selecting **Get bots**.
+Before a meeting, users can add tabs, bots and messaging extensions to a meeting. Users with organizer and presenter roles can add tabs to a meeting.
-Γ£ö The user identity *must* be confirmed via [Tabs SSO](../tabs/how-to/authentication/auth-aad-sso.md). Following this authentication, the app can retrieve the user role via the GetParticipant API.
+**To add a tab to a meeting**
- Γ£ö Based on the user role, the app will now have the capability to present role specific experiences. For example, a polling app can allow only organizers and presenters to create a new poll.
+1. In your calendar, select a meeting to which you want to add a tab.
+1. Select the **Details** tab and select plus <img src="~/assets/images/apps-in-meetings/plusbutton.png" alt="Plus button" width="30"/>. The tab gallery appears.
-> **NOTE**: Role assignments can be changed while a meeting is in progress. *See* [Roles in a Teams meeting](https://support.microsoft.com/office/roles-in-a-teams-meeting-c16fa7d0-1666-4dde-8686-0a0bfe16e019).
+ ![Pre-meeting experience](../assets/images/apps-in-meetings/PreMeeting.png)
-### During a meeting
+1. In the tab gallery, select the app that you want to add and follow the steps as required. The app is installed as a tab.
-#### **sidePanel**
+**To add a messaging extension to a meeting**
-Γ£ö In your app manifest add **sidePanel** to the **context** array as described above.
+1. Select the ellipses or overflow menu &#x25CF;&#x25CF;&#x25CF; located in the compose message area in the chat.
+1. Select the app that you want to add and follow the steps as required. The app is installed as a messaging extension.
-Γ£ö In the meeting as well as in all scenarios, the app will be rendered in an in-meeting tab that is 320px in width. Your tab must be optimized for this. *See*, [FrameContext interface](https://docs.microsoft.com/javascript/api/@microsoft/teams-js/framecontext?view=msteams-client-js-latest&preserve-view=true
-)
+**To add a bot to a meeting**
-Γ£öRefer to the [Teams SDK](../tabs/how-to/access-teams-context.md#user-context) to use the **userContext** API to route requests accordingly.
+In a meeting chat enter the **@** key and select **Get bots**.
-Γ£ö Refer to the [Teams authentication flow for tabs](../tabs/how-to/authentication/auth-flow-tab.md). Authentication flow for tabs is very similar to the auth flow for websites. Thus, tabs can use OAuth 2.0 directly. *See also*, [Microsoft identity platform and OAuth 2.0 authorization code flow](/azure/active-directory/develop/v2-oauth2-auth-code-flow).
+> [!NOTE]
+> * The user identity must be confirmed using [Tabs SSO](../tabs/how-to/authentication/auth-aad-sso.md). After authentication, the app can retrieve the user role using the `GetParticipant` API.
+> * Based on the user role, the app has the capability to provide role specific experiences. For example, a polling app allows only organizers and presenters to create a new poll.
+> * Role assignments can be changed while a meeting is in progress. For more information, see [roles in a Teams meeting](https://support.microsoft.com/office/roles-in-a-teams-meeting-c16fa7d0-1666-4dde-8686-0a0bfe16e019).
-Γ£ö Message extension should work as expected when a user is in an in-meeting view and should be able to post compose message extension cards.
+### During a meeting
-Γ£ö AppName in-meeting - Tooltip should state the app name in-meeting U-bar.
+#### sidePanel
-#### **In-meeting dialog**
+With the sidePanel, you can customize experiences in a meeting that enable organizers and presenters to have different set of views and actions. In your app manifest, you must add sidePanel to the context array. In the meeting and in all scenarios, the app is rendered in an in-meeting tab that is 320 pixels in width. For more information, see [FrameContext interface](https://docs.microsoft.com/javascript/api/@microsoft/teams-js/framecontext?view=msteams-client-js-latest&preserve-view=true
+).
-Γ£ö You must adhere to the [in-meeting dialog design guidelines](design/designing-apps-in-meetings.md#use-an-in-meeting-dialog).
+To use the `userContext` API to route requests accordingly, see [Teams SDK](../tabs/how-to/access-teams-context.md#user-context). See [Teams authentication flow for tabs](../tabs/how-to/authentication/auth-flow-tab.md). Authentication flow for tabs is very similar to the auth flow for websites. So tabs can use OAuth 2.0 directly. See, [Microsoft identity platform and OAuth 2.0 authorization code flow](/azure/active-directory/develop/v2-oauth2-auth-code-flow).
-Γ£ö Refer to the [Teams authentication flow for tabs](../tabs/how-to/authentication/auth-flow-tab.md).
+Messaging extension works as expected when a user is in an in-meeting view and the user can post compose message extension cards. AppName in-meeting is a tooltip that states the app name in-meeting U-bar.
-Γ£ö Use the [NotificationSignal API](create-apps-for-teams-meetings.md#notificationsignal-api) to signal that a bubble notification needs to be triggered.
+#### In-meeting dialog
-Γ£ö As part of the notification request payload, include the URL where the content to be showcased is hosted.
+The in-meeting dialog box can be used to engage participants during the meeting and collect information or feedback during the meeting. Use the [`NotificationSignal`](/graph/api/resources/notifications-api-overview?view=graph-rest-beta&preserve-view=true) API to signal that a bubble notification must be triggered. 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.
+In-meeting dialog must not use task module. Task module is not invoked in a meeting chat. An external resource URL is used to display content bubble in a meeting. You can use the `submitTask` method to submit data in a meeting chat.
> [!NOTE]
->
-> * These notifications are persistent in nature. You must invoke the [**submitTask()**](../task-modules-and-cards/task-modules/task-modules-bots.md#submitting-the-result-of-a-task-module) function to auto-dismiss after a user takes an action in the web-view. This is a requirement for app submission. *See also*, [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, your initial invoke request payload must rely on the `from.id` (ID of the user) request metadata in the `from` object, not the `from.aadObjectId` (Azure Active Directory ID of the user) request metadata. *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).
+> * You must invoke the [submitTask()](../task-modules-and-cards/task-modules/task-modules-bots.md#submitting-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, your initial invoke request payload must rely on the `from.id` request metadata in the `from` object, not the `from.aadObjectId` request metadata. `from.id` is the user ID and `from.aadObjectId` is the Azure Active Directory (AAD) 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).
### After a meeting The post-meeting and pre-meeting configurations are equivalent.
-## Meeting app sample
+## Code sample
+
+|Sample name | Description | C# |
+|-|--|--|
+| Content bubble | Demonstrates how to implement content bubble in-meeting experience. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/meetings-content-bubble/csharp) |
+| Meeting app | Demonstrates how to use the Meeting Token Generator app to request a token, which is generated sequentially so that each participant has a fair opportunity to interact. This can be useful in situations like scrum meetings, Q&A sessions, and so on. | [View](https://github.com/OfficeDev/microsoft-teams-sample-meetings-token) |
+
+## See also
- > [!div class="nextstepaction"]
-> [Meeting token generator app](https://github.com/OfficeDev/microsoft-teams-sample-meetings-token)
+> [!div class="nextstepaction"]
+> [In-meeting dialog design guidelines](design/designing-apps-in-meetings.md#use-an-in-meeting-dialog)
+> [!div class="nextstepaction"]
+> [Teams authentication flow for tabs](../tabs/how-to/authentication/auth-flow-tab.md)
platform Get Teams Context https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/bots/how-to/get-teams-context.md
async def _show_members(
# [JSON](#tab/json)
-You can directly issue a GET request on `/v3/conversations/{conversationId}/members/{userId}`, using the value of `serviceUrl` as the endpoint. The value of `serviceUrl` tends to be stable but can change. When a new message arrives, your bot should verify its stored value for `serviceUrl`. This can be used for regualr users and anonymous users.
+You can directly issue a GET request on `/v3/conversations/{conversationId}/members/{userId}`, using the value of `serviceUrl` as the endpoint. The value of `serviceUrl` tends to be stable but can change. When a new message arrives, your bot should verify its stored value for `serviceUrl`. This can be used for regular users and anonymous users.
Below is a response sample for regular user
platform Deep Links https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/build-and-test/deep-links.md
The query parameters are:
To use this deep link with your bot, you can specify this as the URL target in your card's button or tap action through the `openUrl` action type.
+## Deep links for SharePoint Framework tabs
+
+The following deep link format can be used in a bot, connector or messaging extension card:
+`https://teams.microsoft.com/l/entity/<AppId>/<EntityId>?webUrl=<entityWebUrl>/<EntityName>`
+
+> [!NOTE]
+> When a bot sends a TextBlock message with a deep link, a new browser tab opens when users select the link. This happens in Chrome and Microsoft Teams desktop app running on Linux.
+> If the bot sends the same deep link URL into an `Action.OpenUrl`, the Teams tab opens in the current browser when the user selects the link. No new browser tab is opened.
+
+The query parameters are:
+
+* `appID` - Your manifest ID **fe4a8eba-2a31-4737-8e33-e5fae6fee194**.
+* `entityID` - The item ID that you provided when [configuring the tab](~/tabs/how-to/create-tab-pages/configuration-page.md). For example, **tasklist123**.
+* `entityWebUrl` - An optional field with a fallback URL to use if the client does not support rendering of the tab - https://tasklist.example.com/123 or https://tasklist.example.com/list123/task456.
+* `entityName` - A label for the item in your tab, to use when displaying the deep link, Task List 123 or Task 456.
+
+Example: https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123&TaskList
+ ## Linking to the scheduling dialog > [!Note]