Updates from: 03/18/2023 02:22:37
Service Microsoft Docs article Related commit history on GitHub Change details
platform Bot Sso Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/authentication/bot-sso-overview.md
This section describes the tasks involved in implementing SSO for a Teams bot or
1. **Configure app with Azure AD**: Create an Azure AD app to generate an app ID and application ID URI. For generating an access token, you configure scopes and authorize trusted client applications. The configuration required in Azure AD for enabling SSO in a bot and message extension apps is the same. Create a bot resource and configure it's client secret, messaging endpoint, and OAuth connection to enable SSO. 1. **Add code**: Add the code to handle access token to send this token to your app's server code in the Authorization header, and to validate the access token when it's received. The code required to enable SSO in a bot app is different from code required for a message extension app. - > [!NOTE] > This section allows you to select the app for which you want to add code for enabling SSO.
platform Command Bot In Teams https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/command-bot-in-teams.md
If you're responding to a command that needs to access Microsoft Graph data of a
### Connect to existing APIs
-If you don't have the required SDK, and need to invoke external APIs in your code. The `Teams: Connect to an API` command in Microsoft Visual Studio Code Teams Toolkit extension, or `teamsfx add api-connection` command in TeamsFx CLI can be used to bootstrap code to call target APIs. For more information, see [connect to existing API](../../../toolkit/add-API-connection.md#steps-to-connect-to-api).
+If you don't have the required SDK, and need to invoke external APIs in your code. The `Teams: Connect to an API` command in Microsoft Visual Studio Code Teams Toolkit extension, or `teamsfx add api-connection` command in TeamsFx CLI can be used to bootstrap code to call target APIs. For more information, see [configure API connection](../../../toolkit/add-API-connection.md#configure-api-connection).
## FAQ+ <br> <details>
platform Conversation Messages https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/conversation-messages.md
async def on_members_added_activity(
```
+# [HTTP](#tab/http)
+
+```http
+POST {Service URL of your bot}/v3/conversations
+```
+
+```json
+{
+ "bot": {
+ "id": "{{botID}}",
+ "name": "{{botName}}"
+ },
+ "members": [
+ {
+ "id": "{{memberID}}"
+ }
+ ],
+ "channelData": {
+ "tenant": {
+ "id": "{{tenantID}}"
+ }
+ }
+}
+```
+ > [!NOTE]
To get an edit or undelete message event notification in a bot, you can override
The following is an example of an edit message event notification when a sent message is edited:
-# [C#](#tab/csharp3)
+# [C#](#tab/dotnet3)
```csharp
async onTeamsMessageEdit(context) {
```
+# [HTTP](#tab/http1)
+
+```http
+PUT {Service URL of your bot}/v3/conversations/{conversationId}/activities/{activityId}
+```
+
+```json
+{
+ "type": "message",
+ "text": "This message has been updated"
+}
+```
+ The following is an example of an undelete message event notification when a deleted message is restored:
-# [C#](#tab/csharp4)
+# [C#](#tab/dotnet4)
```csharp
async onTeamsMessageUndelete(context) {
```
+# [HTTP](#tab/http2)
+
+```http
+PUT {Service URL of your bot}/v3/conversations/{conversationId}/activities/{activityId}
+```
+
+```json
+{
+ "type": "message",
+ "text": "This message has been updated"
+}
+```
+ ## Soft delete message
To get a soft delete message event notification in a bot, you can override the `
The following is an example of a soft delete message event notification when a message is soft deleted:
-# [C#](#tab/csharp5)
+# [C#](#tab/dotnet5)
```csharp
platform Notification Bot In Teams https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/notification-bot-in-teams.md
There can be more authentication or authorization solutions for an API, you can
## Connect to existing APIs
-If you don't have the required SDK, and want to invoke external APIs in your code. The `Teams: Connect to an API` command in Microsoft Visual Studio Code Teams Toolkit extension, or `teamsfx add api-connection` command in TeamsFx CLI can be used to bootstrap code to call target APIs. For more information, see [connect to existing API](../../../toolkit/add-API-connection.md#steps-to-connect-to-api).
+If you don't have the required SDK, and want to invoke external APIs in your code. The `Teams: Connect to an API` command in Microsoft Visual Studio Code Teams Toolkit extension, or `teamsfx add api-connection` command in TeamsFx CLI can be used to bootstrap code to call target APIs. For more information, see [configure API connection](../../../toolkit/add-API-connection.md#configure-api-connection).
### Teams bot application or Teams Incoming Webhook
platform Send Proactive Messages https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/send-proactive-messages.md
To send a proactive message to a user, a group chat, or a team, your bot must ha
You can [proactively install your app using Microsoft Graph](#proactively-install-your-app-using-graph) in a team, if necessary, or use a [custom app policy](/microsoftteams/teams-custom-app-policies-and-settings) to install an app in your teams and for organization's users. For certain scenarios, you must [proactively install your app using Graph](#proactively-install-your-app-using-graph). For a user to receive proactive messages, install the app for the user or make the user a part of a team in which the app is installed.
-Sending a proactive message is different from sending a regular message. There's no active `turnContext` to use for a reply. You must create the conversation before sending the message. For example, a new one-to-one chat or a new conversation thread in a channel. You can't create a new group chat or a new channel in a team with proactive messaging.
+Sending a proactive message is different from sending a regular message. There's no active `turnContext` to use for a reply. You must create the conversation before sending the message. For example, a new one-on-one chat or a new conversation thread in a channel. You can't create a new group chat or a new channel in a team with proactive messaging.
To send a proactive message, follow these steps:
To send a proactive message, follow these steps:
1. [Get the conversation ID](#get-the-conversation-id). 1. [Send the message](#send-the-message).
-The code snippets in the [samples](#samples) section are to create a one-to-one conversation. For links to samples for both one-to-one conversations and group or channels messages, see [code sample](#code-sample). To use proactive messages effectively, see [best practices for proactive messaging](#best-practices-for-proactive-messaging).
+The code snippets in the [samples](#samples) section are to create a one-on-one conversation. For links to samples for both one-on-one conversations and group or channels messages, see [code sample](#code-sample). To use proactive messages effectively, see [best practices for proactive messaging](#best-practices-for-proactive-messaging).
## Get the user ID, team ID, or channel ID
You can only install apps that are in your organizational app catalog or the Tea
See [install apps for users](/graph/api/userteamwork-post-installedapps) in the Graph documentation and [proactive bot installation and messaging in Teams with Graph](../../../graph-api/proactive-bots-and-messages/graph-proactive-bots-and-messages.md). There's also a [Microsoft .NET framework sample](https://github.com/microsoftgraph/contoso-airlines-teams-sample/blob/283523d45f5ce416111dfc34b8e49728b5012739/project/Models/GraphService.cs#L176) on the GitHub platform.
+### Examples
+
+Ensure that you authenticate and have a [bearer token](/azure/bot-service/rest-api/bot-framework-rest-connector-authentication?view=azure-bot-service-4.0&tabs=multitenant&preserve-view=true) before creating a new conversation using the REST API. The following are REST API to create a conversation in different contexts:
+
+* [REST API to create a conversation in a one-on-one chat](../../../resources/bot-v3/bot-conversations/bots-conv-proactive.md#examples).
+* [REST API to create a conversation in a channel](../../../resources/bot-v3/bot-conversations/bots-conv-proactive.md#examples-for-creating-a-channel-conversation).
+* REST API to Update message in conversation: To update an existing activity within a conversation, include the conversationId and activityId in the request endpoint. To complete this scenario, you must cache the activity ID returned by the original post call.
+
+ ```http
+ PUT {Service URL of your bot}/v3/conversations/{conversationId}/activities/{activityId}
+ ```
+
+ ```json
+
+ {
+ "type": "message",
+ "text": "This message has been updated"
+ }
+ ```
+
+ To update an existing activity within a conversation, include the `conversationId` and `activityId` in the request endpoint. To complete this scenario, you must cache the `activity ID` returned by the original post call.
+ If the call succeeds, the API returns with the following response object.
+
+ ```json
+ {
+ "id": "{{activityID}}"
+ }
+ ```
+ ## Samples The following code shows how to send proactive messages:
Example of a code snippet to demonstrate creating conversation reference.
``` # [TypeScript](#tab/typescript)+ * [SDK reference](/javascript/api/botbuilder-core/turncontext?view=botbuilder-ts-latest#botbuilder-core-turncontext-getconversationreference&preserve-view=true) * [Sample code reference](https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/graph-proactive-installation/nodejs/bots/proactiveBot.js#L59)
async messageAllMembersAsync(context) {
``` # [Python](#tab/python)+ * [SDK reference](/python/api/botbuilder-core/botbuilder.core.botframeworkadapter?view=botbuilder-py-latest#botbuilder-core-botframeworkadapter-create-conversation&preserve-view=true) * [Sample code reference](https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/bot-conversation/python/bots/teams_conversation_bot.py#L200)
The following table provides a simple code sample that incorporates basic conver
| **Sample Name** | **Description** | **.NET** | **Node.js** | **Python** | ||--|--|-|--|
-| Teams Conversation Basics | Demonstrates basics of conversations in Teams, including sending one-to-one proactive messages.| [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-conversation/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-conversation/nodejs) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-conversation/python) |
+| Teams Conversation Basics | Demonstrates basics of conversations in Teams, including sending one-on-one proactive messages.| [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-conversation/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-conversation/nodejs) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-conversation/python) |
| Start new thread in a channel | Demonstrates creating a new thread in a channel. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-initiate-thread-in-channel/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-initiate-thread-in-channel/nodejs) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-initiate-thread-in-channel/python) | | Proactive installation of app and sending proactive notifications | This sample shows how you can use proactive installation of app for users and send proactive notifications by calling Microsoft Graph APIs. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/graph-proactive-installation/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/graph-proactive-installation/nodejs) | NA | | Proactive Messaging | This is a sample that shows how to save user's conversation reference information to send proactive reminder message using Bots. | NA | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-proactive-messaging-teamsfx) | NA |
platform Extend M365 Teams Message Extension https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/extend-m365-teams-message-extension.md
Title: Extend a Teams message extension across Microsoft 365 description: Learn how to update your search-based message extension to run in Outlook and add Microsoft 365 channel for your bot. Previously updated : 10/10/2022 Last updated : 01/31/2023 ms.localizationpriority: high
The process to update your search-based Teams message extension involves the fol
> [!div class="checklist"] > > * Update your app manifest.
-> * Add Microsoft 365 Extensions channel for your bot.
+> * Add the Microsoft 365 Extensions channel for your bot.
> * Sideload your updated app in Teams. The rest of this guide walks you through these steps and shows how to preview your message extension in Outlook for Windows desktop and web.
Alternately, you can use the ready-made Outlook-enabled app in the following sec
To start with a [sample message extension](https://github.com/OfficeDev/TeamsFx-Samples/tree/ga/NPM-search-connector-M365) that's already enabled to run in Outlook, use Teams Toolkit extension for Visual Studio Code.
-1. From Visual Studio Code, open the command palette (`Ctrl+Shift+P`), type `Teams: Create a new Teams app`.
+1. From Visual Studio Code, open the command palette (`Ctrl+Shift+P`), type `Teams: Create a new app`.
1. Select **Create a new Teams app** option.
-1. Select **Search-based message extension** to download sample code for a Teams message extension using the latest Teams app manifest (version `1.13`).
+1. Select **Search-based message extension** to download the sample code for a Teams message extension using the latest Teams app manifest. For more information, see [Teams developer manifest](../resources/schem).
:::image type="content" source="images/toolkit-palatte-search-sample.png" alt-text="The screenshot is an example that shows the Type 'Create a new Teams app' VS Code command palette to list Teams sample options.":::
From here, you can skip ahead to [Add Microsoft 365 Extensions channel for your
## Update the app manifest
-You need to use the [Teams developer manifest](../resources/schem) schema version `1.13` to enable your Teams message extension to run in Outlook.
+You need to use the Teams developer manifest schema version `1.13` (or higher) to enable your Teams message extension to run in Outlook. For more information on schema version, see [Teams developer manifest](../resources/schem).
You have two options for updating your app manifest:
Open your Teams app manifest and update the `$schema` and `manifestVersion` with
```json {
- "$schema" : "https://developer.microsoft.com/json-schemas/teams/v1.13/MicrosoftTeams.schema.json",
- "manifestVersion" : "1.13"
+ "$schema" : "https://developer.microsoft.com/json-schemas/teams/v1.14/MicrosoftTeams.schema.json",
+ "manifestVersion" : "1.14"
} ```
The final step is to sideload your updated message extension ([app package](/mic
:::image type="content" source="images/toolkit-zip-teams-metadata-package.png" alt-text="The screenshot is an example that shows 'Zip Teams metadata package' option in Teams Toolkit extension for Visual Studio Code.":::
-1. Sign in to Teams with your sandbox tenant account, and toggle into *Developer Preview* mode. Select the ellipsis (**...**) menu by your user profile, then select: **About** > **Developer preview**.
-
- :::image type="content" source="images/teams-dev-preview.png" alt-text="The screenshot is an example that shows the 'Developer Preview' option.":::
+1. Go to **Microsoft Teams** and sign in using your sandbox tenant account.
1. Select **Apps** to open the **Manage your apps** pane. Then select **Upload an app**.
platform Extend M365 Teams Personal Tab https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/extend-m365-teams-personal-tab.md
Title: Extend a Teams personal tab app for Microsoft 365 description: Learn how to update your personal tab app to run in Outlook and Microsoft 365 app, in addition to Microsoft Teams. Previously updated : 10/10/2022 Last updated : 02/28/2023 ms.localizationpriority: medium # Extend a Teams personal tab across Microsoft 365 app
-Personal tabs provide a great way to enhance the Microsoft Teams experience. Using personal tabs, you can provide a user access to their application right within Teams, without the user having to leave the experience or sign in again. With this preview, personal tabs can light up within other Microsoft 365 applications. This tutorial demonstrates the process of taking an existing Teams personal tab and updating it to run in both Outlook and Microsoft 365 desktop and web experiences, as well as Microsoft 365 app for Android.
+Personal tabs provide a great way to enhance the Microsoft Teams experience. Using personal tabs, you can provide a user access to their application right within Teams, without the user having to leave the experience or sign in again. With this preview, personal tabs can light up within other Microsoft 365 applications too. This tutorial demonstrates the process of taking an existing Teams personal tab and updating it to run in both Outlook and Microsoft 365 desktop and web experiences, as well as Microsoft 365 app for Android.
Updating your personal app to run in Outlook and Microsoft 365 involves these steps:
The rest of this guide walks you through these steps and show you how to preview
To complete this tutorial, you need:
-* A Microsoft 365 Developer Program sandbox tenant
-* Your sandbox tenant enrolled in *Microsoft 365 Targeted Releases*
-* A machine with Microsoft 365 apps installed from the Microsoft 365 Apps *beta channel*
-* (Optional) An Android device or emulator with Microsoft 365 app for Android installed and enrolled in the *beta program*
-* (Optional) [Teams Toolkit](https://aka.ms/teams-toolkit) extension for Microsoft Visual Studio Code to help update your code
+* A Microsoft 365 Developer Program sandbox tenant.
+* Your sandbox tenant enrolled in *Microsoft 365 Targeted Releases*.
+* A machine with Microsoft 365 apps installed from the Microsoft 365 Apps *beta channel*.
+* (Optional) An Android device or emulator with Microsoft 365 app for Android installed.
+* (Optional) [Teams Toolkit](https://aka.ms/teams-toolkit) extension for Microsoft Visual Studio Code to help update your code.
> [!div class="nextstepaction"] > [Install prerequisites](prerequisites.md)
To complete this tutorial, you need:
If you have an existing personal tab app, make a copy or a branch of your production project for testing and update your App ID in the app manifest to use a new identifier (distinct from the production App ID, for testing).
-If you'd like to use sample code instead of your own production code, you can use the Todo List sample. Either follow the setup steps in the [Todo List Sample](https://github.com/OfficeDev/TeamsFx-Samples/tree/main/todo-list-with-Azure-backend) GitHub repository or use the Teams Toolkit extension to create a new Teams app and select *Start from a sample > Todo List with backend on Azure*. After you've created a personal tab, return to this article to extend it across Microsoft 365.
+If you'd like to use sample code instead of your own production code, you can use the Todo List sample. You can either follow the setup steps in the [Todo List Sample](https://github.com/OfficeDev/TeamsFx-Samples/tree/main/todo-list-with-Azure-backend) GitHub repository or use the Teams Toolkit extension to create a new Teams app (select *Start from a sample > Todo List with backend on Azure*). After you've created a personal tab, return to this article to extend it across Microsoft 365.
-Alternately, you can use a basic single sign-on *hello world* app already Microsoft 365 app enabled in the following [Quickstart](#quickstart) section and then skip to [sideload your app in Teams](#sideload-your-app-in-teams).
+Alternately, you can use a basic single sign-on *hello world* app that's already Microsoft 365 app enabled, as shown in the following [Quickstart](#quickstart) section, and then skip to [sideload your app in Teams](#sideload-your-app-in-teams).
### Quickstart To start with a personal tab that's already enabled to run in Outlook and Microsoft 365 app, you can use Teams Toolkit extension for Visual Studio Code.
-1. From Visual Studio Code, open the command palette (`Ctrl+Shift+P`), type `Teams: Create a new Teams app`.
+1. From Visual Studio Code, open the command palette (`Ctrl+Shift+P`), type `Teams: Create a new app`.
1. Select **Create a new Teams app** option. 1. Select **SSO enabled personal tab**. :::image type="content" source="images/toolkit-tab-sample.png" alt-text="The Screenshot is an example that shows the Todo List sample (Works in Teams, Outlook and Microsoft 365 app) in Teams Toolkit.":::
-1. Select preferred programming language.
+1. Select your preferred programming language.
1. Select a location on your local machine for the workspace folder and enter your application name.
+1. Once your app has been created, within the Teams Toolkit extension, make sure you are signed in to the appropriate Microsoft 365 Developer Program sandbox tenant and Azure account. These can be found within the **Accounts** section of the extension.
1. Open the command palette (`Ctrl+Shift+P`) and type `Teams: Provision in the cloud` to create the required app resources (App Service plan, Storage account, Function App, Managed Identity) in your Azure account.
-1. Select a subscription and a resource group.
+1. Select a subscription and a resource group. If you choose to create a new resource group, you will also need to specify the Location.
1. Select **Provision**. 1. Open the command palette (`Ctrl+Shift+P`) and type `Teams: Deploy to the cloud` to deploy the sample code to the provisioned resources in Azure and start the app. 1. Select **Deploy**.
After you update TeamsJS references, [sideload your app in Teams](#sideload-your
## Update the app manifest
-You need to use the [Teams developer manifest](../resources/schem) schema version `1.13` to enable your Teams personal tab to run in Outlook and Microsoft 365 app.
+You need to use the Teams developer manifest schema version `1.13` (or higher) to enable your Teams personal tab to run in Outlook and Microsoft 365 app. For more information on schema version, see [Teams developer manifest](../resources/schem).
You have two options for updating your app manifest: # [Teams Toolkit](#tab/manifest-teams-toolkit) 1. Open the command palette: `Ctrl+Shift+P`.
-1. Run the `Teams: Upgrade Teams manifest` command and select your app manifest file. Changes will be made in place.
+1. Run the `Teams: Upgrade Teams manifest` command and select your app manifest file. Changes are made in place.
# [Manual steps](#tab/manifest-manual)
-Open your Teams app manifest and update the `$schema` and `manifestVersion` with the following values:
+Open your Teams app manifest and update the `$schema` and `manifestVersion` manually with the appropriate version. Refer to [Teams developer manifest](../resources/schem) for version information:
```json {
- "$schema" : "https://developer.microsoft.com/json-schemas/teams/v1.13/MicrosoftTeams.schema.json",
- "manifestVersion" : "1.13"
+ "$schema" : "https://developer.microsoft.com/json-schemas/teams/v1.14/MicrosoftTeams.schema.json",
+ "manifestVersion" : "1.14"
} ```
If you used Teams Toolkit to create your personal app, you can also use it to va
## Update TeamsJS references
-To run in Outlook and Microsoft 365 app, your app needs to refer the npm package `@microsoft/teams-js@2.5.0` (or higher). While code with downlevel versions is supported in Outlook and Microsoft 365 app, deprecation warnings are logged, and support for downlevel versions of TeamsJS in Outlook and Microsoft 365 app will eventually cease.
+To run in Outlook and Microsoft 365 app, your app needs to refer to the npm package `@microsoft/teams-js@2.0.0` (or higher). While code with downlevel versions is supported in Outlook and Microsoft 365 app, deprecation warnings are logged, and support for downlevel versions of TeamsJS in Outlook and Microsoft 365 app will eventually cease. To determine the latest version of TeamsJS, see [TeamsJS GitHub repository](https://github.com/OfficeDev/microsoft-teams-library-js).
You can use Teams Toolkit to help identify and automate the required code changes to upgrade from 1.x TeamsJS versions to TeamsJS 2.x.x versions. Alternately, you can perform the same steps manually; refer to [TeamsJS library](../tabs/how-to/using-teams-client-library.md#whats-new-in-teamsjs-version-2xx) for details. 1. Open the *Command palette*: `Ctrl+Shift+P`. 1. Run the command `Teams: Upgrade Teams JS SDK and code references`.
-Upon completion, your *package.json* file will reference `@microsoft/teams-js@2.0.0` (or higher) and your `*.js/.ts` and `*.jsx/.tsx` files will be updated with:
+Upon completion, your *package.json* file references `@microsoft/teams-js@2.0.0` (or higher) and your `*.js/.ts` and `*.jsx/.tsx` files are updated with:
> [!div class="checklist"] >
The final step to running your app in Microsoft 365 and Outlook is to sideload y
:::image type="content" source="images/toolkit-zip-teams-metadata-package.png" alt-text="'The screenshot is an example that shows the Zip Teams metadata package' option in Teams Toolkit extension for Visual Studio Code.":::
-1. Sign in to Teams with your sandbox tenant account, and toggle into *Developer Preview* mode. Select the ellipsis (**...**) menu by your user profile, then select: **About** > **Developer preview**.
-
- :::image type="content" source="images/teams-dev-preview.png" alt-text="The screenshot describes how to select 'Developer Preview' option.":::
+1. Go to **Microsoft Teams** and sign in using your sandbox tenant account.
1. Select **Apps** to open the **Manage your apps** pane. Then select **Upload an app**.
To preview your app running in Microsoft 365 on the web:
### Microsoft 365 app for Android
-> [!NOTE]
-> Before installing the app, perform [the steps to install the latest Microsoft 365 app beta build](prerequisites.md#mobile) and be a part of the beta program.
- To view your app running in Microsoft 365 app for Android: 1. Launch the Microsoft 365 app and sign in using your dev tenant account. If the Microsoft 365 app for Android was already running prior to sideloading your app in Teams, you need to restart it in order to see in your installed apps.
To view your app running in Microsoft 365 app for Android:
## Troubleshooting
-Currently, a subset of Teams application types and capabilities is supported in Outlook and Microsoft 365 clients. This support expands over time.
-
-Refer to [Microsoft 365 app support](../tabs/how-to/using-teams-client-library.md#microsoft-365-support-running-teams-apps-in-microsoft-365-and-outlook) to check host support for various TeamsJS capabilities.
+Only a subset of Teams application types and capabilities are supported in Outlook and Microsoft 365 clients. For more information to check host support for various TeamsJS capabilities, see [Microsoft 365 app support](../tabs/how-to/using-teams-client-library.md#microsoft-365-support-running-teams-apps-in-microsoft-365-and-outlook).
For an overall summary of Microsoft 365 host and platform support for Teams apps, see [Extend Teams apps across Microsoft 365](overview.md).
From Teams Toolkit, you can Debug (`F5`) your tab application running in Microso
:::image type="content" source="images/toolkit-debug-targets.png" alt-text="The screenshot is an example that shows the dropdown menu of debug in Teams in the Teams Toolkit.":::
-Upon first run of local debug in Microsoft 365 app or Outlook, you'll be prompted to sign in to your Microsoft 365 tenant account and install a self-signed test certificate. You'll also be prompted to manually install Teams. Select **Install in Teams** to open a browser window and manually install your app. Then select **Continue** to proceed to debug your app in Microsoft 365 / Outlook.
+Upon first run of local debug in Microsoft 365 app or Outlook, you're prompted to sign in to your Microsoft 365 tenant account and install a self-signed test certificate. You'll also be prompted to manually install Teams. Select **Install in Teams** to open a browser window and manually install your app. Then select **Continue** to proceed to debug your app in Microsoft 365 / Outlook.
:::image type="content" source="images/toolkit-dialog-teams-install.png" alt-text="The screenshot is an example that shows the Toolkit dialog box to install in Teams.":::
platform Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/overview.md
Title: Extend Teams apps across Microsoft 365 (preview) description: Learn how to extend Teams apps across Microsoft 365 (running in Teams, Outlook, and Microsoft 365 as application hosts). Previously updated : 10/10/2022 Last updated : 02/28/2023 ms.localizationpriority: medium
ms.localizationpriority: medium
With the latest releases of [Microsoft Teams JavaScript client library](../tabs/how-to/using-teams-client-library.md) (TeamsJS version 2.0.0 and later), [Teams App manifest](../resources/schem), you can build and update Teams apps to run in other high-usage Microsoft 365 products and publish them to the Microsoft commercial marketplace ([Microsoft AppSource](https://appsource.microsoft.com/)) or your organization's private app store.
-Extending your Teams app across Microsoft 365 provides a streamlined way to deliver cross-platform apps to an expanded user audience: from a single codebase, you can create app experiences tailored for Teams, Outlook, and Microsoft 365 app environments. End users won't have to leave the context of their work to use your app, and administrators benefit from a consolidated management and deployment workflow.
+Extending your Teams app across Microsoft 365 provides a streamlined way to deliver cross-platform apps to an expanded user audience: from a single codebase, you can create app experiences tailored for Teams, Outlook, and Microsoft 365 app environments. End users don't have to leave the context of their work to use your app, and administrators benefit from a consolidated management and deployment workflow.
The Teams app platform continues to evolve and expand holistically into the Microsoft 365 ecosystem. Here's the current support of Teams app platform elements across Microsoft 365 (Teams, Outlook, and Microsoft 365 as application hosts):
-| Teams app features| App manifest element | Teams support |Outlook* support | Microsoft 365 app* support | Notes |
+| Teams app features| App manifest element | Teams support |Outlook support | Microsoft 365 app support | Notes |
|--|--|--|--|--|--|
-| [**Tabs-personal scope**](../tabs/how-to/create-personal-tab.md) |`staticTabs` | Web, Desktop, Mobile | Web (Targeted Release), Desktop (Beta Channel) | Web (Targeted Release), Desktop (Beta Channel), Mobile (Android)| Channel and group scope not yet supported for Microsoft 365. See [notes](../tabs/how-to/using-teams-client-sdk.md#microsoft-365-support-running-teams-apps-in-office-and-outlook).
+| [**Tabs-personal scope**](../tabs/how-to/create-personal-tab.md) |`staticTabs` | Web, Desktop, Mobile | Web (Targeted Release), Desktop (Beta Channel) | Web, Desktop, Mobile (Android)| Channel and group scope not yet supported for Microsoft 365. See [notes](../tabs/how-to/using-teams-client-sdk.md#microsoft-365-support-running-teams-apps-in-office-and-outlook).
| [**Message extensions-search-based**](../messaging-extensions/how-to/search-commands/define-search-command.md)| `composeExtensions` | Web, Desktop, Mobile| Web (Targeted Release), Desktop (Beta Channel)| - |Action-based not yet supported for Microsoft 365. See [notes](extend-m365-teams-message-extension.md#troubleshooting). | | link unfurling | `composeExtensions.messageHandlers` | Web, Desktop | Web (Targeted Release), Desktop (Beta Channel) | - | See [notes](extend-m365-teams-message-extension.md#link-unfurling) | | [**Office Add-ins**](/office/dev/add-ins/develop/json-manifest-overview) (preview) | `extensions` | - | Web, Desktop | - | Only available in [devPreview](../resources/schem) manifest version. See [notes](#office-add-ins-preview).|
+Enrollment to [Microsoft 365 Targeted Release](/microsoft-365/admin/manage/release-options-in-office-365) and [Microsoft 365 Apps update channel](/deployoffice/change-update-channels) requires admin opt-in for the entire organization or selected users. For more information, see [Manage access to Teams apps across Microsoft 365](/microsoftteams/manage-third-party-teams-apps). Update channels are device specific and apply only to installations of Microsoft 365 running on Windows.
+ > [!WARNING] > After an in-market app on the Teams platform is updated to a new manifest version, users enrolled for Microsoft 365 Targeted Release will lose access to the app. For more information, see [Manage access to Teams apps across Microsoft 365](/microsoftteams/manage-third-party-teams-apps).
-Enrollment to [Microsoft 365 Targeted Release](/microsoft-365/admin/manage/release-options-in-office-365) and [Microsoft 365 Apps update channel](/deployoffice/change-update-channels) requires admin opt-in for the entire organization or selected users. For more information, see [Manage access to Teams apps across Microsoft 365](/microsoftteams/manage-third-party-teams-apps). Update channels are device specific and apply only to installations of Microsoft 365 running on Windows.
- For guidance about the Teams app manifest and TeamsJS versioning guidance, and further details about current Teams platform capability support across Microsoft 365, see the [Teams JavaScript client library overview](../tabs/how-to/using-teams-client-library.md).
-> [!NOTE]
-> We welcome your feedback and issue reporting as you expand Teams apps to run across the Microsoft 365 ecosystem! Please use the regular [Microsoft Teams developer community channels](/microsoftteams/platform/feedback) to send feedback.
- ## Personal tabs and messaging extensions in Outlook and Microsoft 365 app Reach your users where they are, right in the context of their work by extending your web app as a [Teams personal tab](extend-m365-teams-personal-tab.md) application that also runs in both Outlook and Microsoft 365 app. Teams personal tabs built and hosted with [SharePoint Framework](extend-m365-teams-personal-tab.md#sharepoint-framework-spfx-apps) (SPFx) version 1.16 and later are also supported in Outlook and Microsoft 365 app.
For more information, see [Teams manifest for Office Add-ins (preview)](/office/
## Microsoft commercial marketplace submission
-Join the growing number of production Teams apps in the [Microsoft commercial marketplace](https://appsource.microsoft.com/) (Microsoft AppSource) store with expanded support for Outlook and Microsoft 365 preview (Targeted Release) audiences. The app [submission process for Teams apps enabled for Outlook and Microsoft 365](../concepts/deploy-and-publish/appsource/publish.md) is the same as for traditional Teams apps. The only difference is that you'll use Teams app manifest [version 1.13](../tabs/how-to/using-teams-client-sdk.md) in your app package, which introduces support for Teams apps that run across Microsoft 365.
+Join the growing number of production Teams apps in the [Microsoft commercial marketplace](https://appsource.microsoft.com/) (Microsoft AppSource) store with expanded support for Outlook and Microsoft 365 preview (Targeted Release) audiences. The app [submission process for Teams apps enabled for Outlook and Microsoft 365](../concepts/deploy-and-publish/appsource/publish.md) is the same as for traditional Teams apps. The only difference is to use Teams app manifest [version 1.13](../tabs/how-to/using-teams-client-sdk.md) in your app package, which introduces support for Teams apps that run across Microsoft 365.
After your app is published as a Microsoft 365-enabled Teams app, your app will be discoverable as an installable app in the Outlook and Microsoft 365 app stores, in addition to the Teams store. When running in Outlook and Microsoft 365 app, your app uses the same permissions granted in Teams. Teams admins can [manage access to Teams apps across Microsoft 365](/microsoftteams/manage-third-party-teams-apps) for users in their organization.
platform Prerequisites https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/prerequisites.md
Title: Set up your dev environment for extending Teams apps across Microsoft 365 description: Requirements to set up your dev environment for extending Teams apps across Microsoft 365. Know configurations required to run builds of Microsoft Teams and Microsoft 365 applications. Previously updated : 05/24/2022 Last updated : 02/28/2023 ms.localizationpriority: high
You also need to enable sideloading for your tenant:
> [!IMPORTANT] > It can take up to five days after creating a [Microsoft 365 developer sandbox tenant](/office/developer-program/microsoft-365-developer-program-get-started) and enrolling in [Microsoft 365 Targeted Releases](#enroll-your-developer-tenant-for-microsoft-365-targeted-releases) for sideloaded Teams apps to appear in Outlook and Microsoft 365 app.
-To enroll your test tenant for Microsoft 365 Targeted Releases:
+This step is required to preview your Teams app running in Outlook (desktop and web); the Microsoft 365 app (desktop and web) supports Teams tab apps in both Standard and Targeted release channels. To enroll your test tenant for Microsoft 365 Targeted Releases:
1. Sign in to [Microsoft 365 admin center](https://admin.microsoft.com) with your test tenant credentials. 1. Go to **Settings** > **Org Settings** > **Organization profile**.
To install Microsoft 365 Beta Channel applications in your test environment:
### Mobile
-You can preview Teams personal tabs running in Microsoft 365 app for Android by joining the beta program.
+Install the Microsoft 365 app to preview your Teams personal tab app running your physical Android device or Android emulator:
-To install the latest Microsoft 365 app beta, build to your physical Android device or Android emulator:
-
-1. Ensure you use a Google Play [supported Android device](https://support.google.com/googleplay/answer/1727131).
+1. Ensure you're using a Google Play [supported Android device](https://support.google.com/googleplay/answer/1727131).
1. Launch the **Play Store** on your Android device. 1. Search for "Office" and select **Office (Microsoft 365)**. 1. Select the **Install** button. :::image type="content" source="images/office-android-install.png" alt-text="The screenshot is an example that shows the install button for the Office (Microsoft 365) app in Google Play Store.":::
-1. Select **Join** under **Join the beta** section after the installation completes.
-
- :::image type="content" source="images/office-android-join-beta.png" alt-text="The screenshot is an example that shows the Join the beta screen.":::
- 1. Launch the Microsoft 365 app and sign in with your test tenant credentials. 1. Open your profile **(Me) > Settings** and scroll to the bottom of the menu. 1. Ensure you use Microsoft 365 app version 16.0.15726.20000 or higher for Android.
platform Publish https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/publish.md
The [Microsoft commercial marketplace](https://appsource.microsoft.com/) (Micros
> [!TIP] > Use Teams Developer Portal to [validate your app package](https://dev.teams.microsoft.com/validation) to resolve any errors or warnings before submitting it to the Teams store (via [Microsoft Partner Network](https://partner.microsoft.com/)).
+See the following video to learn more about multi-tenant apps:
+
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RWZb0O]
+ To get started, see [distribute your Microsoft Teams app](../concepts/deploy-and-publish/apps-publish-overview.md). ## See also
platform Bots Conv Proactive https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bot-conversations/bots-conv-proactive.md
Sending a message to start a new conversation thread is different than sending a
1. [Obtain the user's unique ID and tenant ID](#obtain-necessary-user-information) 1. [Send the message](#examples)
-When creating proactive messages you **must** call `MicrosoftAppCredentials.TrustServiceUrl`, and pass in the service URL before creating the `ConnectorClient` used to send the message. If you don't, a `401: Unauthorized` response is received by your app. For more information, see [the samples below](#net-example-from-this-sample).
+When creating proactive messages you **must** call `MicrosoftAppCredentials.TrustServiceUrl`, and pass in the service URL before creating the `ConnectorClient` used to send the message. If you don't, a `401: Unauthorized` response is received by your app. For more information, see [the samples below](#examples-for-creating-a-channel-conversation).
## Best practices for proactive messaging
Bots can create new conversations with an individual Microsoft Teams user by obt
### Proactively install your app using Graph
-> [!Note]
+> [!NOTE]
> Proactively installing apps using graph is currently in beta. Occasionally it may be necessary to proactively message users that haven't installed or interacted with your app previously. For example, you want to use the [company communicator](~/samples/app-templates.md#company-communicator) to send messages to your entire organization. For this scenario, you can use the Graph API to proactively install your app for your users, then cache the necessary values from the `conversationUpdate` event your app will receive upon install.
POST {Service URL of your bot}/v3/conversations
```
-You can get the `{Service URL of your bot}` from `TurnContext` object like `turnContext.Activity.ServiceURL` parameter.
- Provide `id` as your bot app ID and `name` as your bot name. You can get the `members` `id` from your bots `TurnContext` object such as `turnContext.Activity.From.Id`. Similarly, `id` of tenant, from your bots `TurnContext` object such as `turnContext.Activity.ChannelData.Tenant.Id`. You must supply the user ID and the tenant ID. If the call succeeds, the API returns with the following response object. ```json {
- "id":"a:1qhNLqpUtmuI6U35gzjsJn7uRnCkW8NiZALHfN8AMxdbprS1uta2aT-jytfIlsZR3UZeg3TsIONNInBHsdjzj3PtfHuhkxxvS1jZZ61UAbw8fIdXcNSJyTJm7YvHFOgxo"
+    "id":"a:1qhNLqpUtmuI6U35gzjsJn7uRnCkW8NiZALHfN8AMxdbprS1uta2aT-jytfIlsZR3UZeg3TsIONNInBHsdjzj3PtfHuhkxxvS1jZZ61UAbw8fIdXcNSJyTJm7YvHFOgxo"
+ } ```
Your team-added bot can post into a channel to create a new reply chain. If you'
Alternatively, you can use the REST API and issue a POST request to [`/conversations`](/azure/bot-service/rest-api/bot-framework-rest-connector-send-and-receive-messages?#start-a-conversation) resource.
-### .NET example (from [this sample](https://github.com/OfficeDev/microsoft-teams-sample-complete-csharp/blob/32c39268d60078ef54f21fb3c6f42d122b97da22/template-bot-master-csharp/src/dialogs/examples/teams/ProactiveMsgTo1to1Dialog.cs))
+### Examples for creating a channel conversation
+
+# [HTTP](#tab/http)
+
+```http
+POST {Service URL of your bot}/v3/conversations
+
+```
+
+```json
+
+{
+ "activity": {
+ "type": "message",
+ "text": "new conversation"
+ },
+ "bot": {
+ "id": "{{botID}}",
+ "name": "{{botName}}"
+ },
+ "channelData":{
+ "teamsChannelId":"{{teamID}}",
+ "teamsTeamId":"{{teamID}}",
+ "channel":{"id":"{{teamID}}"},
+ "team":{"id":"{{teamID}}"},
+ "tenant":{"id": "{{tenantID}}"}
+ },
+ "isGroup": true,
+ "tenantId": "{{tenantID}}"
+}
+```
+
+You can get the `{Service URL of your bot}` from `TurnContext` object like `turnContext.Activity.ServiceURL` parameter.
+
+You can get the `channelData` from `TurnContext` object like `turnContext.Activity.TeamsChannelData` parameter.
+
+Provide `id` as your bot app ID and `name` as your bot name. Similarly, `id` of tenant, from your bots `TurnContext` object such as `turnContext.Activity.ChannelData.Tenant.Id`.
+
+Similarly, you can provide the `teamID` for `teamsChannelId`, `teamsTeamId`, `channel`, `team` in `channelData` section which sends the message to general channel of team.
+
+If the call succeeds, the API returns with the following response object:
+
+```json
+{
+ "id": "{{conversationID}}",
+ "activityId": "{{activityID}}"
+}
+```
+
+# [C#](#tab/csharp)
+
+The .NET example is from [this sample](https://github.com/OfficeDev/microsoft-teams-sample-complete-csharp/blob/32c39268d60078ef54f21fb3c6f42d122b97da22/template-bot-master-csharp/src/dialogs/examples/teams/ProactiveMsgTo1to1Dialog.cs)
```csharp using Microsoft.Bot.Builder.Dialogs;
namespace Microsoft.Teams.TemplateBotCSharp.Dialogs
} ``` ++ ## See also [Bot Framework samples](https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/README.md).
platform Add API Connection https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/add-API-connection.md
Title: Integrate existing third party APIs
+ Title: Integrate existing third-party APIs
-description: Learn how toolkit helps bootstrap sample access to existing APIs. List of different authentication types.
+description: Learn how toolkit allows bootstrap sample access to existing APIs. List of different authentication types.
ms.localizationpriority: medium Last updated 05/20/2022
-# Integrate existing third party APIs
+# Integrate existing third-party APIs
-Teams Toolkit helps you to access existing APIs for building Teams apps. These APIs are developed by your organization or a third-party. When you use Teams Toolkit to connect to an existing API, Teams Toolkit performs the following functions:
+Teams Toolkit allows you to access and use existing APIs for building Teams apps. Your organization or a third-party might have developed these APIs. When you use Teams Toolkit to connect to an existing API, Teams Toolkit performs the following functions:
-* Generate sample code under `./bot` or `./api` folder.
+* Generate sample code in the `./bot` or `./api` folder.
* Add a reference to the `@microsoft/teamsfx` package to `package.json`. * Add app settings for your API in `.env.teamsfx.local` that configures local debugging.
-## Advantages
+Teams Toolkit allows you bootstrap sample code to access the APIs, if you don't have language appropriate SDKs to access these APIs.
-Teams Toolkit helps you bootstrap sample code to access the APIs, if you don't have language appropriate SDKs to access these APIs.
+## Configure API connection
-## Steps to connect to API
+You can add an existing third-party API to your Teams app using:
-You can add API connection using Microsoft Visual Studio Code and CLI command.
+* [Teams Toolkit](#add-api-connection-using-teams-toolkit)
+* [TeamsFx CLI commands](#add-api-connection-using-teamsfx-cli)
-### Add API connection using Visual Studio Code
+### Add API connection using Teams Toolkit
-The following steps help you to add API connection using Visual Studio Code:
+Add a connection to an existing third-party API using the following steps:
-1. Open **Visual Studio Code**.
+1. Open your Teams app project in **Visual Studio Code**.
2. Select **Teams Toolkit** from the Visual Studio Code activity bar.
-3. Select **Add features** under **DEVELOPMENT**.
+3. Select **Add features** in the **DEVELOPMENT** section.
:::image type="content" source="../assets/images/teams-toolkit-v2/add-API/api-add-features_1.png" alt-text="api add features":::
-4. In the pop-up window that appears, select the **API Connection** you want to add to your Teams app project.
+ The **Add Feature** drop-down list appears.
+
+4. Select **API Connection**.
:::image type="content" source="../assets/images/teams-toolkit-v2/add-API/api-select-features_1.png" alt-text="api select features":::
-5. Enter endpoint for the API. It's added to the project's local app settings, and it's the base URL for API requests.
+5. Enter endpoint for the API, and then press **Enter**.
-6. Press **Enter**.
+ Ensure that the endpoint is a valid http(s) URL. Teams Toolkit adds the endpoint to the project's local app settings, and it's the base URL for API requests.
:::image type="content" source="../assets/images/teams-toolkit-v2/add-API/api-endpoint_1.png" alt-text="api endpoint":::
- > [!NOTE]
- > Ensure that the endpoint is a valid http(s) URL.
-
-7. Select the component that accesses the API.
-
-8. Select **OK**.
+7. Select the component that needs to connect to the API, and then select **OK**.
:::image type="content" source="../assets/images/teams-toolkit-v2/add-API/api-invoke_1.png" alt-text="api invoke":::
-9. Enter an alias for the API. The alias generates an app setting name for the API that is added to the project's local app setting.
+9. Enter an alias for the API, and then press **Enter**.
-10. Press **Enter**.
+ The alias generates an app setting name for the API. Teams Toolkit adds the alias to the project's local app setting.
:::image type="content" source="../assets/images/teams-toolkit-v2/add-API/api-alias_1.png" alt-text="api alias":::
-11. Select the required authentication for the API request from the **API authentication type**. It generates appropriate sample code and adds corresponding local application settings based on your selection.
+11. Select the required authentication for the API request from the **API authentication type**.
:::image type="content" source="../assets/images/teams-toolkit-v2/add-API/myAPI connection.png" alt-text="api auth":::
- Based on the authentication type selected, the following steps are required to complete extra configuration:
+ Teams Toolkit generates appropriate sample code and adds corresponding local application settings based on authentication that you select. To configure authentication:
# [Basic](#tab/basic)
+For implementing basic authentication using username and password:
+
+* Select **Basic**.
* Enter the username for basic Auth.
- The sample code has been generated to call your API at bot\myAPI.js.
+Teams Toolkit generates the sample code to call your API at bot\myAPI.js.
# [Certification](#tab/certification)
- The sample code has been generated to call your API at bot\myAPI.js.
+* Select **Certification** to authenticate requests using certificates.
+
+Teams Toolkit generates the sample code to call your API at bot\myAPI.js.
# [Azure Active Directory (Azure AD)](#tab/AAD)
- The sample code has been generated to call your API at bot\myAPI.js.
+* Select **Azure Active Directory (Azure AD)** to authenticate requests using Azure AD access tokens.
+
+Teams Toolkit generates the sample code to call your API at bot\myAPI.js.
# [API Key](#tab/apikey)
+* Select **API Key** to implement authentication using an API key.
* Select the required API key position in request.- * Enter an API key name.
- The sample code has been generated to call your API at bot\myAPI.js.
+Teams Toolkit generates the sample code to call your API at bot\myAPI.js.
# [Custom Auth Implementation](#tab/CustomAuthImplementation)
- The sample code has been generated to call your API at bot\myAPI.js.
+* Select **Custom Auth Implementation** to customize authentication according to your app requirement.
+
+Teams Toolkit generates the sample code to call your API at bot\myAPI.js.
-## Add API connection using CLI
+You've successfully added a connection in your Teams app to an existing API.
+
+## Add API connection using TeamsFx CLI
-The base command of this feature is `teamsfx add api-connection [authentication type]`. The following table provides list of different authentication types and their corresponding sample commands:
+The base command of this feature is `teamsfx add api-connection [authentication type]`. The following table provides a list of different authentication types and their corresponding sample commands:
> [!TIP] > You can use `teamsfx add api-connection [authentication type] -h` to get help document.
The base command of this feature is `teamsfx add api-connection [authentication
## Directory structure updates to your project
- Teams Toolkit modifies `bot` or `api` folder based on your selections:
+ Teams Toolkit modifies `bot` or `api` folder based on your selection:
1. Generate `{your_api_alias}.js\ts` file. The file initializes an API client for your API and exports the API client. 2. Add `@microsoft\teamsfx` package to `package.json`. The package provides support for the common API authentication methods.
-3. Add environment variables to `.env.teamsfx.local`. They're the configurations for the selected authentication type. The generated code reads values from the environment variables.
+3. Add environment variables to `.env.teamsfx.local`. You must configure environment variables for the selected authentication type. The generated code reads values from the environment variables.
## See also
platform Add Resource https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/add-resource.md
Last updated 11/29/2021
# Add cloud resources to Teams app
-Teams Toolkit helps you to provision the cloud resources for your app hosting. You can add the cloud resources optionally, if they fit your development needs. The advantage of adding more cloud resources in TeamsFx is that you can autogenerate all configuration files and connect to Teams app by using Teams Toolkit.
+Teams Toolkit allows you to provision the cloud resources for hosting your app. You can add the cloud resources according to your development needs. The advantage of adding more cloud resources in TeamsFx is that you can autogenerate all configuration files and connect to Teams app by using Teams Toolkit.
> [!NOTE]
-> If you have created SharePoint Framework (SPFx) based tab project, you can't add Azure cloud resources.
+> If you've created SharePoint Framework (SPFx) based tab project, you can't add Azure cloud resources.
## Add cloud resources
You can add cloud resources in the following ways:
### To add cloud resources by using Teams Toolkit in Microsoft Visual Studio Code
- 1. Open **Visual Studio Code**.
+ 1. Open your Teams app project in **Visual Studio Code**.
1. Select **Teams Toolkit** from the Visual Studio Code activity bar.
- 1. Select **Add features** under **DEVELOPMENT**.
+ 1. Select **Add features** in the **DEVELOPMENT** section.
:::image type="content" source="~/assets/images/teams-toolkit-v2/manual/cloud/select-feature-updated_1.png" alt-text="Add feature from Teams Toolkit"::: ### To add cloud resources by using Command Palette
+ 1. Open your Teams 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/cloud/Teams-add-features_1.png" alt-text="Add feature from command palette":::
You can add cloud resources in the following ways:
:::image type="content" source="../assets/images/teams-toolkit-v2/manual/cloud/Teams-add-features1_1.png" alt-text="Type add feature and enter":::
- 1. In the pop-up window that appears, select the **Cloud resources** to add in your project.
+ A list of cloud resources appears.
+
+ 1. Select the **Cloud resources** to add to your project.
:::image type="content" source="~/assets/images/teams-toolkit-v2/manual/cloud/updated-final-cloud_1.png" alt-text="final":::
You can add cloud resources in the following ways:
### Add cloud resources using TeamsFx CLI
-* Change directory to your **project directory**.
+* Before you add cloud resources, ensure that you change the directory to your **project directory**.
* The following table lists the capabilities and required commands: |Cloud Resource|Command|
You can add cloud resources in the following ways:
## Types of cloud resources
-In the following scenarios, TeamsFx integrates with Azure
+In the following scenarios, TeamsFx integrates the Azure services with your Teams app:
* [Azure Functions](/azure/azure-functions/functions-overview): A serverless solution to meet your on-demand requirements, such as creating web APIs for your Teams app back-end. * [Azure SQL Database](/azure/azure-sql/database/sql-database-paas-overview): A platform as a service (PaaS) database engine to serve as your Teams app data store.
-* [Azure API Management](deploy.md): An API gateway can be used to administer APIs created for Teams apps and publish them to consume by other apps, such as Power app.
+* [Azure API Management](deploy.md): An API gateway can be used to administer APIs created for Teams apps and publish them so other apps can consume them, such as Power app.
* [Azure Key Vault](/azure/key-vault/general/overview): Safeguard cryptographic keys and other secrets used by cloud apps and services.
-## Changes after adding Cloud resources
+## Changes after adding Azure resources
-The following changes appear after adding resources in your project:
+The following changes appear after adding Azure cloud resources in your project:
* New parameters added to `azure.parameter.{env}.json` to provide the required information for provision.
-* New content is included to ARM template under `templates\azure`, except the files are in `templates\azure\teamsfx` folder for the Azure resources.
-* The files under `templates\azure\teamsfx` folder are regenerated to ensure TeamsFx required configuration is up to date for added Azure resources.
+* New content is included to ARM template under `templates\azure`. The files are in `templates\azure\teamsfx` folder for the Azure resources.
+* Teams Toolkit regenerates the files under `templates\azure\teamsfx` folder to ensure configuration required for TeamsFx is up to date for added Azure resources.
* `.fx\configs\projectSettings.json` is updated to track the available resources in your project. The following additional changes appear after adding resources in your project: |Resources|Changes|Description| |||--|
-|**Azure Functions**|An Azure Functions template code is added into a subfolder with path `yourProjectFolder\api`</br></br>`launch.json` and `task.json` updated under `.vscode` folder.| Includes a hello world http trigger template into your project.</br></br> Includes necessary scripts for Visual Studio Code to be executed when you want to debug your app locally.|
-|**Azure API Management**|An open API specification file added into a subfolder with path `yourProjectFolder\openapi`.|Defines your API after publishing, it's the API specification file.|
+|**Azure Functions**|The Azure Functions template code is added into a subfolder with path `yourProjectFolder\api`</br></br>`launch.json` and `task.json` are updated under `.vscode` folder.| Includes a hello world http trigger template into your project.</br></br> Includes necessary scripts for Visual Studio Code to be executed when you want to debug your app locally.|
+|**Azure API Management**|An open API specification file added into a subfolder with path `yourProjectFolder\openapi`.|Defines your API after publishing. It's the API specification file.|
## See also