Updates from: 11/16/2022 02:47:40
Service Microsoft Docs article Related commit history on GitHub Change details
platform Channel Messages With Rsc https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/channel-messages-with-rsc.md
Title: Receive all channel messages with RSC
+ Title: Receive all conversation messages with RSC
description: Enable bots to receive all channel messages without being @mentioned using RSC permissions. Read on webApplicationInfo or authorization section in manifest. ms.localizationpriority: medium
-# Receive all channel messages with RSC
+# Receive all conversation messages with RSC
-The resource-specific consent (RSC) permissions model, originally developed for Teams Graph APIs, is extended to bot scenarios.
+The resource-specific consent (RSC) permissions model, originally developed for Microsoft Teams Graph APIs, is being extended to bot scenarios. With RSC, conversation owners can consent for a bot to receive all user messages in standard channels and chats without being @mentioned. This can be enabled by specifying the `ChannelMessage.Read.Group` or `ChatMessage.Read.Chat` permission strings in your Teams app manifest. Conversation owners can grant consent during the app installation or upgrade process after the app updates are published. For more information about enabling RSC for your app and inside of a tenant, see [resource-specific consent](../../../graph-api/rsc/resource-specific-consent.md).
-Using RSC, you can now request team owners to consent for a bot to receive user messages across standard channels in a team without being @mentioned. This capability is enabled by specifying the `ChannelMessage.Read.Group` permission in the manifest of an RSC enabled Teams app. After configuration, team owners can grant consent during the app installation process.
+## Enable bots to receive all channel or chat messages
-For more information about enabling RSC for your app, see [resource-specific consent in Teams](/microsoftteams/platform/graph-api/rsc/resource-specific-consent#update-your-teams-app-manifest).
+> [!NOTE]
+>
+> The ability for bots to receive all messages in chats using `ChatMessage.Read.Chat` is available only in [public developer preview for Teams](../../../resources/dev-preview/developer-preview-intro.md).
-## Enable bots to receive all channel messages
+The `ChannelMessage.Read.Group` and `ChatMessage.Read.Chat` RSC permissions are being extended to bots. With user consent and app installation, these permissions:
-The `ChannelMessage.Read.Group` RSC permission is extended to bots. With user consent, this permission allows graph applications to get all messages in a conversation and bots to receive all channel messages without being @mentioned.
+* Allow a specified graph application to get all messages in channels and chats, respectively.
+* Enable a bot defined in the app manifest to receive all conversations messages without being @mentioned in relevant contexts where the permissions apply.
-> [!NOTE]
+> [!IMPORTANT]
>
-> * Services that need access to all Teams message data must use the Graph APIs that also provide access to archived data in channels and chats.
-> * Bots must use the `ChannelMessage.Read.Group` RSC permission appropriately to build and enhance engaging experience for users in the team or they will not pass the store approval. The app description must include how the bot uses the data it reads.
-> * The `ChannelMessage.Read.Group` RSC permission may not be used by bots as a way to extract large amounts of customer data.
+> * Services that need access to all Teams message data must use the Graph APIs that provide access to archived data in channels and chats.
+> * Bots must use the `ChannelMessage.Read.Group` and `ChatMessage.Read.Chat` RSC permission appropriately to build and enhance engaging experience for users to pass the store approval. The app description must include how the bot uses the data it reads.
+> * The `ChannelMessage.Read.Group` and `ChatMessage.Read.Chat` RSC permission may not be used by bots to extract large amounts of customer data.
## Update app manifest
-For your bot to receive all channel messages, RSC must be configured in the Teams app manifest with the `ChannelMessage.Read.Group` permission specified in the `webApplicationInfo` property.
+For your bot to receive all conversation messages, the relevant RSC permission strings must be specified in the `authorization.permissions.resourceSpecific` property of your Teams app manifest. For more information about manifest schema, see [app manifest schema for Teams](../../../resources/schem).
-The following is an example of the `webApplicationInfo` object:
+The following code provides an example of the app manifest:
-* **id**: Your Microsoft Azure Active Directory (Azure AD) app ID. This can be the same as your bot ID.
-* **resource**: Any string. This field has no operation in RSC, but must be added and have a value to avoid error response.
-* **applicationPermissions**: RSC permissions for your app with `ChannelMessage.Read.Group` must be specified. For more information, see [resource-specific permissions](/microsoftteams/platform/graph-api/rsc/resource-specific-consent#resource-specific-permissions).
+* **webApplicationInfo.id**: Your Microsoft Azure Active Directory (AAD) app ID. The app ID can be the same as your bot ID.
+* **webApplicationInfo.resource**: Any string. The resource field has no operation in RSC, but must be added with a value to avoid error response.
+* **authorization.permissions.resourceSpecific**: RSC permissions for your app with either or both `ChannelMessage.Read.Group` and `ChatMessage.Read.Chat` specified. For more information, see [resource-specific permissions](/microsoftteams/platform/graph-api/rsc/resource-specific-consent#resource-specific-permissions).
-The following code provides an example of the app manifest:
+The following code provides an example of the app manifest version 1.12 or higher:
```json
-"webApplicationInfo": {
- "id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
- "resource": "https://AnyString",
- "applicationPermissions": [
- "ChannelMessage.Read.Group"
- ]
+{
+ "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.12/MicrosoftTeams.schema.json",
+ "manifestVersion": "1.12",
+ "version": "1.0.0",
+ "id": "8239c8f3-ed78-4512-933e-babfd28856f1",
+ "packageName": "com.contoso.rscechobot",
+ "developer": {
+ "name": "Contoso",
+ "websiteUrl": "https://www.contoso.com",
+ "privacyUrl": "https://www.contoso.com/privacy",
+ "termsOfUseUrl": "https://www.contoso.com/tos"
+ },
+ "icons": {
+ "color": "color.png",
+ "outline": "outline.png"
+ },
+ "name": {
+ "short": "RscEchoBot",
+ "full": "Echo bot with RSC configured for all conversation messages"
+ },
+ "description": {
+ "short": "Echo bot with RSC configured for all channel and chat messages",
+ "full": "Echo bot configured with all channel and chat messsages RSC permission in manifest"
+ },
+ "accentColor": "#FFFFFF",
+ "staticTabs": [
+ {
+ "entityId": "conversations",
+ "scopes": [
+ "personal"
+ ]
+ },
+ {
+ "entityId": "about",
+ "scopes": [
+ "personal"
+ ]
+ }
+ ],
+ "webApplicationInfo": {
+ "id": "07338883-af76-47b3-86e4-2603c50be638",
+ "resource": "https://AnyString"
+ },
+ "authorization": {
+ "permissions": {
+ "resourceSpecific": [
+ {
+ "type": "Application",
+ "name": "ChannelMessage.Read.Group"
+ },
+ {
+ "type": "Application",
+ "name": "ChatMessage.Read.Chat"
+ }
+ ]
+ }
+ },
+ "bots": [
+ {
+ "botId": "07338883-af76-47b3-86e4-2603c50be638",
+ "scopes": [
+ "personal",
+ "team",
+ "groupchat"
+ ],
+ "supportsFiles": false,
+ "isNotificationOnly": false
+ }
+ ],
+ "permissions": [
+ "identity",
+ "messageTeamMembers"
+ ],
+ "validDomains": []
} ```
-## Sideload in a team
+## Sideload in a conversation
+
+# [Channel messages](#tab/channel)
-To sideload in a team to test, whether all channel messages in a team with RSC are received without being @mentioned:
+The following steps guide you to sideload and validate bot that receives all channel messages in a Team without being @mentioned:
1. Select or create a team.
-1. Select the ellipses ●●● from the left pane. The drop-down menu appears.
-1. Select **Manage team** from the drop-down menu. The details appear.
+1. Select ●●● from the left pane. The dropdown menu appears.
+1. Select **Manage team** from the dropdown menu.
:::image type="content" source="Media/managingteam.png" alt-text="Screenshot of Managing team option in Teams application.":::
To sideload in a team to test, whether all channel messages in a team with RSC a
:::image type="content" source="Media/uploadingcustomapp.png" alt-text="Screenshot of upload a custom app option.":::
-1. Select the app package from the **Open** dialog box.
- 1. Select **Open**. :::image type="content" source="Media/selectapppackage.png" alt-text="Screenshot of the open dialog box to select the app package." lightbox="Media/selectapppackage.png":::
To sideload in a team to test, whether all channel messages in a team with RSC a
:::image type="content" source="Media/botreceivingmessage.png" alt-text="Screenshot of a bot receiving message in a channel." lightbox="Media/botreceivingmessage.png":::
+# [Chat messages](#tab/chat)
+
+The following steps guide you to sideload and validate bot that receives all chat messages without being @mentioned in a chat:
+
+1. Select or create a group chat.
+1. Select the ellipses ●●● from the group chat. The dropdown menu appears.
+1. Select **Manage apps** from the dropdown menu.
+
+ :::image type="content" source="../../../assets/images/bots/Chats_Manage_Apps_Entry.png" alt-text="Manage apps in team.":::
+
+1. Select **Upload a custom app** from the lower right corner of **Manage apps**.
+
+ :::image type="content" source="../../../assets/images/bots/Chats_Manage_Apps_Page.png" alt-text="Uploading custom app.":::
+
+1. Select the app package from the **Open** dialog box.
+1. Select **Open**.
+
+ :::image type="content" source="../../../assets/images/bots/Chats_Sideload_App_FilePicker.png" alt-text= "Selecting app package.":::
+
+1. Select **Add** from the app details pop-up, to add the bot to your selected group chat.
+
+ :::image type="content" source="../../../assets/images/bots/Chats_Install_Dialog.png" alt-text="Adding the bot.":::
+
+1. Enter a message in the group chat for your bot.
+
+ :::image type="content" source="../../../assets/images/bots/Bot_ReceiveMessage.png" alt-text="Bot receives message.":::
+
+ The bot receives the message without being @mentioned.
+
+ :::image type="content" source="../../../assets/images/bots/Bot_NoMention.png" alt-text="No mention.":::
+++ ## Code snippets
-The following code provides an example of RSC permissions:
+The following code provides an example of the RSC permissions:
# [C#](#tab/dotnet)
The following code provides an example of RSC permissions:
// When rsc is enabled the method will be called even when bot is addressed without being @mentioned protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken) {
- await turnContext.SendActivityAsync(MessageFactory.Text("Using RSC the bot can receive messages across channels in team without being @mentioned."));
+ await turnContext.SendActivityAsync(MessageFactory.Text("Using RSC the bot can receive messages across channels or chats in team without being @mentioned."));
} ```
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivi
// Handle when a message is addressed to the bot. // When rsc is enabled the method will be called even when bot is addressed without being @mentioned this.onMessage(async (context, next) => {
- await context.sendActivity(MessageFactory.text("Using RSC the bot can receive messages across channles in team without being @mentioned."))
+ await context.sendActivity(MessageFactory.text("Using RSC the bot can receive messages across channels or chats in team without being @mentioned."))
await next(); }); ```
this.onMessage(async (context, next) => {
| Sample name | Description | C# |Node.js| |-|-||-|
-|Channel messages with RSC permissions| Microsoft Teams sample app demonstrating on how a bot can receive all channel messages with RSC without being @mentioned.| [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-receive-channel-messages-withRSC/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-receive-channel-messages-withRSC/nodejs) |
+|Channel messages with RSC permissions| Microsoft Teams sample app demonstrating on how a bot can receive all channel messages with RSC without being @mentioned.|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-receive-channel-messages-withRSC/csharp) |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-receive-channel-messages-withRSC/nodejs) |
## See also
platform Conversation Basics https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/conversation-basics.md
A bot behaves differently depending on the conversation it's involved in:
* Bots in a one-to-one conversation don't require an @mention. All messages sent by the user routes to your bot. > [!NOTE]
-> Bots can be enabled to receive all channel messages in a team without being @mentioned using resource-specific consent (RSC) permissions. This feature is currently available in [public developer preview](../../../resources/dev-preview/developer-preview-intro.md) only. For more information, see [receive all channel messages with RSC](channel-messages-with-rsc.md).
+> Bots can receive all channel and chat messages in a team without being @mentioned using resource-specific consent (RSC) permissions. RSC for all *chat* messages is only available in [public developer preview for Teams](../../../resources/dev-preview/developer-preview-intro.md). For more information, see [receive all conversation messages with RSC](channel-messages-with-rsc.md).
For the bot to work in a particular conversation or scope, add support to that scope in the [app manifest](~/resources/schem).
platform Teams Store Validation Guidelines https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md
Following these guidelines increases the chances of your app to pass the Microso
> > * Some guidelines may not be applicable to your app. For example, if your app doesn't include a bot, you can ignore bot-related guidelines. > * We've cross-referenced these guidelines to the Microsoft commercial certification policies and added DoΓÇÖs and DonΓÇÖts with examples from pass or fail scenarios encountered in our validation process.
-> * Certain guidelines are marked as *Mandatory Fix*. If your app submission doesn't meet these mandatory guidelines, you'll receive a failure report from us with steps to mitigate. Your app submission will pass Microsoft Teams store Validation only after you have fixed the issues.
+> * Certain guidelines are marked as *Mandatory Fix*. If your app submission doesn't meet these mandatory guidelines, you'll receive a failure report from us with steps to mitigate. Your app submission will pass Microsoft Teams store validation only after you have fixed the issues.
> * Other guidelines are marked as *Suggested Fix*. For an ideal user experience, we suggest that you fix the issues, however, your app submission will not be blocked from publishing on the Teams store, if you choose not to fix the issues. :::row:::
Following these guidelines increases the chances of your app to pass the Microso
## Value proposition ### App name [*Mandatory Fix*] <br></br> <details><summary>Expand to know more</summary>
An app's name plays a critical role in how users discover it in the store. Use t
* Call out the app's region-specific functionality in the title, metadata, first response app experience, and help sections. For example, title must be Contoso Mexico. App title must clearly differentiate an existing app from the same developer to avoid end-user confusion. * When uploading the app package in Partner Center, select the right **Markets** where the app will be available in the **Availability** section.
-* App name must not lead with a core Teams feature such as Chat, Contacts, Calendar, Calls, Files, Activity, Teams, Apps, and Help. The app name can shorten to either Chat, Contacts, Calendar, Calls, Files, Activity, Teams, Apps, and Help on install in the left nav.
+* App name must not lead with a core Teams feature such as Chat, Contacts, Calendar, Calls, Files, Activity, Teams, Apps, and Help. The app name can shorten to either Chat, Contacts, Calendar, Calls, Files, Activity, Teams, Apps, and Help on install in the left navigation.
-* If your app is part of an official partnership with Microsoft, the name of your app must come first. For example, **Contoso Connector for Microsoft Teams**.
+* If your app is part of an official partnership with Microsoft, the name of your app must come first. For example, **Contoso connector for Microsoft Teams**.
* The app name must not have any reference to Microsoft or Microsoft products. DonΓÇÖt use **Teams**, **Microsoft**, or **App** in the app name unless your app is in official partnership with Microsoft. In such an instance, the app name must come first before any reference to Microsoft. For example, **Contoso connector for Microsoft Teams**.
An app's name plays a critical role in how users discover it in the store. Use t
* Developer name must be the same in the manifest and AppSource.
-* App manifests submitted must be production manifests. Accordingly, app name must not indicate that the app is a pre-production app. For example, app name must not contain words such as Beta, Dev, Preview, and UAT.
+* App manifests submitted must be production manifests. Accordingly, app name must not indicate that the app is a preproduction app. For example, app name must not contain words such as Beta, Dev, Preview, and UAT.
> [!TIP]
- > Your appΓÇÖs branding on the Microsoft Teams store and AppSource including your app name, developer name, app icon, AppSource screenshots, video, short description and website either separately or taken together must not impersonate an official Microsoft offering unless your app is an official Microsoft 1P offering.
+ > Your appΓÇÖs branding on the Microsoft Teams store and AppSource including your app name, developer name, app icon, AppSource screenshots, video, short description, and website either separately or taken together must not impersonate an official Microsoft offering unless your app is an official Microsoft 1P offering.
</details>
An app's name plays a critical role in how users discover it in the store. Use t
[*Mandatory Fix*] <br></br> <details><summary>Expand to know more</summary>
Your app must enable group collaboration, improve an individual's productivity,
[*Mandatory Fix*] Apps must focus on the Teams experience and not include the names, icons, or imagery of other similar chat-based collaboration platforms or services within the app content or in the appΓÇÖs metadata unless the app provides specific interoperability.
App feature names in buttons and other UI text must not use terminology reserved
[*Mandatory Fix*] For more information on how to implement app authentication, see [authentication in Teams](~/concepts/authentication/authentication.md). <br></br>
If your app authenticates users with an external service, follow these guideline
* Apps that depend on external accounts or services must provide clear and simple sign in, sign out, and sign up experience. * When users sign out, they must sign out only from the app and remain signed in to Teams. * Apps that depend on external accounts or services must provide a way forward for new users to sign up or contact the app publisher to learn more about the services and get access to the services.
- Way forward must be available in the appΓÇÖs manifest, AppSource long description, and app first run experience (bot welcome message, tab setup or config page).
- * Apps that require tenant admin to complete one time setup must call out dependency on tenant admin to configure the app (before any other tenant user can install and use the app).
- Dependency must be called out in the appΓÇÖs manifest, AppSource long description, all first run experience touchpoints (bot welcome message, tab setup or config page), help text as considered necessary as part of bot response, compose extension, or static tab content.
+ Way forward must be available in the appΓÇÖs manifest, AppSource long description, and app first run experience (bot welcome message, tab setup, or config page).
+ * Apps that require tenant admin to complete one-time setup must call out dependency on tenant admin to configure the app (before any other tenant user can install and use the app).
+ Dependency must be called out in the appΓÇÖs manifest, AppSource long description, all first run experience touchpoints (bot welcome message, tab setup, or config page), help text as considered necessary as part of bot response, compose extension, or static tab content.
* **Content sharing experiences**: Apps that require authentication with an external service to share content in Teams channels must clearly state in the help documentation (or similar resources) on how to disconnect or unshare content if that feature is supported on the external service. This doesn't mean the ability to unshare content must be present in your Teams app.
If your app authenticates users with an external service, follow these guideline
## Security ### Financial information [*Mandatory Fix*] <br></br> <details><summary>Expand to know more</summary>
Apps running on the iOS or Android version of Teams must adhere to the following
[*Mandatory Fix*] <br></br> <details><summary>Expand to know more</summary>
Bots must always ask permission to upload a file and display a confirmation mess
[*Mandatory Fix*] <br></br> <details><summary>Expand to know more</summary>
App must warn users before downloading any files or executables (.exe) into the
## General functionality and performance * Way forward guidance is mandatory for both admin and existing users. You can add way forward guidance as hyperlinks to sign up, get started, contact us, help links, or email. * Calling out account dependency or limitations under app functionality isn't required but is mandatory to add it in both manifest long description and AppSource app listing.
App packages must be correctly formatted and include all required information an
> > * **Steps to configure the app test accounts** in case app depends on external accounts for authentication. > * Summary of **expected app behavior** for the core workflows within Teams.
-> * **Clearly describe Limitations**, conditions, or exceptions to the functionality, features, and deliverables in the app long description and related materials.
+> * **Clearly describe limitations**, conditions, or exceptions to the functionality, features, and deliverables in the app long description and related materials.
> * **Emphasis on any considerations** for testers while validating your app submission.
-> * **Pre-populate the test accounts with dummy data** to aid testing.
+> * **Prepopulate the test accounts with dummy data** to aid testing.
> * If you are providing your test accounts, ensure that you enable third-party integration. Also, disable two-factor or multi-factor authentication. ### App manifest
Descriptions must not directly or through insinuation disparage another brand (M
:::image type="content" source="../../../../assets/images/submission/validation-app-description-contact-deatils-not-hyperlinked.png" alt-text="Graphic shows an example of contact details not hyperlinked in the app descriptions.":::
-* App description must identify the intended audience, briefly and clearly explain its unique and distinct value, identify supported Microsoft products and other software, and include any prerequisites or requirements for its use. You must clearly describe any limitations, conditions or exceptions to the functionality, features, and deliverables as described in the listing and related materials before the customer acquires your offer. The capabilities you declare must relate to the core functions and description of your offer. [*Mandatory Fix*]
+* App description must identify the intended audience, briefly and clearly explain its unique and distinct value, identify supported Microsoft products and other software, and include any prerequisites or requirements for its use. You must clearly describe any limitations, conditions, or exceptions to the functionality, features, and deliverables as described in the listing and related materials before the customer acquires your offer. The capabilities you declare must relate to the core functions and description of your offer. [*Mandatory Fix*]
* If you update your app name, replace the old app name with new app name in the offer metadata in the manifest, AppSource, and wherever applicable. [*Mandatory Fix*]
Remember the following:
The privacy policy can be specific to your Teams app or an overall policy for all your services.
-* If you use a generic privacy policy template, you must add a reference to **services**, **applications**, or **platforms in the scope of your privacy policy**. You donΓÇÖt need to specify your Teams app in the scope, if you include a reference to **services**, **applications** and **platforms**. The app validation process will interpret these references to include your Teams app along with your other services or websites.
+* If you use a generic privacy policy template, you must add a reference to **services**, **applications**, or **platforms in the scope of your privacy policy**. You donΓÇÖt need to specify your Teams app in the scope, if you include a reference to **services**, **applications**, and **platforms**. The app validation process will interpret these references to include your Teams app along with your other services or websites.
* Must include how you handle user data storage, retention, and deletion. You must describe the security controls for data protection. * Must include your contact information. * Must not include URLs that are broken or for beta or staging purposes.
Use the following guidelines to write the Terms of use:
[*Mandatory Fix*]
-Your app's support URLs must not require authentication. For example, users must not login to contact you.
+Your app's support URLs must not require authentication. For example, users must be allowed to contact you without sign in.
<br></br> <details><summary>Expand to know more</summary>
Support URLs must include your contact details or a way forward for users to rai
## Apps linked to SaaS offer <br></br> <details><summary>General</summary>
Support URLs must include your contact details or a way forward for users to rai
* Teams app and SaaS offer must be from the same publisher or developer. The SaaS offer referenced in the App manifest must belong to the same publisher as the Teams app is submitted to the commercial marketplace. * As your submitted offer is a Teams app linked to SaaS offer, you must select **Additional purchases** as **Yes, my product requires purchase of a service or offers additional in-app purchasesΓÇï** in Partner Center product set-up section of your offer listing. * Plan descriptions and pricing details must provide enough information for users to clearly understand the offer listings.
-* Any limitations, dependencies on additional services and exceptions to features offered must be accurately called out in plan descriptions.
+* Any limitations, dependencies on additional services, and exceptions to features offered must be accurately called out in plan descriptions.
* The Teams apps linked to SaaS offer are designed to support licenses assigned on a named, per-user basis. Sometimes, the SaaS offer is built with other method or has specialized purchase flows. You must clearly mention in the app metadata and subscription plan details about the method and purchase flows. * SaaS offer must provide messages and guidance to all users in all applicable states of purchase flow.
If setup of your app for testing purposes is complex, provide an end-to-end func
## Tabs If your app includes a tab, ensure that it adheres to these guidelines. > [!TIP] > For more information on creating a high-quality app experience, see [Teams tab design guidelines](~/tabs/design/tabs.md).
If your app includes a tab, ensure that it adheres to these guidelines.
The following are the navigation guidelines:
-* Tabs must not provide navigation that conflicts with the primary Teams navigation. If you provide a left navigation in your tab, it must not include only icons or icons with stacked text. It must not be a collapsible rail with the option to see icons with stacked text (mimicking the Teams navigation bar). Include icons with inline text or only text or use hamburger menus instead of tab left rail. [*Mandatory Fix*]
+* Tabs must not provide navigation that conflicts with the primary Teams navigation. If you provide a left navigation in your tab, it must not include only icons or icons with stacked text. It must not be a collapsible rail with the option to see icons with stacked text (mimicking the Teams navigation bar). Include icons with in line text or only text or use hamburger menus instead of tab left rail. [*Mandatory Fix*]
Design your app with [basic](~/concepts/design/design-teams-app-basic-ui-components.md) and [advanced](~\concepts\design\design-teams-app-advanced-ui-components.md) Fluent UI components.
Design your app with [basic](~/concepts/design/design-teams-app-basic-ui-compone
## Bots If your app includes a bot, ensure that it adheres to these guidelines.
Analyzing user input and predicting user intent is difficult. Bot commands provi
:::image type="content" source="../../../../assets/images/submission/validation-bot-commands-deadend.png" alt-text="validation-bot-commands-dead-end":::
-* You must list at least one valid bot command in the `items.commands.title` section of the manifest and add a suitable description that gives clarity to the user on the bot command and its usage. Bot commands listed in the `commandLists` section of the manifest surface as pre-populated commands in the bot command menu and provide a way forward for the new user to interact with the bot. [*Mandatory Fix*]
+* You must list at least one valid bot command in the `items.commands.title` section of the manifest and add a suitable description that gives clarity to the user on the bot command and its usage. Bot commands listed in the `commandLists` section of the manifest surface as prepopulated commands in the bot command menu and provide a way forward for the new user to interact with the bot. [*Mandatory Fix*]
* Bot response must not contain any official Microsoft product images or avatars. Use your own assets in your app. Use of Microsoft product images in your app isn't allowed. You may only copy, modify, distribute, display, license, or sell Microsoft copyrighted product images if you're granted explicit permission within the End-User License Agreement (EULA), license terms that accompany the content, or in the [Microsoft Trademark and Brand guidelines](https://www.microsoft.com/legal/intellectualproperty/trademarks). [*Mandatory Fix*]
Bots must not spam users by sending multiple messages in short duration.
* Send one message with complete information. * Avoid multi-turn conversations to complete a single repetitive workflow.
- * Use a form (or task module) to collect all inputs from a user at one time.
+ * Use a form (or task module) to collect all inputs from a user at one-time.
* NLP based conversational chatbots can use multi turn conversation to make the discussion more engaging and complete a workflow. :::image type="content" source="../../../../assets/images/submission/validation-bot-messages-using-task-module.png" alt-text="validation-bot-message-using-task-module":::
Apps that provide only notifications with content such as, **You have a new noti
:::image type="content" source="../../../../assets/images/submission/validation-bot-notification-only-inadequete-info.png" alt-text="Screenshot shows an example of a notification only bit with inadequate information in the preview."::: > [!TIP]
-> Preview information and provide basic inline user actions in the posted card so that the user isn't required to navigate outside Teams for all actions (irrespective of complexity).
+> Preview information and provide basic in line user actions in the posted card so that the user isn't required to navigate outside Teams for all actions (irrespective of complexity).
</details> <br/>
Apps that provide only notifications with content such as, **You have a new noti
## Message extensions If your app includes a message extension, ensure that it adheres to these guidelines.
If your app includes a message extension, ensure that it adheres to these guidel
:::image type="content" source="../../../../assets/images/submission/validation-messaging-extension-design-guidelines-fail.png" alt-text="Graphic shows an example of an app not meeting extension guidelines.":::
-* Messaging extensions are shortcuts for inserting app content or acting on a message without navigating away from the conversation. Keep your messaging extension simple and display only the components required to effectively complete the action. Complete website must not be I-framed within the messaging extension [*Mandatory Fix*]
+* Messaging extensions are shortcuts for inserting app content or acting on a message without navigating away from the conversation. Keep your messaging extension simple and display only the components required to effectively complete the action. Complete website must not be I-framed within the messaging extension. [*Mandatory Fix*]
* Preview images in Adaptive Cards in messaging extensions must load properly. [*Mandatory Fix*]
Link unfurling only apps don't provide significant value within Teams. Consider
[*Mandatory Fix*] <br></br> <details><summary>Expand to know more</summary>
For more information, see [Teams task module design guidelines](~\task-modules-a
## Meeting extensions > [!TIP] > For more information on creating a high-quality app experience, see the [Teams meeting extension design guidelines](~/apps-in-teams-meetings/design/designing-apps-in-meetings.md).
For more information, see [Teams task module design guidelines](~\task-modules-a
Use the following guidelines for meeting extensions:
-* Meeting extensibility apps must offer a responsive in-meeting experience aligned to the Teams meeting experience. In-meeting experience is mandatory for a Teams app that supports meeting extensibility but, pre and post-meeting experiences aren't mandatory.
+* Meeting extensibility apps must offer a responsive in-meeting experience aligned to the Teams meeting experience. In-meeting experience is mandatory for a Teams app that supports meeting extensibility but, pre- and post-meeting experiences aren't mandatory.
* With the pre-meeting app experience, users can find and add meeting apps. Users can also perform pre-meeting tasks such as developing a poll to survey the meeting participants. If your app provides a pre-meeting experience, it must be relevant to the workflow of the meeting.
Use the following guidelines for meeting extensions:
</details> </br>
-<details><summary>Pre and post meeting experience</summary>
+<details><summary>Pre- and post-meeting experience</summary>
* Pre and post meeting screens must adhere to general tab design guidelines. For more information, see [Teams design guidelines](~/tabs/design/tabs.md). * Tabs must have an organized layout when displaying multiple items. For example, more than 10 polls or surveys, see [example layout](~/apps-in-teams-meetings/design/designing-apps-in-meetings.md#after-a-meeting).
Use the following guidelines for meeting extensions:
## Notifications If your app uses the [activity feed APIs provided by Microsoft Graph](/graph/teams-send-activityfeednotifications), ensure that it adheres to the following guidelines.
If your app uses the [activity feed APIs provided by Microsoft Graph](/graph/tea
## Microsoft 365 App Compliance Program <br></br> <details><summary>Expand to know more</summary>
You must demonstrate compliance with all laws where your app is distributed, if
After an internal Microsoft review, if the compliance demonstration is satisfactory, Microsoft may proceed with further certification of your app. If the compliance demonstration is unsatisfactory, Microsoft will keep you informed of the decision to not proceed with certification of your app.
-## App Functionality
+## App functionality
* Workflows or content in the app must be related to the scope. [*Mandatory Fix*] * All app capabilities must be functional and must work properly as described in the AppSource or manifest long description. [*Mandatory Fix*]
-* Apps must always intimate the user before downloading any file or executable on the userΓÇÖs environment. Any call to action (CTA), either text based or otherwise, that makes it clear to the user that a file or executable is downloaded on user action is allowed in the app. [*Mandatory Fix*]
+* Apps must always notify the user before downloading any file or executable on the userΓÇÖs environment. Any call to action (CTA), either text based or otherwise, that makes it clear to the user that a file or executable is downloaded on user action is allowed in the app. [*Mandatory Fix*]
-## Mobile Experience
+## Mobile experience
* Mobile add-ins must be free. There must not be any in-app content or links that promote upselling, online stores, or other requests for payment. Any accounts required for apps must have no charge for use and if time-limited, must not include any content indicating a need to pay.
platform What Are Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/what-are-tabs.md
A custom tab is declared in the app manifest of your app package. For each webpa
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 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 Add Single Sign On https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/add-single-sign-on.md
zone_pivot_groups: teams-app-platform
# Add single sign-on to Teams app
-Microsoft Teams provides single sign-on (SSO) function for application to obtain signed-in Teams user token to access Microsoft Graph and other APIs. Teams Toolkit facilitates the interaction by abstracting some of the Microsoft Azure Active Directory (Azure AD) flows and integrations behind some simple APIs. This enables you to add SSO features easily to your Teams application
+Microsoft Teams provides single sign-on (SSO) function for application to obtain signed-in Teams user token to access Microsoft Graph and other APIs. Teams Toolkit facilitates the interaction by abstracting some of the Microsoft Azure Active Directory (Azure AD) flows and integrations behind some simple APIs. This enables you to add SSO features easily to your Teams application.
::: zone pivot="visual-studio-code"
platform Whats New https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/whats-new.md
Discover Microsoft Teams platform features that are in developer preview. You ca
Developer preview is a public program that provides early access to unreleased Teams platform features.
-**2022 October**
+**2022 November**
-***October 11, 2022***: [Generate a deep link to share content to stage in meetings.](apps-in-teams-meetings/build-apps-for-teams-meeting-stage.md#generate-a-deep-link-to-share-content-to-stage-in-meetings)
+***November 11, 2022***: [Enable bots to receive all chat messages without being @mentioned](bots/how-to/conversations/channel-messages-with-rsc.md)
:::column-end::: :::row-end::: | **Date** | **Update** | **Find here** | | -- | | |
+| 10/11/2022 | Generate a deep link to share content to stage in meetings. | Build apps for Teams meetings and calls > Enable and configure apps for Teams meetings > [Generate a deep link to share content to stage in meetings.](apps-in-teams-meetings/build-apps-for-teams-meeting-stage.md#generate-a-deep-link-to-share-content-to-stage-in-meetings) |
| 09/23/2022 | Introduced meeting app support for Scheduled Channel Meetings. | Build apps for Teams meetings and calls > [Apps for Teams meetings and calls](apps-in-teams-meetings/teams-apps-in-meetings.md) | | 08/23/2022 | Share apps to the Teams meeting stage in mobile | Build apps for Teams meetings and calls > [Enable and configure apps for meetings](/microsoftteams/platform/apps-in-teams-meetings/enable-and-configure-your-app-for-teams-meetings) | | 08/10/2022 | Apps for scheduled public channel meetings | Build apps for Teams meetings and calls > [Overview](apps-in-teams-meetings/teams-apps-in-meetings.md) |