Service | Microsoft Docs article | Related commit history on GitHub | Change details |
---|---|---|---|
platform | Common Reasons For App Validation Failure | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/common-reasons-for-app-validation-failure.md | A great description can make your app stand out in the Microsoft Teams store and :::image type="content" source="../../../assets/images/submission/validation-common-reason-fail-grammatical-error.png" alt-text="Screenshot of failed image for long description, grammatical errors and capitalization"::: - :::image type="content" source="../../../assets/images/submission/validation-common-reason-fail-app-description-truncation.png" alt-text="Screenshot of failed scenario of app description guidelines which has incomplete truncation"::: + :::image type="content" source="../../../assets/images/submission/validation-common-reason-fail-app-description-truncation.png" alt-text="Screenshot of failed scenario of app description guidelines, which has incomplete truncation"::: :::image type="content" source="../../../assets/images/submission/validation-common-reasons-pass-inadequate-app-description.png" alt-text="Screenshot to show the pass scenarios with inadequate app description."::: Icons are one of the main elements people see when browsing the Microsoft Teams * App submissions with different logos in Partner Center and the app package submitted for review. - :::image type="content" source="../../../assets/images/submission/validation-common-reason-fail-partner-center-manifest-different.png" alt-text="Screenshot to show the failed scenario of partner center and manifest which are different."::: + :::image type="content" source="../../../assets/images/submission/validation-common-reason-fail-partner-center-manifest-different.png" alt-text="Screenshot to show the failed scenario of partner center and manifest, which are different."::: [Back to top](#common-reasons-for-app-validation-failure) Your app name plays a critical role for users to discover your app on the Micros * Inconsistent usage of app name throughout the app’s functionality. - :::image type="content" source="../../../assets/images/submission/validation-common-reason-pass-inconsistent-app-functionality.png" alt-text="Screenshot of image to show pass inconsistent usage of app name in app's functionality."::: + :::image type="content" source="../../../assets/images/submission/validation-common-reason-pass-inconsistent-app-functionality.png" alt-text="Screenshot of image to show the pass scenario for inconsistent usage of app name in app's functionality."::: - :::image type="content" source="../../../assets/images/submission/validation-common-reason-fail-inconsistent-app-functionality.png" alt-text="Screenshot of image to show fail inconsistent usage of app name in app's functionality."::: + :::image type="content" source="../../../assets/images/submission/validation-common-reason-fail-inconsistent-app-functionality.png" alt-text="Screenshot of image to show the fail scenario for inconsistent usage of app name in app's functionality."::: * Mismatch between the app name mentioned in the app manifest submitted as part of the app package and Partner Center. Your app name plays a critical role for users to discover your app on the Micros * App submissions where the developer has changed the app name, but the old app name is still used within the app. - :::image type="content" source="../../../assets/images/submission/validation-common-reason-fail-old-app-name.png" alt-text="Screenshot of image to show failed app submission for old app name which is still used."::: + :::image type="content" source="../../../assets/images/submission/validation-common-reason-fail-old-app-name.png" alt-text="Screenshot of image to show failed app submission for old app name, which is still used."::: [Back to top](#common-reasons-for-app-validation-failure) Your app name plays a critical role for users to discover your app on the Micros The Teams app manifest describes how the app integrates into the Microsoft Teams product. Your app manifest must conform to a publicly released [manifest schema](../../../resources/schem). If your app supports localization, ensure that use a localization manifest schema version 1.5 or later. App packages that contain preview schemas (not publicly released) fail app review. -You must update the app version declared in the manifest if you're submitting an app update. We recommend you to always use the latest publicly released manifest schema when submitting a new app or an app update and ensure that the manifest schema version in Microsoft Teams store and Microsoft AppSource is the same. +You must update the app version declared in the manifest if you're submitting an app update. It's recommended to always use the latest publicly released manifest schema when submitting a new app or an app update and ensure that the manifest schema version in Microsoft Teams store and Microsoft AppSource is the same. :::image type="content" source="../../../assets/images/submission/validation-common-reason-pass-app-version-number.png" alt-text="Screenshot to show the app version number incremented."::: Your offer listing must include a valid Terms of use link. Offers with invalid, [Back to top](#common-reasons-for-app-validation-failure) +## Teams apps extensible across Microsoft 365 ++### Microsoft 365 re-branding ++Tab doesn't load or show an error page or message on the Microsoft 365 client when you replace the tab url from www.office.com/ to www.microsoft365.com/. ++### App functionality ++Your app must not have the following issues in Outlook and Microsoft 365 clients: ++1. Functionality cross-parity isn't maintained or missing across Microsoft 365 clients. ++1. Continuous loading indicator is visible in tabs for Teams apps extensible across Microsoft 365. ++1. Blank screen is visible in tabs for Teams apps extensible across Microsoft 365. ++1. Error message appears when adding an app for Teams apps extensible across Microsoft 365. ++1. A button doesn't perform the intended action upon selection, but it does after the session is refreshed. ++1. App requests for authentication in the Outlook client when switching between the tabs. ++1. An intended feature in the Microsoft 365 client opens two browser instances upon selection. ++1. An intended feature in Teams apps extensible across Microsoft 365 shows an error message upon selection. ++1. The content in the **Help** tab isn't publicly available to learn more about the app's offering. The app asks for authentication. ++1. Sign out option isn't available within the tab. ++1. The content in the **Help** or **About** tab is only related to Teams clients. ++1. The tab has a duplicate header or logo. ++1. The user is unable to revert the last action or doesn't have a back button to go to the previous work state. ++1. The content in the app is specific to Teams only. ++1. The user is unable to login to the app in Outlook. ++### App responsiveness ++You must avoid the following issues in your app before you submit for review: ++1. Horizontal scroll bar is present in tabs. ++1. App has truncated content. ++1. App isn't responsive to 100 percent screen resolution. ++### App package and store listing (metadata and manifest) ++You must avoid the following issues in your app before you submit for review: ++* App listing screenshots are only relevant to the Teams client. ++* App description in the manifest or metadata is only relevant to the Teams client. ++* App has incorrect reference to the Teams app extensible across Microsoft 365. ++* Support URL, privacy policy, or terms of use content in the manifest or metadata is only relevant to the Teams client. ++[Back to top](#common-reasons-for-app-validation-failure) + ## See also * [Distribute your Microsoft Teams app](../apps-publish-overview.md) |
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 | An app's name plays a critical role in how users discover it in the store. Use t * App manifests submitted must be production manifests. Accordingly, app name mustn't indicate that the app is a preproduction app. For example, app name mustn't contain words such as Beta, Dev, Preview, and UAT. [*Mandatory Fix*] +* The app name in the manifest and AppSource must match. [*Mandatory Fix*] + > [!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 mustn't impersonate an official Microsoft offering unless your app is an official Microsoft 1P offering. Don't include domains outside of your organization's control (including wildcard * If your app is a PowerApp built on the Microsoft Power Platform, you must include *apps.powerapps.com* as a valid domain to enable your app to be accessible and functional within Teams. -* If your app uses the Azure Bot Service's OAuthCard, you must include *token.botframework.com* as a valid domain or else the Sign in button won't work. You mustn't declare *.botframework.com* as wildcards are not allowed with this domain name. [*Mandatory Fix*] +* External domains declared for your submission must not contain URLs. For example, www or https. [*Mandatory Fix*] ++* If your app uses the Azure Bot Service's OAuthCard, you must include *token.botframework.com* as a valid domain or else the Sign in button won't work. You mustn't declare *.botframework.com* as wildcards aren't allowed with this domain name. [*Mandatory Fix*] -* Following External Domains are not allowed: [*Mandatory Fix*] +* Following External Domains aren't allowed: [*Mandatory Fix*] * *.azurewebsites.net * *.azureedge.com * *.microsoft.com When using wildcards (`*`), the following rules apply: * If a subdomain segment includes a wildcard, it must be the only character in the segment. * Any segment preceding a wildcard segment must also be a wildcard segment. -For example, *\*.\*.domain.com* is valid, but *foo.\*.myteam.domain.com* is not valid. +For example, *\*.\*.domain.com* is valid, but *foo.\*.myteam.domain.com* isn't valid. </details> Icons are one of the main elements people see when browsing the Teams store. Your icons must communicate your app's brand and purpose while adhering to the following requirements: +* App's color and outline icon submitted in the app listing must match. [*Mandatory Fix*] ++ :::image type="content" source="../../../../assets/images/submission/color-outline-icon-same.png" alt-text="Screenshot shows color icon and outline icon are same."::: ++ :::image type="content" source="../../../../assets/images/submission/color-outline-icon-not-same.png" alt-text="Screenshot shows color icon and outline icon arenΓÇÖt same."::: + * Your app package must include two .png versions of your app icon: A color icon and an outline icon. [*Mandatory Fix*] * The color version of your icon must be 192x192 pixels. Your icon symbol can be any color or colors, but it must sit on a solid or fully transparent square background. [*Mandatory Fix*] * The outline version of your icon is displayed in the following scenarios: Remember the following: :::image type="content" source="../../../../assets/images/submission/validation-guidelines-fail-app-functionality.png" alt-text="Screenshot shows the failed scenario of app functionality or integration."::: * Provided screenshots mustn't incorrectly reference Microsoft Teams as MS, MSFT, or MS Teams. [*Mandatory Fix*]-* If your Teams app is extensible across Microsoft 365 clients (Office, Outlook, and Microsoft Teams), the screenshots provided must depict the app functionality in other Microsoft 365 clients. [*Mandatory Fix*] ++* If your Teams app is extensible across Microsoft 365 clients (Microsoft 365, Outlook, and Microsoft Teams), the screenshots provided must depict the app functionality in other Microsoft 365 clients. [*Mandatory Fix*] :::image type="content" source="../../../../assets/images/submission/validation-guidelines-pass-app-functionality-MS-365.png" alt-text="Screenshot shows the passed scenario of Teams app functionality in MS 365 clients."::: Remember the following: :::image type="content" source="../../../../assets/images/submission/validation-guidelines-fail-app-functionality-teams.png" alt-text="Screenshot shows the failed scenario of unrelated app functionality in Teams."::: -> [!TIP] -> -> * A video can be the most effective way to communicate why people must use your app. A video also is the first thing users see in your listing. -> * If you choose to provide a video in your app listing, you must turn off ads in YouTube or Vimeo settings before submitting the video link in the Partner Center. Videos provided in the app listing mustn't be more than 90 seconds in duration and must only depict the app functionality and integration with Microsoft Teams. For more information, see [create a video for your store listing](~/concepts/deploy-and-publish/appsource/prepare/submission-checklist.md#create-a-video). [*Mandatory Fix*] - </details> +### Videos ++A video in your app listing is one of the most effective ways to communicate why people should use your app. You can add a URL for your YouTube or Vimeo video. ++If you choose to submit a video as part of your app listing in your Partner Center account, ensure the following: ++* The duration of the video doesn't exceed 90 seconds. [*Suggested Fix*] +* You turn off advertisements from your YouTube or Vimeo account settings before submitting the video link in the app listing. [*Mandatory Fix*] +* The video showcases your appΓÇÖs functionality and integration within Teams. [*Mandatory Fix*] +* The video is available as a functional link. [*Mandatory Fix*] ++ :::image type="content" source="../../../../assets/images/submission/video-app-listing-partner-center.png" alt-text="Screenshot shows the failed scenario of video submitted as part of app listing in partner center."::: ++<br></br> + ### Privacy policy [*Mandatory Fix*] The privacy policy can be specific to your Teams app or an overall policy for al * Must not include links to AppSource. * Must not require authentication to access privacy policy. * Must not include any commerce UI or store links.+* Must have the same link in the manifest and AppSource. ### Terms of use Use the following guidelines to write the Terms of use: * Must be specific and applicable to your offering. * Must be hosted on your own domain. * Must have a secure (HTTPS) link.-* Access to Terms of use mustn't require authentication. +* Access to Terms of use must not require authentication. +* Must have the same link in the manifest and AppSource. ### Support links 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 * Notify users after license assignment. * Guide users on how to add the app to Teams and get started through Teams chat bot or email. +* If a SaaS app uses [Microsoft license management](manage-third-party-apps-license.md), after the confirmation of the app subscription on the ISV's landing page, the user must be redirected to the Microsoft license management in Teams to avoid a dead-end and allow the user to manage licenses within Teams. + </details> </br> The following are the navigation guidelines: :::image type="content" source="../../../../assets/images/submission/validation-horizontal-scroll-in-list-view.png" alt-text="Graphic shows an example of horizontal scroll in list view."::: +* The user must have an option to go to previous work state. [*Mandatory Fix*] ++ :::image type="content" source="../../../../assets/images/submission/back-button-available.png" alt-text=" Screenshot shows back button option available."::: ++ :::image type="content" source="../../../../assets/images/submission/no-back-button-available.png" alt-text="Screenshot shows failed scenario of no back button option available."::: + * Horizontal scroll in Adaptive Cards mustn't be present in Teams. [*Mandatory Fix*] * Bottom rail used for navigation in tabs mustn't conflict with Teams native mobile app navigation. [*Mandatory Fix*] If your app includes a bot, ensure that it adheres to these guidelines. Analyzing user input and predicting user intent is difficult. Bot commands provide users a set of words or phrases for your bot to understand. -* You must list at least one supported bot command in the `{commandList}` section of your app manifest. These commands display in the compose box when a user tries to message your bot. [*Mandatory Fix*] -- :::image type="content" source="../../../../assets/images/submission/validation-bot-commands-listed.png" alt-text="Graphic shows an example of bot commands listed in the app manifest."::: -- :::image type="content" source="../../../../assets/images/submission/validation-bot-commands-not-listed.png" alt-text="Graphic shows an example of bot commands not listed in the app manifest."::: - * All commands that your bot supports must work correctly, including generic commands such as **Hi**, **Hello**, and **Help**. [*Mandatory Fix*] :::image type="content" source="../../../../assets/images/submission/validation-bot-commands-generic-response-pass.png" alt-text="Graphic shows an example of bot responding to generic commands."::: 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 prepopulated 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. [*Suggested Fix*] * Bot response mustn't 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*] Apps that provide only notifications with content such as, **You have a new noti * Bot information in the app manifest (bot name, logo, privacy link, and terms of service link) must be consistent with the Bot Framework metadata. [*Mandatory Fix*] -* Bot ID must match in the app manifest and Bot Framework metadata. [*Mandatory Fix*] - * Ensure that the bot ID in the app manifest matches with bot ID in the last store published version of your app. Changing bot IDs in an app update leads to permanent loss of all user interaction history with the bot for existing users of your app and starts a new conversation chain with the new Bot ID. [*Mandatory Fix*] * Any change to app name, metadata, bot welcome message, or bot responses must be updated with new name. [*Mandatory Fix*] Apps that provide only notifications with content such as, **You have a new noti * Bot installation in a channel or group chat scope to obtain the team roster for sending proactive notifications for users as 1:1 chats for team specific triggers isn't allowed. For example, app that pairs people for a meetup. [*Mandatory Fix*] -* Bot in channel or group chat only used to obtain the messages or posts in Channel or group chat for sending proactive notifications for users as 1:1 chats isn't allowed. [*Mandatory Fix*] +* Bot in a channel or a group chat only used to obtain the messages or posts for sending proactive notifications for users as 1:1 chats isn't allowed. [*Mandatory Fix*] * Bots installed in collaborative scope must provide a user value in the collaborative scope. [*Mandatory Fix*] Action-based message extensions must do the following: [*Mandatory Fix*] +* If the app has declared the `supportsAnonymizedPayloads` property in the manifest and the user hasn't installed the app, the app link must unfurl and show the add app dialog after the card is selected. [*Mandatory Fix*] + * Message extensions must preview recognized links in the Teams compose box. Don't add domains that are outside your control (either absolute URLs or wildcards). For example, `yourapp.onmicrosoft.com` is valid but `*.onmicrosoft.com` isn't valid. Top-level domains also are prohibited. For example, `*.com` or `*.org`. [*Mandatory Fix*] * Apps must only declare that are under the app publisherΓÇÖs direct ownership in the `messageHandler` link unfurling section of the manifest. It mustnΓÇÖt contain `*.botframework.com.` [*Mandatory Fix*] Shared meeting stage feature can only be launched through the Teams desktop app. [Back to top](#microsoft-teams-store-validation-guidelines) +## Connector ++1. The connector name must be the same as the app name within the app and in the manifest. ++ :::image type="content" source="../../../../assets/images/submission/connector-mismatch-app-name.png" alt-text="Screenshot shows the mismatch in app name between app and manifest."::: ++2. The user must not encounter any error while configuring the connector. ++ :::image type="content" source="../../../../assets/images/submission/connector-error-configuring.png" alt-text="Screenshot shows an error while user configuring the connector."::: + ## Notifications :::image type="icon" source="../../../../assets/icons/certificate-icon-16.png"::: This section is in line with [Microsoft commercial marketplace policy number 1140.4.7](/legal/marketplace/certification-policies#114047-notification-apis). After an internal Microsoft review, if the compliance demonstration is satisfact [Back to top](#microsoft-teams-store-validation-guidelines) +## Apps extended across Microsoft 365 clients ++### General ++* The apps that are intended to extend Teams apps across Microsoft 365 clients must use the schema version 1.13 or later. ++* Your appΓÇÖs support URL must contain content relevant for the Teams app extensible across Microsoft 365 clients and must not call out a single client only. ++* You must provide relevant reference to the Teams app extensible across Microsoft 365 clients in the app description. ++* If your Teams app is extensible across Microsoft 365 clients, the content provided in your appΓÇÖs get started, sign in, sign up, sign out, help pages, or way forward messages must call out all the clients. ++### Compatibility ++Teams apps extensible across Microsoft 365 clients must be fully responsive and functional on the latest versions of Microsoft Edge and Google Chrome clients. The user must be able to invoke and continue to use personal tabs or message extensions on the following: ++* Outlook for Windows and web. +* Microsoft 365 on desktop, web and Android. +* Microsoft Teams on desktop and web. +* Microsoft Teams on Android and iOS. ++### Mobile experience ++Users must be able to launch the app from the actions flyout menu within the Microsoft 365 client on mobile. The app name must be displayed correctly in the action bar. [*Mandatory Fix*] ++#### App launch from actions flyout ++Users must be able to successfully launch and switch between multiple static tabs within the Microsoft 365 client on mobile. The tabs must load properly. If there are more than three static tabs, the remaining tabs must be visible under the **More** section. [*Mandatory Fix*] ++#### Multi tab experience ++If your app uses SSO, it must authenticate the user successfully. SSO allows users to sign in using one set of credentials to multiple independent software systems. Users can access all the required applications without using different credentials to authenticate. [*Mandatory Fix*] ++#### App authentication ++The app must terminate the user account instance when the user is switched or logged out within the Microsoft 365 client on mobile. [*Mandatory Fix*] ++#### Account switching and logout experience ++* Users must be able to go back to the previous work state. If the user is on the root page, the back navigation must terminate the app instance within the Microsoft 365 client on mobile. [*Mandatory Fix*] ++* Apps that support deep link to a workflow must be able redirect the user to the appropriate landing page experience. [*Mandatory Fix*] ++#### Tab navigation ++* The progress indicator must appear when the app is loading and dismiss automatically after the app is completely loaded. [*Mandatory Fix*] ++* An error screen must appear when an app fails to load in the instances such as incoherent or broken network, time-out, or authentication failure, and so on. [*Mandatory Fix*] ++[Back to top](#microsoft-teams-store-validation-guidelines) + ## Next step > [!div class="nextstepaction"] |
platform | Overview Transcripts | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/graph-api/meeting-transcripts/overview-transcripts.md | For more information about the meeting-specific RSC permissions, see [RSC permis After you've configured the permissions, configure your app to receive change notifications for all relevant meeting events. Notifications contain meeting ID and organizer ID that help in accessing transcript content. Your app can fetch the transcript for a meeting when it's generated after it ends. The content of the transcript is available as `.vtt` or `.docx` file. +> [!NOTE] +> The docx format for transcripts will be deprecated starting May 31, 2023. For more information, see [Get callTranscript](/graph/api/calltranscript-get). + For more information about how your app can know when the meetings ends, see [subscribe to change notifications](fetch-id.md#subscribe-to-change-notifications) and [use Bot Framework to get meeting ID and organizer ID](fetch-id.md#use-bot-framework-to-get-meeting-id-and-organizer-id). > [!NOTE] |