Updates from: 08/09/2024 01:07:21
Service Microsoft Docs article Related commit history on GitHub Change details
platform Requirements Considerations Application Hosted Media Bots https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/calls-and-meetings/requirements-considerations-application-hosted-media-bots.md
An application-hosted media bot requires the [`Microsoft.Graph.Communications.Ca
An application-hosted media bot has the following requirements:
-* The bot must be developed in C# and the standard .NET Framework and deployed in Microsoft Azure. The Graph Communications SDK supports .NET 6 and .NET Core frameworks. You can't use C++ or Node.js APIs to access real-time media.
+
+* The bot must be developed using C# and the standard .NET Framework, and deployed on Microsoft Azure. You can't use C++ or Node.js APIs to access real-time media. However, .NET Core is supported for an application-hosted media bot, and the SDK provides support for .NET 6.0.
* The bot can be hosted within one of the following Azure service environments: * Cloud Service.
platform Monetize Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/prepare/monetize-overview.md
If you choose to use Microsoft license management to manage a SaaS license purch
:::column-end::: :::row-end:::
-## Next step
+## See also
-* [Include a SaaS offer with your Microsoft Teams app](~/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md)
-* [Microsoft Teams Store validation guidelines](teams-store-validation-guidelines.md)
+[Microsoft Teams Store validation guidelines](teams-store-validation-guidelines.md)
platform Plan To Monetize https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/design/plan-to-monetize.md
In addition to these features, Teams Store also lets you:
Establishing a monetizing option beforehand helps guide the app design, build, and distribution decisions.
-## See also
-
-* [Plan your app with Teams features](../app-fundamentals-overview.md)
-* [Monetize your app](../deploy-and-publish/appsource/prepare/monetize-overview.md)
-* [Microsoft Teams Store validation guidelines](../deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md)
-* [Build Message extensions](../../messaging-extensions/what-are-messaging-extensions.md)
-* [Build dialogs](../../task-modules-and-cards/what-are-task-modules.md)
-* [Build Adaptive Cards](../../task-modules-and-cards/what-are-cards.md)
-* [Webhooks and connectors](../../webhooks-and-connectors/what-are-webhooks-and-connectors.md)
-* [Build bots for Teams](../../bots/what-are-bots.md)
-* [Build tabs for Teams](../../tabs/what-are-tabs.md)
-* [Build apps for Teams meetings and calls](../../apps-in-teams-meetings/teams-apps-in-meetings.md)
+## Next step
+
+> [!div class="nextstepaction"]
+> [Monetize your app](~/concepts/deploy-and-publish/appsource/prepare/monetize-overview.md)
platform Build Bot Based Plugin https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/build-bot-based-plugin.md
Before you get started, ensure that you install the following tools to build and
* Install the latest [Teams Toolkit prerelease version](../toolkit/install-Teams-Toolkit.md#install-a-prerelease-version). * Ensure that the **Develop Copilot Plugin** feature flag is enabled. To enable the feature flag, follow these steps: 1. Open **Visual Studio Code**.
- 1. Go to **Manage** > **Settings**.
+ 1. Go to **Manage** :::image type="icon" source="../assets/icons/gear-icon.png" border="false"::: > **Settings**.
1. Enter **Teams Toolkit** in the **Search settings** search box. 1. Under **Extensions**, select the **Fx-extension: Develop Copilot Plugin** checkbox.
To trigger the message extension through Copilot for Microsoft 365, follow these
# [Developer Portal for Teams](#tab/developer-portal-for-teams)
-To create a bot-based search message extension plugin using Developer portal for Teams, follow these steps:
+To create a bot-based message extension using Developer Portal for Teams, follow these steps:
-1. Go to **Teams Developer Portal**.
+1. Go to [**Developer Portal for Teams**](https://dev.teams.microsoft.com/).
1. Go to **Apps**. 1. Select **+ New apps**.
-1. Under **Configure**, select **App features**.
-1. Select **Messaging extension**.
+1. In the **Add apps** page, update the name and select the manifest version as **Public developer preview (devPreview)**.
:::image type="content" source="../assets/images/Copilot/api-based-me-tdp-app-feature.png" alt-text="Screenshot shows the messaging extension option in Teams Developer Portal.":::
+1. Under **Configure**, select **App features**.
+1. Select **Messaging extension**.
+ 1. Under **Message extension type**, select **Bot**. 1. If you get a disclaimer, which reads **API Message extension is already in use by users. Would you like to change message extension type to bot?**. Select **Yes, change**.
platform High Quality Message Extension https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/high-quality-message-extension.md
The following table lists the command and semantic description examples for each
+> [!IMPORTANT]
+>
+> For activating the OAuth sign-in link in the plugin, ensure that you set the `initialRun` property to `true` for search commands within the app manifest.
+ ### Parameter description Each message extension command supports has a corresponding `parameters' property, which supports up to five parameters and the first parameter must be visible in the message extension search bar. A parameter must have a good description, which must contain a combination of acceptable parameters, enums, acronyms, and output format.
For a plugin to be validated, invoked, and work seamlessly, ensure that it meets
| Criteria | Fulfillment | ||| | Manifest version | App manifest version must be 1.13 or later. [*Mandatory*] |
-|Microsoft 365 Channel| For users to interact with your message extension from Outlook, you need to add Microsoft 365 channel to your bot. For more information, see [Add Microsoft 365 channel](../m365-apps/extend-m365-teams-message-extension.md#add-microsoft-365-channel-for-your-app). [*Mandatory*]|
| Response Time | Response time must not exceed 9 seconds for 99 percent, 5 Seconds for 75 percent and 2 Seconds for 50 percent. [*Mandatory*] | | Reliability | Apps must maintain 99.9% availability. For instance, if Microsoft 365 Chat calls a plugin 1,000 times, it must provide a meaningful response 999 times. [*Mandatory*] | | Zero Regressions | If you need to resubmit your app for validation, the existing message extension functionality that was working earlier mustn't break. This requirement is only applicable to independent software vendor (ISV) apps and not apps built for your organization. [*Mandatory*] |
-| Single sign-on (SSO) | If applicable, update your Microsoft Entra ID app registration for SSO. [*Recommended*] |
-| Content Security Policy |If applicable, modify your Content Security Policy headers. [*Recommended*] |
+| [Microsoft 365 Channel](#requirements-for-plugins-in-word-powerpoint-excel-and-onenote-copilots)| For users to interact with your message extension from Outlook, you need to add Microsoft 365 channel to your bot. For more information, see [Add Microsoft 365 channel](../m365-apps/extend-m365-teams-message-extension.md#add-microsoft-365-channel-for-your-app). [*Mandatory*]|
+| [Single sign-on (SSO)](#requirements-for-plugins-in-word-powerpoint-excel-and-onenote-copilots) | If applicable, update your Microsoft Entra ID app registration for SSO. [*Recommended*] |
+| [Content Security Policy](#requirements-for-plugins-in-word-powerpoint-excel-and-onenote-copilots) |If applicable, modify your Content Security Policy headers. [*Recommended*] |
> [!IMPORTANT] > If applicable, update your Content Security Policy headers and `X-Frame-Options` in accordance with [Configure Content Security Policy headers](../m365-apps/extend-m365-teams-personal-tab.md#configure-content-security-policy-headers).
+## Message extensions Plugins in Copilot for Microsoft 365
+
+Copilot extensions customize and extend the Copilot for Microsoft 365 experience by bringing more skills and knowledge to Copilot for a personalized user experience. By using plugins, which are a subset of Copilot extensions, users can integrate additional capabilities into Copilot by interacting with third-party applications, whether for retrieving or modifying information within those apps. For instance, message extension plugins facilitate searching for data in other applications so that Copilot can present it upon request when the plugin is activated.
+
+ If you've developed a plugin for Copilot in Teams or [copilot.microsoft.com](https://copilot.microsoft.com/#/), you're already aware of the benefits it offers to users within their workflow.
+ <!--To extend your plugin's functionality to Copilot in Word, Excel, PowerPoint, and OneNote, refer to the following document for the required additional steps.-->
+
+### Requirements for plugins in Word, PowerPoint, Excel, and OneNote Copilots
+
+To ensure your plugins work with Word, Excel, PowerPoint, and OneNote Copilots, follow these requirements:
+
+* <b>Update Microsoft Azure Active Directory (Azure AD) app registration for SSO-enabled apps</b>
+
+ Azure AD single sign-on (SSO) for message extensions work in the same way as it does in Teams or Outlook. If you've enabled SSO for your app, add the Office app Copilot’s client application identifier to the Azure AD app registration of your bot in your tenant's App registrations portal.
+
+ 1. Sign in to [Azure portal](https://portal.azure.com/)  with your sandbox tenant account.
+ 1. Open <b>App registrations</b>.
+ 1. Select the name of your application to open its app registration.
+ 1. From the <b>Manage</b> section, select <b>Expose an API</b>.
+ 1. In the <b>Authorized client applications</b> section, ensure that the following client ID values are listed:
+
+ | Microsoft 365 client application | Client ID |
+ | | |
+ | Word, PowerPoint, Excel (web, desktop) | 3068386c-7a16-4f6a-a664-043b6b232816 |
+ | Teams desktop, mobile | 1fec8e78-bce4-4aaf-ab1b-5451cc387264 |
+ | Teams web | 5e3ce6c0-2b1f-4285-8d4b-75ee78787346 |
+ | Microsoft 365 web | 4765445b-32c6-49b0-83e6-1d93765276ca |
+ | Microsoft 365 desktop | 0ec893e0-5785-4de6-99da-4ed124e5296c |
+ | Microsoft 365 mobile | d3590ed6-52b3-4102-aeff-aad2292ab01c |
+ | Outlook desktop | d3590ed6-52b3-4102-aeff-aad2292ab01c |
+ | Outlook web | bc59ab01-8403-45c6-8796-ac3ef710b3e3 |
+ | Outlook mobile | 27922004-5251-4030-b22d-91ecd9a37ea4 |
+ | Bing | 9ea1ad79-fdb6-4f9a-8bc3-2b70f96e34c7 |
+
+ > [!NOTE]
+ >
+ > * Support for Excel and OneNote client applications will be available soon.
+ > * For more information about how SSO works for message extensions, see [SSO for bot and message extension app](../bots/how-to/authentication/auth-aad-sso-bots.md).
+
+* <b>Ensure your registered bot is connected to Microsoft 365 and Microsoft Teams channel</b>
+
+ 1. Sign in to [Azure portal](https://portal.azure.com/) with your sandbox tenant account.
+ 1. Open Bot <b>Services</b>.
+ 1. Select the name of your bot to update its channels.
+ 1. From the <b>Settings</b> section, select <b>Channels</b>.
+ 1. From <b>Available channels</b>, select <b>Microsoft 365 & Microsoft Teams</b>, and then select <b>Apply</b>.
+
+* <b>Configure content security policy headers</b>
+
+ If your app makes use of [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) (CSP) headers, ensure that all the following [frame-ancestors](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) are included in your CSP headers:
+
+ | Microsoft 365 App | frame-ancestor permission |
+ | | |
+ | Word | fa000000125.resources.office.net |
+ | PowerPoint | fa000000129.resources.office.net |
+ | Excel | fa000000124.resources.office.net |
+ | OneNote | fa000000128.resources.office.net |
+ | Copilot and Bing | `edgeservices.bing.com`, `www.bing.com`, `copilot.microsoft.com` |
+ | Microsoft 365 app | `*.microsoft365.com`, `*.office.com` |
+ | Outlook | `outlook.office.com`, `outlook.office365.com`, `outlook-sdf.office.com`, `outlook-sdf.office365.com` |
+
+* <b>Upgrade Teams JS version to the 2.22.0 build</b>
+
+ If you're using Teams JS version 2.22 or earlier, update it to version 2.22 or higher.ΓÇ»
+
+ For more information, see Teams JS Repository [@microsoft/teams-js - npm (npmjs.com)](https://www.npmjs.com/package/@microsoft/teams-js).
++ ## Code samples |Sample name | Description |TypeScript |
platform Bots With Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bots-with-tabs.md
In both cases, use event notifications wisely and never spam the user with unnec
## See also
-[Add How-to guides to Microsoft Teams app](../../toolkit/add-How-to-guides-v5.md)
+[Add How-to guides to Microsoft Teams app](../../toolkit/add-how-to-guides-vsc.md)
platform Manifest Schema Dev Preview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema-dev-preview.md
Delegated permissions allow the app to access data on behalf of the signed-in us
**Optional** &ndash; Object
-The `extensions` property specifies Outlook Add-ins within an app manifest and simplify the distribution and acquisition across the Microsoft 365 ecosystem. Each app supports only one extension.
+The `extensions` property specifies Outlook Add-ins within an app manifest and simplifies the distribution and acquisition across the Microsoft 365 ecosystem. Each app supports only one extension.
|Name| Type| Maximum size | Required | Description| ||||||
The `extensions.ribbons` property provides the ability to add [add-in commands](
|`requirements.formFactors`| Array of enums | | | Identifies the form factors that support the add-in. <br>Supported values: `mobile`, `desktop`| |`tabs`| Array | |✔️| Configures the custom tabs on the Microsoft 365 application ribbon. | |`tabs.id`| String | 64 characters | | Specifies the ID for the tab within the app.|
-|`tabs.builtinTabId`| String | 64 characters | | Specifies the ID of a built-in Office ribbon tab. The possible values vary by Office host application. Outlook add-ins are only supported and the allowed value for Outlook is "TabDefault". The default tab depends on where the Outlook add-in is surfaced, as determined in the "extensions.ribbons.contexts" property. In the main Outlook window, it is the **Home** tab, in a message window, it is the **Message** tab, and in a meeting window, it is the **Meeting** tab. |
-|`tabs.label`| String | 64 characters | | Specifies the text displayed for the tab.|
+|`tabs.builtinTabId`| String | 64 characters | | Specifies the ID of a built-in Office ribbon tab. The possible values vary by Office host application. Outlook add-ins are only supported and the allowed value for Outlook is "TabDefault". The default tab depends on where the Outlook add-in is surfaced, as determined in the "extensions.ribbons.contexts" property. In the main Outlook window, it's the **Home** tab, in a message window, it's the **Message** tab, and in a meeting window, it's the **Meeting** tab. |
+|`tabs.label`| String | 64 characters | | Specifies the text displayed for the tab. Despite the maximum length of 64 characters, to correctly align the tab in the ribbon, we recommend you limit the label to 16 characters.|
|`tabs.position`| Object | | | Configures the position of the custom tab relative to other tabs on the ribbon.| |`tabs.position.builtinTabId`| String | 64 characters | ✔️ | Specifies the ID of the built-in tab that the custom tab should be positioned next to. For more information, see [find the IDs of controls and control groups](/office/dev/add-ins/design/built-in-button-integration#find-the-ids-of-controls-and-control-groups).| |`tabs.position.align`| String enum | | ✔️ | Defines the alignment of custom tab relative to the specified built-in tab. <br>Supported values: `after`, `before`| |`tabs.groups`| Array | | | Defines groups of controls on a ribbon tab on a non-mobile device. For mobile devices, see `tabs.customMobileRibbonGroups` below.| |`tabs.groups.id`| String |64 characters | | Specifies the ID for the tab group within the app. It must be different from any built-in group ID in the Microsoft 365 application and any other custom group.|
-|`tabs.groups.label`| String | 64 characters | | Specifies the text displayed for the group. |
+|`tabs.groups.label`| String | 64 characters | | Specifies the text displayed for the group. Despite the maximum length of 64 characters, to correctly align the tab in the ribbon, we recommend you limit the label to 16 characters.|
|`tabs.groups.icons`| Array | | | Specifies the icons displayed for the group. | |`tabs.groups.icons.size`| Number | |✔️| Specifies the size of the icon in pixels, enumerated as `16`,`20`,`24`,`32`,`40`,`48`,`64`,`80`. <br>Required image sizes: `16`, `32`, `80`. | |`tabs.groups.icons.url`| URL| | ✔️ | Specifies the absolute URL of the icon.|
The `extensions.ribbons` property provides the ability to add [add-in commands](
|`tabs.groups.controls.items.overriddenByRibbonApi`| Boolean | | | Specifies whether a group, button, menu, or menu item hidden on application and platform combinations, which support the API ([Office.ribbon.requestCreateControls](/javascript/api/office/office.ribbon#office-office-ribbon-requestcreatecontrols-member(1))) that installs custom contextual tabs on the ribbon. <br>Default value: `false`| |`tabs.groups.controls.type`| String | | ✔️ | Defines the control type. <br>Supported values: `button`, `menu`| |`tabs.groups.controls.builtinControlId`| String | 64 characters | ✔️ | Specifies the ID of an existing Microsoft 365 control. For more information, see [find the IDs of controls and control groups](/office/dev/add-ins/design/built-in-button-integration#find-the-ids-of-controls-and-control-groups).|
-|`tabs.groups.controls.label`| String | 64 characters | ✔️ | Specifies the text displayed for the control.|
+|`tabs.groups.controls.label`| String | 64 characters | ✔️ | Specifies the text displayed for the control. Despite the maximum length of 64 characters, to correctly align the tab in the ribbon, we recommend you limit the label to 16 characters.|
|`tabs.groups.controls.icons`| Array | | ✔️ | Defines the icons for the control. There must be at least three child objects; one each with `size` properties of `16`, `32`, and `80` pixels. | |`tabs.groups.controls.icons.size`| Number | | ✔️ | Specifies the size of the icon in pixels, enumerated as `16`,`20`,`24`,`32`,`40`,`48`,`64`,`80`. <br> Required image size: `16`, `32`, `80`| |`tabs.groups.controls.icons.url`| URL| | | Specifies the absolute URL to the icon.| |`tabs.groups.controls.supertip`| Object | | ✔️ | Configures a supertip for the control. | |`tabs.groups.controls.supertip.title`| String | 64 characters | ✔️ |Specifies the title text of the supertip.| |`tabs.groups.controls.supertip.description`| String | 128 characters | ✔️ | Specifies the description of the supertip.|
-|`tabs.groups.controls.actionId`| String | 64 characters | | Required if the control type is `button`. Do not use if the control type is `menu`. Specifies the ID of the action that is taken when a user selects the control. The `actionId` must match the `runtime.actions.id` property of an action in the `runtimes` object.|
+|`tabs.groups.controls.actionId`| String | 64 characters | | Required if the control type is `button`. Don't use if the control type is `menu`. Specifies the ID of the action that is taken when a user selects the control. The `actionId` must match the `runtime.actions.id` property of an action in the `runtimes` object.|
|`tabs.groups.controls.enabled`| Boolean | | | Indicates whether the control is initially enabled. <br>Default value: `true`| |`tabs.groups.controls.overriddenByRibbonApi`| Boolean | | | Specifies whether a group, button, menu, or menu item is hidden on application and platform combinations which support the API ([Office.ribbon.requestCreateControls](/javascript/api/office/office.ribbon#office-office-ribbon-requestcreatecontrols-member(1))) that installs custom contextual tabs on the ribbon. <br>Default value: `false`| |`tabs.groups.builtinGroupId`| String | 64 characters | | Specifies the ID of a built-in group. For more information, see [find the IDs of controls and control groups](/office/dev/add-ins/design/built-in-button-integration#find-the-ids-of-controls-and-control-groups).|
platform Manifest Schema https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema.md
Delegated permissions allow the app to access data on behalf of the signed-in us
**Optional** &ndash; Object
-The `extensions` property specifies Outlook Add-ins within an app manifest and simplify the distribution and acquisition across the Microsoft 365 ecosystem. Each app supports only one extension.
+The `extensions` property specifies Outlook Add-ins within an app manifest and simplifies the distribution and acquisition across the Microsoft 365 ecosystem. Each app supports only one extension.
|Name| Type| Maximum size | Required | Description| ||||||
The `extensions.ribbons` property provides the ability to add [add-in commands](
|`requirements.formFactors`| Array of enums | | | Identifies the form factors that support the add-in. <br>Supported values: `mobile`, `desktop`| |`tabs`| Array | 20 |✔️| Configures the custom tabs on the Microsoft 365 application ribbon. | |`tabs.id`| String | 64 characters | | Specifies the ID for the tab within the app.|
-|`tabs.builtinTabId`| String | 64 characters | | Specifies the ID of a built-in Office ribbon tab. The possible values vary by Office host application. Outlook add-ins are only supported and the allowed value for Outlook is "TabDefault". The default tab depends on where the Outlook add-in is surfaced, as determined in the "extensions.ribbons.contexts" property. In the main Outlook window, it is the **Home** tab, in a message window, it is the **Message** tab, and in a meeting window, it is the **Meeting** tab. |
-|`tabs.label`| String | 64 characters | | Specifies the text displayed for the tab.|
+|`tabs.builtinTabId`| String | 64 characters | | Specifies the ID of a built-in Office ribbon tab. The possible values vary by Office host application. Outlook add-ins are only supported and the allowed value for Outlook is "TabDefault". The default tab depends on where the Outlook add-in is surfaced, as determined in the "extensions.ribbons.contexts" property. In the main Outlook window, it's the **Home** tab, in a message window, it's the **Message** tab, and in a meeting window, it's the **Meeting** tab. |
+|`tabs.label`| String | 64 characters | | Specifies the text displayed for the tab. Despite the maximum length of 64 characters, to correctly align the tab in the ribbon, we recommend you limit the label to 16 characters.|
|`tabs.position`| Object | | | Configures the position of the custom tab relative to other tabs on the ribbon.| |`tabs.position.builtinTabId`| String | 64 characters | ✔️ | Specifies the ID of the built-in tab that the custom tab should be positioned next to. For more information, see [find the IDs of controls and control groups](/office/dev/add-ins/design/built-in-button-integration#find-the-ids-of-controls-and-control-groups).| |`tabs.position.align`| String enum | | ✔️ | Defines the alignment of custom tab relative to the specified built-in tab. <br>Supported values: `after`, `before`|
-|`tabs.groups`| Array | 10 | | Defines groups of controls on a ribbon tab on a non-mobile device. For mobile devices, see `tabs.customMobileRibbonGroups` below.|
+|`tabs.groups`| Array | 10 | | Defines groups of controls on a ribbon tab on a non-mobile device. For mobile devices, see `tabs.customMobileRibbonGroups`.|
|`tabs.groups.id`| String |64 characters | | Specifies the ID for the tab group within the app. It must be different from any built-in group ID in the Microsoft 365 application and any other custom group.|
-|`tabs.groups.label`| String | 64 characters | | Specifies the text displayed for the group. |
+|`tabs.groups.label`| String | 64 characters | | Specifies the text displayed for the group. Despite the maximum length of 64 characters, to correctly align the tab in the ribbon, we recommend you limit the label to 16 characters.|
|`tabs.groups.icons`| Array | 3 | | Specifies the icons displayed for the group. | |`tabs.groups.icons.size`| Number | |✔️| Specifies the size of the icon in pixels, enumerated as `16`,`20`,`24`,`32`,`40`,`48`,`64`,`80`. <br>Required image sizes: `16`, `32`, `80`. | |`tabs.groups.icons.url`| String | 2048 characters | ✔️| Specifies the absolute URL of the icon.|
The `extensions.ribbons` property provides the ability to add [add-in commands](
|`tabs.groups.controls.items.label`| String | 64 characters| ✔️ | Specifies the text displayed for the items. | |`tabs.groups.controls.items.icons`| Array | | | Configures the icons for the custom item.| |`tabs.groups.controls.items.icons.size`| Number | |✔️| Specifies the size of the icon in pixels, enumerated as `16`,`20`,`24`,`32`,`40`,`48`,`64`,`80`. <br>Required image sizes: `16`, `32`, `80`. |
-|`tabs.groups.controls.items.icons.url`| String | 2048 charcters | ✔️ | Specifies the absolute URL of the icon.|
+|`tabs.groups.controls.items.icons.url`| String | 2048 characters | ✔️ | Specifies the absolute URL of the icon.|
|`tabs.groups.controls.items.supertip`| | |✔️| Configures a supertip for the custom item. A supertip is a UI feature that displays a brief box of help information about a control when the cursor hovers over it. The box may contain multiple lines of text. | |`tabs.groups.controls.items.supertip.title`| String | 64 characters | ✔️ | Specifies the title text of the supertip.| |`tabs.groups.controls.items.supertip.description`| String | 250 characters | ✔️ | Specifies the description of the supertip.|
The `extensions.ribbons` property provides the ability to add [add-in commands](
|`tabs.groups.controls.items.overriddenByRibbonApi`| Boolean | | | Specifies whether a group, button, menu, or menu item hidden on application and platform combinations, which support the API ([Office.ribbon.requestCreateControls](/javascript/api/office/office.ribbon#office-office-ribbon-requestcreatecontrols-member(1))) that installs custom contextual tabs on the ribbon. <br>Default value: `false`| |`tabs.groups.controls.type`| String | | ✔️ | Defines the control type. <br>Supported values: `button`, `menu`| |`tabs.groups.controls.builtinControlId`| String | 64 characters | ✔️ | Specifies the ID of an existing Microsoft 365 control. For more information, see [find the IDs of controls and control groups](/office/dev/add-ins/design/built-in-button-integration#find-the-ids-of-controls-and-control-groups).|
-|`tabs.groups.controls.label`| String | 64 characters | ✔️ | Specifies the text displayed for the control.|
+|`tabs.groups.controls.label`| String | 64 characters | ✔️ | Specifies the text displayed for the control. Despite the maximum length of 64 characters, to correctly align the tab in the ribbon, we recommend you limit the label to 16 characters.|
|`tabs.groups.controls.icons`| Array | | ✔️ | Defines the icons for the control. There must be at least three child objects; one each with `size` properties of `16`, `32`, and `80` pixels. | |`tabs.groups.controls.icons.size`| Number | | ✔️ | Specifies the size of the icon in pixels, enumerated as `16`,`20`,`24`,`32`,`40`,`48`,`64`,`80`. <br> Required image size: `16`, `32`, `80`| |`tabs.groups.controls.icons.url`| String | 2048 characters | | Specifies the absolute URL to the icon.|
The `extensions.ribbons` property provides the ability to add [add-in commands](
|`tabs.groups.controls.enabled`| Boolean | | | Indicates whether the control is initially enabled. <br>Default value: `true`| |`tabs.groups.controls.overriddenByRibbonApi`| Boolean | | | Specifies whether a group, button, menu, or menu item is hidden on application and platform combinations, which support the API ([Office.ribbon.requestCreateControls](/javascript/api/office/office.ribbon#office-office-ribbon-requestcreatecontrols-member(1))) that installs custom contextual tabs on the ribbon. <br>Default value: `false`| |`tabs.groups.builtinGroupId`| String | 64 characters | | Specifies the ID of a built-in group. For more information, see [find the IDs of controls and control groups](/office/dev/add-ins/design/built-in-button-integration#find-the-ids-of-controls-and-control-groups).|
-|`tabs.customMobileRibbonGroups`| Array | 10 | | Defines groups of controls on the default tab of the ribbon on a mobile device. This array property can only be present on tab objects that have a `tabs.builtinTabId` property that is set to "DefaultTab". For non-mobile devices, see `tabs.groups` above.|
+|`tabs.customMobileRibbonGroups`| Array | 10 | | Defines groups of controls on the default tab of the ribbon on a mobile device. This array property can only be present on tab objects that have a `tabs.builtinTabId` property that is set to "DefaultTab". For non-mobile devices, see `tabs.groups`.|
|`tabs.customMobileRibbonGroups.id` | String | 250 characters | ✔️ | Specifies the ID of the group. It must be different from any built-in group ID in the Microsoft 365 application and any other custom group.| |`tabs.customMobileRibbonGroups.label` | String | 32 characters | ✔️ | Specifies the label on the group. | |`tabs.customMobileRibbonGroups.controls` | Array | 20 | ✔️ | Defines the controls in the group. Only mobile buttons are supported.|
platform Add How To Guides Vsc https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/add-how-to-guides-vsc.md
+
+ Title: Add How-to guides to Your Teams apps
+
+description: Learn to add How-to guides from Teams Toolkit in Visual Studio Code to configure tab, bot, message extension, Outlook Add-in capabilities.
+
+ms.localizationpriority: medium
+ Last updated : 11/29/2021++
+# Add How-to guides to Microsoft Teams app
+
+Microsoft Teams Toolkit project templates focus on getting started with an app that implements a single [app capability](~/concepts/design/app-structure.md). However, apps can have multiple capabilities. We've created a set of How-to guides with the steps needed to add different capabilities to a project created with Teams Toolkit.
+
+## How-to guides for adding capabilities
+
+|**Capability** | **How-to Guide** |
+|-|-|
+| Configure Tab Capability | [How to configure Tab capability within your Teams app](https://github.com/OfficeDev/TeamsFx/wiki/How-to-configure-Tab-capability-within-your-Teams-app) |
+| Configure Bot Capability | [How to configure Bot capability within your Teams app](https://github.com/OfficeDev/TeamsFx/wiki/How-to-configure-Bot-capability-within-your-Teams-app) |
+| Configure Message Extension Capability | [How to configure Message Extension capability within your Teams app](https://github.com/OfficeDev/TeamsFx/wiki/How-to-configure-Message-Extension-capability-within-your-Teams-app) |
+| Configure Outlook add-in Capability | [How to configure Outlook add-in capability within your Teams app](https://github.com/OfficeDev/TeamsFx/wiki/Configure-Outlook-Add-in-capability-within-your-Teams-app) |
+
+## Open the guides from Teams Toolkit
+
+* [Use Teams Toolkit pane](#use-teams-toolkit-pane)
+* [Use the Command Palette](#use-the-command-palette)
+
+### Use Teams Toolkit pane
+
+ 1. Open your app project in **Microsoft Visual Studio Code**.
+ 1. Select **Teams Toolkit** from the Visual Studio Code activity bar.
+ 1. Select **View How-to Guides** in the **DEVELOPMENT** section.
+
+ :::image type="content" source="~/assets/images/teams-toolkit-v2/manual/select-view-how-to-guides.png" alt-text="Screenshot shows the option to select View How-to Guides under Development.":::
+
+ 1. From the dropdown list that appears, select the capability you want to add to your app. You'll be redirected to the respective How-to Guide.
+
+ :::image type="content" source="~/assets/images/teams-toolkit-v2/manual/notification-add-capabilities_1.png" alt-text="Screenshot shows the capabilities listed.":::
+
+### Use the Command Palette
+
+ 1. Open your app project in **Visual Studio Code**.
+
+ 1. Select **View** > **Command Palette...** or **Ctrl+Shift+P**.
+
+ :::image type="content" source="../assets/images/teams-toolkit-v2/manual/add-capabilities-command-palette_1.png" alt-text="Screenshot shows the Command Palette option.":::
+
+ 1. Select **Teams: View How-to Guides**.
+
+ :::image type="content" source="~/assets/images/teams-toolkit-v2/manual/teams-add-features_1.png" alt-text="Screenshot shows option to add capabilities by using command palette.":::
+
+ 1. From the dropdown list that appears, select the capability you want to add to your app. You'll be redirected to the respective How-to Guide.
+
+ :::image type="content" source="~/assets/images/teams-toolkit-v2/manual/notification-add-capabilities_1.png" alt-text="Screenshot shows the capabilities list.":::
+
+## See also
+
+* [Walkthrough building an app that responds to chat commands](../sbs-gs-commandbot.yml).
+* [Walkthrough building an app that sends chat messages](../sbs-gs-notificationbot.yml).
+* [Walkthrough building an app with a workflow in chat](../sbs-gs-workflow-bot.yml)
+* [App manifest schema](../resources/schem)
platform Add Resource https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/add-resource.md
You can add cloud resources in the following ways:
* [Teams Toolkit Overview](teams-toolkit-fundamentals.md) * [Provision cloud resources](provision.md) * [Create a new Teams app](create-new-project.md)
-* [Add How-to guides to Teams app](add-How-to-guides-v5.md)
+* [Add How-to guides to Teams app](add-how-to-guides-vsc.md)
* [Deploy to the cloud](deploy.md)
platform Debug Local https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/debug-local.md
The configuration **Attach to Frontend** or **Launch App** launches Microsoft Ed
* [Teams Toolkit Overview](teams-toolkit-fundamentals.md) * [Introduction to Azure Functions](/azure/azure-functions/functions-overview) * [Use Teams Toolkit to provision cloud resources](provision.md)
-* [Add How-to guides to Teams app](add-How-to-guides-v5.md)
+* [Add How-to guides to Teams app](add-how-to-guides-vsc.md)
* [Deploy to the cloud](deploy.md)
-* [Manage multiple environments in Teams Toolkit](TeamsFx-multi-env.md)
+* [Manage multiple environments in Teams Toolkit](teamsfx-multi-env.md)
platform Deploy https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/deploy.md
This action upload and deploys generated sppkg to SharePoint app catalog. You ca
* [Teams Toolkit Overview](teams-toolkit-fundamentals.md) * [Create and deploy an Azure cloud service](/azure/cloud-services/cloud-services-how-to-create-deploy-portal)
-* [Add How-to guides to Teams app](add-How-to-guides-v5.md)
+* [Add How-to guides to Teams app](add-how-to-guides-vsc.md)
* [Add cloud resources to Teams app](add-resource.md) * [Provision cloud resources](provision.md) * [Edit app manifest](TeamsFx-preview-and-customize-app-manifest.md)
platform Faq https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/faq.md
Title: FAQ
+ Title: FAQ Teams Toolkit in Visual Studio Code
-description: In this article, check the FAQs on provision using Teams Toolkit in Visual Studio, troubleshoot errors, switch Azure subscription, and change resource group.
+description: In this article, check the FAQs on provision using Teams Toolkit in Visual Studio Code, troubleshoot errors, switch Azure subscription, and change resource group.
ms.localizationpriority: medium Last updated 11/29/2021
-# FAQ for Teams Toolkit
+# FAQ for Teams Toolkit in Visual Studio Code
Following are the FAQs for [Provision cloud resources using Teams Toolkit](provision.md):
platform Add Single Sign On Vs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/add-single-sign-on-vs.md
Title: Add single sign-on to your Teams app
+ Title: Enable SSO for Teams App
description: In this module, learn how to add single sign-on (SSO) of Teams Toolkit, enable SSO support, update your application to use SSO.
Teams Toolkit helps you generate the authentication files in **TeamsFx-Auth** fo
## See also * [Teams Toolkit Overview](teams-toolkit-fundamentals-vs.md)
-* [Prerequisites for creating your Teams app](tools-prerequisites-v4.md)
+* [Prerequisites for creating your Teams app](tools-prerequisites-vs.md)
* [Enable SSO for tab app](~/tabs/how-to/authentication/tab-sso-overview.md) * [Enable SSO for your bot and message extension](~/bots/how-to/authentication/bot-sso-overview.md)
-* [Prepare Accounts to build your Teams app](tools-prerequisites-v4.md#accounts-to-build-your-teams-app)
+* [Prepare accounts to build your Teams app](tools-prerequisites-vs.md#accounts-to-build-your-teams-app)
platform Build Environments Vs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/build-environments-vs.md
+
+ Title: Prepare to Build App with Visual Studio
+
+description: Learn about build environments such as C# and Blazor of Teams Toolkit in Visual Studio. Toolkit integrates Azure Functions capabilities for building apps.
+
+ms.localizationpriority: medium
+ Last updated : 11/29/2021++
+# Prepare to build apps using Teams Toolkit in Visual Studio
+
+Microsoft Teams Toolkit supports different build environments for creating apps. It helps to integrate Microsoft Azure Functions capabilities and cloud services in the Microsoft Teams app that you've built.
++
+## Build environments
+
+Teams Toolkit in Microsoft Visual Studio offers a set of environments to build your Teams app in C# using Blazor framework.
+
+### Create your Teams app using C# and Blazor
+
+Teams Toolkit in Visual Studio allows you to create a Teams app using C# using the Blazor framework. You can create tab app, bot app, and message extension app in a C# build environment.
+
+## Support for Azure Functions
+
+You can use Teams Toolkit to integrate [Azure Functions](/azure/azure-functions/functions-overview) capabilities while building apps. You can focus on the pieces of code that matter, and Azure Functions handles the rest.
+Azure Functions provides "compute on-demand" in two significant ways:
+
+1. Allows implementing system's logic into your readily available blocks of code. These blocks are called functions.
+1. Meets the requirement with as many resources and function instances as necessary as the requests increase.
+
+Azure Functions integrates with an array of [cloud services](deploy-vs.md#deploy-microsoft-teams-app-to-the-cloud-using-microsoft-visual-studio) to provide feature-rich implementations. The following are the common scenarios for Azure Functions:
+
+* Building a web API
+* Processing to database changes
+* Processing IoT data streams
+* Managing message queues
+
+## See also
+
+* [Teams Toolkit Visual Studio Overview](teams-toolkit-fundamentals-vs.md)
+* [Developer Portal for Teams](~/concepts/build-and-test/teams-developer-portal.md)
+* [Create a new Teams project](../create-new-project.md)
+* [Build your first Teams app](~/get-started/get-started-overview.md#build-your-first-teams-app)
platform Create New Project Vs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/create-new-project-vs.md
You can see Teams app templates already populated in Teams Toolkit for various T
* [Teams Toolkit Overview](teams-toolkit-fundamentals-vs.md) * [Build a Teams app with Blazor](~/sbs-gs-blazorupdate.yml) * [Build a Teams app with C# or .NET](~/sbs-gs-csharp.yml)
-* [Prerequisites for all types of environment and create your Teams app](tools-prerequisites-v4.md)
-* [Prepare to build apps using Microsoft Teams Toolkit](build-environments-v4.md)
+* [Prerequisites for all types of environment and create your Teams app](tools-prerequisites-vs.md)
+* [Prepare to build apps using Microsoft Teams Toolkit](build-environments-vs.md)
* [Provision cloud resources using Visual Studio](provision-vs.md)
-* [Deploy Teams app to the cloud using Visual Studio][Deploy Microsoft Teams app to the cloud using Microsoft Visual Studio](deploy-vs.md)
+* [Deploy Teams app to the cloud using Visual Studio](deploy-vs.md)
platform Debug Background Process Vs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/debug-background-process-vs.md
+
+ Title: Debug Background Processes for Apps
+
+description: Learn how Microsoft Visual Studio and Teams Toolkit work during local debug process. Learn how to register and configure your Teams app in Teams Toolkit.
+
+ms.localizationpriority: high
+ Last updated : 03/03/2022++
+# Debug background processes using Microsoft Visual Studio
+
+Visual Studio uses the `launchSettings.json` file to store configuration information that describes how to start an ASP.NET Core application. The file holds essential application settings used solely during development on the local machine. You can find it in the Properties folder of your project. It specifies details like the command to run, the browser's URL, and the required environment variables to be set.
+
+After selecting **Prepare Teams App Dependencies**, Microsoft Teams Toolkit updates the launchUrl using the real Microsoft Teams app ID, Teams tenant ID, and Microsoft 365 account.
+
+## Start local tunnel
+
+For bot and message extension, you can use Dev Tunnel. It starts a local tunnel service to make the bot messaging endpoint public. For more information, see [Dev tunnels in Visual Studio](/aspnet/core/test/dev-tunnels?view=aspnetcore&preserve-view=true).
+
+In the debug dropdown, select **Dev Tunnels (no active tunnel)** > **Create a Tunnel** or select an existing public dev tunnel.
+
+ :::image type="content" source="../../assets/images/teams-toolkit-v2/teams-toolkit-vs/vs-create-devtunnel.png" alt-text="Screenshoot shows the steps to create a tunnel.":::
+
+The tunnel creation dialog opens.
+
+ :::image type="content" source="../../assets/images/teams-toolkit-v2/teams-toolkit-vs/vs-create-devtunnel-detail.png" alt-text="Screenshot shows how to create a dev tunnel.":::
+
+* Select the **Account** to use to create the tunnel. Azure, Microsoft Account (MSA), and GitHub are the account types that are supported.
+* Enter a **Name** for the tunnel.
+* Select the **Tunnel Type**, Persistent or Temporary.
+* From the dropdown, select the required public authentication in **Access**.
+* Select **OK**. Visual Studio displays confirmation of tunnel creation.
+
+The tunnel you create is under **Dev Tunnels(MyPublicDevTunnel)** > **MyPublicDevTunnel**.
+
+ :::image type="content" source="../../assets/images/teams-toolkit-v2/teams-toolkit-vs/vs-select-devtunnel.png" alt-text="Screenshot shows how to select dev tunnel.":::
+
+## Create the debug resources
+
+Teams Toolkit executes lifecycle `provision` defined in the `teamsapp.local.yml` file to create necessary resources for debugging Teams apps. For more information, see [Provision task](https://aka.ms/teamsfx-tasks/provision) and [available actions](https://aka.ms/teamsfx-actions).
+
+## Take a tour of your app source code
+
+You can view the project folders and files under **Explorer** in Visual Studio after debugging. The following table lists the files related to debugging:
+
+| Folder name| Contents| Description |
+| | | |
+| `teamsapp.local.yml` | The main Teams Toolkit project file for debugging. | This file defines the lifecycles and actions required for debugging. |
+| `env/.env.local` | Environment variables file for Teams Toolkit project. | The values of each environment variable are consumed or generated during preparing Teams app dependencies. |
+| `appsettings.Development.json` | Environment variables file for the app code. | The values of each environment variable are generated during preparing Teams app dependencies. |
+
+## See also
+
+* [Teams Toolkit Visual Studio Overview](teams-toolkit-fundamentals-vs.md)
+* [Debug your Teams app locally using Visual Studio](debug-local-vs.md)
+* [Provision cloud resources in Visual Studio](provision-vs.md)
+* [Deploy Teams app to the cloud VS](deploy-vs.md)
+* [Customize app manifest in Teams Toolkit](TeamsFx-preview-and-customize-app-manifest-vs.md)
platform Debug Local Vs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/debug-local-vs.md
To debug your app after you create a project, perform the following steps:
## Next step > [!div class="nextstepaction"]
-> [Debug background process](debug-background-process-v4.md)
+> [Debug background process](debug-background-process-vs.md)
## See also
To debug your app after you create a project, perform the following steps:
* [Introduction to Azure Functions](/azure/azure-functions/functions-overview) * [Use Teams Toolkit to provision cloud resources](provision-vs.md) * [Deploy to the cloud](deploy-vs.md)
-* [Manage multiple environments in Teams Toolkit](TeamsFx-multi-env-v4.md)
+* [Manage multiple environments in Teams Toolkit](teamsfx-multi-env-v4.md)
platform Debug Overview Vs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/debug-overview-vs.md
You can launch Teams app as a web app instead of running the app in Teams client
## See also * [Teams Toolkit Overview](teams-toolkit-fundamentals-vs.md)
-* [Debug background process](debug-background-process-v4.md)
+* [Debug background process](debug-background-process-vs.md)
* [Use Teams Toolkit to provision cloud resources](provision-vs.md) * [Deploy to the cloud](deploy-vs.md) * [Preview and customize Teams app manifest](TeamsFx-preview-and-customize-app-manifest-vs.md)
platform Explore Teams Toolkit Vs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/explore-Teams-Toolkit-vs.md
After you've created your Teams app project, you can use the following options t
* [Teams Toolkit Overview](teams-toolkit-fundamentals-vs.md) * [Create a new Teams app using Teams Toolkit](create-new-project-vs.md) * [App manifest schema](~/resources/schem)
-* [Prepare to build apps using Teams Toolkit](build-environments-v4.md)
+* [Prepare to build apps using Teams Toolkit](build-environments-vs.md)
platform Faq Vs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/faq-vs.md
+
+ Title: FAQ for Teams Toolkit in Visual Studio
+
+description: Learn how to troubleshoot errors with Teams Toolkit in Visual Studio Code, switch Azure subscription, change resource group, and provision SharePoint based app.
+
+ms.localizationpriority: medium
+ Last updated : 11/29/2021++
+# FAQ for Teams Toolkit
++
+You can see the FAQ for all the sections of Teams Toolkit for Visual Studio Code.
+
+FAQ for [Provision cloud resources using Teams Toolkit](../provision.md)
+
+<br>
+
+<details>
+
+<summary><b>How to troubleshoot?</b></summary>
+
+If you get errors with Teams Toolkit in Visual Studio Code, you can select **Get Help** on the error notification to go to the related document. If you're using TeamsFx CLI, a hyperlink appears at the end of the error message that directs you to the help doc.
+
+<br>
+
+</details>
+
+<details>
+
+<summary><b>How can I switch to another Azure subscription while provisioning?</b></summary>
+
+1. Switch subscription in current account or log out and select a new subscription.
+2. If you have already provisioned current environment, you need to create a new environment and perform provision because ARM doesn't support moving resources.
+3. If you didn't provision current environment, you can trigger provision directly.
+
+<br>
+
+</details>
+
+<details>
+
+<summary><b>How can I change resource group while provisioning?</b></summary>
+
+Before provision, the tool asks you if you want to create a new resource group or use an existing one. You can provide a new resource group name or choose an existing one in this step.
+
+<br>
+
+</details>
+
+<details>
+
+<summary><b>How can I provision SharePoint-based app?</b></summary>
+
+You can follow [provision SharePoint-based app](/microsoftteams/platform/sbs-gs-spfx?tabs=vscode%2Cviscode&tutorial-step=4).
+
+> [!NOTE]
+> Teams app built with SharePoint framework and Teams Toolkit doesn't have direct integration with Azure, the contents in the doc doesn't apply to SPFx-based apps.
+
+<br>
+
+</details>
platform Install Teams Toolkit Vs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/install-Teams-Toolkit-vs.md
The Visual Studio 2022 window appears.
## See also * [Teams Toolkit Overview](teams-toolkit-fundamentals-vs.md)
-* [Prepare to build apps](build-environments-v4.md)
+* [Prepare to build apps](build-environments-vs.md)
* [Provision cloud resources](provision-vs.md) * [Deploy Teams app to the cloud](deploy-vs.md)
platform Tools Prerequisites Vs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/toolkit-v4/tools-prerequisites-vs.md
+
+ Title: Prerequisites to Create Teams App in VS
+
+description: Learn about the tools required to build a Teams app in Visual Studio, prepare accounts, and verify and enable custom app upload in admin center.
+
+ms.localizationpriority: high
+ Last updated : 02/21/2024+
+# Prerequisites for creating your Teams app using Visual Studio
+
+Before you create your Microsoft Teams app project, ensure that the prerequisites are in place. You must:
+
+* [Install required tools to build your Teams app](#install-required-tools-to-build-your-teams-app)
+* [Prepare Accounts to build your Teams app](#accounts-to-build-your-teams-app)
+* [Verify custom app upload permission](#verify-custom-app-upload-permission)
+
+## Install required tools to build your Teams app
+
+Ensure that the following tools are installed on the device where youΓÇÖll create your app project before you start building your Teams app:
+
+| &nbsp; | Tools | Purpose | For environment type |
+| | | | |
+| **Required** | &nbsp; | &nbsp; | &nbsp; |
+| &nbsp; | Teams Toolkit| A Microsoft Visual Studio extension that creates a project scaffolding for your app. Use the latest version. | C# and Blazor |
+| &nbsp; | [Microsoft Teams](https://www.microsoft.com/microsoft-teams/download-app) | Collaborate with everyone you work with through apps for chat, meetings, and call - all in one place.| C# and Blazor |
+| &nbsp; | [Microsoft&nbsp;Edge](https://www.microsoft.com/edge) (recommended) or [Google Chrome](https://www.google.com/chrome/) | A browser with developer tools. | C# and Blazor |
+| **Optional** | &nbsp; | &nbsp; | &nbsp; |
+| &nbsp; | [Azure development workload for Visual Studio](/dotnet/azure/configure-visual-studio) and [Azure CLI](/cli/azure/install-azure-cli) | Access stored data or deploy a cloud-based back-end for your Teams app in Azure. | C# and Blazor |
+| &nbsp; | [Microsoft Graph Explorer](https://developer.microsoft.com/graph/graph-explorer) | A browser-based tool that lets you run a query from Microsoft Graph data. | C# and Blazor |
+| &nbsp; | [Developer Portal for Teams](https://dev.teams.microsoft.com/) | A web-based portal to configure, manage, and distribute your Teams app including to your organization or the Microsoft Teams Store.| C# and Blazor |
+
+It's recommended that you bookmark the Microsoft Graph Explorer to learn about Microsoft Graph services. This browser-based tool allows you to run a query and access the Microsoft Graph API.
+
+## Accounts to build your Teams app
+
+Ensure that you have the following accounts before you start building your Teams app:
+
+| Accounts | For using| For environment type|
+| | | |
+|[Microsoft 365 account with a valid subscription](#microsoft-365-developer-program)|Teams developer account while developing an app.| JavaScript, TypeScript, SPFx, and C# or Blazor. |
+|[Azure account](#azure-account)|Back-end resources on Azure.| JavaScript, TypeScript, SPFx, and C# or Blazor. |
+
+### Microsoft 365 developer program
+
+> [!NOTE]
+> To build Teams apps, you must have a work or school [Microsoft 365 account](#microsoft-365-developer-program). Microsoft 365 personal account can't be used.
+
+If you have a Visual Studio Enterprise or Professional subscription, both programs include a free Microsoft 365 [developer subscription](https://aka.ms/MyVisualStudioBenefits). It's active as long as your Visual Studio subscription is active. For more information, see [Microsoft 365 developer subscription](https://developer.microsoft.com/microsoft-365/dev-program).
+
+If you don't have any Microsoft 365 tenant, you might qualify for a Microsoft 365 E5 developer subscription through the [Microsoft 365 Developer Program](https://aka.ms/m365devprogram); for details, see the [FAQ](/office/developer-program/microsoft-365-developer-program-faq#who-qualifies-for-a-microsoft-365-e5-developer-subscription-). Alternatively, you can sign up for a [1-month free trial](https://www.microsoft.com/microsoft-365/try) or [purchase a Microsoft 365 plan](https://www.microsoft.com/microsoft-365/business/compare-all-microsoft-365-business-products-g).
+
+You can sign up for the developer program using one of the following account types:
+
+* **Microsoft account for personal use**
+
+ :::row:::
+
+ :::column span="3":::
+
+ The Microsoft account provides access to the Microsoft products and cloud services, such as Outlook, Messenger, OneDrive, MSN, Xbox Live, or Microsoft 365.
+
+ Sign up for an Outlook.com mailbox to create a Microsoft 365 account. Use it to access consumer-related Microsoft cloud services or Azure.
+
+ :::column-end:::
+ :::column span="1":::
+ :::image type="content" source="images/personal-account-icon-v4.png" alt-text="personal account.":::
+ :::column-end:::
+
+ :::row-end:::
+
+* **Microsoft work account for business**
+
+ :::row:::
+
+ :::column span="3":::
+
+ This account provides access to all small, medium, and enterprise business-level Microsoft cloud services. The services include Azure, Microsoft Intune, and Microsoft 365.
+
+ When you sign up to one of these services as an organization, a cloud-based directory is automatically provisioned in Microsoft Entra ID to represent your organization.
+
+ :::column-end:::
+ :::column span="1":::
+ :::image type="content" source="images/work-account-icon-v4.png" alt-text="work account."::::::
+ :::column-end:::
+
+ :::row-end:::
+
+#### Create a free Microsoft 365 developer account
+
+To create a free Microsoft 365 developer account:
+
+1. Go to the [Microsoft 365 developer program](https://developer.microsoft.com/microsoft-365/dev-program).
+1. Select **Join Now**.
+1. Set up your administrator account subscription.
+
+ After the completion of the subscription, the following information appears:
+
+ :::image type="content" source="images/m365-account_1-v4.png" alt-text="M365 Account":::
+
+### Azure account
+
+An Azure account allows you to host a Teams app or the back-end resources for your Teams app to Azure. You can do this using Teams Toolkit in Visual Studio. You must have an Azure subscription in the following scenarios:
+
+* If you already have an existing app on a different cloud provider other than Azure, and you want to integrate the app on Teams platform.
+* If you want to host the back-end resources for your app using another cloud provider, or on your own servers if they're available in the public domain.
+
+> [!NOTE]
+> You can use Azure account to provision Azure resource to host your Teams app. You can [create a free account](https://azure.microsoft.com/free/) in case you don't have any. If you don't use Teams Toolkit to provision and deploy, Azure account isn't required.
+
+## Verify custom app upload permission
+
+After creating the app, you must load your app in Teams without distributing it. This process is known as custom app upload. Sign in to your Microsoft 365 account to view this option.
+
+You can verify if the custom app upload permission is enabled using Teams client.
+
+<details>
+<summary><b>Verify custom app upload permission using Teams client</b></summary>
+
+1. In the Teams client, select **Apps** > **Manage your apps** > **Upload an app**.
+
+ :::image type="content" source="../../assets/images/teams-toolkit-v2/teams-toolkit-vs/upload-app.png" alt-text="Screenshot shows the option to select upload an app in Teams manage your apps.":::
+
+1. Check if you can see the option **Upload a custom app** as you can see in the following image:
+
+ :::image type="content" source="../../assets/images/teams-toolkit-v2/teams-toolkit-vs/upload-custom-app.png" alt-text="Screenshot shows the option to select upload a custom apps.":::
+
+</details>
+
+### Enable custom app upload using admin center
+
+If custom app upload option isnΓÇÖt visible in Teams Toolkit extension in Visual Studio Code or if the option to upload a custom app isnΓÇÖt available in Teams, it indicates that you don't have the required permission for custom app upload.
+
+You must enable custom app upload for your app in Teams:
+
+* If you're a tenant admin, enable the custom app upload setting for your tenant or organization in the Teams admin center.
+* If you aren't a tenant admin, contact your tenant admin to enable custom app upload.
+
+If you have admin rights, you can enable custom app upload:
+
+ 1. Sign in to [Microsoft 365 admin center](https://admin.microsoft.com/Adminportal/Home?source=applauncher#/homepage#/) with your admin credentials.
+
+ 1. Select the :::image type="icon" source="images/showall icon-v4.png" border="false":::icon > **Teams**.
+
+ :::image type="content" source="../../assets/images/teams-toolkit-v2/teams-toolkit-vs/m365-admin-center.png" alt-text="Screenshot shows the option to select Teams under Admin centers.":::
+
+ > [!Note]
+ > It can take up to 24 hours for the Teams option to appear. You can [upload your custom app to a Teams environment](/microsoftteams/upload-custom-apps) for testing and validation.
+
+ 1. Sign in to Microsoft Teams admin center with your admin credentials.
+ 1. Select the :::image type="icon" source="images/showall icon-v4.png" border="false"::: icon > **Teams apps** > **Setup policies**.
+
+ :::image type="content" source="../../assets/images/teams-toolkit-v2/teams-toolkit-vs/m365-admin-setup-policies.png" alt-text="Screenshot shows the option to select setup policies.":::
+
+ 1. Select **Global (Org-wide default)**.
+
+ :::image type="content" source="images/select-manage-policies_1-v4.png" alt-text="Select Manage Policies":::
+
+ 1. Turn on the **Upload custom apps** toggle.
+
+ :::image type="content" source="images/Upload-custom-apps_1-v4.png" alt-text="Upload Custom Apps":::
+
+ 5. Select **Save**.
+
+ > [!Note]
+ > It can take up to 24 hours for custom app upload to become active. In the meantime, you can use **upload for your tenant** to test your app. To upload the .zip package file of the app, see [upload custom apps](/microsoftteams/teams-app-setup-policies).
+
+ Ensure that you have the custom app upload permission using the steps mentioned in [verify custom app upload permission using Visual Studio Code or Teams client](#verify-custom-app-upload-permission).
+
+</details>
+
+## See also
+
+* [Teams Toolkit Visual Studio Overview](teams-toolkit-fundamentals-vs.md)
+* [Manage custom app policies and settings in Teams](/microsoftteams/teams-custom-app-policies-and-settings)
+* [Manage app setup policies in Teams](/microsoftteams/teams-app-setup-policies)
+* [Provision cloud resources in Visual Studio](provision-vs.md)
+* [Deploy Teams app to the cloud VS](deploy-vs.md)