Updates from: 07/29/2022 01:16:27
Service Microsoft Docs article Related commit history on GitHub Change details
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-meeting notification must not use task module. Task module isn't invoked in a
:::image type="content" source="../assets/images/apps-in-meetings/in-meeting-dialogbox.png" alt-text="Example shows how you can use an in-meeting dialog.":::
+You can also add the Teams display picture and people card of the user to in-meeting notification based on `onBehalfOf` token with user MRI and display name passed in payload. Following is an example payload:
+
+```json
+ {
+ "type": "message",
+ "text": "John Phillips assigned you a weekly todo",
+ "summary": "Don't forget to meet with Marketing next week",
+ "channelData": {
+ onBehalfOf: [
+ {
+ itemId: 0,
+ mentionType: 'person',
+ mri: context.activity.from.id,
+ displayname: context.activity.from.name
+ }
+ ],
+ "notification": {
+ "alertInMeeting": true,
+ "externalResourceUrl": "https://teams.microsoft.com/l/bubble/APP_ID?url=<url>&height=<height>&width=<width>&title=<title>&completionBotId=BOT_APP_ID"
+ }
+ },
+ "replyToId": "1493070356924"
+ }
+```
++ #### Shared meeting stage Shared meeting stage allows meeting participants to interact with and collaborate on app content in real time. You can share your apps to the collaborative meeting stage in the following ways:
platform Teams Apps In Meetings https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/teams-apps-in-meetings.md
Enhance your meeting experience by using the meeting extensibility feature. This
To customize Teams with apps for meetings, enable your apps for Teams meetings by updating the app manifest and also configure the apps for meeting scenarios.
+Customize the app permission for external members in shared channel, if your app shares important information. App permissions in [Shared channels](../concepts/build-and-test/Shared-channels.md) follow host team's app roster and host tenant's app policy.
+ The new custom Together Mode scenes feature enables users to collaborate in a meeting with their team in one place. ## Next step
platform App Fundamentals Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/app-fundamentals-overview.md
Understanding the user and their concern are the first indicators of how a Teams
:::image type="content" source="../assets/images/overview/teams-solution.png" alt-text="Conceptual representation of the Teams solution.":::
- Your apps appear on Teams as Tabs, Bots, Message Extensions, Connectors and Webhooks, or as a multi-capability app. These capabilities are powered at the backend by Azure, Microsoft Graph, SharePoint, and Power apps that help automate tasks and processes.
+ Your apps appear on Teams as Tabs, Bots, Messaging Extensions, Connectors and Webhooks, or as a multi-capability app. These capabilities are powered at the backend by Azure, Microsoft Graph, SharePoint, and Power apps that help automate tasks and processes.
Together, these capabilities bring your app solution to life.
Understanding the user and their concern are the first indicators of how a Teams
* Integrate your app with Teams and other apps, such as Microsoft 365, Microsoft Graph, and more. * Use Developer Portal to configure, manage, and deploy your app.
-#### Government Community Cloud
+### Government Community Cloud
Government Community Cloud (GCC) is a government focused copy of the commercial environment. Department of Defense (DOD) and Federal contractors must meet the stringent cybersecurity and compliance requirements. For this purpose, GCC-High was created to meet the needs of DOD and Federal contractors. GCC-High is a copy of the DOD cloud but exists in its own sovereign environment. The DOD cloud is built for the Department of Defense only.
-Endpoints for government cloud are:
-
-| Tenant | GCC | GCC-High | DOD |
-|-||||
-|Teams client|`https://teams.microsoft.com`|`https://gov.teams.microsoft.us/`|`https://dod.teams.microsoft.us/` |
-|Teams admin |`https://admin.teams.microsoft.com/`|`https://admin.gov.teams.microsoft.us/`|`https://admin.dod.teams.microsoft.us`|
-|Microsoft Graph |`https://graph.microsoft.com`|`https://graph.microsoft.us`|`https://dod-graph.microsoft.us`|
- The following table includes Teams features and availability for GCC, GCC-High, and DOD: | Features | GCC | GCC-High | DOD |
The following table includes Teams features and availability for GCC, GCC-High,
| Teams owned apps as in internally developed apps | ✔️ App is enabled if it has GCC | ✔️ App is enabled if it has GCC-High | ✔️ App is enabled if it has DOD | | Microsoft apps | ✔️ Microsoft apps compliant with GCC | ✔️ Microsoft apps compliant with GCC-High | ✔️ Microsoft apps compliant with DOD | | 3P or third-party apps | ✔️ Third-party apps are available. Disabled by default and tenant admin use their own discretion to enable it. | ❌ | ❌ |
-| Custom or Lob tab apps | ✔️ | ✔️(****Compliance UI***) | ✔️(****Compliance UI***) |
-| Custom or Lob bots | ✔️ | ✔️(****Compliance UI***) | ❌ |
-| Custom message extensions | ✔️ | ✔️ | ❌ |
+| Bots | ✔️ | ❌ | ❌ |
+| Custom or Lob tab apps | ✔️ | ✔️ | ✔️ |
| Sideloading apps | ✔️ | ❌ | ❌ |
+| Custom or Lob bots | ✔️ | ❌ | ❌ |
+| Custom messaging extensions | ❌ | ❌ | ❌ |
| Custom connectors | ❌ | ❌ | ❌ |
-****Compliance UI***: By enabling third-party communications, customers accept that such communication is being processed through the third party and not Microsoft. The customer is solely responsible for mitigating risks associated with connecting with third party bots in their services. Microsoft doesn't endorse and makes no warranties, express, or implied concerning the security of third parties the customer allows to connect with their service. Enabling bots will extend your system boundary beyond this tenant based on the bot you choose to leverage. It is your responsibility to ensure that this meets your compliance requirements including FedRAMP, DFARS, ITAR, etc. It is your responsibility to evaluate the risk and compliance of any endpoint and URL that you connect to.
+**Compliance UI**: By enabling third-party communications, customers accept that such communication is being processed through the third party and not Microsoft. The customer is solely responsible for mitigating risks associated with connecting with third party bots in their services. Microsoft doesn't endorse and makes no warranties, express, or implied concerning the security of third parties the customer allows to connect with their service. Enabling bots will extend your system boundary beyond this tenant based on the bot you choose to leverage. It is your responsibility to ensure that this meets your compliance requirements including FedRAMP, DFARS, ITAR, etc. It is your responsibility to evaluate the risk and compliance of any endpoint and URL that you connect to.
The following list helps to identify the availability of GCC, GCC-High, and DOD for the features:
platform Shared Channels https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/Shared-channels.md
+
+ Title: Shared channels
+
+description: Collaborating with shared channels.
+
+localization_priority: Normal
+++
+# Shared channels
+
+Shared channels in Microsoft Teams allow members of a channel to collaborate with users across other Teams and organizations. You can create and share a shared channel with:
+
+* Members of another Team within the same organization.
+* Individuals within the same organization.
+* Individuals and other Teams of other organizations.
+
+Shared channels facilitate collaboration seamlessly. Allow external users outside of your organization to collaborate with internal users in Teams without changing their user context. Enhance user experience unlike using guest accounts, for example, the members must sign out of Teams and sign in again using a guest account. Teams applications can now extend the powerful collaboration space.
++
+## Manifest update in shared channels
+
+When the content UX is loaded in a shared channel, use the data received from `getContext` call for shared channel changes. `getContext` call publishes two new properties, `hostTeamGroupID` and `hostTenantID`, which are used to retrieve channel membership using Microsoft Graph APIs. `hostTeam` is the team that creates the shared channel.
+
+SupportedChannelTypes is an optional property that enables your app in non-standard channels. If your app supports the team scope and the property is defined, Teams will enable your app in each channel type accordingly. Private and shared channels are currently supported. For more information, see [supportedChannelTypes](../../resources/schem#supportedchanneltypes)
+
+```JSON
+"supportedChannelTypes": {
+ "type": "array",
+ "description": "List of ΓÇÿnon-standardΓÇÖ channel types that the app supports. Note: Channels of standard type are supported by default if the app supports team scope. ",
+ "maxItems": 2,
+ "items": {
+ "enum": [
+ "sharedChannels",
+ "privateChannels"
+ ]
+ }
+ }
+```
+
+> [!NOTE]
+>
+> * If your app supports the team scope, it functions in standard channels, regardless of what values are defined in this property.
+> * Your app may need to account for the unique properties of each of these channel types in order to function properly.
+
+For more information on enabling your tab, see:
+
+* [Get context for your tab for private channels](../../tabs/how-to/access-teams-context.md#retrieve-context-in-private-channels)
+* [Get context for your tab for shared channels](../../tabs/how-to/access-teams-context.md#retrieve-context-in-microsoft-teams-connect-shared-channels)
+
+## Apps and permissions in shared channels
+
+You can collaborate with external members outside of your organization using shared channels. App permissions in shared channels follow the host team's app roster and host tenant's app policy.
+
+> [!NOTE]
+> The [activity feed notification API](/graph/teams-send-activityfeednotifications) doesn't support cross-tenant notifications for apps in a shared channel.
+
+## Get shared channel membership
+
+You can get direct shared channel membership by using the `hostTeamGroupID` from `getContext` and following these steps:
+
+1. Get direct members with [GET channel members API](/graph/api/channel-list-members?view=graph-rest-beta&tabs=http&preserve-view=true) API.
+
+ ```http
+ GET /teams/{host-team-group-id}/channels/{channel-id}/members
+ ```
+
+2. Get each shared team with GET `sharedWithTeams` API.
+
+ ```http
+ GET /teams/{host-team-group-id}/channels/{channel-id}/sharedWithTeams
+ ```
+
+3. Use GET members of each shared team (Team X) with GET `sharedWithTeams` API.
+
+ ```http
+ GET /teams/{host-team-group-id}/channels/{channel-id}/sharedWithTeams/{teamX}/members
+ ```
+
+## Classify members in the shared channel as in-tenant or out-tenant
+
+You can classify members as in-tenant or out-tenant by comparing `tenantID` of the member or team with `hostTeamTenantID` as follows:
+
+1. Get the member you wish to compare.
+
+ ```http
+ GET /teams/{host-team-group-id}/channels/{channel-id}/members
+ ```
+
+2. Use `getContext`, compare the `tenantID` of the member to the `hostTenantID` property.
+
+## Azure AD native identity
+
+Apps must function cross-tenants in installation and usage. The following table lists the channel types and their corresponding group IDs:
+
+|Channel type| groupId | hostTeamGroupId |
+|-||--|
+|Regular | Team Azure AD group ID | Team Azure AD group ID |
+|Shared | Empty | Host Team Azure AD group ID |
+
+## See also
+
+* [Build tabs for Teams](../../tabs/what-are-tabs.md)
+* [App manifest schema for Teams](../../resources/schem)
platform Deep Links https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/deep-links.md
ms.localizationpriority: high
Deep links are a navigation mechanism that you can use to connect users with information and features within Teams and Teams apps. Some scenarios where creating deep links can be useful are as follows: * Navigating the user to the content within one of your app's tabs. For instance, your app can have a bot that sends messages notifying the user of an important activity. When the user taps on the notification, the deep link navigates to the tab so that the user can view more details about the activity.
-* Your app automates or simplifies certain user tasks, such as creating a chat or scheduling a meeting, by pre-populating the deep links with required parameters. This avoids the need for users to manually enter information.
+* Your app automates or simplifies certain user tasks, such as creating a chat or scheduling a meeting, by pre-populating the deep links with required parameters. Avoids the need for users to manually enter information.
-The Microsoft Teams JavaScript client SDK (TeamsJS) simplifies the process of navigation. For many scenarios, such as navigating to content and information within your tab or even launching a chat dialog, the SDK provides strongly typed APIs that make for an improved experience and can replace the usage of deep links. These APIs are recommended for Teams apps that might be run in other hosts (Outlook, Office), as they also provide a way to check that the capability being used is supported by that host. The following sections show information about deep linking, but also highlight how scenarios that used to require it have changed with the v2 release of TeamsJS.
+The Microsoft Teams JavaScript client SDK (TeamsJS) simplifies the process of navigation. For many scenarios, such as navigating to content and information within your tab or even launching a chat dialog, the SDK provides typed APIs that make for an improved experience and can replace the usage of deep links. These APIs are recommended for Teams apps that might be run in other hosts (Outlook, Office), as they also provide a way to check that the capability being used is supported by that host. The following sections show information about deep linking, but also highlight how scenarios that used to require it have changed with the v2 release of TeamsJS.
[!INCLUDE [sdk-include](~/includes/sdk-include.md)]
You can create deep links to entities in Teams apps. This method is used to crea
# [TeamsJS v2](#tab/teamsjs-v2)
-To implement this, add a **copy link** action to each item, in whatever way best suits your UI. When the user takes this action, call [pages.shareDeepLink()](/javascript/api/@microsoft/teams-js/pages?view=msteams-client-js-latest#@microsoft-teams-js-pages-sharedeeplink&preserve-view=true) to display a dialog box containing a link that the user can copy to the clipboard. When you make this call, pass an ID for your item, which you get back in the [context](~/tabs/how-to/access-teams-context.md) when the link is followed and your tab is reloaded.
+To implement, add a **copy link** action to each item, in whatever way best suits your UI. When the user takes this action, call [pages.shareDeepLink()](/javascript/api/@microsoft/teams-js/pages?view=msteams-client-js-latest#@microsoft-teams-js-pages-sharedeeplink&preserve-view=true) to display a dialog box containing a link that the user can copy to the clipboard. When you make this call, pass an ID for your item. You get it back in [context](~/tabs/how-to/access-teams-context.md) when the link is followed and your tab is reloaded.
```javascript pages.shareDeepLink({ subPageId: <subPageId>, subPageLabel: <subPageLabel>, subPageWebUrl: <subPageWebUrl> })
Alternatively, you can also generate deep links programmatically, using the form
### Consume a deep link from a tab
-When navigating to a deep link, Microsoft Teams simply navigates to the tab and provides a mechanism through the Teams JavaScript library to retrieve the sub-page ID if it exists.
+When navigating to a deep link, Microsoft Teams simply navigates to the tab and provides a mechanism through the Teams JavaScript library to retrieve the subpage ID if it exists.
The [`app.getContext()`](/javascript/api/@microsoft/teams-js/app?view=msteams-client-js-latest#@microsoft-teams-js-app-getcontext&preserve-view=true) call (`microsoftTeams.getContext()`) in TeamsJS v1) returns a promise that will resolve with the context that includes the `subPageId` property (subEntityId for TeamsJS v1) if the tab is navigated through a deep link. For more information, see [PageInfo interface](/javascript/api/@microsoft/teams-js/app?view=msteams-client-js-latest#@microsoft-teams-js-app-pageinfo&preserve-view=true).
The query parameters are:
| Parameter name | Description | Example | |:|:--|:| | `appId`&emsp; | The ID from Teams Admin Center. |fe4a8eba-2a31-4737-8e33-e5fae6fee194|
-| `entityId`&emsp; | The ID for the item in the tab, which you provided when [configuring the tab](~/tabs/how-to/create-tab-pages/configuration-page.md).|Tasklist123|
+| `entityId`&emsp; | The ID for the item in the tab, which you provided when [configuring the tab](~/tabs/how-to/create-tab-pages/configuration-page.md). When generating a URL for deep linking continue to use entityID as a parameter name in the URL. When configuring the tab the context object refers to the entityID as {page.id}. |Tasklist123|
| `entityWebUrl` or `subEntityWebUrl`&emsp; | An optional field with a fallback URL to use if the client doesn't support rendering the tab. | `https://tasklist.example.com/123` or `https://tasklist.example.com/list123/task456` | | `entityLabel` or `subEntityLabel`&emsp; | A label for the item in your tab, to use when displaying the deep link. | Task List 123 or "Task 456 |
-| `context.subEntityId`&emsp; | An ID for the item within the tab. |Task456 |
+| `context.subEntityId`&emsp; | An ID for the item within the tab. When generating a URL for deep linking continue to use subEntityId as the parameter name in the URL. When configuring the tab the context object refers to the subEntityID as subPageID. |Task456 |
| `context.channelId`&emsp; | Microsoft Teams channel ID that is available from the tab [context](~/tabs/how-to/access-teams-context.md). This property is only available in configurable tabs with a scope of **team**. It isn't available in static tabs, which have a scope of **personal**.| 19:cbe3683f25094106b826c9cada3afbe0@thread.skype | | `chatId`&emsp; | ChatId that is available from the tab [context](~/tabs/how-to/access-teams-context.md) for group and meeting chat | 17:b42de192376346a7906a7dd5cb84b673@thread.v2 | | `contextType`&emsp; | Chat is the only supported contextType for meetings | chat |
The query parameters are:
## Navigation from your tab
-You can navigate to content in Teams from your tab using TeamsJS or deep links. This is useful if your tab needs to connect users with other content in Teams, such as to a channel, message, another tab or even to open a scheduling dialog. Formerly, navigation might have required a deep link, but it can now in many instances be accomplished using the SDK. The following sections show both methods, but where possible use of the strongly typed capabilities of the SDK is recommended.
+You can navigate to content in Teams from your tab using TeamsJS or deep links. This is useful if your tab needs to connect users with other content in Teams, such as to a channel, message, another tab or even to open a scheduling dialog. Formerly, navigation might have required a deep link, but it can now in many instances be accomplished using the SDK. The following sections show both methods, but where possible use of the typed capabilities of the SDK is recommended.
One of the benefits of using TeamsJS, particularly for Teams app that might run in other hosts (Outlook and Office), is that it's possible to check that the host supports the capability you're attempting to use. To check a host's support of a capability, you can use the `isSupported()` function associated with the namespace of the API. The TeamsJS SDK organizes APIs into capabilities by way of namespaces. For example, prior to usage of an API in the `pages` namespace you can check the returned boolean value from `pages.isSupported()` and take the appropriate action within the context of your app and apps UI.
Alternatively, you can manually create deep links to the Teams built-in scheduli
#### Generate a deep link to the scheduling dialog
-While it's recommended to use the strongly typed APIs of TeamsJS, it's possible to manually create deep links to the Teams built-in scheduling dialog. Use the following format for a deep link that you can use in a bot, Connector, or message extension card:
+While it's recommended to use the typed APIs of TeamsJS, it's possible to manually create deep links to the Teams built-in scheduling dialog. Use the following format for a deep link that you can use in a bot, Connector, or message extension card:
`https://teams.microsoft.com/l/meeting/new?subject=<meeting subject>&startTime=<date>&endTime=<date>&content=<content>&attendees=<user1>,<user2>,<user3>,...` Example: `https://teams.microsoft.com/l/meeting/new?subject=test%20subject&attendees=joe@contoso.com,bob@contoso.com&startTime=10%2F24%2F2018%2010%3A30%3A00&endTime=10%2F24%2F2018%2010%3A30%3A00&content=ΓÇïΓÇïΓÇïΓÇïΓÇïΓÇïΓÇïtest%3AcontentΓÇïΓÇïΓÇïΓÇïΓÇïΓÇïΓÇïΓÇïΓÇïΓÇïΓÇïΓÇïΓÇïΓÇï`
if(chat.isSupported()) {
else { /* handle case where capability isn't supported */ } ```
-While use of the strongly typed APIs is recommended, you can alternatively use the following format for a manually created deep link that you can use in a bot, connector, or message extension card:
+While use of the typed APIs is recommended, you can alternatively use the following format for a manually created deep link that you can use in a bot, connector, or message extension card:
`https://teams.microsoft.com/l/chat/0/0?users=<user1>,<user2>,...&topicName=<chat name>&message=<precanned text>`
Example: `https://teams.microsoft.com/l/chat/0/0?users=joe@contoso.com,bob@conto
The query parameters are: * `users`: The comma-separated list of user IDs representing the participants of the chat. The user that performs the action is always included as a participant. Currently, the User ID field supports the Microsoft Azure Active Directory (Azure AD) UserPrincipalName, such as an email address only.
-* `topicName`: An optional field for chat's display name, in the case of a chat with three or more users. If this field isn't specified, the chat's display name is based on the names of the participants.
+* `topicName`: An optional field for chat's display name, if a chat has three or more users. If this field isn't specified, the chat's display name is based on the names of the participants.
* `message`: An optional field for the message text that you want to insert into the current user's compose box while the chat is in a draft state. To use this deep link with your bot, specify this as the URL target in your card's button or tap action through the `openUrl` action type.
The query parameters are:
* `channelId`: Channel ID of the conversation. For example, `19:3997a8734ee5432bb9cdedb7c432ae7d@thread.tacv2`. * `tenantId`: Tenant ID such as `0d9b645f-597b-41f0-a2a3-ef103fbd91bb`. * `groupId`: Group ID of the file. For example, `3606f714-ec2e-41b3-9ad1-6afb331bd35d`.
-* `parentMessageId`: Parent message Id of the conversation.
+* `parentMessageId`: Parent message ID of the conversation.
* `teamName`: Name of the team. * `channelName`: Name of the team's channel.
Example: `https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee
### Navigate to an audio or audio-video call
-You can invoke audio only or audio-video calls to a single user or a group of users, by specifying the call type and the participants. Before placing the call, Teams client prompts a confirmation to make the call. In case of group call, you can call a set of VoIP users and a set of PSTN users in the same deep link invocation.
+You can invoke audio only or audio-video calls to a single user or a group of users, by specifying the call type and the participants. Before placing the call, Teams client prompts a confirmation to make the call. If there's group call, you can call a set of VoIP users and a set of PSTN users in the same deep link invocation.
In a video call, the client will ask for confirmation and turn on the caller's video for the call. The receiver of the call has a choice to respond through audio only or audio and video, through the Teams call notification window.
else { /* handle case where capability isn't supported */ }
#### Generate a deep link to a call
-While use of the strongly typed APIs of TeamsJS is recommended, you can also use a manually created deep link to start a call.
+While use of the typed APIs of TeamsJS is recommended, you can also use a manually created deep link to start a call.
| Deep link | Format | Example | |--|--||
platform Manifest Schema Dev Preview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema-dev-preview.md
You can define any of the following properties:
* `privacyUrl`: The HTTPS URL of the developer's privacy policy. * `termsOfUseUrl`: The HTTPS URL of the developer's terms of use.
+## supportedChannelTypes
+
+**Optional** - array
+
+Enables your app in non-standard channels. If your app supports a team scope and this property is defined, Teams enables your app in each channel type accordingly. Currently, the private and shared channel types are supported.
+
+> [!NOTE]
+>
+> * If your app supports a team scope, it functions in the standard channels regardless of the values that are defined in this property.
+> * Your app can account for the unique properties of each of the channel types to function properly. To enable your tab for private and shared channels, see [retrieve context in private channels](~/tabs/how-to/access-teams-context.md#retrieve-context-in-private-channels) and [retrieve context in shared channels](~/tabs/how-to/access-teams-context.md#retrieve-context-in-microsoft-teams-connect-shared-channels).
+ ## defaultInstallScope **Optional** - string
Specify meeting extension definition. For more information, see [custom Together
|Name| Type| Maximum size | Required | Description| |||||| |`scenes`|array of objects| 5 items||Meeting supported scenes.|
+|`supportsStreaming`|Boolean|||A value that indicates whether an app can stream the meeting's audio and video content to a real-time meeting protocol (RTMP) endpoint. The default value is **false**.|
### meetingExtensionDefinition.scenes
platform Manifest Schema https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema.md
ms.localizationpriority: high
# App manifest schema for Teams
-The Microsoft Teams app manifest describes how your app integrates into the Microsoft Teams product. Your app manifest must conform to the schema hosted at [`https://developer.microsoft.com/json-schemas/teams/v1.13/MicrosoftTeams.schema.json`]( https://developer.microsoft.com/json-schemas/teams/v1.13/MicrosoftTeams.schema.json). Previous versions 1.0, 1.1,...,1.12 and the current 1.13 version (see note below) are each supported (using "v1.x" in the URL).
+The Microsoft Teams app manifest describes how your app integrates into the Microsoft Teams product. Your app manifest must conform to the schema hosted at [`https://developer.microsoft.com/json-schemas/teams/v1.14/MicrosoftTeams.schema.json`]( https://developer.microsoft.com/json-schemas/teams/v1.14/MicrosoftTeams.schema.json). Previous versions 1.0, 1.1,...,1.13, and the current version is 1.14 are each supported (using "v1.x" in the URL).
For more information on the changes made in each version, see [manifest change log](https://github.com/OfficeDev/microsoft-teams-app-schema/releases). The following table lists TeamsJS version and app manifest versions as per different app scenarios:
The following schema sample shows all extensibility options:
```json {
- "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.13/MicrosoftTeams.schema.json",
- "manifestVersion": "1.13",
+ "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.14/MicrosoftTeams.schema.json",
+ "manifestVersion": "1.14",
"version": "1.0.0", "id": "%MICROSOFT-APP-ID%", "packageName": "com.example.myapp",
You can define any of the following properties:
* `privacyUrl`: The HTTPS URL of the developer's privacy policy. * `termsOfUseUrl`: The HTTPS URL of the developer's terms of use.
+## supportedChannelTypes
+
+**Optional** - array
+
+Enables your app in non-standard channels. If your app supports a team scope and this property is defined, Teams enables your app in each channel type accordingly. Currently, the private and shared channel types are supported.
+
+> [!NOTE]
+>
+> * If your app supports a team scope, it functions in the standard channels regardless of the values that are defined in this property.
+> * Your app can account for the unique properties of each of the channel types to function properly. To enable your tab for private and shared channels, see [retrieve context in private channels](~/tabs/how-to/access-teams-context.md#retrieve-context-in-private-channels) and [retrieve context in shared channels](~/tabs/how-to/access-teams-context.md#retrieve-context-in-microsoft-teams-connect-shared-channels).
+ ## defaultBlockUntilAdminAction
-**Optional**ΓÇöBoolean
+**Optional** - Boolean
When `defaultBlockUntilAdminAction` property is set to **true**, the app is hidden from users by default until admin allows it. If set to **true**, the app is hidden for all tenants and end users. The tenant admins can see the app in the Teams admin center and take action to allow or block the app. The default value is **false**. For more information on default app block, see [Hide Teams app until admin approves](~/concepts/design/enable-app-customization.md#hide-teams-app-until-admin-approves).
Specify meeting extension definition. For more information, see [custom Together
|Name| Type| Maximum size | Required | Description| |||||| |`scenes`|array of objects| 5 items||Meeting supported scenes.|
+|`supportsStreaming`|Boolean|||A value that indicates whether an app can stream the meeting's audio and video content to a real-time meeting protocol (RTMP) endpoint. The default value is **false**.|
### meetingExtensionDefinition.scenes
platform App Templates https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/samples/app-templates.md
The key benefits of using App templates are:
* **Customizable and extensible:** While all app templates are deployed with minimal configuration, the entire code base and deployment scripts are provided, so that you can easily customize or extend them to fit your unique needs. * **Detailed documentation:** All app templates are accompanied by end-to-end documentation on solution architecture, deployment, and configuration steps.
-## Adoption Tool- Champion Management Platform
+## Champion Management Platform
The Champion Management Platform (CMP) app template helps you manage, scale, and inspire your teamwork champions to achieve more. This app template is built on the SharePoint Framework and loaded into a tab within a team. Groups can leverage this tool to help manage program membership, provide a leaderboard, and event types for logging, and tools to overlay digital badges to program participants. [Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-champion-management)
-## Adoption Tool- Microsoft 365 Learning Pathways (Get Started)
-
-The Get Started app template allows you to bring the power of Microsoft 365 learning pathways inside of Teams. This app template allows you to grant easy access to specific training pages or other intranet assets and load the content directly within Teams. You can also change the app name or logo to match your company branding.
-
-[Get it on GitHub](https://github.com/msft-teams/tools/tree/master/M365%20Learning%20Pathways)
- ## Company Communicator The Company Communicator app enables corporate teams to create and send messages intended for multiple teams or large number of employees over chat allowing organization to reach employees right where they collaborate. Utilize this template for multiple scenarios such as new initiative announcements, employee onboarding, modern learning, and development or organization-wide broadcasts.
It provides a foundation to build custom targeted communication capabilities suc
![jCompany Communicator compose box view](../assets/images/CompanyCommunicatorCompose.png)
-## Co-worker Appreciation
-
-Using the co-worker appreciation template in Teams, users can recognize their colleagues' achievements within the TeamsΓÇÖ context. When co-workers select to reward a colleague, recipients and other team members are tagged in a channel conversation and they receive a notification about the channel's award details. The awards are recorded in the Teams app, which is secure, portable, and easily shareable. This is considered as the PowerApps based version of the Open Badges app template, with a leaderboard.
-
-[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-coworker-appreciation)
-- ## FAQ Plus Conversational Q&A bots are an easy way to provide answers to frequently asked questions by users. But, most bots fail to engage with users in meaningful way because there's no human in the loop when the bot fails. FAQ bot is a friendly Q&A bot that brings a human in the loop when it's unable to help. One can ask the bot a question and the bot responds with an answer if it's contained in the knowledge base. If not, the bot allows the user to submit a query, which then gets posted to a pre-configured team of experts who help to provide support by acting upon the notifications from within the team itself.
In addition to encouraging personal connections across your entire team, the Ice
![Icebreaker app](../assets/images/icebreaker.png)
-## New Employee Onboarding
+## Microsoft 365 Learning Pathways (Get Started)
+
+The Get Started app template allows you to bring the power of Microsoft 365 learning pathways inside of Teams. This app template allows you to grant easy access to specific training pages or other intranet assets and load the content directly within Teams. You can also change the app name or logo to match your company branding.
+
+[Get it on GitHub](https://github.com/msft-teams/tools/tree/master/M365%20Learning%20Pathways)
+
+## Microsoft Teams Emergency Operations Center (TEOC)
+
+The Microsoft Teams Emergency Operations Center (TEOC) solution template leverages the power of the Microsoft 365 platform to centralize incident response, information sharing and field communications using powerful services like Microsoft Lists, SharePoint and more. An open-source solution supported by Microsoft, provides core functionality and can be extended to meet specific agency requirements.
+
+[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-emergency-operations-center/)
-New Employee Onboarding is an integrated Teams and [SharePoint New Employee Onboarding Solution](https://lookbook.microsoft.com/details/75e60a32-9849-4ed4-b83e-b2b08983ad19) that enables your organization to provide a consistent, high-quality onboarding experience for employees on their new-hire journey. The app is used by human resource teams and hiring managers to provide relevant information throughout the orientation and induction process and by new hires to share feedback, provide introductions, and complete onboarding tasks.
+## Tournament of Teams
-[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-newemployeeonboarding)
+Champions are critical in helping drive adoption and developing new tournaments, helping in your business goals. Make sure you are leveraging your Champions to help identify and build new adoption-themed tournaments, and inspire your organization to learn and participate.
- :::column span="2":::
- **New employee welcome card**
- ![Image of new employee welcome card](../assets/images/new-employee-welcome-card.png)
- :::column span="2":::
- **New employee checklist**
- ![Image of new employee checklist](../assets/images/new-employee-checklist.png)
+[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-tournament-of-teams)
## App Template Code Samples
The following table describes App template code samples:
| Checklist | Checklist is a custom Teams [message extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to collaborate with your team by creating a shared checklist in a chat or channel. The app is supported across all Teams platform clients, such as desktop browser, iOS, and Android. The app is ready for deployment as part of your Microsoft 365 subscription. | [Checklist](https://github.com/OfficeDev/microsoft-teams-checklist-app)| | Classroom Drop-in | Classroom Drop-in is a Microsoft [Power Platform](https://powerapps.microsoft.com/blog/now-in-preview-customize-teams-with-built-in-power-platform-capabilities/)-based app that enables system leaders to find class teams, means virtual classrooms and add themselves or others to these class teams for a specified drop-in period, as needed. The app built using Microsoft [Power Apps](/powerapps/powerapps-overview) and [Power Automate](/power-automate/getting-started), deeply integrates with Teams to ensure educational institutes can optimize their operations in a hybrid learning environment by providing access to relevant stakeholders for class teams per business requirements.| [Classroom Drop-in](https://github.com/OfficeDev/microsoft-teams-apps-classroom-dropin) | | Contact Group Lookup |The Contact Group Lookup app provides a convenient and useful approach to creating, accessing, and managing your organization's contact groups, formerly known as distribution lists or communication groups. Users can quickly view and chat with group members, view member status, and create a group chat with selected members in the contact group, all within the Teams environment.| [Contact Group Lookup](https://github.com/OfficeDev/microsoft-teams-app-contactgrouplookup)|
+| Co-worker Appreciate | The co-worker appreciation template in Teams helps users to recognize their colleagues' achievements within the TeamsΓÇÖ context. When co-workers select to reward a colleague, recipients and other team members are tagged in a channel conversation and they receive a notification about the channel's award details. The awards are recorded in the Teams app, which is secure, portable, and easily shareable. This is considered as the PowerApps based version of the Open Badges app template, with a leaderboard.| [Co-worker Appreciation](https://github.com/OfficeDev/microsoft-teams-apps-coworker-appreciation)|
| CrowdSourcer | CrowdSourcer is a [Microsoft Teams bot](../bots/what-are-bots.md) that gives teams queried information sourced collaboratively from group members. It helps to answer frequently asked questions while enabling participants to actively engage in and contribute to a fun and helpful information resource.| [CrowdSourcer](https://github.com/OfficeDev/microsoft-teams-crowdsourcer-app)| |Custom Stickers | Self-expression is core to a healthy team culture. This app template is a [message extension](~/messaging-extensions/what-are-messaging-extensions.md) that enables your users to use custom stickers and GIFs within Teams. This template provides an easy web-based configuration experience where anyone with configuration access can upload the GIFs, stickers, and images they want their users to have, allowing your entire team to use any set of stickers you choose. This app also enables easy sharing of images, GIFs, stickers across teams without needing access to SharePoint sites or individual channels as storage and sharing mechanisms. For example, product teams can easily share product images and GIFs to social media, marketing, and sales teams programmatically. One can also extend this app by triggering a notification flow to specific teams or individuals when new images, and GIFs are made available.| [Custom Stickers](https://github.com/OfficeDev/microsoft-teams-stickers-app) | | Employee Ideas |The Employee Ideas app is the PowerApps version of the Azure based Great Ideas app template. The app enables the Teams users to set up and configure an idea campaign. An idea campaign is a category for grouping ideas around common themes. Teams users can also perform the following activities:<br/> Configure a standard submission form that employees must submit for each idea.<br/>Review and manage the ideas and list of campaigns. <br/>Modify and delete campaigns. <br/> Review leader boards of ideas. <br/> Vote for and share prioritized ideas. <br/> Submit ideas for a campaign. <br/> View other team member's idea. <br/>Vote on most liked ideas. <br/> Review the performance of their ideas compared with others within a campaign.|[Employee Ideas](https://github.com/OfficeDev/microsoft-teams-apps-employeeideas) |
The following table describes App template code samples:
|Incident Reporter | Incident Reporter is a [Microsoft Teams bot](../bots/what-are-bots.md) that optimizes the management of incidents in your organization. The bot facilitates automated incident data collection, customized incident reports, relevant stakeholder notifications, and end-to-end incident tracking.|[Incident Reporter](https://github.com/OfficeDev/microsoft-teams-apps-incidentreport) | | Inspection|Inspection is a Teams app that enables front line workers to inspect anything from locations to assets and equipments. For example, a retail store, manufacturing plant, or vehicles and machines. There are two apps in this solution, each intended for different types of users. The app empowers the front line workers to inspect an asset or area, to manage quality of products and services, or maintain safety at workplace. It facilitates communication between team members to address issues found during inspection. The app provides simple reports for managers to expedite issue resolution and highlight trends. |[Inspection](https://github.com/OfficeDev/microsoft-teams-apps-inspection) | |Issue Reporting |The Issue Reporting app empowers the employees and managers to raise and manage issues. It consists of two apps, Issue reporting app for reporting issues and Manage Issues app for managing issues. The team managers use the Manage Issues app to configure the app experience, including the channel in which Teams messages and Planner tasks are created by the app. Managers also use the app to create template forms to collect details when a user reports an issue. For example, review, edit, or delete issue template forms. The app is also used to review team issues, report on issue history, and efficiently manage issue resolution. The employees use the Issue reporting app to log issues and details required to resolve them. The app is also used to modify and resolve existing issues and get a high-level view of individual or team issues. |[Issue Reporting](https://github.com/OfficeDev/microsoft-teams-apps-issuereporting) |
+| New Employee Onboarding| New Employee Onboarding is an integrated Teams and [SharePoint New Employee Onboarding Solution](https://lookbook.microsoft.com/details/75e60a32-9849-4ed4-b83e-b2b08983ad19)that enables your organization to provide a consistent, high-quality onboarding experience for employees on their new-hire journey. The app is used by human resource teams and hiring managers to provide relevant information throughout the orientation and induction process and by new hires to share feedback, provide introductions, and complete onboarding tasks.|[New Employee Onboarding](https://github.com/OfficeDev/microsoft-teams-apps-newemployeeonboarding) |
| Open Badges| Open Badges is a Teams app that enables individuals to earn digital learning credential badges within the Teams context and share them everywhere. Using capabilities from the third-party digital badge issuing authority, [Badgr](https://badgr.org/), awarded badges are recorded in a recipient's Badgr profile and available to build and share a rich picture of lifetime learning journeys.|[Open Badges](https://github.com/OfficeDev/microsoft-teams-apps-openbadges) | | Poll| Poll is a custom Teams [message extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to quickly create and send polls in a chat or a channel to gather team opinions and preferences. The app is supported across all Teams platform clients, such as desktop, browser, iOS, and Android and is ready for deployment as part of your Microsoft 365 subscription.|[Poll](https://github.com/OfficeDev/microsoft-teams-poll-app) | | Quick Responses| Quick Responses is a Teams app that delivers a robust solution for effectively answering users' commonly asked questions FAQs. Instead of answering each query manually and continuously repeating information, the app builds a library of responses for an interactive user experience through Teams [message extensions](../messaging-extensions/what-are-messaging-extensions.md).|[Quick Responses](https://github.com/OfficeDev/microsoft-teams-apps-quickresponses) |
platform Access Teams Context https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/access-teams-context.md
Your tab requires contextual information to display relevant content:
* Locale and theme information. * The `page.id` and `page.subPageId` that identify what is in this tab (known as `entityId` and `subEntityId` prior to TeamsJS v.2.0.0). - ## User context Context about the user, team, or company can be especially useful when:
You can access context information in two ways:
### Get context by inserting URL placeholder values
-Use placeholders in your configuration or content URLs. Microsoft Teams replaces the placeholders with the relevant values when determining the actual configuration or content URL. The available placeholders include all fields on the [context](/javascript/api/@microsoft/teams-js/app.context) object. Common placeholders include the following lists:
+Use placeholders in your configuration or content URLs. Microsoft Teams replaces the placeholders with the relevant values when determining the actual configuration or content URL. The available placeholders include all fields on the [context](/javascript/api/@microsoft/teams-js/microsoftteams.context?view=msteams-client-js-latest&preserve-view=true) object. Common placeholders include the following properties:
* [{page.id}](/javascript/api/@microsoft/teams-js/app.pageinfo#@microsoft-teams-js-app-pageinfo-id): The developer-defined unique ID for the page defined when first [configuring the page](~/tabs/how-to/create-tab-pages/configuration-page.md). (Known as `{entityId}` prior to TeamsJS v.2.0.0). * [{page.subPageId}](/javascript/api/@microsoft/teams-js/app.pageinfo#@microsoft-teams-js-app-pageinfo-subpageid): The developer-defined unique ID for the subpage this content points defined when generating a [deep link](~/concepts/build-and-test/deep-links.md) for a specific item within the page. (Known as `{subEntityId}` prior to TeamsJS v.2.0.0).
-* [{user.loginHint}](/javascript/api/@microsoft/teams-js/app.userinfo#@microsoft-teams-js-app-userinfo-loginhint): A value suitable as a login hint for Azure AD. This is usually the login name of the current user in their home tenant. (Known as `{loginHint}` prior to TeamsJS v.2.0.0).
+* [{user.loginHint}](/javascript/api/@microsoft/teams-js/app.userinfo#@microsoft-teams-js-app-userinfo-loginhint): A value suitable as a sign in hint for Azure AD. This is usually the login name of the current user in their home tenant. (Known as `{loginHint}` prior to TeamsJS v.2.0.0).
* [{user.userPrincipalName}](/javascript/api/@microsoft/teams-js/app.userinfo#@microsoft-teams-js-app-userinfo-userprincipalname): The User Principal Name of the current user in the current tenant. (Known as `{userPrincipalName}` prior to TeamsJS v.2.0.0). * [{user.id}](/javascript/api/@microsoft/teams-js/app.userinfo#@microsoft-teams-js-app-userinfo-id): The Azure AD object ID of the current user in the current tenant. (Known as `{userObjectId}` prior to TeamsJS v.2.0.0). * [{app.theme}](/javascript/api/@microsoft/teams-js/app.appinfo#@microsoft-teams-js-app-appinfo-theme): The current user interface (UI) theme such as `default`, `dark`, or `contrast`. (Known as `{theme}` prior to TeamsJS v.2.0.0).
For example, in your app manifest if you set your tab *configurationUrl* attribu
You can also retrieve the information listed above using the [Microsoft Teams JavaScript client SDK](/javascript/api/overview/msteams-client) by calling `microsoftTeams.getContext(function(context) { /* ... */ })`.
+The following code provides an example of context variable:
+
+```json
+{
+ "teamId": "The Microsoft Teams ID in the format 19:[id]@thread.skype",
+ "teamName": "The name of the current team",
+ "channelId": "The channel ID in the format 19:[id]@thread.skype",
+ "channelName": "The name of the current channel",
+ "chatId": "The chat ID in the format 19:[id]@thread.skype",
+ "locale": "The current locale of the user formatted as languageId-countryId (for example, en-us)",
+ "entityId": "The developer-defined unique ID for the entity this content points to",
+ "subEntityId": "The developer-defined unique ID for the sub-entity this content points to",
+ "loginHint": "A value suitable as a login hint for Azure AD. This is usually the login name of the current user, in their home tenant",
+ "userPrincipalName": "The principal name of the current user, in the current tenant",
+ "userObjectId": "The Azure AD object id of the current user, in the current tenant",
+ "tid": "The Azure AD tenant ID of the current user",
+ "groupId": "Guid identifying the current Office 365 Group ID",
+ "theme": "The current UI theme: default | dark | contrast",
+ "isFullScreen": "Indicates if the tab is in full-screen",
+ "teamType": "The type of team",
+ "teamSiteUrl": "The root SharePoint site associated with the team",
+ "teamSiteDomain": "The domain of the root SharePoint site associated with the team",
+ "teamSitePath": "The relative path to the SharePoint site associated with the team",
+ "channelRelativeUrl": "The relative path to the SharePoint folder associated with the channel",
+ "sessionId": "The unique ID for the current Teams session for use in correlating telemetry data",
+ "userTeamRole": "The user's role in the team",
+ "isTeamArchived": "Indicates if team is archived",
+ "hostClientType": "The type of host client. Possible values are android, ios, web, desktop, surfaceHub, teamsRoomsAndroid, teamsPhones, teamsDisplays rigel (deprecated, use teamsRoomsWindows instead)",
+ "frameContext": "The context where tab URL is loaded (for example, content, task, setting, remove, sidePanel)",
+ "sharepoint": "The SharePoint context is available only when hosted in SharePoint",
+ "tenantSKU": "The license type for the current user tenant. Possible values are enterprise, free, edu, unknown",
+ "userLicenseType": "The license type for the current user",
+ "parentMessageId": "The parent message ID from which this task module is launched",
+ "ringId": "The current ring ID",
+ "appSessionId": "The unique ID for the current session used for correlating telemetry data",
+ "isCallingAllowed": "Indicates if calling is allowed for the current logged in user",
+ "isPSTNCallingAllowed": "Indicates if PSTN calling is allowed for the current logged in user",
+ "meetingId": "The meeting ID used by tab when running in meeting context",
+ "defaultOneNoteSectionId": "The OneNote section ID that is linked to the channel",
+ "isMultiWindow": "The indication whether the tab is in a pop out window"
+}
+```
+ # [TeamsJS v2](#tab/teamsjs-v2) ## TypeScript
For more information, see [Updates to the *Context* interface](using-teams-clien
## Retrieve context in private channels
+> [!NOTE]
+> Private channels are currently in private developer preview only.
+ 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:
If your page makes use of any of these values, the value of `channel.membershipT
## 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.
+> Currently, Microsoft Teams Connect shared channels are in developer preview 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: * `team.groupId`: Undefined for shared channels.
In addition to these field changes, there are two new fields available for share
If your page makes use of any of these values, the value of `channel.membershipType` field must be `Shared` to determine if your page is loaded in a shared channel and can respond appropriately. > [!NOTE]
-> Every time a user restarts or reloads the Teams desktop or web client, a new sessionID is created, which is tracked by Teams session, whereas, when a user exits the Teams apps and reloads it in Teams platform a new app sessionID is created, which is tracked by app session.
+> `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.
+
+## Get context in shared channels
+
+When the content UX is loaded in a shared channel, use the data received from `getContext` call for shared channel changes. If tab makes use of any of the following values, you must populate the `channelType` field to determine if the tab is loaded in a shared channel, and respond appropriately.
+For shared channels, the `groupId` value is `null`, since the host team's groupId doesn't accurately reflect the true membership of the shared channel. To address this, the `hostTeamGroupID` and `hostTenantID` properties are newly added and useful for making Microsoft Graph API calls to retrieve membership. `hostTeam` refers to the Team that created the shared channel. `currentTeam` refers to Team that the current user is accessing the shared channel from.
+
+For more information about these concepts, see [Shared channels](~/concepts/build-and-test/shared-channels.md).
+
+Use the following `getContext` properties in shared channels:
+
+| Property | Description |
+|-|--|
+|`channelId`| The property is set to the SC channel thread ID.|
+|`channelType`| The property is set to `sharedChannel` for shared channels.|
+|`groupId`|The property is `null` for shared Channels.|
+|`hostTenantId`| The property is newly added and describes the host's tenant ID, useful for comparing against the current user's `tid` tenant ID property. |
+|`hostTeamGroupId`| The property is newly added and describes the host teamΓÇÖs Azure AD group ID, useful for making Microsoft Graph API calls to retrieve shared channel membership. |
+|`teamId`|The property is newly added and set to the thread ID of the current shared team. |
+|`teamName`|The property is set to current shared team's `teamName`. |
+|`teamType`|The property is set to current shared team's `teamType`.|
+|`teamSiteUrl`|The property describes the shared channel's `channelSiteUrl`.|
+|`teamSitePath`| The property describes the shared channel's `channelSitePath`.|
+|`teamSiteDomain`| The property describes the shared channel's `channelSiteDomain`.|
+|`tenantSKU`| The property describes the host teamΓÇÖs `tenantSKU`.|
+|`tid`| The property describes the current userΓÇÖs tenant ID.|
+|`userObjectId`| The property describes current userΓÇÖs ID.|
+|`userPrincipalName`| The property describes the current userΓÇÖs UPN.|
+
+For more information on shared channels, see [Shared channels](~/concepts/build-and-test/shared-channels.md).
## Handle theme change
platform What Are Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/what-are-tabs.md
Title: Microsoft Teams tabs
-description: In this module, learn to build a custom tabs on the Teams platform, Tab features and Tabs user scenarios
+description: In this module, learn to build a custom tab on the Teams platform, Tab features and Tabs user scenarios
ms.localizationpriority: high
Tabs are Teams-aware webpages embedded in Microsoft Teams. They're simple HTML `
> [!IMPORTANT] > Currently, custom tabs are available in Government Community Cloud (GCC), GCC-High, and Department of Defense (DOD).
->
-> We recommend you to use the Teams client SDK via [npm package](https://www.npmjs.com/package/@microsoft/teams-js) and bundle it with your app as currently Teams client SDK is not available in Government Cloud CDN.
- The following image shows personal tabs:
There are few prerequisites that you must go through before working on tabs.
There are two types of tabs available in Teams, personal and channel or group. [Personal tabs](~/tabs/how-to/create-personal-tab.md), along with personal-scoped bots, are part of personal apps and are scoped to a single user. They can be pinned to the left navigation bar for easy access. [Channel or group tabs](~/tabs/how-to/create-channel-group-tab.md) deliver content to channels and group chats, and are a great way to create collaborative spaces around dedicated web-based content.
-You can [create a content page](~/tabs/how-to/create-tab-pages/content-page.md) as part of a personal tab, channel or group tab, or task module. You can [create a configuration page](~/tabs/how-to/create-tab-pages/configuration-page.md) that enables users to configure Microsoft Teams app and use it to configure a channel or group chat tab, a message extension, or an Office 365 Connector. You can permit users to reconfigure your tab after installation and [create a tab removal page](~/tabs/how-to/create-tab-pages/removal-page.md) for your application. When you build a Teams app that includes a tab, you must test how your [tab functions on both the Android and iOS Teams clients](~/tabs/design/tabs-mobile.md). Your tab must [get context](~/tabs/how-to/access-teams-context.md) through basic information, locale and theme information, and `app.Context.page.id` or `app.Context.page.subPageId` that identifies what is in the tab.
+You can [create a content page](~/tabs/how-to/create-tab-pages/content-page.md) as part of a personal tab, channel or group tab, or task module. You can [create a configuration page](~/tabs/how-to/create-tab-pages/configuration-page.md) that enables users to configure Microsoft Teams app and use it to configure a channel or group chat tab, a messaging extension, or an Office 365 Connector. You can permit users to reconfigure your tab after installation and [create a tab removal page](~/tabs/how-to/create-tab-pages/removal-page.md) for your application. When you build a Teams app that includes a tab, you must test how your [tab functions on both the Android and iOS Teams clients](~/tabs/design/tabs-mobile.md). Your tab must [get context](~/tabs/how-to/access-teams-context.md) through basic information, locale and theme information, and `entityId` or `subEntityId` that identifies what is in the tab.
You can build tabs with Adaptive Cards and centralize all Teams app capabilities by eliminating the need for a different backend for your bots and tabs. [Stage View](~/tabs/tabs-link-unfurling.md) is a new UI component that allows you to render the content opened in full screen in Teams and pinned as a tab. The existing [link unfurling](~/tabs/tabs-link-unfurling.md) service is updated, so that it's used to turn URLs into a tab using an Adaptive Card and Chat Services. You can [create conversational tabs](~/tabs/how-to/conversational-tabs.md) using conversational sub-entities that allow users to have conversations about sub-entities in your tab, such as specific task, patient, and sales opportunity, instead of discussing the entire tab. You can make changes to [tab margins](~/resources/removing-tab-margins.md) to enhance the developer's experience when building apps. You can drag the tab and place it in the desired position to interchange the tab positions within your personal apps and channel or group chats.
The tab features are as follows:
**Scenario:** Bring an existing web-based resource inside Teams. \ **Example:** You create a personal tab in your Teams app that presents an informational corporate website to users.
-**Scenario:** Add support pages to a Teams bot or message extension. \
+**Scenario:** Add support pages to a Teams bot or messaging extension. \
**Example:** You create personal tabs that provide **about** and **help** webpage content to users. **Scenario:** Provide access to items that your users interact with regularly for cooperative dialogue and collaboration. \
You can use one of the following methods to create tabs:
### Declare custom tab in app manifest
-A custom tab is declared in the app manifest of your app package. For each webpage you want included as a tab in your app, you define a URL and a scope. Additionally, you can add the [Teams JavaScript client SDK](/javascript/api/overview/msteams-client) to your page, and call `app.initialize()` after your page loads. Teams displays your page and provides access to Teams-specific information, for example, the Teams client is running the dark theme.
+A custom tab is declared in the app manifest of your app package. For each webpage you want included as a tab in your app, you define a URL and a scope. Additionally, you can add the [Teams JavaScript client SDK](/javascript/api/overview/msteams-client) to your page, and call `microsoftTeams.initialize()` after your page loads. Teams displays your page and provides access to Teams-specific information, for example, the Teams client is running the dark theme.
Whether you choose to expose your tab within the channel or group, or personal scope, you must present an <iframe\> HTML [content page](~/tabs/how-to/create-tab-pages/content-page.md) in your tab. For personal tabs, the content URL is set directly in your Teams app manifest by the `contentUrl` property in the `staticTabs` array. Your tab's content is the same for all users.
-> [!Note]
-> Teams app doesn't recognize sub iframes. Therefore, it'll not load if there is an iframe within the tab app.
-
-For channel or group tabs, you can also create an additional configuration page. This page allows you to configure content page URL, typically by using URL query string parameters to load the appropriate content for that context. This is because your channel or group tab can be added to multiple teams or group chats. On each subsequent install, your users can configure the tab, allowing you to tailor the experience as required. When users add or configure a tab, a URL is associated with the tab that is presented in the Teams user interface (UI). Configuring a tab simply adds additional parameters to that URL. For example, when you add the Azure Boards tab, the configuration page allows you to choose, which board the tab loads. The configuration page URL is specified by the `configurationUrl` property in the `configurableTabs` array in your app manifest.
+For channel or group tabs, you can also create an extra configuration page. This page allows you to configure content page URL, typically by using URL query string parameters to load the appropriate content for that context. This is because your channel or group tab can be added to multiple teams or group chats. On each subsequent install, your users can configure the tab, allowing you to tailor the experience as required. When users add or configure a tab, a URL is associated with the tab that is presented in the Teams user interface (UI). Configuring a tab simply adds more parameters to that URL. For example, when you add the Azure Boards tab, the configuration page allows you to choose, which board the tab loads. The configuration page URL is specified by the `configurationUrl` property in the `configurableTabs` array in your app manifest.
You can have multiple channels or group tabs, and up to 16 personal tabs per app.
platform Whats New https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/whats-new.md
Microsoft Teams platform features that are available to all app developers.
| **Date** | **Update** | **Find here** | | -- | | -|
+| 07/28/2022 | Add the Teams display picture and people card for in-meeting notification| Build apps for Teams meetings and calls > Enable and configure apps for meetings > [In-meeting notification](apps-in-teams-meetings/enable-and-configure-your-app-for-teams-meetings.md#in-meeting-notification) |
+| 07/28/2022 | Build shared channels in Teams | Build apps for Teams meetings and calls > [Shared channels](concepts/build-and-test/Shared-channels.md) |
+| 07/28/2022|Introduced app manifest v1.14| App manifest > [App manifest schema for Teams](resources/schem)|
| 07/26/2022|Suggested actions for bots| Build bots > Bot conversations > [Messages in bot conversations](bots/how-to/conversations/conversation-messages.md#send-suggested-actions)| | 07/21/2022 | Introduced step by step guide to send activity feed notifications | Design your app > UI components> Activity feed notifications > [Send activity feed notification](sbs-graphactivity-feedbroadcast.yml) | | 07/08/2022| Updates to send channel ID selected by user during app installation to bots via conversation and installation update events | Build bots > Bot conversations > Conversation events in your Teams bot > [Conversation events in your Teams bot](bots/how-to/conversations/subscribe-to-conversation-events.md) |