Updates from: 05/22/2021 03:08:03
Service Microsoft Docs article Related commit history on GitHub Change details
platform Create Apps For Teams Meetings https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/apps-in-teams-meetings/create-apps-for-teams-meetings.md
The in-meeting dialog box can be used to engage participants during the meeting
In-meeting dialog must not use task module. Task module is not invoked in a meeting chat. An external resource URL is used to display content bubble in a meeting. You can use the `submitTask` method to submit data in a meeting chat. > [!NOTE]
-> * You must invoke the [submitTask()](../task-modules-and-cards/task-modules/task-modules-bots.md#submitting-the-result-of-a-task-module) function to dismiss automatically after a user takes an action in the web-view. This is a requirement for app submission. For more information, see [Teams SDK task module](/javascript/api/@microsoft/teams-js/microsoftteams.tasks?view=msteams-client-js-latest#submittask-stringobject--stringstring&preserve-view=true).
+> * You must invoke the [submitTask()](../task-modules-and-cards/task-modules/task-modules-bots.md#submitting-the-result-of-a-task-module) function to dismiss automatically after a user takes an action in the web-view. This is a requirement for app submission. For more information, see [Teams SDK task module](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest&preserve-view=true).
> * If you want your app to support anonymous users, your initial invoke request payload must rely on the `from.id` request metadata in the `from` object, not the `from.aadObjectId` request metadata. `from.id` is the user ID and `from.aadObjectId` is the Azure Active Directory (AAD) ID of the user. For more information, see [using task modules in tabs](../task-modules-and-cards/task-modules/task-modules-tabs.md) and [create and send the task module](../messaging-extensions/how-to/action-commands/create-task-module.md?tabs=dotnet#the-initial-invoke-request). #### Share to stage
platform Subscribe To Conversation Events https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
async def on_teams_channel_created(
) ```
-* * *
+ ### Channel renamed
async def on_teams_channel_renamed(
) ```
-* * *
+ ### Channel deleted
async def on_teams_channel_deleted(
) ```
-* * *
+ ### Channel restored
async def on_teams_channel_restored(
) ```
-* * *
+ ### Team members added
async def on_teams_members_added(
return ```
-* * *
+ ### Team members removed
async def on_teams_members_removed(
return ```
-* * *
+ ### Team renamed
async def on_teams_team_renamed(
) ```
-* * *
+ ### Team deleted
async def on_teams_team_deleted(
) ```
-* * *
+ ### Team restored
async def on_teams_team_restored(
) ```
-* * *
+ ### Team archived
async def on_teams_team_archived(
) ```
-* * *
+ ### Team unarchived
async def on_teams_team_unarchived(
) ```
-* * *
+ Now that you have worked with the conversation update events, you can understand the message reaction events that occur for different reactions to a message.
async def on_reactions_added(
return ```
-* * *
+ ### Reactions removed from bot message
async def on_reactions_removed(
return ```
-* * *
+ ## Installation update event
turnContext, CancellationToken cancellationToken) {
} ```
+# [TypeScript](#tab/typescript)
+
+Not available
+ # [JSON](#tab/json) ```json
turnContext, CancellationToken cancellationToken) {
"locale": "en" } ```
-* * *
+
+# [Python](#tab/python)
+
+Not available
++ ## Code sample
platform Locally With An Ide https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/bots/how-to/debug/locally-with-an-ide.md
To remove your bot completely from Teams, go to your **Bot Dashboard** and edit
## See also -- [Debug your bot with inspection middleware](/azure/bot-service/bot-service-debug-inspection-middleware)--- [Debug your calling and meeting bot locally](~/bots/calls-and-meetings/debugging-local-testing-calling-meeting-bots.md)
+* [Debug your bot with inspection middleware](/azure/bot-service/bot-service-debug-inspection-middleware)
+* [Debug your calling and meeting bot locally](~/bots/calls-and-meetings/debugging-local-testing-calling-meeting-bots.md)
platform Get Teams Context https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/bots/how-to/get-teams-context.md
export class MyBot extends TeamsActivityHandler {
async def _show_members( self, turn_context: TurnContext ):
- member = TeamsInfo.get_member(turn_context, turn_context.activity.from_property.id)
+ member = await TeamsInfo.get_member(turn_context, turn_context.activity.from_property.id)
``` # [JSON](#tab/json)
platform Deep Links https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/build-and-test/deep-links.md
The query parameters are:
* `tenantId`: Tenant ID example, 0d9b645f-597b-41f0-a2a3-ef103fbd91bb * `fileType`: Supported file type, such as docx, pptx, xlsx, and pdf
-* `objectUrl`: Object URL of the file, https://microsoft.sharepoint.com/teams/(filepath)
-* `baseUrl`: Base URL of the file, https://microsoft.sharepoint.com/teams
+* `objectUrl`: Object URL of the file, `https://microsoft.sharepoint.com/teams/(filepath)`
+* `baseUrl`: Base URL of the file, `https://microsoft.sharepoint.com/teams`
* `serviceName`: Name of the service, app ID * `threadId`: The threadId is the team ID of the team where the file is stored. It is optional and cannot be set for files stored in a user's OneDrive folder. threadId - 19:f8fbfc4d89e24ef5b3b8692538cebeb7@thread.skype * `groupId`: Group ID of the file, ae063b79-5315-4ddb-ba70-27328ba6c31e
platform Test App Overview https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/build-and-test/test-app-overview.md
Add the test data to Microsoft 365 test tenant. For more information, see [add t
## See also -- [Debug your tab](~/tabs/how-to/developer-tools.md)
-
-- [Debug your bots](~/bots/how-to/debug/locally-with-an-ide.md)--- [Test RSC permissions](~/graph-api/rsc/test-resource-specific-consent.md)
+* [Debug your tab](~/tabs/how-to/developer-tools.md)
+* [Debug your bots](~/bots/how-to/debug/locally-with-an-ide.md)
+* [Test RSC permissions](~/graph-api/rsc/test-resource-specific-consent.md)
## Next step
platform Frequently Failed Cases https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/deploy-and-publish/appsource/prepare/frequently-failed-cases.md
Your bot must be responsive to any command and not dead-end the user. Here are s
![Help command sample](../../../../assets/images/faq/helpcommand.png) * **Use adaptive cards and task modules to make your bot response clear and actionable**
-[Adaptive cards with buttons invoking task modules](/task-modules-and-cards/task-modules/task-modules-bots.md) enhance the bot user experience. These cards and buttons are easier to use in a mobile device as opposed to your user typing the commands. Also bot responses must not be textual with long text. Bots must make use of adaptive cards and task modules instead of conversational chat based user interface and lengthy text responses.
+Adaptive cards with buttons invoking task modules enhance the bot user experience. These cards and buttons are easier to use in a mobile device as opposed to your user typing the commands. Also bot responses must not be textual with long text. Bots must make use of adaptive cards and task modules instead of conversational chat based user interface and lengthy text responses.
* **Think through all scopes**. Be sure that your bot provides appropriate responses when mentioned (`@*botname*`) in a channel and in personal conversations. If your bot does not provide meaningful context within the personal or teams scope, disable that scope via the manifest. (See the `bots` block in the [Microsoft Teams manifest schema reference](../../../../resources/schem#bots).)
platform Link Unfurling https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/messaging-extensions/how-to/link-unfurling.md
Following is an example of the response:
## See also
-[Cards](~/task-modules-and-cards/what-are-cards.md)
+* [Cards](~/task-modules-and-cards/what-are-cards.md)
+* [Tabs link unfurling and Stage View](~/tabs/tabs-link-unfurling.md)
platform Bots Conversations https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/resources/bot-v3/bot-conversations/bots-conversations.md
Depending on which scopes are declared, your bot can receive messages in the fol
* **personal chat** Users can interact in a private conversation with a bot by simply selecting the added bot in the chat history, or typing its name or app ID in the To: box on a new chat. * **Channels** A bot can be mentioned ("@_botname_") in a channel if it has been added to the team. Note that additional replies to a bot in a channel require mentioning the bot. It will not respond to replies where it is not mentioned.
-For incoming messages, your bot receives an [`Activity`](/azure/bot-service/rest-api/bot-framework-rest-connector-activities?view=azure-bot-service-3.0&preserve-view=true) object of type `messageType: message`. Although the `Activity` object can contain other types of information, like [channel updates](~/resources/bot-v3/bots-notifications.md#channel-updates) sent to your bot, the `message` type represents communication between bot and user.
+For incoming messages, your bot receives an [Activity](/azure/bot-service/rest-api/bot-framework-rest-connector-api-reference?view=azure-bot-service-4.0#activity-object&preserve-view=true) object of type `messageType: message`. Although the `Activity` object can contain other types of information, like [channel updates](~/resources/bot-v3/bots-notifications.md#channel-updates) sent to your bot, the `message` type represents communication between bot and user.
Your bot receives a payload that contains the user message `Text` as well as other information about the user, the source of the message, and Teams information. Of note:
platform Teams Low Code Solutions https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/samples/teams-low-code-solutions.md
Microsoft Power Platform combines four robust Microsoft technologies, such as Po
### Γ£ö Teams and Power BI
-The [Power BI tab for Microsoft Teams](https://powerbi.microsoft.com/blog/announcing-new-power-bi-tab-for-microsoft-teams/) adds support for reports in the Teams workspace and allows users to [share interactive Power BI content](/power-bi/collaborate-share/service-embed-report-microsoft-teams) and [collaborate with others in Teams](/power-bi/collaborate-share/service-collaborate-microsoft-teams) channels and chats. You can create packaged [Power BI app](/power-bi/collaborate-share/service-create-distribute-apps) content from scratch and distribute it as an app or [create a template app in Power BI](/connect-data/service-template-apps-create). Additionally, use the new [Power BI app in Teams](https://go.microsoft.com/fwlink/?linkid=2143643) to bring your entire basic Power BI service experience into Teams.
+The [Power BI tab for Microsoft Teams](https://powerbi.microsoft.com/blog/announcing-new-power-bi-tab-for-microsoft-teams/) adds support for reports in the Teams workspace and allows users to [share interactive Power BI content](/power-bi/collaborate-share/service-embed-report-microsoft-teams) and [collaborate with others in Teams](/power-bi/collaborate-share/service-collaborate-microsoft-teams) channels and chats. You can create packaged [Power BI app](/power-bi/collaborate-share/service-create-distribute-apps) content from scratch and distribute it as an app or [create a template app in Power BI](/power-bi/connect-data/service-template-apps-create). Additionally, use the new [Power BI app in Teams](https://go.microsoft.com/fwlink/?linkid=2143643) to bring your entire basic Power BI service experience into Teams.
### Γ£ö Teams and Power Apps
Virtual Assistant is a Microsoft open-source template that enables you to create
## See also
-[Integrate web apps](~/samples/integrate-web-apps-overview.md)
+[Integrate web apps](~/samples/integrate-web-apps-overview.md)
platform Virtual Assistant https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/samples/virtual-assistant.md
For more information refer [this](https://msteams-captain.visualstudio.com/xGrow
} ```
-You can also leverage existing skills from [Bot Framework Solutions repository](https://github.com/microsoft/botframework-solutions/tree/master/skills/csharp) or create a new skill altogether from scratch. For creating a new skill, see [tutorials to create a new skill](https://microsoft.github.io/botframework-solutions/overview/skills/). For Virtual Assistant and skills architecture documentation, see[Virtual Assistant and skills architecture](/azure/bot-service/skills-conceptual?view=azure-bot-service-4.0&preserve-view=true).
+You can also leverage existing skills from [Bot Framework Solutions repository](https://github.com/microsoft/botframework-components/tree/main/skills/csharp) or create a new skill altogether from scratch. For creating a new skill, see [tutorials to create a new skill](https://microsoft.github.io/botframework-solutions/overview/skills/). For Virtual Assistant and skills architecture documentation, see[Virtual Assistant and skills architecture](/azure/bot-service/skills-conceptual?view=azure-bot-service-4.0&preserve-view=true).
## Limitations of Virtual Assistant
You can also leverage existing skills from [Bot Framework Solutions repository](
* Configuration of messaging extensions is not scoped to individual commands but for the entire extension itself. This limits configuration for each individual skill through Virtual Assistant. * Messaging extensions command IDs have a maximum length of [64 characters](../resources/schem#composeextensions) and 37 characters are used for embedding skill information. Thus, updated constraints for command ID are limited to 27 characters.
-You can also leverage existing skills from [Bot Framework Solutions repository](https://github.com/microsoft/botframework-solutions/tree/master/skills/csharp) or create a new skill altogether from scratch. Tutorials for the later can be found [here](https://microsoft.github.io/botframework-solutions/overview/skills/). Please refer to [documentation](/azure/bot-service/skills-conceptual?view=azure-bot-service-4.0&preserve-view=true) for Virtual Assistant and skills architecture.
+You can also leverage existing skills from [Bot Framework Solutions repository](https://github.com/microsoft/botframework-components/tree/main/skills/csharp) or create a new skill altogether from scratch. Tutorials for the later can be found [here](https://microsoft.github.io/botframework-solutions/overview/skills/). Please refer to [documentation](/azure/bot-service/skills-conceptual?view=azure-bot-service-4.0&preserve-view=true) for Virtual Assistant and skills architecture.
## Code sample
You can also leverage existing skills from [Bot Framework Solutions repository](
- [Book-a-room](app-templates.md#book-a-room) -- [Microsoft Teams bot](../bots/what-are-bots.md)
+- [Microsoft Teams bot](../bots/what-are-bots.md)
platform Auth Tab Aad https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/how-to/authentication/auth-tab-aad.md
Your app can set its own session cookie so that the user need not sign in again
> Chrome 80, scheduled for release in early 2020, introduces new cookie values and imposes cookie policies by default. It's recommended that you set the intended use for your cookies rather than rely on default browser behavior. *See* [SameSite cookie attribute (2020 update)](../../../resources/samesite-cookie-update.md). >[!NOTE]
->To get the correct token for Microsoft Teams Free and guest users, it is important that the apps use tenant specific endpoint https://login.microsoftonline.com/**{tenantId}**. You can get tenantId from the bot message or tab context. If the apps use https://login.microsoftonline.com/common, the users will get incorrect tokens and will log on to the "home" tenant instead of the tenant that they are currently signed into.
+>To get the correct token for Microsoft Teams Free and guest users, it is important that the apps use tenant specific endpoint `https://login.microsoftonline.com/**{tenantId}**`. You can get tenantId from the bot message or tab context. If the apps use `https://login.microsoftonline.com/common`, the users will get incorrect tokens and will log on to the "home" tenant instead of the tenant that they are currently signed into.
For more information on Single Sign-On (SSO) see the article [Silent authentication](~/tabs/how-to/authentication/auth-silent-AAD.md).
platform Configuration Page https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/how-to/create-tab-pages/configuration-page.md
microsoftTeams.settings.setSettings({
## 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).
+If you choose to have your channel or group tab appear on the Teams mobile clients, the `setSettings()` configuration must have a value for `websiteUrl`. For more information, see [guidance for tabs on mobile](~/tabs/design/tabs-mobile.md).
platform Using Teams Client Sdk https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/how-to/using-teams-client-sdk.md
See the following tables to understand commonly used SDK functions. The [SDK ref
| -- | -- | -- | | `microsoftTeams.initialize()` | Initializes the SDK. This function must be called before any other SDK calls.|[function](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest#initialize-any-&preserve-view=true)| |`microsoftTeams.getContext(callback: (context: Context)`| Gets the current state in which the page is running. The callback retrieves the **Context** object.|[function](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest#getcontext--context--context--void-&preserve-view=true)<br/>[context obj](/javascript/api/@microsoft/teams-js/context?view=msteams-client-js-latest&preserve-view=true)|
-| `microsoftTeams.initializeWithContext({contentUrl: string, websiteUrl: string})` | Initializes the Teams library and sets the tab's [frame context](/javascript/api/@microsoft/teams-js/microsoftteams.framecontext?view=msteams-client-js-latest&preserve-view=true) depending on the contentUrl and websiteUrl. This ensures the go-to-website or reload functionality operates on the correct URL.|[function](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest#initializewithframecontext-framecontext--void--string&preserve-view=true)|
-| `microsoftTeams.setFrameContext({contentUrl: string, websiteUrl: string})` | Sets the tab's [frame context](/javascript/api/@microsoft/teams-js/microsoftteams.framecontext?view=msteams-client-js-latest&preserve-view=true) depending on the contentUrl and websiteUrl. This ensures the go-to-website or reload functionality operates on the correct URL.|[function](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest#setframecontext-framecontext-&preserve-view=true)|
+| `microsoftTeams.initializeWithContext({contentUrl: string, websiteUrl: string})` | Initializes the Teams library and sets the tab's [frame context](/javascript/api/@microsoft/teams-js/framecontext?view=msteams-client-js-latest&preserve-view=true) depending on the contentUrl and websiteUrl. This ensures the go-to-website or reload functionality operates on the correct URL.|[function](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest#initializewithframecontext-framecontext--void--string&preserve-view=true)|
+| `microsoftTeams.setFrameContext({contentUrl: string, websiteUrl: string})` | Sets the tab's [frame context](/javascript/api/@microsoft/teams-js/framecontext?view=msteams-client-js-latest&preserve-view=true) depending on the contentUrl and websiteUrl. This ensures the go-to-website or reload functionality operates on the correct URL.|[function](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest#setframecontext-framecontext-&preserve-view=true)|
| `microsoftTeams.registerFullScreenHandler(handler: (isFullScreen: boolean)` |The handler that is registered when the user toggles a tab's full-screen or windowed view.|[function](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest#registerfullscreenhandler--isfullscreen--boolean--void-&preserve-view=true)<br/>[boolean](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest#registerFullScreenHandler__isFullScreen__boolean_____void_&preserve-view=true)| |`microsoftTeams.registerChangeSettingsHandler()` |The handler that is registered when the user selects the enabled **Settings** button to reconfigure a tab.|[function](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest#registerchangesettingshandler-void-&preserve-view=true)| | `microsoftTeams.getTabInstances(callback: (tabInfo: TabInformation),tabInstanceParameters?: TabInstanceParameters,)` |Gets the tabs owned by the app. The callback retrieves the **TabInformation** object. The **TabInstanceParameters** object is an optional parameter.|[function](/javascript/api/@microsoft/teams-js/microsoftteams?view=msteams-client-js-latest#gettabinstances--tabinfo--tabinformation--void--tabinstanceparameters-&preserve-view=true)<br/>[tabInfo obj](/javascript/api/@microsoft/teams-js/tabinformation?view=msteams-client-js-latest&preserve-view=true)|
See the following tables to understand commonly used SDK functions. The [SDK ref
| -- | -- | -- | |`microsoftTeams.settings.setValidityState(validityState: boolean)`|The initial value is false. Activates the **Save** or **Remove** button when the validity state is true.|[function](/javascript/api/@microsoft/teams-js/settings?view=msteams-client-js-latest&preserve-view=true)| |`microsoftTeams.settings.getSettings(callback: (instanceSettings: Settings)`|Gets the settings for the current instance. The callback retrieves the **Settings** object.|[function](/javascript/api/@microsoft/teams-js/settings?view=msteams-client-js-latest&preserve-view=true)<br/>[settings obj](/javascript/api/@microsoft/teams-js/_settings?view=msteams-client-js-latest&preserve-view=true)|
-|`microsoftTeams.settings.setSettings(instanceSettings: Settings, onComplete?: (status: boolean, reason?: string)`|Configures the settings for the current instance. Valid settings are defined by the **Settings** object.|[function](/javascript/api/@microsoft/teams-js/settings?view=msteams-client-js-latest&preserve-view=true)<br/>[settings obj](/javascript/api/@microsoft/teams-js/microsoftteams.settings.settings?view=msteams-client-js-latest&preserve-view=true)|
+|`microsoftTeams.settings.setSettings(instanceSettings: Settings, onComplete?: (status: boolean, reason?: string)`|Configures the settings for the current instance. Valid settings are defined by the **Settings** object.|[function](/javascript/api/@microsoft/teams-js/settings?view=msteams-client-js-latest&preserve-view=true)<br/>[settings obj](/javascript/api/@microsoft/teams-js/_settings?view=msteams-client-js-latest&preserve-view=true)|
|`microsoftTeams.settings.registerOnSaveHandler(handler: (evt: SaveEvent)`|The handler that is registered when the user selects the **Save** button. This handler should be used to create or update the underlying resource powering the content.|[function](/javascript/api/@microsoft/teams-js/settings?view=msteams-client-js-latest&preserve-view=true)| |`microsoftTeams.settings.registerOnRemoveHandler(handler: (evt: RemoveEvent)`|The handler that is registered when the user selects the **Remove** button. This handler should be used to remove the underlying resource powering the content.|[function](/javascript/api/@microsoft/teams-js/settings?view=msteams-client-js-latest&preserve-view=true)|
See the following tables to understand commonly used SDK functions. The [SDK ref
| Function | Description | Documentation| | -- | -- | -- | |`microsoftTeams.tasks.startTask(taskInfo: TaskInfo, submitHandler?: (err: string, result: string)`|Takes the **TaskInfo** object as input and allows an app to open the task module. The optional **submitHandler** is registered when the task module is completed. |[function](/javascript/api/@microsoft/teams-js/tasks?view=msteams-client-js-latest&preserve-view=true)<br/>[taskInfo obj](/javascript/api/@microsoft/teams-js/taskinfo?view=msteams-client-js-latest&preserve-view=true)|
-|`microsoftTeams.tasks.submitTask(result?: string | object, appIds?: string | string[])`|Submits the task module. The optional **result** string parameter is the result sent to the bot or the app and is typically a JSON object or serialization; The optional **appIds** string or string array parameter aids in validating that the call originated from the same appId as the one that invoked the task module.|[function](/javascript/api/@microsoft/teams-js/microsoftteams.tasks?view=msteams-client-js-latest#submittask-stringobject--stringstring&preserve-view=true)|
+|`microsoftTeams.tasks.submitTask(result?: string | object, appIds?: string | string[])`|Submits the task module. The optional **result** string parameter is the result sent to the bot or the app and is typically a JSON object or serialization; The optional **appIds** string or string array parameter aids in validating that the call originated from the same appId as the one that invoked the task module.|[function](/javascript/api/@microsoft/teams-js/tasks?view=msteams-client-js-latest&preserve-view=true)|
platform Create Channel Group Tab Dotnet Core Mvc https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/quickstarts/create-channel-group-tab-dotnet-core-mvc.md
In this quickstart we'll walk-through creating a custom channel/group tab with C
## Get the source code
-Open a command prompt and create a new directory for your tab project. We have provided a simple [Channel Group Tab](https://github.com/OfficeDev/microsoft-teams-sample-tabs/ChannelGroupTabMVC) project to get you started. To retrieve the source code you can download the zip folder and extract the files or clone the sample repository into your new directory:
+Open a command prompt and create a new directory for your tab project. We have provided a simple [Channel Group Tab](https://github.com/OfficeDev/microsoft-teams-sample-tabs/tree/master/ChannelGroupTabMVC) project to get you started. To retrieve the source code you can download the zip folder and extract the files or clone the sample repository into your new directory:
```bash git clone https://github.com/OfficeDev/microsoft-teams-sample-tabs.git
The controllers use the ViewBag property to transfer values dynamically to the V
Within **Tab.cshtml** the application presents the user with two option buttons for displaying the tab with either a red or gray icon. Choosing the **Select Gray** or **Select Red** button fires `saveGray()` or `saveRed()`, respectively, sets `settings.setValidityState(true)`, and enables the **Save** button on the configuration page. This code lets Teams know that you have satisfied the configuration requirements and the installation can proceed. On save, the parameters of `settings.setSettings` are set. Finally, `saveEvent.notifySuccess()` is called to indicate that the content URL has successfully resolved.
platform Tabs Link Unfurling https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/tabs-link-unfurling.md
+
+ Title: Tabs link unfurling and Stage View
+
+description: How to unfurl a link, open the Stage View and pin a tab with Microsoft Teams app.
++++
+# Tabs link unfurling and Stage View
+
+> [!NOTE]
+> This feature is available in public developer preview only.
+
+Stage View is a new UI component, which allows you to render the content that is opened in full screen in Teams and pinned as a tab.
+
+> [!NOTE]
+> Currently, Teams mobile clients do no support tabs link unfurling and Stage View. Mobile clients use the `websiteUrl` attribute provided by the developer to open the page in the device's web browser.
+
+## Stage View
+
+Stage View is a full screen UI component that you can invoke to surface your web content. The existing link unfurling service is updated so that it is used to turn URLs into a tab using an Adaptive Card and Chat Services. When a user sends a URL in a chat or channel, the URL is unfurled to an Adaptive Card. The user can select **View** in the card, and pin the content as a tab directly from the Stage View.
+
+## Advantage of Stage View
+
+Stage View helps provide a more seamless experience of viewing content in Teams. Users can open and view the content provided by your app without leaving the context, and they can pin the content to the chat or channel for future quick access. This leads to a higher user engagement with your app.
+
+## Stage View vs. Task module
+
+|Stage View|Task module|
+|:--|:--|
+|Stage View is useful when you have a rich content to display to the users, such as a page, a dashboard, a file, and so on. It provides maximum real estate that helps to render your content in the full-screen canvas.|[Task module](../task-modules-and-cards/task-modules/task-modules-tabs.md) is especially useful to display messages that requires user's attention, or collect information required to move to the next step.|
+
+## Invoke the Stage View
+
+You can invoke the Stage View in the following ways:
+
+* [Invoke Stage View from Adaptive Card](#invoke-stage-view-from-adaptive-card)
+* [Invoke Stage View through deep link](#invoke-stage-view-through-deep-link)
+
+## Invoke Stage View from Adaptive Card
+
+When the user enters a URL on the Teams desktop client, the bot is invoked and returns an [Adaptive Card](../task-modules-and-cards/cards/cards-actions.md) with the option to open the URL in a stage. After a stage is launched and the `tabInfo` is passed in, you can add the ability to pin the stage as a tab.
+
+The following images display a stage opened from an Adaptive Card:
+
+<img src="~/assets/images/tab-images/open-stage-from-adaptive-card1.png" alt="Open a stage from Adaptive Card" width="400"/>
+
+<img src="~/assets/images/tab-images/open-stage-from-adaptive-card2.png" alt="Open a stage" width="400"/>
+
+### Example
+
+Following is the code to open a stage from an Adaptive Card:
+
+```json
+{
+ type: "Action.Submit",
+ name: "View",
+ data: {
+ msteams: {
+ type: "invoke",
+ value: {
+ type: "tab/tabInfoAction",
+ tabInfo: {
+ contentUrl: contentUrl,
+ websiteUrl: websiteUrl,
+ name: "Tasks",
+ entityId: "entityId"
+ }
+ }
+ }
+ }
+}
+```
+
+The `invoke` request type must be `composeExtension/queryLink`.
+
+> [!NOTE]
+> * `invoke` workflow is similar to the current `appLinking` workflow.
+> * To maintain consistency, it is recommended to name the `Action.Submit` as `View`.
+> * `websiteUrl` is a required property to be passed in the `TabInfo` object.
+
+**Process to invoke Stage View**
+
+1. When the user selects **View**, the bot receives an `invoke` request. The request type is `composeExtension/queryLink`.
+1. `invoke` response from bot contains an Adaptive Card with type `tab/tabInfoAction` in it.
+1. The bot responds with a `200` code.
+
+> [!NOTE]
+> Currently, Teams mobile clients do not support the Stage View capability. When a user selects **View** on a mobile client, the user is taken to the device's browser. The browser opens the URL specified in the `websiteUrl` parameter of the `TabInfo` object.
+
+## Invoke Stage View through deep link
+
+To invoke the Stage View through deep link from your tab, you must wrap the deep link URL in the `microsoftTeams.executeDeeplink(url)` API. The deeplink can also be passed through an `OpenURL` action in the card.
+
+The following image displays a Stage View invoked through a deep link:
+
+<img src="~/assets/images/tab-images/invoke-stage-view-through-deep-link.png" alt="Invoke a Stage View through a deep link" width="400"/>
+
+### Syntax
+
+Following is the deeplink syntax:
+
+https://teams.microsoft.com/l/stage/{appId}/0?context={ΓÇ£contentUrlΓÇ¥:ΓÇ¥[contentUrl]ΓÇ¥,ΓÇ£websiteUrlΓÇ¥:ΓÇ¥[websiteUrl]ΓÇ¥,ΓÇ£nameΓÇ¥:ΓÇ¥[name]ΓÇ¥}
+
+### Examples
+
+When a user enters a URL, it is unfurled into an Adaptive card.
+Following are the deep link examples to invoke the Stage View:
+
+**Example 1**
+
+https://teams.microsoft.com/l/stage/2a527703-1f6f-4559-a332-d8a7d288cd88/0?context={ΓÇ£contentUrlΓÇ¥:ΓÇ¥https%3A%2F%2Fmicrosoft.sharepoint.com%2Fteams%2FLokisSandbox%2FSitePages%2FSandbox-Page.aspxΓÇ¥,ΓÇ£websiteUrlΓÇ¥:ΓÇ¥https%3A%2F%2Fmicrosoft.sharepoint.com%2Fteams%2FLokisSandbox%2FSitePages%2FSandbox-Page.aspxΓÇ¥,ΓÇ£nameΓÇ¥:ΓÇ¥ContosoΓÇ¥}
+
+**Example 2**
+
+https://teams.microsoft.com/l/Meeting_Stage/2a527703-1f6f-4559-a332-d8a7d288cd88/0?context={ΓÇ£contentUrlΓÇ¥:ΓÇ¥https%3A%2F%2Fmicrosoft.sharepoint.com%2Fteams%2FLokisSandbox%2FSitePages%2FSandbox-Page.aspxΓÇ¥,ΓÇ£websiteUrlΓÇ¥:ΓÇ¥https%3A%2F%2Fmicrosoft.sharepoint.com%2Fteams%2FLokisSandbox%2FSitePages%2FSandbox-Page.aspxΓÇ¥,ΓÇ£nameΓÇ¥:ΓÇ¥ContosoΓÇ¥}
+
+> [!NOTE]
+> * The `name` is optional in deep link. If not included, the app name replaces it.
+> * The deep link can also be passed through an `OpenURL` action.
+> * Currently, Teams mobile clients do not support the Stage View capability. When users selects a deep link to a Stage View, they are taken to their device's web browser. The web browser opens the URL specified in the `websiteUrl` parameter of the deep link.
+> * When you launch a Stage from a certain context, ensure that your app works in that context. For example, if your Stage View is launched from a personal app, you must ensure your app has a personal scope.
+
+## Tab information property
+
+| Property name | Type | Number of characters | Description |
+|:--|:|:|:--|
+| `entityId` | String | 64 | This property is a unique identifier for the entity that the tab displays. This is a required field.|
+| `name` | String | 128 | This property is the display name of the tab in the channel interface. This is an optional field.|
+| `contentUrl` | String | 2048 | This property is the https:// URL that points to the entity UI to be displayed in the Teams canvas. This is a required field.|
+| `websiteUrl?` | String | 2048 | This property is the https:// URL to point at, if a user selects to view in a browser. This is a required field.|
+| `removeUrl?` | String | 2048 | This property is the https:// URL that points to the UI to be displayed when the user deletes the tab. This is an optional field.|
+
+## See also
+
+[Messaging extensions link unfurling](~/messaging-extensions/how-to/link-unfurling.md)
++
platform Cards Format https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/task-modules-and-cards/cards/cards-format.md
Use the information masking property to mask specific information, such as passw
> [!NOTE] > The information masking property is currently available in the developer preview only.
-To mask information in Adaptive cards, add the `isMasked` property to **type** `Input.Text`, and set its value to *true*.
- #### Sample Adaptive card with masking property ```json
To mask information in Adaptive cards, add the `isMasked` property to **type** `
"type": "Input.Text", "id": "secretThing", "style": "password",
- "isMasked": true
- },
+},
``` The following image is an example of masking information in Adaptive cards:
In addition, your app must include the following elements:
A full width Adaptive Card appears as follows: ![Full width Adaptive Card view](../../assets/images/cards/full-width-adaptive-card.png)
-If you have not set the `width` property to *Full*, then the default view of the Adaptive Card is as follows:
+If you have not set the `width` property to *Full*, then the default view of the Adaptive Card appears as follows:
![Small width Adaptive Card view](../../assets/images/cards/small-width-adaptive-card.png) ### Typeahead support
platform Visual Studio Code Overview https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/toolkit/visual-studio-code-overview.md
The Microsoft Teams Toolkit for Visual Studio Code is available for download fro
1. In Visual Studio Code, select the Teams icon ![Teams icon](../assets/icons/favicon-16x16.png) from the activity bar on the left side of the window. 1. Select **Import app package** from the command menu.
-1. Choose your existing [Teams app package](../concepts/build-and-test/apps-package.md) zip file.
+1. Choose your existing Teams [app package](/msteams-platform/concepts/build-and-test/apps-package.md) zip file.
1. Choose the **Select publishing package** button. The configuration tab of the toolkit should now be populated with your app's details. 1. In Visual Studio Code, select **File** -> **Add Folder to Workspace** to add your source code directory to the Visual Studio Code workspace.
At its core, the Teams app embraces three components:
1. The Microsoft Teams client (web, desktop or mobile) where users interact with your app. 1. A server that responds to requests for content that will be displayed in Teams. For example, HTML tab content or a bot adaptive card.
- 1. A Teams [app package](/concepts/build-and-test/apps-package.md) consisting of three files:
+ 1. A Teams app package consists of three files:
> [!div class="checklist"] >
Refer to the **Build and Run** content in your project homepage for detailed ins
### Enable development from localhost
-If you wish to debug your tab based app on localhost using HTTPS, you will need to tell your browser to trust the app being served from <https://localhost>. Navigate to <https://localhost:3000/tab>. If you see a warning indicating that the site isn't trusted, choose the option to proceed anyway. Your app should now be accessible from the Teams client.
+If you wish to debug your tab based app on localhost using HTTPS, you will need to tell your browser to trust the app being served from `<https://localhost>`. Navigate to `<https://localhost:3000/tab>`. If you see a warning indicating that the site isn't trusted, choose the option to proceed anyway. Your app should now be accessible from the Teams client.
### Run your app in Teams
platform Visual Studio Code Tab Sso https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/toolkit/visual-studio-code-tab-sso.md
If you would like to learn more about how your Azure app registration will be pr
## See also -- [Build apps with the Microsoft Teams Toolkit and Visual Studio Code](visual-studio-code-overview.md)
+[Build apps with the Microsoft Teams Toolkit and Visual Studio Code](visual-studio-code-overview.md)
platform Connectors Creating https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/webhooks-and-connectors/how-to/connectors-creating.md
Here's a sample HTML to create a Connector configuration page without the CSS:
#### `GetSettings()` response properties >[!Note]
->The parameters returned by the `getSettings` call here are different than if you were to invoke this method from a tab, and differ from those documented [here](/javascript/api/%40microsoft/teams-js/settings.settings?view=msteams-client-js-latest&preserve-view=true).
+>The parameters returned by the `getSettings` call here are different than if you were to invoke this method from a tab, and differ from those documented [here](/javascript/api/@microsoft/teams-js/microsoftteams.settings.settings?view=msteams-client-js-latest&preserve-view=true).
| Parameter | Details | |-||
platform Whats New https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/whats-new.md
Microsoft Teams platform features that are available to all app developers.
| **Date** | **Notes** | **Changed topics** | | -- | | |
+|05/13/2021|New: Added Tabs link unfurling and Stage View|[Tabs link unfurling and Stage View](tabs/tabs-link-unfurling.md)
+|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) |
|05/13/2021|Added information on mConnect and Skooler.|[Moodle learning management system](resources/moodle-overview.md) |05/10/2021| Manifest v1.10 is released.|[Manifest schema](resources/schem) | |05/10/2021| App customization feature.| [Designing your Microsoft Teams app](~/concepts/design/design-teams-app-overview.md#app-customization) |
Developer preview is a public program that provides early access to unreleased T
| **Date** | **Notes** | **Changed topics** | | -- | | |
+|05/21/2021|Tabs link unfurling and Stage View|[Tabs link unfurling and Stage View](tabs/tabs-link-unfurling.md)
|03/05/2021| 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) | For more information, see [public developer preview for Teams](~/resources/dev-preview/developer-preview-intro.md).