Updates from: 06/29/2023 03:35:18
Service Microsoft Docs article Related commit history on GitHub Change details
platform Build Apps For Anonymous User https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/build-apps-for-anonymous-user.md
Last updated 02/07/2023
Anonymous users don't have an Azure Active Directory (Azure AD) identity and aren't federated with a tenant. The anonymous participants are like external users but their identity isn't shown in the meeting. An anonymous user can be a presenter or an attendee but can't be an organizer. You can build bots, messaging extensions, and cards and task modules in your app to engage with anonymous meeting participants. > [!NOTE]
-> Apps for anonymous users are supported in Teams mobile iOS client only.
+> Apps for anonymous users are supported in Teams desktop and Teams mobile iOS client only.
For anonymous users to interact with the apps in Teams meetings, ensure to:
platform Conversation Messages https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/conversation-messages.md
POST {Service URL of your bot}/v3/conversations
Messages sent between users and bots include internal channel data within the message. This data allows the bot to communicate properly on that channel. The Bot Builder SDK allows you to modify the message structure.
-## Update message
+## Get edit message event
-When you edit or undelete a message in a chat, the bot gets a notification of the edit message or undelete message event.
+When you edit a message in a chat, the bot gets a notification of the edit message event.
-To get an edit or undelete message event notification in a bot, you can override the following handlers:
-
-* For edit: `OnTeamsMessageEditAsync`
-* For undelete: `OnTeamsMessageUndeleteAsync`
+To get an edit message event notification in a bot, you can override `OnTeamsMessageEditAsync` handler.
> [!NOTE]
->
->The `OnTeamsMessageEditAsync` and `OnTeamsMessageUndeleteAsync` handlers arenΓÇÖt supported in group chat and Teams channel scopes.
+> The `OnTeamsMessageEditAsync` handler isnΓÇÖt supported in group chat and Teams channel scopes.
-The following is an example of an edit message event notification when a sent message is edited:
+Following is an example of an edit message event notification using `OnTeamsMessageEditAsync` when a sent message is edited:
# [C#](#tab/dotnet3)
await turnContext.SendActivityAsync(replyActivity, cancellationToken);
"from": { "id":"29:1BLjP9j3_PM4mubmQZsYPx7jDyLeLf_YVA9sVPV08KMAFMjJWB_EUGveb9EVDh9TslNp9qjnzEBy3kgw01Jf1Kg", "name":"Mike Wilber",
- "aadObjectId":"520e4d1e-2108-43ee-a092-46a9507c6200"
+ "aadObjectId":"520e4d1e-2108-43ee-a092-46a9507c6200"caching
}, "conversation":{ "conversationType":"personal",
PUT {Service URL of your bot}/v3/conversations/{conversationId}/activities/{acti
-The following is an example of an undelete message event notification when a deleted message is restored:
+## Get undelete message event
+
+When you undelete a message in a chat, the bot gets a notification of the undelete message event.
+
+To get an undelete message event notification in a bot, you can override `OnTeamsMessageUndeleteAsync` handler.
+
+> [!NOTE]
+> The `OnTeamsMessageUndeleteAsync` handler isnΓÇÖt supported in group chat and Teams channel scopes.
+
+The following is an example of an undelete message event notification using `OnTeamsMessageUndeleteAsync` when a deleted message is restored:
# [C#](#tab/dotnet4)
await turnContext.SendActivityAsync(replyActivity, cancellationToken);
}, "entities":[ {
- "locale":"en-US",
+ "locale":"en-US",
"country":"US", "platform":"Web", "timezone":"America/Los_Angeles",
You can either use **ΓÇïevent function registration** or **ΓÇïmethod override**
this.onTeamsMessageUndeleteEvent(async (context, next) => { let undeletedMessage = context.activity.text; let messageId = context.activity.id;
- await context.sendActivity(`Previously the message was deleted. After undeleting, the message is now: "${undeletedMessage}"`);
- next();
+ await context.sendActivity(`Previously the message was deleted. After undeleting, the message is now: "${undeletedMessage}"`);
+next();
}) ```
PUT {Service URL of your bot}/v3/conversations/{conversationId}/activities/{acti
-## Soft delete message
+## Get soft delete message event
When you soft delete a message in a chat, the bot gets a notification of the soft delete message event.
-To get a soft delete message event notification in a bot, you can override the `OnTeamsMessageSoftDeleteAsync` handler.
+To get a soft delete message event notification in a bot, you can override `OnTeamsMessageSoftDeleteAsync` handler.
> [!NOTE]
->
->The `OnTeamsMessageSoftDeleteAsync` handler isnΓÇÖt supported in group chat and Teams channel scopes.
+> The `OnTeamsMessageSoftDeleteAsync` handler isnΓÇÖt supported in group chat and Teams channel scopes.
-The following is an example of a soft delete message event notification when a message is soft deleted:
+Following is an example of a soft delete message event notification using `OnTeamsMessageSoftDeleteAsync` when a message is soft deleted:
# [C#](#tab/dotnet5)
platform In App Purchase Flow https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/prepare/in-app-purchase-flow.md
ms.localizationpriority: high
# In-app purchases
-Microsoft Teams provides APIs that you can use to implement the in-app purchases to upgrade from free to paid Teams apps. In-app purchase allows you to convert users from free to paid plans directly from within your app.
+Microsoft Teams provides APIs that you can use to implement the in-app purchases to upgrade from free to paid Teams apps. In-app purchase allows you to convert users from free to paid plans directly from your app.
+
+In-app purchases allow users to purchase a new paid subscription and it doesn't enable the users to purchase additional or different licenses with existing paid subscriptions. To switch between plans, an existing user subscription must be canceled before a new subscription can be purchased through in-app purchases.
+
+> [!NOTE]
+> In-app purchases is supported only in [personal app contexts](~/concepts/design/app-structure.md#personal-apps).
## Implement in-app purchases
platform How To Extend Copilot https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/copilot/how-to-extend-copilot.md
Your Message Extension will work with Copilot (after quality testing).
## What makes a good plugin for Microsoft 365 Copilot?
-To ensure your plugin works as intended, it is important to include good descriptions in your manifest. This allows the underlying LLM to take full advantage of your pluginΓÇÖs capabilities. ItΓÇÖs recommended to test different descriptions and instructions to find the most effective way for the LLM to utilize your plugin. Also, itΓÇÖs important that the manifest file is up-to-date with any changes or enhancements you make to your plugin.
+To ensure your plugin works as intended, it's important to include good descriptions in your manifest. This allows the underlying LLM to take full advantage of your pluginΓÇÖs capabilities. ItΓÇÖs recommended to test different descriptions and instructions to find the most effective way for the LLM to utilize your plugin. Also, itΓÇÖs important that the manifest file is up-to-date with any changes or enhancements you make to your plugin.
1. App description: Include detailed descriptions of the app, supported scenarios, feature capabilities, and related keywords using the `shortDescription` and `longDescription` fields.
To ensure your plugin works as intended, it is important to include good descrip
4. Including links in plugin response: Including links within your skillΓÇÖs response serves multiple purposes: * Assists the LLM in posting the entity link for users, streamlining the reference process. * Enables users to easily access your entities in future Copilot requests.
- * Embedded links in Adaptive Cards that allows your content to be displayed as a live, actionable loop component throughout the M365 ecosystem, enhancing user engagement and interaction.
+ * Embedded links in Adaptive Cards that allows your content to be displayed as a live, actionable loop component throughout the Microsoft 365 ecosystem, enhancing user engagement and interaction.
5. Deep Content Retrieval: To further enhance your pluginΓÇÖs functionality, itΓÇÖs recommended that your API supports deep content retrieval scenarios that can be leveraged by the LLMs to obtain grounding data. This involves enabling Copilot to send targeted requests, such as limiting a search to a specific date range, to your API for particular tasks and queries.
When you connect your API to Teams, you've built a simple, powerful Microsoft 36
## Connecting external data sources
-If you have an existing Microsoft Graph Connector, it will work with Copilot without any changes. With a Graph Connector, your data will be included in Copilot responses, and also participate in other Microsoft 365 experiences such as search, content recommendations. For more information, see [building a Microsoft Graph connector](https://developer.microsoft.com/graph/connectors).
+If you have an existing Microsoft Graph Connector, it works with Copilot without any changes. With a Graph Connector, your data is included in Copilot responses, and also participate in other Microsoft 365 experiences such as search, content recommendations. For more information, see [building a Microsoft Graph connector](https://developer.microsoft.com/graph/connectors).
## How to make your Graph connector work better with Copilot?
-To ensure your Graph connector works well with Copilot, there are several things you should do. Following these tips will also improve relevance for your connector content with Microsoft Search:
+To ensure your Graph connector works well with Copilot, there are several things you should do. Following these tips improves relevance for your connector content with Microsoft Search:
-1. Include `urlToItemResolver`. By including `urlToItemResolver` in your connectorΓÇÖs [activity settings](/graph/connecting-external-content-manage-connections), Copilot will become aware when users share URLs to your content with one another. When users share an item with one another, Copilot will boost its importance for including the item in its response.
+1. Include `urlToItemResolver`. By including `urlToItemResolver` in your connectorΓÇÖs [activity settings](/graph/connecting-external-content-manage-connections#activity-settings), Copilot will become aware when users share URLs to your content with one another. When users share an item with one another, Copilot boosts its importance for including the item in its response.
2. Provide a rich human-readable name and detailed description when you [create the connection](/graph/api/externalconnectors-external-post-connections). This helps Copilot understand what the data source is, so it includes the data source in its response if itΓÇÖs relevant.
-3. Apply [semantic labels](/graph/connecting-external-content-manage-schema). Semantic labels help Copilot understand the semantic meaning of your schema. You must apply as many of them to your schema as applicable.
+3. Apply [semantic labels](/graph/connecting-external-content-manage-schema#semantic-labels). Semantic labels help Copilot understand the semantic meaning of your schema. You must apply as many of them to your schema as applicable.
4. Add [user activities](/graph/api/externalconnectors-externalitem-addactivities). In addition to adding your content `externalItems` to the Microsoft Graph, your connector should also add user activities around youΓÇÖre content. Supported activity types are shown [here](/graph/api/resources/externalconnectors-externalactivity). Items that have more activities are boosted in their importance. ## See also
platform Teams Toolkit Fundamentals https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/teams-toolkit-fundamentals.md
Last updated 05/24/2022
> [!IMPORTANT] >
-> We've introduced the Teams Toolkit v5 extension within Visual Studio Code. This version comes to you with many new app development features. We recommend that you use Teams Toolkit v5 for building your Teams app.
->
-> [Teams Toolkit v4](toolkit-v4/teams-toolkit-fundamentals-v4.md) extension will soon be deprecated.
+> * We've introduced the Teams Toolkit v5 extension within Visual Studio Code. This version comes to you with many new app development features. We recommend that you use Teams Toolkit v5 for building your Teams app.
+> * Teams Toolkit isn't supported in Government Community Cloud (GCC) and GCC-High environments.
+> * [Teams Toolkit v4](toolkit-v4/teams-toolkit-fundamentals-v4.md) extension will soon be deprecated.
Teams Toolkit makes it simple to get started with app development for Microsoft Teams using Visual Studio Code.
platform Use CICD Template https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/use-CICD-template.md
TeamsFx supports four types of workflow templates:
Two categories of sign in credentials are involved in CI/CD workflows:
-* **M365**: M365 credentials are required for running Provision, Publish, and SPFx based projects' CD workflows.
+* **Microsoft 365**: Microsoft 365 credentials are required for running Provision, Publish, and SPFx based projects' CD workflows.
* **Azure**: Azure credentials are required for running Azure hosted projects' Provision and CD workflows. > [!NOTE]
-> Azure subscription id is required to be set in environment variable or `env/.env.*` files before running Provision workflows. The variable name used is `AZURE_SUBSCRIPTION_ID`. Also, please don't forget to commit and push files `env/.env.*` into Git repositories or set pipelines' environment variables as they're ignored by `.gitignore` file by default.
+> Azure subscription id is required to be set in environment variable or `env/.env.*` files before running Provision workflows. The variable name used is `AZURE_SUBSCRIPTION_ID`. Also, don't forget to commit and push files `env/.env.*` into Git repositories or set pipelines' environment variables as they're ignored by `.gitignore` file by default.
|Name | Description | |||
Two categories of sign in credentials are involved in CI/CD workflows:
> [!NOTE] >
-> * Currently, a non-interactive authentication style for Microsoft 365 is used in CI/CD workflows, so please ensure that your Microsoft 365 account has sufficient privileges in your tenant and doesn't have multi-factor authentication or other advanced security features enabled. Please refer to the [Configure Microsoft 365 Credentials](https://github.com/OfficeDev/teamsfx-cli-action/blob/main/README.md#configure-m365azure-credentials-as-github-secret) to make sure you have disabled Multi-factor Authentication and Security Defaults for the credentials used in the workflow.
+> * Currently, a non-interactive authentication style for Microsoft 365 is used in CI/CD workflows, so ensure that your Microsoft 365 account has sufficient privileges in your tenant and doesn't have multi-factor authentication or other advanced security features enabled. Refer to the [Configure Microsoft 365 Credentials](https://github.com/OfficeDev/teamsfx-cli-action/blob/main/README.md#configure-m365azure-credentials-as-github-secret) to make sure you have disabled Multi-factor Authentication and Security Defaults for the credentials used in the workflow.
> * Currently, service principal for Azure is used in CI/CD workflows, and to create Azure service principals for use, refer to [here](https://github.com/devdiv-azure-service-dmitryr/teamsfx-docs/blob/main/V5-doc-update/cicd.md#how-to-create-azure-service-principals-for-use). ## Host types
-Templates vary in host types (Azure or SPFx) by which Provision and CD workflow templates are splited into copies. CI, Publish workflow templates are host-type independent. If you're working on Azure hosted projects, please download those templates with file name of `azure` infixes. If you're working on SPFx hosted projects, please download those templates with file name of `spfx` infixes.
+Templates vary in host types (Azure or SPFx) by which Provision and CD workflow templates are split into copies. CI, Publish workflow templates are host-type independent. If you're working on Azure hosted projects, download those templates with file name of `azure` infixes. If you're working on SPFx hosted projects, download those templates with file name of `spfx` infixes.
## Set up workflows with GitHub
To set up pipelines with GitHub for CI/CD:
1. Download the corresponding template files from [Tools and Templates](#tools-and-templates). 1. Rename the downloaded template files by your needs.
-1. Put them under `.github/workflows` which is the designated folder for GitHub Actions.
+1. Put them under `.github/workflows`, which is the designated folder for GitHub Actions.
1. Commit and push these template files into remote repositories. 1. Add necessary [encrypted secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets) for your workflows. 1. Trigger your workflows. Check more [details](https://docs.github.com/en/actions/using-workflows/triggering-a-workflow) about how to trigger a workflow on GitHub.
To customize the CD workflow, you can do the following:
1. Change the trigger: By default, the CD workflow is triggered when new commits are pushed into `main` branch. 1. Change the value of environment variable `TEAMSFX_ENV_NAME`: By default, the value is `dev`.
-1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `1.*`.
+1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `2.*`.
1. Add scripts to build the project: By default, the `Build the project` step is commented. 1. Add scripts to run unit test: By default, the `Run unit test` step is commented.
To customize the Provision and Publish workflow, you can do the following:
1. Change the trigger: By default, the workflow is triggered manually. 1. Change the value of environment variable `TEAMSFX_ENV_NAME`: By default, the value is `dev`.
-1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `1.*`.
+1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `2.*`.
## Set up pipelines with Azure DevOps
To set up pipelines with Azure DevOps for CI/CD:
1. Download the corresponding template files from [Tools and Templates](#tools-and-templates). 1. Rename the downloaded template files by your needs.
-1. Put them under `.azure/pipelines` which is the conventional folder for Azure Pipelines.
+1. Put them under `.azure/pipelines`, which is the conventional folder for Azure Pipelines.
1. Commit and push these template files into remote repositories. 1. Create corresponding Azure DevOps pipelines by following [Create your first Azure DevOps Pipeline](/azure/devops/pipelines/create-first-pipeline). 1. Add necessary [Azure DevOps Pipeline variables](/azure/devops/pipelines/process/variables) for your pipelines.
To customize the CD pipeline, you can do the following:
1. Change the trigger: By default, the CD pipeline is triggered when new commits are pushed into `main` branch. 1. Change the value of environment variable `TEAMSFX_ENV_NAME`: By default, the value is `dev`.
-1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `1.*`.
+1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `2.*`.
1. Add scripts to build the project: By default, the `Build the project` step is commented. 1. Add scripts to run unit test: By default, the `Run unit test` step is commented.
To customize the Provision and Publish pipeline, you can do the following:
1. Change the trigger: By default, the workflow is triggered manually. 1. Change the value of environment variable `TEAMSFX_ENV_NAME`: By default, the value is `dev`.
-1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `1.*`.
+1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `2.*`.
## Set up pipelines with Jenkins
To set up pipelines with Jenkins for CI/CD:
1. Download the corresponding template files from [Tools and Templates](#tools-and-templates). 1. Rename the downloaded template files by your needs.
-1. Put them under `.jenkins/pipelines` which can be a conventional folder for Jenkins Pipelines.
+1. Put them under `.jenkins/pipelines`, which can be a conventional folder for Jenkins Pipelines.
### Customize CI pipeline
To customize the CD pipeline, you can do the following:
1. Change the trigger: By default, the CD pipeline is triggered periodically. 1. Change the value of environment variable `TEAMSFX_ENV_NAME`: By default, the value is `dev`.
-1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `1.*`.
+1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `2.*`.
1. Add scripts to build the project: By default, the `Build the project` step is commented. 1. Add scripts to run unit test: By default, the `Run unit test` step is commented.
To customize the Provision and Publish pipeline, you can do the following:
1. Change the trigger: By default, the pipeline is triggered periodically. 1. Change the value of environment variable `TEAMSFX_ENV_NAME`: By default, the value is `dev`.
-1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `1.*`.
+1. Change the value of environment variable `TEAMSFX_CLI_VERSION`: By default, the value is `2.*`.
## Set up pipelines for other platforms
To provision and deploy resources targeting Azure inside CI/CD, you must create
Perform the following steps to create Azure service principals:
-1. Register an Microsoft Azure Active Directory (Azure AD) application in single tenant.
+1. Register a Microsoft Azure Active Directory (Azure AD) application in single tenant.
2. Assign a role to your Azure AD application to access your Azure subscription. The `Contributor` role is recommended. 3. Create a new Azure AD application secret.
platform Whats New https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/whats-new.md
Teams platform features that are available to all app developers.
|20/02/2023| Plan your app growth in Teams | Grow your app > [Strategize and execute growth for your app](concepts/deploy-and-publish/appsource/post-publish/app-growth/overview-app-growth.md)| |17/02/2023| Build a dashboard tab app | Build Tabs > [Build a dashboard tab app](tabs/how-to/build-a-dashboard-tab-app.md#build-a-dashboard-tab-app)| |09/02/2023| Apps for Teams meetings support anonymous users | Build apps for Teams meetings and calls > Enable and configure apps for Teams meeting > [Build apps for anonymous users](apps-in-teams-meetings/build-apps-for-anonymous-user.md) |
-|31/01/2023| Introducing update and soft delete event notifications in bot | Build bots > Bot conversations > [Messages in bot conversations](bots/how-to/conversations/conversation-messages.md#update-message)
+|31/01/2023| Introducing update and soft delete event notifications in bot | Build bots > Bot conversations > [Messages in bot conversations](bots/how-to/conversations/conversation-messages.md#get-edit-message-event)|
</details> </br>