Updates from: 01/23/2024 04:40:56
Service Microsoft Docs article Related commit history on GitHub Change details
platform Manage Your Apps In Developer Portal https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/manage-your-apps-in-developer-portal.md
In the **Advanced** section, you can see the following components to manage your
* **App content**: You can configure your app with the following features:
- * **Loading indicator**: Displays an indicator to let users know your hosted app content (for example, Tabs and Task modules) is loading.
+ * **Loading indicator**: Displays an indicator to let users know your hosted app content (for example, Tabs and Dialogs (referred as task modules in TeamsJS v1.x)) is loading.
* **Full-screen mode**: Displays a personal app without an app header. It's supported for the published apps to your org. * **Supported channel types**: Lists the non-standard channel types that the app supports. * **Default group capability**: For apps that support multiple group capabilities, such as teams, group chat, or meetings, select the default capability to navigate users when you add your app from the Microsoft Teams Store.
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
:::image type="icon" source="../../../../assets/icons/certificate-icon-16.png"::: This section is in line with [Microsoft commercial certification policy number 1140.1](/legal/marketplace/certification-policies#11401-value-proposition-and-offer-requirements) and provides additional guidance to developers of Microsoft Teams apps on their offerΓÇÖs value proposition.
+Apps must provide value to the users by enabling them to complete functional workflows that encourage repeated use. Expand the following sections to know more about the value proposition:
+<br><br>
+
+<details><summary>Tabs</summary>
+
+Tabs must provide value beyond hosting an existing website. [*Mandatory Fix*]
+++
+</details>
+<br>
+
+<details><summary>Notification bots</summary>
+A notification provides value in Teams if:
+
+1. Posted card or text provides adequate details requiring no further user action.
+1. Posted card or text provides adequate preview information for a user to take action or decide to view further details in a link opening outside Teams.
+
+Apps that provide only notifications with content such as, **You have a new notification**, **click to view** and require the user to navigate outside Teams for everything else don't provide significant value within Teams.
++
+</details>
+<br>
+
+<details><summary>Message extensions</summary>
+
+[*Mandatory Fix*]
+
+Apps that consist of search-based message extension provide user value by sharing cards that allow for contextual conversations without context switching.
+
+To pass validation for a search-based message extension only app, the following are required as baseline to ensure that the user experience isn't broken. A card shared via a message extension provides value in Teams if:
+
+1. Posted card provides adequate details requiring no further user action.
+1. Posted card provides adequate preview information for a user to take action or decide to view further details in a link opening outside Teams.
+
+ :::image type="content" source="../../../../assets/images/submission/validation-search-based-messaging-ext-adequete-info.png" alt-text="validation-search-base-messaging-ext-adequete-info":::
+
+ :::image type="content" source="../../../../assets/images/submission/validation-search-based-messaging-ext-inadequete-info.png" alt-text="validation-search-base-messaging-ext-inadequete-info":::
+
+</details>
+<br>
+
+<details><summary>Link unfurling </summary>
+
+Link unfurling only apps don't provide significant value within Teams. Consider building additional workflows in your app, if your app only supports link unfurling and has no other functionality.
+
+</details>
+<br>
++ [Back to top](#teams-store-validation-guidelines) ### App Name
The following are the navigation guidelines:
<details><summary>Usability</summary>
-* Tabs must provide value beyond hosting an existing website. [*Mandatory Fix*]
-
- :::image type="content" source="../../../../assets/images/submission/validation-usability-app-provides-workflows.png" alt-text="Graphic shows an example of an app with a workflow valuable to channel members within a team.":::
-
- :::image type="content" source="../../../../assets/images/submission/validation-usability-website-i-framed.png" alt-text="Graphic shows an example of an app with entire website in an I-frame without any back option.":::
- * Content mustn't truncate or overlap within the tab. [*Mandatory Fix*] :::image type="content" source="../../../../assets/images/submission/validation-usability-content-truncation.png" alt-text="validation-usability-content-truncations":::
Bot experience must be fully responsive on mobile. Bot responses must provide a
Apps that consist of notification only bots provide user value by triggering user notifications based on certain triggers or events in the core app or backend. For example, a new sales lead or prospect is added for the sales team to follow up on. A high-quality notification only bot notifies the users regularly on certain event completions such as workflow completions or alerts.
-A notification provides value in Teams if:
-
-1. Posted card or text provides adequate details requiring no further user action.
-1. Posted card or text provides adequate preview information for a user to take action or decide to view further details in a link opening outside Teams.
-
-Apps that provide only notifications with content such as, **You have a new notification**, **click to view** and require the user to navigate outside Teams for everything else don't provide significant value within Teams.
-
- :::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 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).
Action-based message extensions must do the following:
:::image type="content" source="../../../../assets/images/submission/validation-search-command-unclear-executable.png" alt-text="validation-search-commands-unclear-executable":::
-</details>
-</br>
-
-<details><summary>Action commands for Search based message extension</summary>
-
-[*Mandatory Fix*]
-
-Apps that consist of search-based message extension provide user value by sharing cards that allow for contextual conversations without context switching.
-
-To pass validation for a search-based message extension only app, the following are required as baseline to ensure that the user experience isn't broken. A card shared via a message extension provides value in Teams if:
-
-1. Posted card provides adequate details requiring no further user action.
-1. Posted card provides adequate preview information for a user to take action or decide to view further details in a link opening outside Teams.
-
- :::image type="content" source="../../../../assets/images/submission/validation-search-based-messaging-ext-adequete-info.png" alt-text="validation-search-base-messaging-ext-adequete-info":::
-
- :::image type="content" source="../../../../assets/images/submission/validation-search-based-messaging-ext-inadequete-info.png" alt-text="validation-search-base-messaging-ext-inadequete-info":::
-
-Link unfurling only apps don't provide significant value within Teams. Consider building additional workflows in your app, if your app only supports link unfurling and has no other functionality.
- </details> [Back to top](#teams-store-validation-guidelines)
platform Glossary https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/get-started/glossary.md
Common terms and definitions used in Microsoft Teams developer documentation.
| [Consent dialog](../tabs/how-to/authentication/tab-sso-code.md) | The process of a user granting authorization to an application to access protected resources on their behalf. An admin or user can be asked for consent to allow access to their organization or individual data. <br> **See also**: [SSO](#s); [Authentication flow](#a); [Administrator consent](#a); [User consent](#u) | | [Content URL](../resources/schem#statictabs)| An app manifest property (`contentUrl`) where the HTTPS URL points to the entity UI to be displayed in the Teams canvas. <br> **See also**: [App manifest](#a)| | Conversation | A series of messages sent between your Microsoft Teams app (tab or bot) and one or more users. A conversation can have three scopes: channel, personal, and group chat. <br>**See also**: [One-on-one chat](#o); [Group chat](#g); [Channel](#c) |
-| [Conversational bot](../bots/how-to/conversations/conversation-messages.md) | It lets a user interact with your web service using text, interactive cards, and dialogs. <br>**See also** [Chat bot](#c) |
+| [Conversational bot](../bots/how-to/conversations/conversation-messages.md) | It lets a user interact with your web service using text, interactive cards, and dialogs. <br>**See also** [Chat bot](#c); [Standalone app](#s) |
| [Copilot](../messaging-extensions/build-bot-based-plugin.md)|Microsoft 365 Copilot is powered by an advanced processing and orchestration engine that seamlessly integrates Microsoft 365 apps, Microsoft Graph, and large language models (LLMs) to turn your words into the most powerful productivity tool. | | Customer-owned apps | An app created by you or your organization that is meant for use by other Teams app users outside the organization. It can be made available on Microsoft Teams Store. <br> **See also**: [Teams Store validation guidelines](#s); [Microsoft Store](#s); [LOB apps](#l); [Personal tab](#p); [Shared apps](#s) | | Custom app built for your org (LOB app) | An app created only for Teams by you or your organization. |
Common terms and definitions used in Microsoft Teams developer documentation.
| [SPFx](../sbs-gs-spfx.yml) | SharePoint Framework (SPFx) is a development model to build client-side solutions for Microsoft Teams, Office Add-ins, and SharePoint. | | [SSO](../concepts/authentication/authentication.md) | Acronym for single sign-on, an authentication method in which a user needs to sign in to an independent service of a software platform (such as Microsoft 365) only once. The user is then able to access all services without having to go through authentication again. <br>**See also**: [Authentication](#a); [Scope](#s) | | [Static tab](../concepts/design/personal-apps.md) | See [Personal tab](#p) |
-|[Stage View](../sbs-meetings-stage-view.yml)|A user interface component that lets you render the content that is opened in full screen in Teams and pinned as a tab. It's invoked to surface web content within Teams. It *isn't*the same as meeting stage. <br>**See also**: [Meeting stage](#m); [Collaborative Stage View](#c); [stageView](../m365-apps/teamsjs-support-m365.md#stageview)|
-| [Standalone app](../samples/integrating-web-apps.md) | A single-page or large, and complex app. The user can use some aspects of it in Teams. <br>**See also**: [Collaboration app](#c) |
-| Standalone bot | A type of bot app. It's a single bot app or not part of a larger application. <br> **See also**: [Chat bot](#c); [Conversational bot](#c) |
+|[Stage View](../sbs-meetings-stage-view.yml)|A user interface component that lets you render the content that is opened in full screen in Teams and pinned as a tab. It's invoked to surface web content within Teams. It *isn't* the same as meeting stage. <br>**See also**: [Meeting stage](#m); [Collaborative Stage View](#c); [stageView](../m365-apps/teamsjs-support-m365.md#stageview)|
+| [Standalone app](../samples/integrating-web-apps.md) | An app that can be added to Teams to customize chats and channels by adding bots, tabs, message extensions, or connectors. Anyone can install standalone apps for personal use, and based on permissions, admins and members can install them in channels for collaboration. Standalone apps can be extended to Outlook and Microsoft 365, and built by you through integrated development environments (IDEs) like Visual Studio or Visual Studio Code. Microsoft also provides standalone apps such as Planner, Word, or Outlook. <br>**See also**: [Collaboration app](#c) |
| [Static search](../task-modules-and-cards/cards/dynamic-search.md) | A method of typeahead search that lets users search from pre-specified values in the Adaptive Cards payload. <br>**See also**: [Dynamic search](#d) |
-| [Teams Store validation guidelines](../concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md) | A set of standards and principles for validating an app before submitting the app to Teams store. The guidelines are applicable for apps that work across Teams, Outlook, and M365. <br>**See also**: [Teams store](#t) |
-| [Subdomain ID](../tabs/how-to/authentication/tab-sso-register-aad.md) | It's the application ID URI that you registered when configuring scope for your app in Microsoft Entra ID. <br> **See also**: [SSO](#s); [Application ID URI](#a); [Application ID](#a) |
+| [Teams Store validation guidelines](../concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md) | A set of standards and principles for validating an app before submitting the app to Teams store. The guidelines are applicable for apps that work across Teams, Outlook, and Microsoft 365. <br>**See also**: [Teams store](#t) |
+| [Subdomain ID](../tabs/how-to/authentication/tab-sso-register-aad.md) | It's the application ID URI that you register when configuring scope for your app in Microsoft Entra ID. <br> **See also**: [SSO](#s); [Application ID URI](#a); [Application ID](#a) |
| [Subscription offer](../resources/schem#subscriptionoffer) | This specifies the SaaS offer associated with your app. A unique identifier that includes your Publisher ID and Offer ID, which you can find in Partner Center. <br>**See also**: [SaaS](#s)| ## T
Common terms and definitions used in Microsoft Teams developer documentation.
| [Teams](../overview.md) | Microsoft Teams is the ultimate message app for your organization. It's a workspace for real-time collaboration and communication, meetings, file and app sharing. | | [Teams AI library](../bots/how-to/Teams%20conversational%20AI/teams-conversation-ai-overview.md) | A Teams-centric interface to GPT-based common language models and user intent engines. You can take on complex and expensive tasks of writing and maintaining conversational bot logic to integrate with large language models (LLMs).| | [Teams identity](../tabs/how-to/authentication/tab-sso-overview.md) | The Microsoft account or Microsoft 365 account of an app user that is used to log in to Teams client, web, or mobile app. |
+| [Teams identity](../tabs/how-to/authentication/tab-sso-overview.md) | The Microsoft account or Microsoft 365 account of an app user that is used to sign in to Teams client, web, or mobile app. |
| [Teams Toolkit](../toolkit/teams-toolkit-fundamentals.md) | The Microsoft Teams Toolkit enables you to create custom Teams apps directly within the VS Code environment. | | [Teams Toolkit CLI](../toolkit/Teams-Toolkit-CLI.md) | Teams Toolkit CLI is a text-based command line interface that accelerates Teams application development. It's also called Teamsapp CLI.| | [TeamsFx SDK](../toolkit/teamsfx-sdk.md) | TeamsFx SDK is pre-configured in a scaffolded project using TeamsFx toolkit or CLI. |
platform Using Teams Client Library https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/using-teams-client-library.md
Last updated 05/05/2023
The Microsoft Teams JavaScript client library (TeamsJS) can help you create hosted experiences in Teams, Microsoft 365 app, and Outlook, where your app content is hosted in an [iFrame](https://developer.mozilla.org/docs/Web/HTML/Element/iframe). The library is helpful for developing apps with the following Teams capabilities: * [Tabs](../../tabs/what-are-tabs.md)
-* [Task modules (Dialogs)](../../task-modules-and-cards/what-are-task-modules.md)
+* [Dialogs (referred as task modules in TeamsJS v1.x)](../../task-modules-and-cards/what-are-task-modules.md)
Starting with version `2.0.0`, the existing TeamsJS library (`@microsoft/teams-js`, or simply `TeamsJS`) is refactored to enable [Teams apps to run in Outlook and Microsoft 365 app](/microsoftteams/platform/m365-apps/overview), in addition to Microsoft Teams. From a functional perspective, the latest version of TeamsJS supports all existing (v.1.x.x) Teams app functionality while adding the optional ability to host Teams apps in Outlook and Microsoft 365 app.
The TeamsJS *tasks* namespace is renamed to *dialog*, and the following APIs are
| Original namespace `tasks` | New namespace `dialog` | | - | - |
-| `tasks.startTask` | `dialog.open` (renamed) |
-| `tasks.submitTasks` | `dialog.submit` (renamed) |
-| `tasks.updateTasks` | `dialog.update.resize` (renamed) |
+| `tasks.startTask` | `dialog.url.open`, `dialog.url.bot.open`, `dialog.adaptiveCard.open`, `dialog.adaptiveCard.bot.open` |
+| `tasks.submitTask` | `dialog.url.submit` (renamed) |
+| `tasks.updateTask` | `dialog.update` (renamed) |
| `tasks.TaskModuleDimension` enum | `dialog.DialogDimension` (renamed) | | `tasks.TaskInfo` interface | `dialog.DialogInfo` (renamed) |
-Additionally, this capability is split into a main capability (`dialog`) for supporting HTML-based dialogs, and a subcapability for bot-based dialogs, `dialog.bot`.
+Additionally, this capability is split into two main subcapabilities, `dialog.url` for HTML-based dialogs and `dialog.adaptiveCard` for Adaptive Card-based dialogs, with further sub-namespaces for bot-based dialogs.
##### *teamsCore* namespace
platform Cards And Task Modules https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards-and-task-modules.md
Title: Cards and task modules
-description: Learn about types of cards supported in bots for Teams, such as, Adaptive, Hero and Thumbnail card, and its actions.
+ Title: Cards and dialogs
+description: Learn about types of cards supported in bots for Teams, such as, Adaptive, Hero, and Thumbnail card, and their actions.
ms.localizationpriority: medium Last updated 01/09/2023
-# Cards and task modules
+# Cards and dialogs
Cards provide users with various visual, audio, and selectable messages and help in conversation flow.
-With task modules, you can create modal pop-up experiences in Microsoft Teams. They're useful for starting and completing the tasks, or displaying rich information like videos or Power business intelligence (BI) dashboards.
+With dialogs (referred as task modules in TeamsJS v1.x), you can create modal pop-up experiences in Microsoft Teams. They're useful for starting and completing the tasks, or displaying rich information like videos or Power business intelligence (BI) dashboards.
The following types of cards are supported in bots for Teams:
You can add and respond to card actions that:
* Send messages and payload to the bot. * Initiate OAuth flow.
-You can provide [dynamic search](~/task-modules-and-cards/cards/dynamic-search.md) experience within a large dataset using typeahead control in Adaptive Cards and perform typeahead static search within limited number of choices. Invoke the task modules in channel or personal tabs, bots, or deep links. Your user's experience for any workflows that requires data input can be improved by adding a task module to the user's tab. You can invoke task modules from Teams bots using buttons on Adaptive Cards and Bot Framework cards.
+You can provide [dynamic search](~/task-modules-and-cards/cards/dynamic-search.md) experience within a large dataset using typeahead control in Adaptive Cards and perform typeahead static search within limited number of choices. Invoke the dialogs in channel or personal tabs, bots, or deep links. Your user's experience for any workflows that requires data input can be improved by adding a dialog to the user's tab. You can invoke dialogs from Teams bots using buttons on Adaptive Cards and Bot Framework cards.
## See also * [Cards](~/task-modules-and-cards/what-are-cards.md)
-* [Task modules](~/task-modules-and-cards/what-are-task-modules.md)
+* [Dialogs](~/task-modules-and-cards/what-are-task-modules.md)
* [Authenticate users in Microsoft Teams](../concepts/authentication/authentication.md) * [Create connectors for Microsoft 365 Groups](../webhooks-and-connectors/how-to/connectors-creating.md)
platform Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Overview.md
You can get started by updating scenarios using the [quick start guide](Work-wit
## See also
-* [Cards and task modules](../../cards-and-task-modules.md)
+* [Cards and dialogs](../../cards-and-task-modules.md)
* [Build bots for Teams](../../../bots/what-are-bots.md) * [Adaptive Cards overview](~/task-modules-and-cards/what-are-cards.md) * [Adaptive Cards @ Microsoft Build 2020](https://youtu.be/hEBhwB72Qn4?t=1393)
platform Sequential Workflows https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Sequential-Workflows.md
var adaptiveCardResponse = JObject.FromObject(new
## See also
-* [Cards and task modules](../../cards-and-task-modules.md)
+* [Cards and dialogs](../../cards-and-task-modules.md)
* [Adaptive Card actions in Teams](~/task-modules-and-cards/cards/cards-actions.md#adaptive-cards-actions) * [How bots work](/azure/bot-service/bot-builder-basics?view=azure-bot-service-4.0&preserve-view=true) * [Work with Universal Actions for Adaptive Cards](Work-with-universal-actions-for-adaptive-cards.md)
platform Up To Date Views https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Up-To-Date-Views.md
The following code provides an example of Adaptive Cards sent as response of `ad
## See also
-* [Cards and task modules](../../cards-and-task-modules.md)
+* [Cards and dialogs](../../cards-and-task-modules.md)
* [Work with Universal Actions for Adaptive Cards](Work-with-universal-actions-for-adaptive-cards.md) * [User Specific Views](User-Specific-Views.md) * [Form completion feedback](../cards-actions.md#form-completion-feedback)
platform User Specific Views https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/User-Specific-Views.md
The following list provides card design guidelines for User Specific Views:
## See also
-* [Cards and task modules](../../cards-and-task-modules.md)
+* [Cards and dialogs](../../cards-and-task-modules.md)
* [Work with Universal Actions for Adaptive Cards](Work-with-Universal-Actions-for-Adaptive-Cards.md) * [Up to date cards](Up-To-Date-Views.md) * [Cards](../../what-are-cards.md)
platform Work With Universal Actions For Adaptive Cards https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Work-with-Universal-Actions-for-Adaptive-Cards.md
For more information, see [backward compatibility on Teams](/adaptive-cards/auth
## See also
-* [Cards and task modules](../../cards-and-task-modules.md)
+* [Cards and dialogs](../../cards-and-task-modules.md)
* [Adaptive Card actions in Teams](~/task-modules-and-cards/cards/cards-actions.md#adaptive-cards-actions) * [Basics of the Microsoft Bot Framework](/azure/bot-service/bot-builder-basics?view=azure-bot-service-4.0&preserve-view=true) * [Sequential Workflows](~/task-modules-and-cards/cards/universal-actions-for-adaptive-cards/sequential-workflows.md)
platform Cards Actions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/cards-actions.md
CardFactory.actions([
## Action type invoke
-The `invoke` action is used for invoking [task modules](~/task-modules-and-cards/task-modules/task-modules-bots.md).
+The `invoke` action is used for invoking [dialogs (referred as task modules in TeamsJS v1.x)](~/task-modules-and-cards/task-modules/task-modules-bots.md).
The `invoke` action contains three properties, `type`, `title`, and `value`.
Action.Submit is equivalent to the Bot Framework actions. You can also modify th
> [!NOTE] >
->* Adding `msteams` to data with a Bot Framework action doesn't work with an Adaptive Card task module.
+>* Adding `msteams` to data with a Bot Framework action doesn't work with an Adaptive Card dialog.
>* Primary or destructive `ActionStyle` isn't supported in Microsoft Teams. >* Your app has five seconds to respond to the invoke message.
The following code shows an example of Adaptive Cards with `invoke` action with
* [Cards reference](./cards-reference.md) * [Types of cards](cards-reference.md)
-* [Use task modules from bots](~/task-modules-and-cards/task-modules/task-modules-bots.md)
+* [Use dialogs from bots](~/task-modules-and-cards/task-modules/task-modules-bots.md)
* [Adaptive Cards in bots](../../bots/how-to/conversations/conversation-messages.md#adaptive-cards) * [Adaptive Card-based Loop component](../../m365-apps/cards-loop-component.md)
platform Cards Format https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/cards-format.md
You can test formatting in your own cards by modifying this code.
## See also
-* [Cards and task modules](../cards-and-task-modules.md)
+* [Cards and dialogs](../cards-and-task-modules.md)
* [Format your bot messages](~/bots/how-to/format-your-bot-messages.md)
-* [Use task modules from bots](~/task-modules-and-cards/task-modules/task-modules-bots.md)
+* [Use dialogs from bots](~/task-modules-and-cards/task-modules/task-modules-bots.md)
* [Schema explorer for Adaptive Cards](https://adaptivecards.io/explorer/TextBlock.html) * [Create connectors for Microsoft 365 Groups](../../webhooks-and-connectors/how-to/connectors-creating.md) * [Create Incoming Webhooks](../../webhooks-and-connectors/how-to/add-incoming-webhook.md)
platform Cards Reference https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/cards-reference.md
You can identify and use different types of cards based on your application requ
## Features that support different card types
-| Card type | Bots | Message extension previews | Message extension results | Task modules | Outgoing Webhooks | Incoming Webhooks | Connectors for Microsoft 365 Groups|
+| Card type | Bots | Message extension previews | Message extension results | Dialogs (referred as task modules in TeamsJS v1.x) | Outgoing Webhooks | Incoming Webhooks | Connectors for Microsoft 365 Groups|
| | | | | | | | | | Adaptive Card | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | | Connector card for Microsoft 365 Groups | ✔️ | ❌ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ |
The following table provides the features that support Adaptive Cards:
> [!NOTE] > > * Teams platform supports v1.5 or earlier of Adaptive Card features for bot sent cards and action based message extensions.
-> * Teams platform supports v1.5 or earlier of Adaptive Card features for other capabilities, such as cards sent by user (search based message extensions and link unfurling), tabs, and task modules.
+> * Teams platform supports v1.5 or earlier of Adaptive Card features for other capabilities, such as cards sent by user (search based message extensions and link unfurling), tabs, and dialogs.
> * Positive or destructive action styling is not supported in Adaptive Cards on the Teams platform. > * Test your full width Adaptive Card in narrow form factors such as mobile and meeting side panels to ensure that content is not truncated. > * Adaptive Cards within Teams don't provide support for file or image uploads.
The following cards are implemented by the Bot Framework, but aren't supported b
## See also
-* [Cards and task modules](../cards-and-task-modules.md)
+* [Cards and dialogs](../cards-and-task-modules.md)
* [Up to date cards](~/task-modules-and-cards/cards/universal-actions-for-adaptive-cards/up-to-date-views.md) * [Work with Universal Actions for Adaptive Cards](~/task-modules-and-cards/cards/universal-actions-for-adaptive-cards/work-with-universal-actions-for-adaptive-cards.md) * [Adaptive Cards overflow menu](~/task-modules-and-cards/cards/cards-format.md#adaptive-cards-overflow-menu)
platform Dynamic Search https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/dynamic-search.md
protected override async Task<InvokeResponse> OnInvokeActivityAsync(ITurnContext
## See also
-* [Cards and task modules](../cards-and-task-modules.md)
+* [Cards and dialogs](../cards-and-task-modules.md)
* [Universal Actions for Adaptive Cards](Universal-actions-for-adaptive-cards/Overview.md) * [Media elements in Adaptive Card](media-elements-in-adaptive-cards.md)
platform People Picker https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/people-picker.md
Last updated 01/19/2023
# People Picker in Adaptive Cards
-People Picker helps users to search and select users in Adaptive Card. You can add People Picker as input control to Adaptive Card, which works across chats, channels, task modules, and tabs. People Picker supports the following features:
+People Picker helps users to search and select users in Adaptive Card. You can add People Picker as input control to Adaptive Card, which works across chats, channels, dialogs (referred as task modules in TeamsJS v1.x), and tabs. People Picker supports the following features:
* Searches single or multiple users. * Selects single or multiple users.
platform Task Modules Bots https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/task-modules/task-modules-bots.md
The next section provides details on submitting the result of a dialog.
## Submit the result of a dialog
-When the user is finished with the dialog, submitting the result back to the bot is similar to the way it works with tabs. For more information, see [example of submitting the result of a dialog](~/task-modules-and-cards/task-modules/task-modules-tabs.md#example-of-submitting-the-result-of-a-task-module). There are a few differences as follows:
+When the user is finished with the dialog, submitting the result back to the bot is similar to the way it works with tabs. For more information, see [example of submitting the result of a dialog](~/task-modules-and-cards/task-modules/task-modules-tabs.md#example-of-submitting-the-result-of-a-dialog). There are a few differences as follows:
* HTML or JavaScript that is `TaskInfo.url`: Once you've validated what the user has entered, you call the `microsoftTeams.tasks.submitTask()` function referred to hereafter as `submitTask()` for readability purposes. You can call `submitTask()` without any parameters if you want Teams to close the dialog (referred as task module in TeamsJS v1.x), but you must pass an object or a string to your `submitHandler`. Pass it as the first parameter, `result`. Teams invokes `submitHandler`, `err` is `null`, and `result` is the object or string you passed to `submitTask()`. If you call `submitTask()` with a `result` parameter, you must pass an `appId` or an array of `appId` strings. This allows Teams to validate that the app sending the result is the same one, which invoked the dialog. Your bot receives a `task/submit` message including `result`. For more information, see [payload of `task/fetch` and `task/submit` messages](#payload-of-taskfetch-and-tasksubmit-messages). * Adaptive Card that is `TaskInfo.card`: The Adaptive Card body as filled in by the user is sent to the bot through a `task/submit` message when the user selects any `Action.Submit` button.
platform Task Modules Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/task-modules/task-modules-tabs.md
Title: Use Task Modules in Microsoft Teams tabs
-description: Learn how to invoke task modules from Teams tabs and submitting its result using the Microsoft Teams JavaScript client library (TeamsJS). It includes code samples.
+ Title: Use dialogs in Microsoft Teams tabs
+description: Learn how to invoke dialogs (task modules) from Teams tabs and submitting its result using the Microsoft Teams JavaScript client library (TeamsJS). It includes code samples.
ms.localizationpriority: medium Last updated 02/22/2023
-# Use task modules in tabs
+# Use dialogs in tabs
-Add a task module to your tab to simplify your user's experience for any workflows that require data input. Task modules allow you to gather their input in a Microsoft Teams-Aware pop-up. A good example of this is editing Planner cards. You can use task modules to create a similar experience.
+You can add modal dialogs (referred as task modules in TeamsJS v1.x) to your tabs to simplify the user experience for any workflows that require data input. Dialogs allow you to gather user input in a Microsoft Teams-Aware modal window. A good example of this is editing Planner cards. You can use dialogs to create a similar experience.
-To support the task module feature, two new functions are added to the [Teams JavaScript client library](/javascript/api/overview/msteams-client). The following code shows an example of these two functions:
+The two main operations of dialogs involve opening and closing (submitting) them. The functions are slightly different for earlier versions (prior to v2.x.x) of the TeamsJS library:
+
+# [TeamsJs v2](#tab/teamsjs)
+
+```typescript
+// Open HTML dialog
+microsoftTeams.dialog.url.open(
+ urlDialogInfo: UrlDialogInfo,
+ submitHandler?: DialogSubmitHandler,
+ messageFromChildHandler?: PostMessageChannel
+): void;
+
+// Open Adaptive Card dialog
+microsoftTeams.dialog.adaptiveCard.open(
+ adaptiveCardDialogInfo: AdaptiveCardDialogInfo,
+ submitHandler?: DialogSubmitHandler
+): void;
+
+// Submit HTML dialog (AC dialogs send result from Action.Submit)
+ microsoftTeams.dialog.url.submit(
+ result?: string | any,
+ appIds?: string | string[]
+): void;
+
+```
+
+> [!NOTE]
+> The `dialog.submit` property can only be called within a dialog.
# [TeamsJs v1](#tab/teamsjs1) ```typescript
+// Same function is used for both HTML and Adaptive Card dialogs.
microsoftTeams.tasks.startTask( taskInfo: TaskInfo, submitHandler?: (err: string, result: string | any) => void ): void;
+// Only works for HTML dialogs (AC dialogs send result from Action.Submit)
microsoftTeams.tasks.submitTask( result?: string | any, appIds?: string | string[] ): void; ```
-# [TeamsJs v2](#tab/teamsjs)
+
-```typescript
- microsoftTeams.dialog.open(
- urlDialogInfo: UrlDialogInfo,
- submitHandler?: DialogSubmitHandler,
- messageFromChildHandler?: PostMessageChannel
-): void])
+The following sections explain the process of invoking a dialog from a tab and submitting the result.
+## Invoke a dialog from a tab
- microsoftTeams.dialog.submit(
- result?: string | any,
- appIds?: string | string[]
-): void;
+> [!NOTE]
+> Starting with TeamsJS v2.8.x, the [`dialog`](/javascript/api/@microsoft/teams-js/dialog) namespace supports Adaptive Card-based dialogs. The `tasks` namespace is still supported for backward-compatibility, however best practice is to update `tasks.startTask()` call to `dialog.url.open` or `dialog.adaptiveCard.open` for HTML and Adaptive Card-based dialogs, respectively. For more information, see the [dialog namespace](../../tabs/how-to/using-teams-client-library.md#dialog-namespace).
-```
+You can invoke either an HTML or Adaptive Card dialog from a tab.
-> [!NOTE]
-> The `dialog.submit` property can only be called within a dialog.
+### HTML dialog
-
+```typescript
+ microsoftTeams.dialog.url.open(urlDialogInfo, submitHandler);
+```
-You can see how invoking a task module from a tab and submitting the result of a task module works.
+The value of `UrlDialogInfo.url` is set to the location of the content of your dialog. The dialog window opens and `UrlDialogInfo.url` is loaded as an `<iframe>` inside it. JavaScript in the dialog page calls `microsoftTeams.app.initialize()`. If there's a `submitHandler` function on the page and there's an error when invoking `microsoftTeams.dialog.url.open()`, then `submitHandler` is invoked with `err` set to the error string indicating the same.
-## Invoke a task module from a tab
+### Adaptive Card dialog
-To invoke a task module from a tab use `microsoftTeams.tasks.startTask()` passing a [TaskInfo object](~/task-modules-and-cards/task-modules/invoking-task-modules.md#the-taskinfo-object) and an optional `submitHandler` callback function. There are two cases to consider:
+```typescript
+ microsoftTeams.dialog.adaptiveCard.open(adaptiveCardDialogInfo, submitHandler);
+```
-* The value of `TaskInfo.url` is set to a URL. The task module window appears and `TaskModule.url` is loaded as an `<iframe>` inside it. JavaScript on that page calls `microsoftTeams.initialize()`. If there's a `submitHandler` function on the page and there's an error when invoking `microsoftTeams.tasks.startTask()`, then `submitHandler` is invoked with `err` set to the error string indicating the same. For more information, see [task module invocation errors](#task-module-invocation-errors).
-* The value of `taskInfo.card` is the [JSON for an Adaptive Card](~/task-modules-and-cards/task-modules/invoking-task-modules.md#adaptive-card-or-adaptive-card-bot-card-attachment). There's no JavaScript `submitHandler` function to call when the user closes or presses a button on the Adaptive Card. The only way to receive what the user entered is by passing the result to a bot. To use an Adaptive Card task module from a tab, your app must include a bot to get any response from the user.
+The value of `adaptiveCardDialogInfo.card` is the [JSON for an Adaptive Card](../../task-modules-and-cards/task-modules/invoking-task-modules.md#adaptive-card-or-adaptive-card-bot-card-attachment). You can specify a `submitHandler` to be called with an *err* string, if there was an error when invoking `open()` or if the user closes the dialog using the **X** (Exit) button.
-The next section gives an example of invoking a task module.
+The next section gives an example of invoking a dialog.
-## Example of invoking a task module
+## Example of invoking a dialog
-The following image displays the task module:
+The following image displays the dialog:
:::image type="content" source="../../assets/images/task-module/task-module-custom-form.png" alt-text="Task Module Custom Form":::
-The following code is adapted from [the task module sample](~/task-modules-and-cards/task-modules/invoking-task-modules.md#code-sample):
+The following code is adapted from [the dialog sample](~/task-modules-and-cards/task-modules/invoking-task-modules.md#code-sample):
-# [TeamsJs v1](#tab/teamsjs2)
+
+# [TeamsJs v2](#tab/teamsjs3)
```typescript
-let taskInfo = {
+let urlDialogInfo = {
Title: null, height: null, width: null, url: null,
- card: null,
fallbackUrl: null,
- completionBotId: null,
};
-taskInfo.url = "https://contoso.com/teamsapp/customform";
-taskInfo.title = "Custom Form";
-taskInfo.height = 510;
-taskInfo.width = 430;
-submitHandler = (err, result) => {
- console.log(`Submit handler - err: ${err}`);
- console.log(`Submit handler - result\rName: ${result.name}\rEmail: ${result.email}\rFavorite book: ${result.favoriteBook}`);
-};
-microsoftTeams.tasks.startTask(taskInfo, submitHandler);
+urlDialogInfo.url = "https://contoso.com/teamsapp/customform";
+urlDialogInfo.title = "Custom Form";
+urlDialogInfo.height = 510;
+urlDialogInfo.width = 430;
+submitHandler = (submitHandler) => {
+ console.log(`Submit handler - err: ${submitHandler.err}`);
+ alert("Result = " + JSON.stringify(submitHandler.result) + "\nError = " + JSON.stringify(submitHandler.err));
+ };
+
+ microsoftTeams.dialog.url.open(urlDialogInfo, submitHandler);
```
-# [TeamsJs v2](#tab/teamsjs3)
+# [TeamsJs v1](#tab/teamsjs2)
```typescript let taskInfo = {
taskInfo.url = "https://contoso.com/teamsapp/customform";
taskInfo.title = "Custom Form"; taskInfo.height = 510; taskInfo.width = 430;
-dialogResponse = (dialogResponse) => {
- console.log(`Submit handler - err: ${dialogResponse.err}`);
- alert("Result = " + JSON.stringify(dialogResponse.result) + "\nError = " + JSON.stringify(dialogResponse.err));
- };
-
- microsoftTeams.dialog.open(taskInfo, dialogResponse);
+submitHandler = (err, result) => {
+ console.log(`Submit handler - err: ${err}`);
+ console.log(`Submit handler - result\rName: ${result.name}\rEmail: ${result.email}\rFavorite book: ${result.favoriteBook}`);
+};
+microsoftTeams.tasks.startTask(taskInfo, submitHandler);
```
-The `submitHandler` is simple and it echoes the value of `err` or `result` to the console.
+The `submitHandler` echoes the values of `err` or `result` to the console.
+
+## Submit the result of a dialog
-## Submit the result of a task module
+If there's an error when invoking the dialog, your `submitHandler` function is immediately invoked with an `err` string indicating what [error occurred](#dialog-invocation-errors). The `submitHandler` function is also called with an `err` string when the user selects **X** on the dialog to exit.
-The `submitHandler` function resides in the `TaskInfo.url` web page and is used with `TaskInfo.url`. If there's an error when invoking the task module, your `submitHandler` function is immediately invoked with an `err` string indicating what [error occurred](#task-module-invocation-errors). The `submitHandler` function is also called with an `err` string when the user selects X at the upper right of the task module to close it.
+If there's no invocation error and the user doesn't select **X** to dismiss the dialog, the user selects a submit button when finished. The following sections explain what happens next for HTML and Adaptive Card dialog types.
-If there's no invocation error and the user doesn't select X to dismiss it, the user chooses a button when finished. Depending on whether it's a URL or an Adaptive Card in the task module, the next sections provide details on what occurs.
+### HTML or JavaScript dialogs
-### HTML or JavaScript `TaskInfo.url`
+After validating user input, call `microsoftTeams.dialog.url.submit()`. You can call `submit()` without any parameters if you want Teams to close the dialog, or you can pass an object or string `result` back to your app as the first parameter, and an `appId` of the app that opened the dialog as the second parameter. If you call `submit()` with a `result` parameter, you must pass an `appId` (or an array of `appId` strings of apps authorized to receive the result of the dialog). This enables Teams to validate that the app sending the result is the same as the invoked dialog.
-After validating the user's inputs, call the `microsoftTeams.tasks.submitTask()` function referred to as `submitTask()`. Call `submitTask()` without any parameters if you just want Teams to close the task module. You can pass an object or a string to your `submitHandler`.
+Teams will then invoke your `submitHandler` where `err` is *null* and `result` is the object or string you passed to `submit()`.
-Pass your result as the first parameter. Teams invokes `submitHandler` where `err` is `null` and `result` is the object or string you passed to `submitTask()`. If you call `submitTask()` with a `result` parameter, you must pass an `appId` or an array of `appId` strings. This permits Teams to validate that the app sending the result is same as the invoked task module.
+### Adaptive Card dialogs
-### Adaptive Card `TaskInfo.card`
+When you invoke the dialog with a `submitHandler` and the user selects an `Action.Submit` button, the values in the card are returned as its `data` object. If the user presses the **Esc** key or selects **X** to exit the dialog, your `submitHandler` is called with the `err` string. If your app contains a bot in addition to a tab, you can include the `appId` of the bot as the value of `completionBotId` in the `TaskInfo` ([BotAdaptiveCardDialogInfo](/javascript/api/@microsoft/teams-js/botadaptivecarddialoginfo)) object.
-When you invoke the task module with a `submitHandler` and the user selects an `Action.Submit` button, the values in the card are returned as the value of `result`. If the user selects the Esc key or X at the top right, `err` is returned instead. If your app contains a bot in addition to a tab, you can include the `appId` of the bot as the value of `completionBotId` in the `TaskInfo` object. The Adaptive Card body as filled in by the user is sent to the bot using a `task/submit invoke` message when the user selects an `Action.Submit` button. The schema for the object you receive is similar to [the schema you receive for task/fetch and task/submit messages](~/task-modules-and-cards/task-modules/task-modules-bots.md#payload-of-taskfetch-and-tasksubmit-messages). The only difference is that the schema of the JSON object is an Adaptive Card object as opposed to an object containing an Adaptive Card object as [when Adaptive cards are used with bots](~/task-modules-and-cards/task-modules/task-modules-bots.md#payload-of-taskfetch-and-tasksubmit-messages).
+The Adaptive Card body as filled in by the user is sent to the bot using a `task/submit invoke` message when the user selects an `Action.Submit` button. The schema for the object you receive is similar to [the schema you receive for task/fetch and task/submit messages](../../task-modules-and-cards/task-modules/task-modules-bots.md#payload-of-taskfetch-and-tasksubmit-messages).
+The only difference is that the schema of the JSON object is an Adaptive Card object as opposed to an object containing an Adaptive Card object as [when Adaptive cards are used with bots](../../task-modules-and-cards/task-modules/task-modules-bots.md#payload-of-taskfetch-and-tasksubmit-messages).
The following is the example of payload:
The following is the example of payload:
The following is the example of Invoke request: ```javascript
-let taskInfo = {
- Title: "Task Module Demo",
+let adaptiveCardDialogInfo = {
+ Title: "Dialog Demo",
height: "medium", width: "medium", card: null,
let taskInfo = {
completionBotId: null, };
-taskInfo.card = {
+adaptiveCardDialogInfo.card = {
"type": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
- "version": "1.4",
+ "version": "1.5",
"body": [ { "type": "TextBlock",
- "text": "This is sample adaptive card.",
+ "text": "This is a sample adaptive card.",
"wrap": true } ]
submitHandler = (err, result) => {
); };
-microsoftTeams.tasks.startTask(taskInfo, submitHandler);
+microsoftTeams.dialog.adaptiveCard.open(adaptiveCardDialogInfo, submitHandler);
```
-The next section gives an example of submitting the result of a task module.
+The next section provides an example of submitting the result of a dialog (referred as task module in TeamsJS v1.x).
-## Example of submitting the result of a task module
+## Example of submitting the result of a dialog
-For more information, see the [HTML form in the task module](#example-of-invoking-a-task-module). The following code gives an example of where the form is defined:
+Taking up the earlier [example of invoking an HTML dialog](#example-of-invoking-a-dialog), here's an example of the HTML form embedded in the dialog:
```html <form method="POST" id="customerForm" action="/register" onSubmit="return validateForm()">
For more information, see the [HTML form in the task module](#example-of-invokin
There are five fields on this form but for this example only three values are required, `name`, `email`, and `favoriteBook`.
-The following code gives an example of the `validateForm()` function that calls `submitTask()`:
+The following code gives an example of the `validateForm()` function that calls `submit()`:
```javascript function validateForm() {
function validateForm() {
email: document.forms["customerForm"]["email"].value, favoriteBook: document.forms["customerForm"]["favoriteBook"].value }
- microsoftTeams.tasks.submitTask(customerInfo, "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
+ microsoftTeams.dialog.url.submit(customerInfo, "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
return true; } ```
-The next section provides task module invocation problems and their error messages.
+## Dialog invocation errors
-## Task module invocation errors
+> [!NOTE]
+> The `tasks` namespace is replaced by the `dialog` namespace. The `dialog` namespace includes sub-namespaces for HTML (`url`), Adaptive Card (`adaptiveCard`), and bot-based (`dialog.url.bot` and `dialog.adaptiveCard.bot`) functionality.
The following table provides the possible values of `err` that can be received by your `submitHandler`:
The following table provides the possible values of `err` that can be received b
| Values for both `TaskInfo.url` and `TaskInfo.card` were specified. | Values for both card and URL were specified. One or the other, but not both, are allowed. | | Neither `TaskInfo.url` nor `TaskInfo.card` specified. | You must specify a value for either card or URL. | | Invalid `appId`. | Invalid app ID. |
-| User selected X button, closing it. | User canceled or closed the task module. |
+| User selected X button, closing it. | User canceled or closed the dialog. |
## Code sample |Sample name | Description | .NET | Node.js | Manifest |-|--|--|-|-|
-|Task module sample bots-V4 | This sample shows how to create task modules using bot framework v4 and teams tabs. |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-task-module/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-task-module/nodejs)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-task-module/csharp/demo-manifest/bot-task-module.zip)
+|Dialog sample bots-V4 | This sample shows how to create dialogs using bot framework v4 and teams tabs. |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-task-module/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-task-module/nodejs)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-task-module/csharp/demo-manifest/bot-task-module.zip)
## Next step
The following table provides the possible values of `err` that can be received b
## See also
-* [Cards and task modules](../cards-and-task-modules.md)
-* [Invoke and dismiss task modules](~/task-modules-and-cards/task-modules/invoking-task-modules.md)
+* [Cards and dialogs](../cards-and-task-modules.md)
+* [Invoke and dismiss dialogs](~/task-modules-and-cards/task-modules/invoking-task-modules.md)
platform What Are Cards https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/what-are-cards.md
In addition to Adaptive Cards, Teams supports two other types of cards:
### People Picker in Adaptive Cards
-[People Picker](cards/people-picker.md#people-picker-in-adaptive-cards) added as an input control in Adaptive Cards enable search and selection of people. You can use it in chats, channels, task modules, and tabs. The mobile and desktop clients support People Picker, which provides an inline typing experience.
+[People Picker](cards/people-picker.md#people-picker-in-adaptive-cards) added as an input control in Adaptive Cards enable search and selection of people. You can use it in chats, channels, dialogs (referred as task modules in TeamsJS v1.x), and tabs. The mobile and desktop clients support People Picker, which provides an inline typing experience.
### People icon in an Adaptive Card
Bots with Adaptive Cards support user mention IDs, such as Microsoft Entra Objec
## See also -- [Cards and task modules](cards-and-task-modules.md)
+- [Cards and dialogs](cards-and-task-modules.md)
- [Format cards in Teams](~/task-modules-and-cards/cards/cards-format.md) - [Design Card](../concepts/design/design-teams-app-basic-ui-components.md#card) - [Design Adaptive Cards](~/task-modules-and-cards/cards/design-effective-cards.md)
platform What Are Task Modules https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/what-are-task-modules.md
Title: Task modules
+ Title: Dialogs
description: In this module, learn how to add modal pop-up experiences to collect or display information to your users from your Microsoft Teams apps. ms.localizationpriority: medium
Last updated 12/16/2022
-# Task modules
+# Dialogs
-Task modules permit you to create modal pop-up experiences in your Teams application. In the pop-up, you can:
+Dialogs (referred as task modules in TeamsJS v1.x) permit you to create modal pop-up experiences in your Teams application. In the pop-up, you can:
* Run your own custom HTML or JavaScript code. * Show an `<iframe>`-based widget such as a YouTube or Microsoft Stream video. * Display an [Adaptive Card](/adaptive-cards/).
-Task modules are useful for initiating and completing tasks or displaying rich information, such as videos or Power Business Intelligence (BI) dashboards. A pop-up experience is often more natural for users initiating and completing tasks compared to a tab or a conversation-based bot experience.
+Dialogs are useful for initiating and completing tasks or displaying rich information, such as videos or Power Business Intelligence (BI) dashboards. A pop-up experience is often more natural for users initiating and completing tasks compared to a tab or a conversation-based bot experience.
-Task modules build on the foundation of Microsoft Teams tabs. They're essentially a tab inside a pop-up window. They use the same Microsoft Teams JavaScript client library (TeamsJS), so if you have built a tab you're already familiar with creating a task module.
+Dialogs build on the foundation of Microsoft Teams tabs. They're essentially a tab inside a pop-up window. They use the same Microsoft Teams JavaScript client library (TeamsJS), so if you have built a tab you're already familiar with creating a dialog.
-Task modules can be invoked in three ways:
+Dialogs can be invoked in three ways:
-* Channel or personal tabs: Using the TeamsJS library, you can invoke task modules from buttons, links, or menus on your tab. For more information, see [using task modules in tabs](~/task-modules-and-cards/task-modules/task-modules-tabs.md).
-* Bots: Using buttons on [cards](~/task-modules-and-cards/cards/cards-reference.md) sent from your bot. This is useful when you don't require everyone in a channel to see what you are doing with a bot. For example, when having users respond to a poll in a channel it isn't useful to see a record of that poll being created. For more information, see [using task modules from Teams bots](~/task-modules-and-cards/task-modules/task-modules-bots.md).
-* Outside of Teams from a deep link: You can also create URLs to invoke a task module from anywhere. For more information, see [task module deep link syntax](~/concepts/build-and-test/deep-link-application.md#deep-link-to-open-a-dialog).
+* Channel or personal tabs: Using the TeamsJS library, you can invoke dialogs from buttons, links, or menus on your tab. For more information, see [using dialogs in tabs](~/task-modules-and-cards/task-modules/task-modules-tabs.md).
+* Bots: Using buttons on [cards](~/task-modules-and-cards/cards/cards-reference.md) sent from your bot. This is useful when you don't require everyone in a channel to see what you are doing with a bot. For example, when having users respond to a poll in a channel it isn't useful to see a record of that poll being created. For more information, see [using dialogs from Teams bots](~/task-modules-and-cards/task-modules/task-modules-bots.md).
+* Outside of Teams from a deep link: You can also create URLs to invoke a dialog from anywhere. For more information, see [dialog deep link syntax](~/concepts/build-and-test/deep-link-application.md#deep-link-to-open-a-dialog).
-## Components of a task module
+## Components of a dialog
-Here's what a task module looks like when invoked from a bot:
+Here's what a dialog looks like when invoked from a bot:
-A task module includes the following as shown in the previous image:
+A dialog includes the following as shown in the previous image:
1. Your app's [`color` icon](~/resources/schem#icons). 2. Your app's [`short` name](~/resources/schem#name).
-3. The task module's title specified in the `title` property of the [TaskInfo object](~/task-modules-and-cards/task-modules/invoking-task-modules.md#the-taskinfo-object).
-4. The task module's close or cancel button. If the user selects this button, your app receives an `err` event. For more information, see [example for submitting the result of a task module](~/task-modules-and-cards/task-modules/task-modules-tabs.md#example-of-submitting-the-result-of-a-task-module).
+3. The dialog's title specified in the `title` property of the [TaskInfo object](~/task-modules-and-cards/task-modules/invoking-task-modules.md#the-taskinfo-object).
+4. The dialog's close or cancel button. If the user selects this button, your app receives an `err` event. For more information, see [example for submitting the result of a dialog](~/task-modules-and-cards/task-modules/task-modules-tabs.md#example-of-submitting-the-result-of-a-dialog).
> [!NOTE]
- > It is currently not possible to detect the `err` event when a task module is invoked from a bot.
+ > It is currently not possible to detect the `err` event when a dialog is invoked from a bot.
-5. The blue rectangle is where your web page appears if you're loading your own web page using the `url` property of the [TaskInfo object](~/task-modules-and-cards/task-modules/invoking-task-modules.md#the-taskinfo-object). For more information, see [task module sizing](~/task-modules-and-cards/task-modules/invoking-task-modules.md#dialog-sizing).
-6. If you're displaying an Adaptive Card using the `card` property of the [TaskInfo object](~/task-modules-and-cards/task-modules/invoking-task-modules.md#the-taskinfo-object) the padding is added for you. For more information, see [task module CSS for HTML or JavaScript task modules](~/task-modules-and-cards/task-modules/invoking-task-modules.md#dialog-css-for-html-or-javascript-dialogs).
+5. The blue rectangle is where your web page appears if you're loading your own web page using the `url` property of the [TaskInfo object](~/task-modules-and-cards/task-modules/invoking-task-modules.md#the-taskinfo-object). For more information, see [dialog sizing](~/task-modules-and-cards/task-modules/invoking-task-modules.md#dialog-sizing).
+6. If you're displaying an Adaptive Card using the `card` property of the [TaskInfo object](~/task-modules-and-cards/task-modules/invoking-task-modules.md#the-taskinfo-object) the padding is added for you. For more information, see [dialog CSS for HTML or JavaScript dialogs](~/task-modules-and-cards/task-modules/invoking-task-modules.md#dialog-css-for-html-or-javascript-dialogs).
7. Adaptive Card buttons render after you select **Sign up**. When using your own page, create your own buttons. By design, the primary button style (solid) is applied to the last root action in an Adaptive Card. For all other actions, the default button style is applied. ## Next step > [!div class="nextstepaction"]
-> [Invoke and dismiss task modules](~/task-modules-and-cards/task-modules/invoking-task-modules.md)
+> [Invoke and dismiss dialogs](~/task-modules-and-cards/task-modules/invoking-task-modules.md)
## See also
-* [Cards and task modules](cards-and-task-modules.md)
+* [Cards and dialogs](cards-and-task-modules.md)
* [Cards](~/task-modules-and-cards/what-are-cards.md) * [Adaptive Cards overflow menu](~/task-modules-and-cards/cards/cards-format.md#adaptive-cards-overflow-menu) * [Instrumenting for Teams app specific analytics](../concepts/design/overview-analytics.md#instrumenting-for-teams-app-specific-analytics)
platform Debug Your Teams App Test Tool https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/debug-your-Teams-app-test-tool.md
It's vital to recognize that updating the configuration file has three major imp
| Bot Framework APIs (TeamsInfo.getPagedMembers()...) |Available (respond with mocked data) | Available | | Sending Teams events | Available (mock activity) |Available | | Typing indicator | Not Available | Available |
- | Tab, Messaging Extension, Task Module, Single sign-on (SSO), and non-Adaptive Cards | Not Available | Available |
+ | Tab, Message extension, Dialogs (referred as task modules in TeamsJS v1.x), Single sign-on (SSO), and non-Adaptive Cards | Not Available | Available |
## Debug an existing app with Test Tool