Updates from: 05/03/2022 01:15:12
Service Microsoft Docs article Related commit history on GitHub Change details
platform Teams Apps In Meetings https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/teams-apps-in-meetings.md
The new custom Together Mode scenes feature enables users to collaborate in a me
## Next step > [!div class="nextstepaction"]
-> [Meeting app extensibility](meeting-app-extensibility.md)
+> [Unified meetings apps](meeting-app-extensibility.md)
## See also
platform Registering Calling Bot https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/calls-and-meetings/registering-calling-bot.md
keywords: calling bot audio/video audio video media
A bot that participates in audio or video calls and online meetings is a regular Microsoft Teams bot with the following extra features used to register the bot:
-* There is a new version of the Teams app manifest with two additional settings, `supportsCalling` and `supportsVideo`. These settings are included in the [Manifest schema for Microsoft Teams](../../resources/schem).
+* There's a new version of the Teams app manifest with two additional settings, `supportsCalling` and `supportsVideo`. These settings are included in the [Manifest schema for Microsoft Teams](../../resources/schem).
* [Microsoft Graph permissions](./registering-calling-bot.md#add-graph-permissions) must be configured for your bot's Microsoft App ID. * The Graph calls and online meetings APIs permissions require tenant admin consent.
The following table provides a list of application permissions for online meetin
### Assign permissions
-You must configure the application permissions for your bot in advance by using the [Microsoft Azure portal](https://aka.ms/aadapplist) if you prefer to use the [Microsoft Azure Active Directory (Azure AD) V1 endpoint](/azure/active-directory/develop/azure-ad-endpoint-comparison).
+You must configure the application permissions for your bot in advance by using the [Microsoft Azure portal](https://portal.azure.com) if you prefer to use the [Microsoft Azure Active Directory (Azure AD) V1 endpoint](/azure/active-directory/develop/azure-ad-endpoint-comparison).
### Get tenant administrator consent
You can rely on an administrator to grant the permissions your app needs at the
| **Sample name** | **Description** | **Graph** | ||-|--|
-| Calling and meeting bot | The sample app demonstartes how Bot can create call, join meeting and transfer call. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-calling-meeting/csharp) |
+| Calling and meeting bot | The sample app demonstrates how Bot can create call, join meeting and transfer call. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-calling-meeting/csharp) |
## Step-by-step guide
platform Conversation Messages https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/conversation-messages.md
Messages sent between users and bots include internal channel data within the me
The `channelData` object contains Teams-specific information and is a definitive source for team and channel IDs. Optionally, you can cache and use these IDs as keys for local storage. The `TeamsActivityHandler` in the SDK pulls out important information from the `channelData` object to make it easily accessible. However, you can always access the original data from the `turnContext` object.
-The `channelData` object is not included in messages in personal conversations, as these take place outside of a channel.
+The `channelData` object isn't included in messages in personal conversations, as these take place outside of a channel.
A typical `channelData` object in an activity sent to your bot contains the following information:
A typical `channelData` object in an activity sent to your bot contains the foll
* `tenant.id`: Microsoft Azure Active Directory (Azure AD) tenant ID passed in all contexts. * `team`: Passed only in channel contexts, not in personal chat. * `id`: GUID for the channel.
- * `name`: Name of the team passed only in cases of [team rename events](~/bots/how-to/conversations/subscribe-to-conversation-events.md).
+ * `name`: Name of the team passed only in cases of [team rename events](subscribe-to-conversation-events.md#team-renamed).
* `channel`: Passed only in channel contexts, when the bot is mentioned or for events in channels in teams, where the bot has been added. * `id`: GUID for the channel. * `name`: Channel name passed only in cases of [channel modification events](~/bots/how-to/conversations/subscribe-to-conversation-events.md).
Messages received from or sent to your bot can include different types of messag
| Format | From user to bot | From bot to user | Notes | |--|||--| | Rich text | Γ£ö | Γ£ö | Your bot can send rich text, pictures, and cards. Users can send rich text and pictures to your bot. |
-| Pictures | ✔ | ✔ | Maximum 1024×1024 and 1 MB in PNG, JPEG, or GIF format. Animated GIF is not supported. |
+| Pictures | ✔ | ✔ | Maximum 1024×1024 MB and 1 MB in PNG, JPEG, or GIF format. Animated GIF isn't supported. |
| Cards | Γ£û | Γ£ö | See the [Teams card reference](~/task-modules-and-cards/cards/cards-reference.md) for supported cards. | | Emojis | Γ£ö | Γ£ö | Teams currently supports emojis through UTF-16, such as U+1F600 for grinning face. | ## Notifications to your message
-You can also add notifications to your message using the `Notification.Alert` property. Notifications alert users about new tasks, mentions, and comments. These alerts are related to what users are working on or what they must look at by inserting a notice into their activity feed. For notifications to trigger from your bot message, set the `TeamsChannelData` objects `Notification.Alert` property to *true*. Whether or not a notification is raised depends on the individual user's Teams settings and you cannot override these settings. The notification type is either a banner, or both a banner and an email.
+You can also add notifications to your message using the `Notification.Alert` property. Notifications alert users about new tasks, mentions, and comments. These alerts are related to what users are working on or what they must look at by inserting a notice into their activity feed. For notifications to trigger from your bot message, set the `TeamsChannelData` objects `Notification.Alert` property to *true*. Whether or not a notification is raised depends on the individual user's Teams settings and you can't override these settings. The notification type is either a banner, or both a banner and an email.
> [!NOTE] > The **Summary** field displays any text from the user as a notification message in the feed.
To enhance your message, you can include pictures as attachments to that message
## Picture messages
-Pictures are sent by adding attachments to a message. For more information on attachments, see [Bot Framework documentation](/azure/bot-service/dotnet/bot-builder-dotnet-add-media-attachments).
+Pictures are sent by adding attachments to a message. For more information on attachments, see [add media attachments to messages](/azure/bot-service/dotnet/bot-builder-dotnet-add-media-attachments).
-Pictures can be at most 1024×1024 and 1 MB in PNG, JPEG, or GIF format. Animated GIF is not supported.
+Pictures can be at most 1024×1024 MB and 1 MB in PNG, JPEG, or GIF format. Animated GIF isn't supported.
Specify the height and width of each image by using XML. In markdown, the image size defaults to 256×256. For example: * Use: `<img src="http://aka.ms/Fo983c" alt="Duck on a rock" height="150" width="223"></img>`.
-* Do not use: `![Duck on a rock](http://aka.ms/Fo983c)`.
+* Don't use: `![Duck on a rock](http://aka.ms/Fo983c)`.
A conversational bot can include Adaptive Cards that simplify business workflows. Adaptive Cards offer rich customizable text, speech, images, buttons, and input fields.
Following are the status codes and their error code and message values:
| Status code | Error code and message values | Description | |-|--|--| | 403 | **Code**: `ConversationBlockedByUser` <br/> **Message**: User blocked the conversation with the bot. | User blocked the bot in 1:1 chat or a channel through moderation settings. |
-| 403 | **Code**: `BotNotInConversationRoster` <br/> **Message**: The bot is not part of the conversation roster. | The bot is not part of the conversation. |
+| 403 | **Code**: `BotNotInConversationRoster` <br/> **Message**: The bot isn't part of the conversation roster. | The bot isn't part of the conversation. |
| 403 | **Code**: `BotDisabledByAdmin` <br/> **Message**: The tenant admin disabled this bot. | Tenant blocked the bot. |
-| 401 | **Code**: `BotNotRegistered` <br/> **Message**: No registration found for this bot. | The registration for this bot was not found. |
+| 401 | **Code**: `BotNotRegistered` <br/> **Message**: No registration found for this bot. | The registration for this bot wasn't found. |
| 412 | **Code**: `PreconditionFailed` <br/> **Message**: Precondition failed, please try again. | A precondition failed on one of our dependencies due to multiple concurrent operations on the same conversation. |
-| 404 | **Code**: `ConversationNotFound` <br/> **Message**: Conversation not found. | The conversation was not found. |
+| 404 | **Code**: `ConversationNotFound` <br/> **Message**: Conversation not found. | The conversation wasn't found. |
| 413 | **Code**: `MessageSizeTooBig` <br/> **Message**: Message size too large. | The size on the incoming request was too large. | | 429 | **Code**: `Throttled` <br/> **Message**: Too many requests. Also returns when to retry after. | Too many requests were sent by the bot. For more information, see [rate limit](~/bots/how-to/rate-limit.md). |
platform What Are Bots https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/what-are-bots.md
You can use the Teams bot APIs to get information for members of a chat or team.
## See also
-* [Create a bot for Teams](~/bots/how-to/create-a-bot-for-teams.md)
+* [Create a bot for Teams](../resources/bot-v3/bots-create.md)
* [How Microsoft Teams bots work](/azure/bot-service/bot-builder-basics-teams) * [Register calls and meetings bot for Microsoft Teams](~/bots/calls-and-meetings/registering-calling-bot.md) * [Add authentication to your Teams bot](~/bots/how-to/authentication/add-authentication.md)
platform Apps Upload https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/apps-upload.md
To remove app from Teams follow the steps:
## Next step > [!div class="nextstepaction"]
-> [Use your Teams app](https://support.microsoft.com/office/apps-and-services-cc1fba57-9900-4634-8306-2360a40c665b)
+>[Create apps for Teams meetings](../../apps-in-teams-meetings/teams-apps-in-meetings.md)
## See also
platform Personal Apps https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/design/personal-apps.md
Users can add a personal app from the Teams store or app flyout by selecting the
With a private workspace, users can view app content that's meaningful to them in a central location without leaving Teams.
-(Implementation note: The private workspace is based on the [*personal tab*](../../build-your-first-app/build-personal-tab.md) capability.)
+(Implementation note: The private workspace is based on the [*personal tab*](../../tabs/how-to/create-personal-tab.md) capability.)
### Anatomy: Personal app (private workspace)
platform Bots Conversations https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bot-conversations/bots-conversations.md
A conversation is a series of messages sent between your bot and one or more use
* `personal` Conversations between bots and a single user. * `groupChat` Chat between a bot and two or more users.
-A bot behaves slightly differently depending on what kind of conversation it is involved in:
+A bot behaves slightly differently depending on what kind of conversation it's involved in:
* [Bots in channel and group chat conversations](~/resources/bot-v3/bot-conversations/bots-conv-channel.md) require the user to @mention the bot to invoke it in a channel.
-* [Bots in single user conversations](~/resources/bot-v3/bot-conversations/bots-conv-personal.md) do not require an @mention - the user can just type.
+* [Bots in single user conversations](~/resources/bot-v3/bot-conversations/bots-conv-personal.md) don't require an @mention - the user can just type.
In order for the bot to work in a particular scope it should be listed as supporting that scope in the manifest. Scopes are defined and discussed further in the [Manifest Reference](~/resources/schem). ## Proactive messages
-Bots can participate in a conversation or initiate one. Most communication is in response to another message. If a bot initiates a conversation it is called a *proactive message*. Examples include:
+Bots can participate in a conversation or initiate one. Most communication is in response to another message. If a bot initiates a conversation it's called a *proactive message*. Examples include:
* Welcome messages * Event notifications
Each message is an `Activity` object of type `messageType: message`. When a user
Bots also support event-style messages. For more information, see [Handle bot events in Microsoft Teams](~/resources/bot-v3/bots-notifications.md). Speech is currently not supported.
-Messages are for the most part the same in across all scopes, but there are differences in how the bot is accessed in the UI and differences behind the scenes which you will need to know about.
+Messages are usually the same in across all scopes, but there are differences in how the bot is accessed in the UI and differences behind the scenes, which you need to know about.
Basic conversation is handled through the Bot Framework Connector, a single REST API to enable your bot to communicate with Teams and other channels. The Bot Builder SDK provides easy access to this API, additional functionality to manage conversation flow and state, and simple ways to incorporate cognitive services such as natural language processing (NLP).
Your bot can send rich text, pictures, and cards. Users can send rich text and p
| Format | From user to bot | From bot to user | Notes | | | :: | :: | | | Rich text | Γ£ö | Γ£ö | |
-| Pictures | ✔ | ✔ | Maximum 1024×1024 and 1 MB in PNG, JPEG, or GIF format; animated GIF are not supported. |
+| Pictures | ✔ | ✔ | Maximum 1024×1024 MB and 1 MB in PNG, JPEG, or GIF format; animated GIF aren't supported. |
| Cards | Γ£û | Γ£ö | See the [Teams Card Reference](~/task-modules-and-cards/cards/cards-reference.md) for supported cards. | | Emojis | Γ£û | Γ£ö | Teams currently supports emojis via UTF-16 such as, U+1F600 for grinning face. | |
For more information on formatting cards in messages, see [Card formatting](~/ta
Pictures are sent by adding attachments to a message. You can find more information on attachments in the [Bot Framework documentation](/azure/bot-service/dotnet/bot-builder-dotnet-add-media-attachments?view=azure-bot-service-3.0&preserve-view=true).
-Pictures can be at most 1024×1024 and 1 MB in PNG, JPEG, or GIF format; animated GIF is not supported.
+Pictures can be at most 1024×1024 MB and 1 MB in PNG, JPEG, or GIF format; animated GIF is not supported.
We recommend that you specify the height and width of each image by using XML. If you use Markdown, the image size defaults to 256×256. For example:
We recommend that you specify the height and width of each image by using XML. I
Depending on which scopes are declared, your bot can receive messages in the following contexts:
-* **personal chat** Users can interact in a private conversation with a bot by simply selecting the added bot in the chat history, or typing its name or app ID in the To: box on a new chat.
-* **Channels** A bot can be mentioned ("@*botname*") in a channel if it has been added to the team. Note that additional replies to a bot in a channel require mentioning the bot. It will not respond to replies where it is not mentioned.
+* **personal chat** Users can interact in a private conversation with a bot by selecting the added bot in the chat history, or typing its name or app ID in the To: box on a new chat.
+* **Channels** A bot can be mentioned ("@*botname*") in a channel if it has been added to the team. Note that additional replies to a bot in a channel require mentioning the bot. It will not respond to replies where it isn't mentioned.
-For incoming messages, your bot receives an [Activity](/azure/bot-service/rest-api/bot-framework-rest-connector-api-reference?view=azure-bot-service-4.0#activity-object&preserve-view=true) object of type `messageType: message`. Although the `Activity` object can contain other types of information, like [channel updates](~/resources/bot-v3/bots-notifications.md#channel-updates) sent to your bot, the `message` type represents communication between bot and user.
+For incoming messages, your bot receives an [Activity](../../../bots/how-to/conversations/conversation-messages.md) object of type `messageType: message`. Although the `Activity` object can contain other types of information, like [channel updates](~/resources/bot-v3/bots-notifications.md#channel-updates) sent to your bot, the `message` type represents communication between bot and user.
-Your bot receives a payload that contains the user message `Text` as well as other information about the user, the source of the message, and Teams information. Of note:
+Your bot receives a payload that contains the user message `Text` and other information about the user, the source of the message, and Teams information. Of note:
* `timestamp` The date and time of the message in Coordinated Universal Time (UTC). * `localTimestamp` The date and time of the message in the time zone of the sender. * `channelId` Always "msteams". This refers to a bot framework channel, not a teams channel.
-* `from.id` A unique and encrypted ID for that user for your bot; suitable as a key if your app needs to store user data. It is unique for your bot and cannot be directly used outside your bot instance in any meaningful way to identify that user.
+* `from.id` A unique and encrypted ID for that user for your bot; suitable as a key if your app needs to store user data. It's unique for your bot and can't be directly used outside your bot instance in any meaningful way to identify that user.
* `channelData.tenant.id` The tenant ID for the user. > [!NOTE]
When interacting in a channel, your bot should be smart about taking certain con
## Teams channel data
-The `channelData` object contains Teams-specific information and is the definitive source for team and channel IDs. You should cache and use these ids as keys for local storage.
+The `channelData` object contains Teams-specific information and is the definitive source for team and channel IDs. You should cache and use these IDs as keys for local storage.
A typical channelData object in an activity sent to your bot contains the following information:
Please note that in your outbound schema you should always use the same `service
Rather than have your messages be static snapshots of data, your bot can dynamically update messages inline after sending them. You can use dynamic message updates for scenarios such as poll updates, modifying available actions after a button press, or any other asynchronous state change.
-The new message need not match the original in type. For instance, if the original message contained an attachment, the new message can be a simple text message.
+The new message need not match the original in type. For instance, if the original message contained an attachment, the new message can be a text message.
> [!NOTE] > You can update only content sent in single-attachment messages and carousel layouts. Posting updates to messages with multiple attachments in list layout is not supported.
function sendCardUpdate(bot, session, originalMessage, address) {
## Starting a conversation (proactive messaging)
-You can create a personal conversation with a user or start a new reply chain in a channel for your team bot. This lets you to message your user or users without having them first initiate contact with your bot. For more information, see the following topics:
+You can create a personal conversation with a user or start a new reply chain in a channel for your team bot. This lets you message your user or users without having them first initiate contact with your bot. For more information, see the following articles:
See [Proactive messaging for bots](~/resources/bot-v3/bot-conversations/bots-conv-proactive.md) for more general information on conversations started by bots. ## Deleting messages
-Messages can be deleted using the connectors [`delete()`](https://docs.botframework.com/node/builder/chat-reference/interfaces/_botbuilder_d_.iconnector.html#delete) method in the [BotBuilder SDK](/bot-framework/bot-builder-overview-getstarted).
+Messages can be deleted using the connectors [`delete()`](https://docs.botframework.com/node/builder/chat-reference/interfaces/_botbuilder_d_.iconnector.html) method in the [BotBuilder SDK](/bot-framework/bot-builder-overview-getstarted).
```typescript bot.dialog('BotDeleteMessage', function (session: builder.Session) {
platform What Are Cards https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/what-are-cards.md
Teams uses cards in three different places:
## Cards in connectors
-Cards were first defined as part of Outlook and Office 365 and are now used as part of Office 365 Connectors. Like many Office 365 applications, Teams supports connectors. For more information, see [Office 365 Connectors for Teams](~/webhooks-and-connectors/what-are-webhooks-and-connectors.md). You can find the specification for cards in connectors in [actionable message card reference](/outlook/actionable-messages/card-reference).
+Cards were first defined as part of Outlook and Office 365 and are now used as part of Office 365 Connectors. Like many Office 365 applications, Teams supports connectors. For more information, see [create Office 365 Connectors](../webhooks-and-connectors/how-to/connectors-creating.md). You can find the specification for cards in connectors in [actionable message card reference](/outlook/actionable-messages/card-reference).
## Cards in bots
platform Teamsfx SDK https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/TeamsFx-SDK.md
Last updated 11/29/2021
# TeamsFx SDK
-TeamsFx helps to reduce the developer tasks by leveraging Teams SSO and accessing cloud resources down to single line statements with zero configuration. TeamsFx SDK is built to be used in browser and Node.js environment, common scenarios include:
+TeamsFx helps to reduce the developer tasks by using Teams SSO and accessing cloud resources down to single line statements with zero configuration. TeamsFx SDK is built to be used in browser and Node.js environment, common scenarios include:
* Teams tab application * Azure Function
const profile = await graphClient.api("/users/{object_id_of_another_people}").ge
### TeamsFx class
-TeamsFx class instance access all TeamsFx settings from environment variables by default. You can also set customized configuration values to override the default values. Please check [override configuration](#override-configuration) for details.
+TeamsFx class instance access all TeamsFx settings from environment variables by default. You can also set customized configuration values to override the default values. Check [override configuration](#override-configuration) for details.
When creating a TeamsFx instance, you also need to specify the identity type. There are two identity types:
There are two identity types:
| `new TeamsFx(IdentityType.User)`| Application is authenticated as current Teams user. | | `TeamsFx:setSsoToken()`| User identity in Node.js environment (without browser). | | `TeamsFx:getUserInfo()` | To get user's basis information. |
-| `TeamsFx:login()` | It is used to let user perform consent process, if you want to use SSO to get access token for certain OAuth scopes. |
+| `TeamsFx:login()` | It's used to let user perform consent process, if you want to use SSO to get access token for certain OAuth scopes. |
> [!NOTE] > You can access resources on behalf of current Teams user.
There are two identity types:
| Command | Description | |-|-|
-| `new TeamsFx(IdentityType.App)`| Application is authenticated as an application.The permission usually needs administrator's approval.|
+| `new TeamsFx(IdentityType.App)`| Application is authenticated as an application. The permission usually needs administrator's approval.|
| `TeamsFx:getCredential()`| Its provides credential instances automatically corresponding to identity type. | > [!NOTE]
There are two identity types:
### Credential
-You must choose identity type when initializing TeamsFx. After you have specified the identity type when initializing TeamsFx, SDK uses different kinds of credential class to represent the identity and get access token by corresponding auth flow.
+You must choose identity type when initializing TeamsFx. After you've specified the identity type when initializing TeamsFx, SDK uses different kinds of credential class to represent the identity and get access token by corresponding auth flow.
-There are three credential classes to simplify authentication. [credential folder](https://github.com/OfficeDev/TeamsFx/tree/main/packages/sdk/src/credential). Credential classes implement `TokenCredential` interface, which is broadly used in Azure library APIs, designed to provide access tokens for specific scopes. Other APIs relies on credential call `TeamsFx:getCredential()` to get an instance of `TokenCredential`.
+There are three credential classes to simplify authentication. [credential folder](https://github.com/OfficeDev/TeamsFx/tree/main/packages/sdk/src/credential). Credential classes implement `TokenCredential` interface, which is broadly used in Azure library APIs, designed to provide access tokens for specific scopes. Other APIs rely on credential call `TeamsFx:getCredential()` to get an instance of `TokenCredential`.
-Here's the corresponding scenarios for each credential class targets.
+Here's the corresponding scenarios for each credential class target.
#### User Identity in browser environment
-`TeamsUserCredential` represents Teams current user's identity. Using this credential will request user consent at the first time. It leverages the Teams SSO and On-Behalf-Of flow to do token exchange. SDK uses this credential when developer choose user identity in browser environment.
+`TeamsUserCredential` represents Teams current user's identity. Using this credential will request user consent at the first time. It leverages the Teams SSO and On-Behalf-Of flow to do token exchange. SDK uses this credential when developers choose user identity in browser environment.
Required configuration: `initiateLoginEndpoint`, `clientId`. #### User Identity in Node.js environment
-`OnBehalfOfUserCredential` uses On-Behalf-Of flow and need Teams SSO token. It's designed to be used in Azure Function or bot scenarios. SDK uses this credential when developer choose user identity in Node.js environment.
+`OnBehalfOfUserCredential` uses On-Behalf-Of flow and need Teams SSO token. It's designed to be used in Azure Function or bot scenarios. SDK uses this credential when developers choose user identity in Node.js environment.
Required configuration: `authorityHost`, `tenantId`, `clientId`, `clientSecret` or `certificateContent`. #### Application Identity in Node.js environment
-`AppCredential` represents the application identity. It is usually used when user is not involved like time-triggered automation job. SDK uses this credential when developer choose App identity in Node.js environment.
+`AppCredential` represents the application identity. It's used when user isn't involved like time-triggered automation job. SDK uses this credential when developers choose App identity in Node.js environment.
Required configuration: `tenantId`, `clientId`, `clientSecret` or `certificateContent`.
Required configuration: `initiateLoginEndpoint`, `tenantId`, `clientId`, and `ap
### Supported functions
-TeamsFx SDK provides several functions to ease the configuration for third-party libraries. They are located under [core folder](https://github.com/OfficeDev/TeamsFx/tree/main/packages/sdk/src/core).
+TeamsFx SDK provides several functions to ease the configuration for third-party libraries. They're located under [core folder](https://github.com/OfficeDev/TeamsFx/tree/main/packages/sdk/src/core).
* Microsoft Graph Service:`createMicrosoftGraphClient` and `MsGraphAuthProvider` help to create authenticated Graph instance. * SQL:`getTediousConnectionConfig` returns a tedious connection config.
You can pass custom config when creating TeamsFx instance to override default co
## Upgrade latest SDK version
-If you are using the version of SDK that has `loadConfiguration()`, you can follow these steps to upgrade to the latest SDK version.
+If you're using the version of SDK that has `loadConfiguration()`, you can follow these steps to upgrade to the latest SDK version.
1. Remove `loadConfiguration()` and pass customized settings using `new TeamsFx(IdentityType.User, { ...customConfig })` 2. Replace `new TeamsUserCredential()` with `new TeamsFx()` 3. Replace `new M365TenantCredential()` with `new TeamsFx(IdentityType.App)`
platform Accounts https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/accounts.md
If you have a Visual Studio Enterprise or Professional subscription, both progra
### Microsoft 365 developer program
-To get a free Teams developer account join the Microsoft 365 developer program and perform the following steps:
+To get a free Teams developer account, join the Microsoft 365 developer program and perform the following steps:
1. Go to the [Microsoft 365 developer program](https://developer.microsoft.com/microsoft-365/dev-program). 2. Select **Join Now**.
You can sign up for the developer program by using one of the following account
- **Visual Studio user id**
- The user id created to use Visual Studio Professional or Enterprise subscription can be used to join the developer program within the Visual Studio Gallery to avail full benefits as a Visual Studio subscriber.
+ The user ID created to use Visual Studio Professional or Enterprise subscription can be used to join the developer program within the Visual Studio Gallery to avail full benefits as a Visual Studio subscriber.
## Azure account to host backend resources
Azure account is optional if your existing application is hosted on other cloud
**Visual Studio ID**
-If you want to host your application related resources or access resources within Azure, you can [create a free account](https://azure.microsoft.com/free/) before you begin. Alternatively you can select to host your backend resources using another cloud provider, or on your own servers if they are available from the public domain.
+If you want to host your application related resources or access resources within Azure, you can [create a free account](https://azure.microsoft.com/free/) before you begin. Alternatively you can select to host your backend resources using another cloud provider, or on your own servers if they're available from the public domain.
## Teams custom app upload or sideload permission
If you want to host your application related resources or access resources withi
* **Verify sideloading permission using Visual Studio Code** 1. Open **Visual Studio Code**.
- 1. Select **Teams Toolkit** from the left panel. If you are unable to see the option ensure that you have installed Teams Toolkit extension.
+ 1. Select **Teams Toolkit** from the left panel. If you're unable to see the option ensure that you have installed Teams Toolkit extension.
1. Select **Accounts** and log in to your Microsoft 365 account. 1. Check whether you can view the option **Sideloading enabled** as shown in the following image:
If you want to host your application related resources or access resources withi
:::image type="content" source="../assets/images/teams-toolkit-v2/upload.png" alt-text="Upload a custom app" border="true":::
- If you are unable to view the option **Upload a custom app** then, it indicates that you don't have the required permission for sideloading.
+ If you are unable to view the option Upload a custom app,** then, it indicates that you don't have the required permission for sideloading.
* For a tenant admin, enable the sideloading setting for your tenant or organization in the Teams admin center. * If you aren't a tenant admin, you'll need to contact your tenant admin to enable sideloading.
For more information, see [Manage custom app policies and settings in Teams](/mi
* [Create a new Teams app using Teams Toolkit](create-new-project.md) * [Provision cloud resources](provision.md) * [Deploy Teams app to the cloud](deploy.md)
-* [Publish your Teams app](TeamsFx-collaboration.md)
+* [Publish your Teams app](../concepts/deploy-and-publish/appsource/publish.md)
* [Manage multiple environments](TeamsFx-multi-env.md)
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 your Teams app
-TeamsFx helps to provision cloud resources for your application hosting. You can also optionally add cloud resources that fits your development needs.
+TeamsFx helps to provision cloud resources for your application hosting. You can also optionally add cloud resources that fit your development needs.
## Prerequisite
TeamsFx helps to provision cloud resources for your application hosting. You can
1. Select **OK**.
-The selected resources are succesfully added to your project.
+The selected resources are successfully added to your project.
## Add cloud resources using TeamsFx CLI in command window
TeamsFx integrates with Azure services for the following scenarios:
- [Azure functions](/azure/azure-functions/functions-overview): A serverless solution to meet your on-demand requirements, such as creating web APIs for your Teams applications backend. - [Azure SQL database](/azure/azure-sql/database/sql-database-paas-overview): A platform as a service (PaaS) database engine to serve as your Teams applications data store.-- [Azure API management](/azure/azure-sql/database/sql-database-paas-overview): An API gateway that can be used to administer APIs created for Teams applications and publish them to consume on other applications, such as Power apps.
+- [Azure API management](deploy.md): An API gateway that can be used to administer APIs created for Teams applications and publish them to consume on other applications, such as Power apps.
- [Azure Key Vault](/azure/key-vault/general/overview): Safeguard cryptographic keys and other secrets used by cloud apps and services. ## Add Cloud resources
TeamsFx integrates with Azure services for the following scenarios:
After adding any resource, the changes in your project are as follows: - New parameters may be added to azure.parameter.{env}.json to provide required information for provision.-- New content are appended to ARM template under `templates/azure` folder except the files under `templates/azure/teamsfx` folder to create the added Azure resources.
+- New content is appended to ARM template under `templates/azure` folder except the files under `templates/azure/teamsfx` folder to create the added Azure resources.
- The files under `templates/azure/teamsfx` folder are regenerated to ensure TeamsFx required configuration are up to date for added Azure resources. - `.fx/projectSettings.json` is updated to track the resources present in your project.
-After adding resouces, the additional changes in your project are as follows:
+After adding resources, the additional changes in your project are as follows:
|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 `.visual studio code` 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 application locally.|
-|Azure API management|An open API specification file added into a subfolder with path `yourProjectFolder/openapi`|Defines your API after publishing, it is the API specification file .|
+|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.|
## Limitation
platform Create New Project https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/create-new-project.md
For more information, see [Create a new Teams Tab app (React)](/microsoftteams/p
* [Provision cloud resources](provision.md) * [Deploy Teams app to the cloud](deploy.md)
-* [Publish your Teams app](TeamsFx-collaboration.md)
+* [Publish your Teams app](../concepts/deploy-and-publish/appsource/publish.md)
* [Manage multiple environments](TeamsFx-multi-env.md) * [Collaborate with other developers on Teams project](TeamsFx-collaboration.md)
platform Use CICD Template https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/use-CICD-template.md
TeamsFx helps to automate your development workflow while building Teams applica
|Tools and Templates | Description | ||| |[TeamsFx-CLI-Action](https://github.com/OfficeDev/teamsfx-cli-action)|GitHub Action that integrates with TeamsFx CLI.|
-|[Teams Toolkit in Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=TeamsDevApp.ms-teams-vscode-extension)| Visual Studio Code extension that helps you to develop Teams app as well as automation workflows for GitHub, Azure DevOps, and Jenkins. |
-|[TeamsFx CLI](https://www.npmjs.com/package/@microsoft/teamsfx-cli) | Command Line tool that helps you to develop Teams app as well as automation workflows for GitHub, Azure DevOps, and Jenkins.|
+|[Teams Toolkit in Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=TeamsDevApp.ms-teams-vscode-extension)| Visual Studio Code extension that helps you to develop Teams app and automation workflows for GitHub, Azure DevOps, and Jenkins. |
+|[TeamsFx CLI](https://www.npmjs.com/package/@microsoft/teamsfx-cli) | Command Line tool that helps you to develop Teams app and automation workflows for GitHub, Azure DevOps, and Jenkins.|
|[script-ci-template.sh](https://github.com/OfficeDev/TeamsFx/blob/main/docs/cicd_insider/others-script-ci-template.sh) and [script-cd-template.sh](https://github.com/OfficeDev/TeamsFx/blob/main/docs/cicd_insider/others-script-cd-template.sh)| Script templates for automation outside of GitHub, Azure DevOps, or Jenkins. |
To set up pipelines with GitHub for CI/CD:
You can change or remove the test scripts to customize CI/CD workflow: 1. By default, the CD workflow is triggered, when new commits are made to the `main` branch.
-1. Change the build scripts if required.
+1. Change the build scripts if necessary.
1. Remove the test scripts as required. ### Set up pipelines with Azure DevOps
To set up pipelines with Azure DevOps for CI/CD:
The following are the changes you can make for the script or workflow definition: 1. Use npm build script or customize the way you build in the automation code.
-1. Use npm test script which returns zero for success, and change the test commands.
+1. Use npm test script, which returns zero for success, and change the test commands.
### Customize CD workflow The following are the changes you can make for the script or workflow definition:
-1. Ensure you have a npm build script or customize the way you build in the automation code.
-1. Ensure you have a npm test script which returns zero for success or change the test commands.
+1. Ensure you have an npm build script or customize the way you build in the automation code.
+1. Ensure you have an npm test script, which returns zero for success or change the test commands.
### Set up pipelines with Jenkins
To set up pipelines with Jenkins for CI/CD:
The following are some of the changes you can make to your project: 1. Change how the CI flow is triggered. The default is to use the triggers of **pollSCM** when a new change is pushed into the **dev** branch.
-1. Ensure you have a npm build script or customize the way you build in the automation code.
-1. Ensure you have a npm test script which returns zero for success or change the test commands.
+1. Ensure you have an npm build script or customize the way you build in the automation code.
+1. Ensure you have an npm test script, which returns zero for success or change the test commands.
### Customize CD workflow
The scripts are based on a cross-platform TeamsFx command line tool [TeamsFx-CLI
> * To enable `@microsoft/teamsfx-cli` running in CI mode, turn on `CI_ENABLED` by `export CI_ENABLED=true`. In CI mode, `@microsoft/teamsfx-cli` is friendly for CI/CD. > * To enable `@microsoft/teamsfx-cli` running in the non-interactive mode, set a global config with command: `teamsfx config set -g interactive false`. In the non-interactive mode, `@microsoft/teamsfx-cli` does not prompt for inputs.
-Ensure to set up Azure and Microsoft 365 credentials in your environment variables safely. For example, if you are using GitHub as your source code repository, see [Github Secrets](https://docs.github.com/en/actions/reference/encrypted-secrets).
+Ensure to set up Azure and Microsoft 365 credentials in your environment variables safely. For example, if you're using GitHub as your source code repository, see [GitHub Secrets](https://docs.github.com/en/actions/reference/encrypted-secrets).
## Provision and deploy resources
Perform the following steps to publish your app:
* [Quick Start for GitHub Actions](https://docs.github.com/en/actions/quickstart#creating-your-first-workflow) * [Create your first Azure DevOps Pipeline](/azure/devops/pipelines/create-first-pipeline) * [Create your first Jenkins Pipeline](https://www.jenkins.io/doc/pipeline/tour/hello-world/)
-* [Manage your apps with the Developer Portal for Microsoft Teams](/concepts/build-and-test/teams-developer-portal)
+* [Manage your apps with the Developer Portal for Microsoft Teams](../concepts/build-and-test/teams-developer-portal.md)