Updates from: 03/19/2021 04:13:48
Service Microsoft Docs article Related commit history on GitHub Change details
platform Rate Limit https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/bots/how-to/rate-limit.md
This limit controls the traffic that a bot is allowed to generate on a single co
| Get Conversations | 30 | 120 | | Get Conversations | 3600 | 3600 |
+>[!NOTE]
+> Previous versions of `TeamsInfo.getMembers` and `TeamsInfo.GetMembersAsync` APIs are being deprecated. They will be throttled to 5 requests per minute and return a maximum of 10K members per team. To update your Bot Framework SDK and the code to use the latest paginated API endpoints, see [Bot API changes for team and chat members](../../resources/team-chat-member-api-changes.md).
+ ## Per thread limit for all bots This limit controls the traffic that all bots are allowed to generate across a single conversation. A conversation here is 1:1 between bot and user, a group-chat, or a channel in a team.
platform Team Chat Member Api Changes https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/resources/team-chat-member-api-changes.md
Title: Bot API Changes for Team/Chat Members (2020 update)
+ Title: Bot API changes for team and chat members
description: Describes upcoming and in-progress changes to the Bot APIs used for retrieving members of teams and chats keywords: bot framework apis team members roster
-# Changes to Teams Bot APIs for Fetching Team/Chat Members
+# Changes to Teams bot APIs for fetching team and chat members
+
+>[!NOTE]
+> We've started with the deprecation process for `TeamsInfo.getMembers` and `TeamsInfo.GetMembersAsync` APIs. Initially, they will be heavily throttled to 5 requests per minute and return a maximum of 10K members per team. This will result in the full roster not being returned as team size [increases](https://blogs.microsoft.com/2020/09/22/whats-new-in-microsoft-teams-microsoft-ignite-2020/).
+>
+> **You must update to version 4.10 or higher of the Bot Framework SDK** and switch to the paginated API endpoints, or the `TeamsInfo.GetMemberAsync` single user API. This also applies to your bot even if you're not directly using these APIs, as older SDKs call these APIs during [membersAdded](https://docs.microsoft.com/microsoftteams/platform/bots/how-to/conversations/subscribe-to-conversation-events?tabs=dotnet#team-members-added) events. To view the list of upcoming changes, see [API changes](https://docs.microsoft.com/microsoftteams/platform/resources/team-chat-member-api-changes#api-changes).
Currently, bot developers who want to retrieve information for one or more members of a chat or team use the Microsoft Teams bot APIs `TeamsInfo.GetMembersAsync` (for C#) or `TeamsInfo.getMembers` (for TypeScript/Node.js) APIs [(documented here)](https://docs.microsoft.com/microsoftteams/platform/bots/how-to/get-teams-context?tabs=dotnet#fetching-the-roster-or-user-profile). These APIs have several shortcomings today:
HereΓÇÖs a sample JSON representation of whatΓÇÖs returned by these APIs today.
## API Changes Here are the upcoming API changes:
-* We've created a new API [`TeamsInfo.GetPagedMembersAsync`](https://docs.microsoft.com/microsoftteams/platform/bots/how-to/get-teams-context?tabs=dotnet#fetching-the-roster-or-user-profile) for retrieving profile information for members of a chat/team. This API is now available with the Bot Framework 4.8 SDK. For development in all other versions use the [`GetConversationPagedMembers`](https://docs.microsoft.com/dotnet/api/microsoft.bot.connector.conversationsextensions.getconversationpagedmembersasync?view=botbuilder-dotnet-stable) method. **Note**: In either v3 or v4, the best action is to upgrade to the latest point release (3.30.2 or 4.8 respectively).
-* We've created a new API [`TeamsInfo.GetMemberAsync`](https://docs.microsoft.com/microsoftteams/platform/bots/how-to/get-teams-context?tabs=dotnet#get-single-member-details) for retrieving the profile information for a single user. It takes the ID of the team/chat and a [UPN](https://docs.microsoft.com/windows/win32/ad/naming-properties#userprincipalname) (`userPrincipalName`, *see above*), Azure Active Directory Object ID (`objectId`, *see above*), or the Teams user ID (`id`, *see above*) as parameters and returns the profile information for that user. **Note**: We're changing `objectId` to `aadObjectId` to match what it's called in the `Activity` object of a Bot Framework message. The new API is available with version 4.8 of the Bot Framework SDK. It will soon be available in the Teams SDK extension Bot Framework 3.x as well; meanwhile you can use the [REST](https://docs.microsoft.com/microsoftteams/platform/bots/how-to/get-teams-context?tabs=json#get-single-member-details) endpoint.
-* `TeamsInfo.GetMembersAsync` (C#) and `TeamsInfo.getMembers` (TypeScript/Node.js) is formally deprecated and will stop working in late 2021. We'll announce a specific timetable in May 2020, based on feedback from developers. Once the new paged API is available, developers should update their bots to use it. (This also applies to the [underlying REST API these APIs use](https://docs.microsoft.com/microsoftteams/platform/bots/how-to/get-teams-context?tabs=json#tabpanel_CeZOj-G++Q_json).)
+* We've created a new API [`TeamsInfo.GetPagedMembersAsync`](../../bots/how-to/get-teams-context.md?tabs=dotnet#fetching-the-roster-or-user-profile) for retrieving profile information for members of a chat/team. This API is now available with the Bot Framework 4.10 SDK. For development in all other versions use the [`GetConversationPagedMembers`](/dotnet/api/microsoft.bot.connector.conversationsextensions.getconversationpagedmembersasync?view=botbuilder-dotnet-stable&preserve-view=true) method.
+ > [!NOTE]
+ > In either v3 or v4, the best action is to upgrade to the latest point release.
+* We've created a new API [`TeamsInfo.GetMemberAsync`](../../bots/how-to/get-teams-context.md?tabs=dotnet#get-single-member-details) for retrieving the profile information for a single user. It takes the ID of the team/chat and a [UPN](https://docs.microsoft.com/windows/win32/ad/naming-properties#userprincipalname) (`userPrincipalName`, *see above*), Azure Active Directory Object ID (`objectId`, *see above*), or the Teams user ID (`id`, *see above*) as parameters and returns the profile information for that user.
+ > [!NOTE]
+ > We're changing `objectId` to `aadObjectId` to match what it's called in the `Activity` object of a Bot Framework message. The new API is available with version 4.10 of the Bot Framework SDK. It will soon be available in the Teams SDK extension Bot Framework 3.x as well; meanwhile you can use the [REST](../../bots/how-to/get-teams-context.md?tabs=json#get-single-member-details) endpoint.
+* `TeamsInfo.GetMembersAsync` (C#) and `TeamsInfo.getMembers` (TypeScript/Node.js) is formally deprecated and will stop working in late 2021. Please update your bots to use the paged APIs. (This also applies to the [underlying REST API these APIs use](../../bots/how-to/get-teams-context.md?tabs=json#tabpanel_CeZOj-G++Q_json).)
* By late 2021, bots will not be able to proactively retrieve the `userPrincipalName` or `email` properties for members of a chat/team and will need to use Microsoft Graph to retrieve them. Specifically, `userPrincipalName` and `email` properties won't be returned from the new `GetConversationPagedMembers` API starting in late 2021. Bots will have to use Microsoft Graph with an access token to retrieve this information. This is obviously a major change: We must make it easier for bots to get an access token, and we must streamline and simplify the end-user consent process. ## Feedback and More Information
platform App Templates https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/samples/app-templates.md
All app templates are provided under the [MIT License](https://github.com/Office
## Adoption Bot ☆
-Adoption Bot is a user care chat bot built with Power Virtual Agent for Teams (PVA). It can be considered as the PVA version of FAQPlus. Adoption Bot answers 100+ common questions about Microsoft 365 and Teams. You can edit the included topics, add your own topics, and ingest existing FAQs. If users need additional help, Adoption Bot can connect them to experts or even be extended to open service tickets with premium flow connectors.
+Adoption Bot is a user care chat bot built with Power Virtual Agent for Teams (PVA). It can be considered as the PVA version of FAQPlus. Adoption Bot answers 100+ common questions about Microsoft 365 and Teams. You can edit the existing topics, add your own topics, and ingest existing FAQs. If users need additional help, Adoption Bot can connect them to experts or even be extended to open service tickets with premium flow connectors.This bot can be installed on it's own or built into a custom app like the [Adoption Hub](aka.ms/theadoptionhub).
[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-adopt-bot)
platform Configuration Page https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/how-to/create-tab-pages/configuration-page.md
Ensure that all domains used in your tab pages are listed in the `manifest.json`
## Modify or remove a tab
-Supported removal options further refine the user experience. Set your manifest's `canUpdateConfiguration` property to `true`, that enables the users to modify, reconfigure, or rename a group or channel tab. Also, indicate what happens to the content when a tab is removed, by including a removal options page in the app and setting a value for the `removeUrl` property in the `setSettings()` configuration. For more information, see [Mobile clients](#mobile-clients). The user can uninstall the Personal tabs but cannot modify them. For more information, see [Create a removal page for your tab](~/tabs/how-to/create-tab-pages/removal-page.md).
+Supported removal options further refine the user experience. Set your manifest's `canUpdateConfiguration` property to `true`, that enables the users to modify, reconfigure, or rename a group or channel tab. Also, indicate what happens to the content when a tab is removed, by including a removal options page in the app and setting a value for the `removeUrl` property in the `setSettings()` configuration. The user can uninstall the Personal tabs but cannot modify them. For more information, see [Create a removal page for your tab](~/tabs/how-to/create-tab-pages/removal-page.md).
-## Mobile clients
-
-If you choose to have your channel or group tab appear on the Teams mobile clients, the `setSettings()` configuration must have a value for the `websiteUrl` property. For more information, see [guidance for tabs on mobile](~/tabs/design/tabs-mobile.md).
-
-Microsoft Teams setSettings() configuration for removal page or mobile clients:
+Microsoft Teams setSettings() configuration for removal page:
```javascript microsoftTeams.settings.setSettings({ contentUrl: "add content page URL here", entityId: "add unique name here", suggestedDisplayName: "add name to display on tab here",
- websiteUrl: "URL REQUIRED FOR MOBILE CLIENTS",
- removeUrl: "ADD REMOVAL PAGE URL HERE"
+ websiteUrl: "add website URL here //Required field for configurable tabs on Mobile Clients",
+ removeUrl: "add removal page URL here"
}); ```+
+## Mobile clients
+
+If you choose to have your channel or group tab appear on the Teams mobile clients, the `setSettings()` configuration must have a value for the `websiteUrl` property. For more information, see [guidance for tabs on mobile](~/tabs/design/tabs-mobile.md).
platform Content Page https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/how-to/create-tab-pages/content-page.md
Your tab's overall objective should be to provide access to meaningful and engag
## Integrate your code with Teams
-For your page to display in Teams, you must include the [Microsoft Teams JavaScript client SDK](/javascript/api/overview/msteams-client?view=msteams-client-js-latest) and include a call to `microsoftTeams.initialize()` after your page loads. That is how your page and the Teams client communicate:
+For your page to display in Teams, you must include the [Microsoft Teams JavaScript client SDK](/javascript/api/overview/msteams-client?view=msteams-client-js-latest&preserve-view=true) and include a call to `microsoftTeams.initialize()` after your page loads. That is how your page and the Teams client communicate:
```html <!DOCTYPE html>
If you create a bot with a *personal* scope, it will show up in the first tab po
Starting with [manifest schema v1.7](../../../resources/schem). > [!NOTE]
-> 1. The native loading indicator is not yet supported on mobile devices.
+> 1. The behavior on mobile clients is not configurable through this manifest property. Mobile clients show a native loading indicator by default across content pages and iframe-based task modules. This indicator on mobile is shown when a request is made to fetch content and gets dismissed as soon as the request gets completed.
> 2. If you indicate `"showLoadingIndicator : true` in your app manifest, then all tab configuration, content, and removal pages and all iframe-based task modules must follow the mandatory protocol, below:
platform Tab Requirements https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/how-to/tab-requirements.md
Teams tabs must adhere to the following requirements:
* To create a seamless experience, you should style your tabs based on the Teams client's theme, design, and intent. Typically, tabs work best when they're built to address a specific need and focus on a small set of tasks or a subset of data that is relevant to the tab's channel location. * Within your content page, add a reference to [Microsoft Teams JavaScript client SDK](/javascript/api/overview/msteams-client) using script tags. Following your page load, make a call to `microsoftTeams.initialize()`. Your page will not be displayed if you do not.+
+* For authentication to work on mobile clients, you must upgrade you Teams JavaScript SDK to at least version 1.4.1.
+
+* If you choose to have your channel or group tab appear on Teams mobile clients, the `setSettings()` configuration must have a value for the `websiteUrl` property.
platform What Are Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/what-are-tabs.md
You can have a maximum of one (1) channel/group tab and up to sixteen (16) perso
If you choose to have your channel or group tab appear on Teams mobile clients, the `setSettings()` configuration must have a value for the `websiteUrl` property. To ensure optimal user experience, you must follow the [guidance for tabs on mobile](~/tabs/design/tabs-mobile.md) when creating your tabs. Apps that are [distributed through Appsource](~/concepts/deploy-and-publish/appsource/publish.md) have a separate approval process for mobile clients. The default behavior of such apps is as follows:
-| **App Capability** | **Behavior if app is approved** | **Behavior if app is not approved** |
-| | | |
-| **Static Tabs** | App appears in the bottom bar of the mobile clients. Tabs open in the Teams client. | App does not appear in the bottom bar of the mobile clients. |
-| **Configurable Tabs** | The tab opens in the Teams client using `contentUrl`. | The tab opens in a browser outside the Teams client using `websiteUrl`. |
+| **Tab Type** | **Behavior of App if it is optimized for mobile clients** | **Behavior of App if it is not optimized for mobile clients** |
+|:--|:--|:--|
+| **Static Tabs** or **Personal Tabs**|App appears in the bottom bar of the mobile clients. The tabs open in an in-app webview within the Teams client. | App does not show up in mobile clients. |
+| **Configurable Tabs** | The tabs open in an in-app webview within the Teams client using the `contentUrl`. | Selecting **Tab** opens the content using the `websiteUrl` in the default web browser on the device. |
->[!NOTE]
+> [!NOTE]
>
->- The default behavior of the apps is only applicable if they are distributed through the Teams store (AppSource). There is no approval process for apps distributed through other [distribution methods](~/concepts/deploy-and-publish/overview.md). By default, all tabs open in the Teams client.
->- To initiate an evaluation of your app for mobile-friendliness, reach out to teamsubm@microsoft.com with your app details.
+> * [Apps submitted to the AppSource for publishing on Teams ](../concepts/deploy-and-publish/overview.md#publish-to-appsource) are evaluated automatically for mobile responsiveness. For any queries, reach out to teamsubm@microsoft.com.
+> * For all [apps that are not distributed through the AppSource](../concepts/deploy-and-publish/overview.md), the tabs open in an in-app webview within the Teams clients by default and there is no separate approval process required.
> [!div class="nextstepaction"] > [Learn more: Request device permissions](../concepts/device-capabilities/native-device-permissions.md)
platform Whats New https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/whats-new.md
The change log lists changes to the Microsoft Teams platform and this document s
| **Date** | **Notes** | **Changed topics** | | -- | | |
+|03/18/2021|Notice: **Please update to version 4.10 or above of the Bot Framework SDK** as we've started with the deprecation process for `TeamsInfo.getMembers` and `TeamsInfo.GetMembersAsync`. | [Bot API Changes for Team/Chat Members](resources/team-chat-member-api-changes.md) |
|03/05/2021|Notice: Tabs will no longer have margins surrounding their experiences. Tab developers should review and update their apps. | [Removing tab margins](resources/removing-tab-margins.md) | |03/05/2021 | Default install scope and group capability is in developer preview.| [Default install scope and group capability](concepts/deploy-and-publish/apps-upload.md#add-a-default-install-scope-and-group-capability) | |03/05/2021|Reorder personal app tabs|[Reorder the chat tab in personal apps](tabs/how-to/create-tab-pages/content-page.md#reorder-static-personal-tabs)|