Updates from: 06/23/2022 01:15:30
Service Microsoft Docs article Related commit history on GitHub Change details
platform API References https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/API-references.md
To use the Meeting Details API, you must obtain different RSC permission based o
<details>
-<summary><b>For app manifest version 1.12</b></summary>
+<summary><b>For app manifest version 1.12 and later</b></summary>
Use the following example to configure your app manifest's `webApplicationInfo` and `authorization` properties for any private meeting:
Use the following example to configure your app manifest's `webApplicationInfo`
<details>
-<summary><b>For app manifest version 1.11 or earlier</b></summary>
+<summary><b>For app manifest version 1.11 and earlier</b></summary>
Use the following example to configure your app manifest's `webApplicationInfo` property for any private meeting:
Your app manifest must have the `webApplicationInfo` property to receive the mee
<details>
-<summary><b>For app manifest version 1.12</b></summary>
+<summary><b>For app manifest version 1.12 and later</b></summary>
```json "webApplicationInfo": {
Your app manifest must have the `webApplicationInfo` property to receive the mee
<details>
-<summary><b>For app manifest version 1.11 or earlier</b></summary>
+<summary><b>For app manifest version 1.11 and earlier</b></summary>
```json "webApplicationInfo": {
platform Designing Apps In Meetings https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/design/designing-apps-in-meetings.md
In-meeting dialogs display on the Teams meeting stage. They require a user's att
In-meeting dialogs are triggered by a user (such as the meeting organizer) who might want participants to:
-* Provide brief feedback
-* Take a short survey or poll
-* Submit approvals
-* Get reminders
+* Provide brief feedback.
+* Take a short survey or poll.
+* Submit approvals.
+* Get reminders.
### Mobile
platform Meeting App Extensibility https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/meeting-app-extensibility.md
The following image displays the **Contoso** tab with results of poll and feedba
### Integrate bots into the meeting lifecycle
-Bots that are enabled in group chat scope start functioning in meetings. To implement bots, start with [build a bot](../build-your-first-app/build-bot.md) and then continue with [create apps for Teams meetings](../apps-in-teams-meetings/API-references.md#meeting-apps-api-references).
+Bots that are enabled in group chat scope start functioning in meetings. To implement bots, start with [build a bot](../build-your-first-app/build-bot.md), and then continue with [create apps for Teams meetings](../apps-in-teams-meetings/API-references.md#meeting-apps-api-references).
### Integrate message extensions into the meeting lifecycle
-To implement message extension, start with [build a message extension](../messaging-extensions/how-to/create-messaging-extension.md) and then continue with [create apps for Teams meetings](../apps-in-teams-meetings/API-references.md#meeting-apps-api-references).
+To implement message extension, start with [build a message extension](../messaging-extensions/how-to/create-messaging-extension.md), and then continue with [create apps for Teams meetings](../apps-in-teams-meetings/API-references.md#meeting-apps-api-references).
The Teams unified meetings apps allow you to design your app based on participant roles in a meeting.
The following table provides the user types and lists the features that each use
* [Bot](../bots/what-are-bots.md) * [Message extension](../messaging-extensions/what-are-messaging-extensions.md) * [Design your app](../apps-in-teams-meetings/design/designing-apps-in-meetings.md)
+* [Microsoft Teams meeting attendance report](/microsoftteams/teams-analytics-and-reports/meeting-attendance-report)
platform Teams Apps In Meetings https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/teams-apps-in-meetings.md
Title: Apps for Teams meetings
+ Title: Apps for Teams meetings
description: In this article, learn how apps works in Microsoft Teams meetings based on participant and user role and app extensibility.
platform Teams Live Share Faq https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/teams-live-share-faq.md
Title: Live Share FAQ
-description: In this module, learn more about Live Share Frequently Asked Questions.
+description: In this module, learn more about Live Share Frequently Asked Questions.
ms.localizationpriority: high
Get answers to common questions when using Live Share.<br>
<summary><b>Can I use my own Azure Fluid Relay service?</b></summary>
-Yes. When constructing the `TeamsFluidClient` class, you can define your own `AzureConnectionConfig`. Live Share associates containers you create with meetings, but you'll need to create your own Azure `ITokenProvider` to sign tokens for your containers and regional requirements. For more information, see Azure [Fluid Relay documentation](/azure/azure-fluid-relay/).
+Yes. When constructing the `TeamsFluidClient` class, you can define your own `AzureConnectionConfig`. Live Share associates containers you create with meetings, but you'll need to create your own Azure `ITokenProvider` to sign tokens for your containers and regional requirements. For more information, see Azure [Fluid Relay documentation](/azure/azure-fluid-relay/).
<br>
No. Teams currently doesn't support encrypted media for tab applications.
</details>
+<details>
+<summary><b>How many people can attend a Live Share session?</b></summary>
+
+Currently, Live Share supports a maximum of 100 attendees per session.
+
+<br>
+
+</details>
+ ## Have more questions or feedback? Submit issues and feature requests to the SDK repository for [Live Share SDK](https://github.com/microsoft/live-share-sdk). Use the `live-share` and `microsoft-teams` tag to post how-to questions about the SDK at [Stack Overflow](https://stackoverflow.com/questions/tagged/live-share+microsoft-teams). ## See also
-* [GitHub repository](https://github.com/microsoft/live-share-sdk)
-* [Live Share SDK reference docs](/javascript/api/@microsoft/live-share/)
-* [Live Share Media SDK reference docs](/javascript/api/@microsoft/live-share-media/)
-* [Teams apps in meetings](teams-apps-in-meetings.md)
+- [GitHub repository](https://github.com/microsoft/live-share-sdk)
+- [Live Share SDK reference docs](/javascript/api/@microsoft/live-share/)
+- [Live Share Media SDK reference docs](/javascript/api/@microsoft/live-share-media/)
+- [Teams apps in meetings](teams-apps-in-meetings.md)
platform Teams Live Share Tutorial https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/teams-live-share-tutorial.md
start().catch((error) => console.error(error));
Not all of your apps views will need to be collaborative. The `stage` view *always* needs collaborative features, the `content` view *may* need collaborative features, and the `config` view should *never* need collaborative features. For the views that do need collaborative features you'll need to join a Fluid container associated with the current meeting.
-Joining the container for the meeting is as simple as creating a new [TeamsFluidClient](/javascript/api/@microsoft/live-share/teamsfluidclient) and then calling it's [joinContainer()](/javascript/api/@microsoft/live-share/teamsfluidclient#@microsoft-live-share-teamsfluidclient-joincontainer) method. When running locally you'll need to pass in a custom connection config with a special `LOCAL_MODE_TENANT_ID` but otherwise, join a local container is the same as joining a container in Teams.
+Joining the container for the meeting is as simple as creating a new [TeamsFluidClient](/javascript/api/@microsoft/live-share/teamsfluidclient), and then calling it's [joinContainer()](/javascript/api/@microsoft/live-share/teamsfluidclient#@microsoft-live-share-teamsfluidclient-joincontainer) method. When running locally you'll need to pass in a custom connection config with a special `LOCAL_MODE_TENANT_ID` but otherwise, join a local container is the same as joining a container in Teams.
```js async function joinContainer() {
platform Bot Features https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/bot-features.md
The Azure bot service, along with the Bot Framework, provides tools to build, te
> Bot applications within Microsoft Teams are available in GCC-High through [Azure bot Service](/azure/bot-service/channel-connect-teams). > [!NOTE]
+>
> * Bots in GCCH only support up to manifest version v1.10. > * Image URL's in Adaptive Cards are not supported in GCCH environment. You can replace an image URL with Base64 encoded DataUri. > * Bot channel registration in Azure Government will provision web app bot, app service (app service plan), and application insights also but it doesn't support to provision the azure bot service only (no app service).
The Azure bot service, along with the Bot Framework, provides tools to build, te
> * Go to the resource group and manually delete the unused resources. Such as the app service, app service plan (if you created during bot registration), and the application insights (if you choose to enable it during bot registration). > * You can also use az-cli to do bot registration: >
-> 1. Sign into azure and set the subscription <br>
-> &nbsp; az cloud set ΓÇôname "AzureUSGovernment" <br>
+> 1. Sign into azure and set the subscription <br>
+> &nbsp; az cloud set ΓÇôname "AzureUSGovernment" <br>
> &nbsp; az account set ΓÇôname "`subscriptionname/id`".<br> > 1. Create app registration
-> &nbsp; az ad app create --display-name "`name`" <br>
-> &nbsp; --password "`password`" --available-to-other-tenants.<br>
+> &nbsp; az ad app create --display-name "`name`" <br>
+> &nbsp; --password "`password`" --available-to-other-tenants.<br>
> Your app id would be created here.<br> > 1. Create bot resource <br> > &nbsp; az bot create ΓÇôresource-group "`resource-group`"<br>
As the bot registration occurs in Azure Government portal, ensure to update the
* Set `ConnectionName` to the name of the OAuth connection setting you added to your bot. * Set `MicrosoftAppId` and `MicrosoftAppPassword` to your bot's app ID and app secret.
-
+ Depending on the characters in your bot secret, you may need to XML escape the password. For example, any ampersands (&) need to be encoded as `&amp;`. ```json
As the bot registration occurs in Azure Government portal, ensure to update the
"ConnectionName": "" } ```+ 2. **Update Startup.cs:** To use OAuth in *non-public Azure clouds*, like the government cloud, or in bots with data-residency, you must add the following code in the **Startup.cs** file.
-
+ ```csharp string uri = "<uri-to-use>"; MicrosoftAppCredentials.TrustServiceUrl(uri); OAuthClientConfig.OAuthEndpoint = uri; ```
-
+ Where \<uri-to-use\> is one of the following URIs: |**URI**|**Description**|
In the cases where bots work better in a channel also work better in a group cha
One-to-one chat is a traditional way for a conversational bot to interact with a user. A few examples of one-to-one conversational bots are: * Q&A bots
-* bots that initiate workflows in other systems
-* bots that tell jokes
-* bots that take notes
+* bots that initiate workflows in other systems.
+* bots that tell jokes.
+* bots that take notes.
Before creating one-to-one chatbots, consider whether a conversation-based interface is the best way to present your functionality. ## Disadvantages of bots
this.onMessage(async (context, next) => {
* [Bot command menus](~/bots/how-to/create-a-bot-commands-menu.md) * [Authentication flow for bots in Microsoft Teams](~/bots/how-to/authentication/auth-flow-bot.md) * [Use task modules from bots](~/task-modules-and-cards/task-modules/task-modules-bots.md)
+* [Publish your bot to Azure](/azure/bot-service/bot-builder-deploy-az-cli)
platform Bots https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/design/bots.md
Use a thesaurus and get people from as many different backgrounds as possible to
### Extract intent and data from messages
-Design your bot to recognize intent, which captures what someone wants from a bot in response to a message or query. Intent classifies a message or query as a single action with one or more data objects that are affected by the action.
+Design your bot to recognize intent, which captures what someone wants from a bot in response to a message or query. Intent classifies a message or query as a single action with one or more data objects that are affected by the action.
The following examples outline the user intent and data in messages sent to bots:
platform Auth Aad Sso Bots https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/authentication/auth-aad-sso-bots.md
Single sign-on authentication in Microsoft Azure Active Directory (Azure AD) sil
>[!NOTE] > OAuth 2.0 is an open standard for authentication and authorization used by Azure AD and many other identity providers. A basic understanding of OAuth 2.0 is a prerequisite for working with authentication in Teams.
+See the following video to learn about single sign-on (SSO) support for bots:
+<br>
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4OASc]
+<br>
+ ## Bot SSO at runtime The following image illustrates the flow of SSO in bots:
To understand what the bot does when the token exchange fails to trigger a conse
### Update the auth sample
-Open [Teams auth sample](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/46.teams-auth) and then complete the following steps to update it:
+Open [Teams auth sample](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/46.teams-auth), and then complete the following steps to update it:
1. Update the TeamsBot to handle the deduping of the incoming request by including the following code:
platform Bots Filesv4 https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/bots-filesv4.md
private static Attachment GetInlineAttachment()
}ΓÇïΓÇïΓÇïΓÇïΓÇï ```
-### Basic example in C#
+### Basic example in C #
The following code shows an example of how to handle file uploads and send file consent requests in the bot's dialog:
Follow the [step-by-step guide](../../sbs-file-handling-in-bot.yml) to upload fi
> [!div class="nextstepaction"] > [Optimize your bot with rate limiting in Teams](~/bots/how-to/rate-limit.md)+
+## See also
+
+[Protected APIs in Microsoft Teams](/graph/teams-protected-apis)
platform Channel And Group Conversations https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/channel-and-group-conversations.md
Bots in a group or channel only receive messages when they're mentioned @botname
> > Posting a message or Adaptive Card to a private channel is currently not supported.
+See the following video to learn about channel and group chat conversations with a bot:
+<br>
+
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4NzEs]
+<br>
+ ## Design guidelines Unlike personal chats, in group chats and channels, your bot must provide a quick introduction. You must follow these and more bot design guidelines. For more information on how to design bots in Teams, see [how to design bot conversations in channels and chats](~/bots/design/bots.md).
platform Send Proactive Messages https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/conversations/send-proactive-messages.md
A proactive message is any message sent by a bot that isn't in response to a req
> Currently, bots are available in Government Community Cloud (GCC) and GCC-High but not in Department of Defense (DOD). > > For proactive messages the bots should use the following end points for government cloud environments:
-> * GCC: `https://smba.infra.gcc.teams.microsoft.com/gcc`.
-> * GCCH: `https://smba.infra.gov.teams.microsoft.us/gcch`.
+>
+> * GCC: `https://smba.infra.gcc.teams.microsoft.com/gcc`.
+> * GCCH: `https://smba.infra.gov.teams.microsoft.us/gcch`.
For your bot to send a proactive message to a user, group chat, or team, it must have access to send the message. For a group chat or team, the app that contains your bot must be first installed in that location. You can [proactively install your app using Microsoft Graph](#proactively-install-your-app-using-graph) in a team, if necessary, or use an [app policy](/microsoftteams/teams-custom-app-policies-and-settings) to push apps out to teams and users in your tenant. For users, your app either must be installed for the user or your user must be part of a team where your app is installed.
After you have the user or channel information, you must create the conversation
You must create the conversation if it doesn't exist or you don't know the `conversationId`. You must only create the conversation once and store the `conversationId` value or `conversationReference` object.
-After the conversation is created, you must get the conversation ID.
+You can get the conversation when the app is installed for the first time. After the conversation is created, you must get the conversation ID. The `conversationId` is available in the conversation update events.
+
+If you don't have the `conversationId` you can [Proactively install your app using Graph](#proactively-install-your-app-using-graph) to get the `conversationId`.
## Get the conversation ID
Now that you have the right address information, you can send your message. If y
Now that you've sent the proactive message, you must follow these best practices while sending proactive messages for better information exchange between users and the bot.
+See the following video to learn how to send proactive message from bots:
+
+<br>
+
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4NHyk]
+<br>
+ ## Best practices for proactive messaging Sending proactive messages to the users is an effective way to communicate with your users. However, from the user's perspective, the message appears unprompted. If there's a welcome message, it will be the first time that theyΓÇÖve interacted with your app. It's important to use this functionality and provide the complete information to the user to understand the purpose of this message.
platform Rate Limit https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/rate-limit.md
The following table provides the per thread limit for all bots:
> [!div class="nextstepaction"] > [Calls and meetings bots](~/bots/calls-and-meetings/calls-meetings-bots-overview.md)+
+## See also
+
+[Manage a long-running operation](/azure/bot-service/bot-builder-howto-long-operations-guidance?view=azure-bot-service-4.0&preserve-view=true)
platform Apps Localization https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/apps-localization.md
Use the Microsoft Teams app schema `v1.5` and later to localize your app. You ca
Add the `localizationInfo` property with the default language that your application supports. The default language is used as the final fallback language if the user's client settings don't match with any of your additional languages.
+> [!NOTE]
+> Manifest version must be same for both manifest.json and localization.json files.
+ ### Example manifest.json change The following `manifest.json` helps to add the `localizationInfo` property with the default language that your application supports along with `additionalLanguages`:
platform Deep Links https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/deep-links.md
The Microsoft Teams JavaScript client SDK (TeamsJS) simplifies the process of na
> >The navigation behavior of a Teams app extended across Microsoft 365 (Outlook/Office) is dependent on two factors: >
-> * The target that the deep link points to
-> * The host where the Teams app is running
+> * The target that the deep link points to.
+> * The host where the Teams app is running.
> > If the Teams app is running within the host where the deep link is targeted, your app will open directly within the host. However, if the Teams app is running in a different host from where the deep link is targeted, the app will first open in the browser.
platform Share To Teams From Web Apps https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/share-to-teams-from-web-apps.md
The following image displays the link unfurling experience through Share to Team
This article guides you on how to create and embed a Share to Teams button for your website, craft your website preview, and extend Share to Teams for Education.
+See the following video to learn how to embed Share to Teams button:
+<br>
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4vhWH]
+<br>
++ ## Embed a Share to Teams button 1. Add the `launcher.js` script on your webpage.
platform Teams Store Ranking Parameters https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/post-publish/teams-store-ranking-parameters.md
# Microsoft Teams store ranking parameters
-The information in this disclosure statement applies to the Microsoft Teams store in which Microsoft makes third-party apps available to users. The Microsoft Teams store ranks app search results in the store using a set of ranking parameters to deliver relevant search results to users. The ranking parameters listed aren't exhaustive and they're intended to provide our publisher community with a high-level understanding of the main parameters the storefront use in ranking determinations. All defined terms used but not otherwise defined herein will have the meaning ascribed thereto in the Microsoft Publisher Agreement.
+The information in this disclosure statement applies to the Microsoft Teams store in which Microsoft makes third-party apps available to users. The Microsoft Teams store ranks app search results in the store using a set of ranking parameters to deliver relevant search results to users. The ranking parameters listed aren't exhaustive and they're intended to provide our publisher community with a high-level understanding of the main parameters that the storefront use in ranking determinations. All defined terms used but not otherwise defined herein will have the meaning ascribed thereto in the Microsoft Publisher Agreement.
The Microsoft Teams store editorial team determines the prominence and location of an app within the Editorial sections such as promo banner on the Microsoft Teams store based on ranking parameters, and are used as objective criteria applied equally to all apps in the Microsoft Teams store that includes MicrosoftΓÇÖs own apps and all third-party developer apps. Following are the main parameters used to determine app placements:
platform Publish https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/publish.md
ms.localizationpriority: high
You can distribute your app directly to the store inside Microsoft Teams and reach millions of users around the world. If your app is also featured in the store, you can instantly reach potential customers.
-Apps published to the Teams store also automatically list on [Microsoft AppSource](https://appsource.microsoft.com), which is the official marketplace for Microsoft 365 apps and solutions.
+Apps published to the Teams store also automatically list on [the Microsoft commercial marketplace](https://appsource.microsoft.com), which is the official marketplace for Microsoft 365 apps and solutions.
## Understand the publishing process
If your app is production ready, you can begin the process of getting it listed
* Recommendations to fix the reported issues with links to guidance docs.
- After you've reviewed the list of issues, fix all the reported issues and share the updated app package over email, for the validation team to re-validate your app thoroughly. If you've any queries related to the reported issues, contact the validation team at [teamsubm@microsoft.com](mailto:teamsubm@microsoft.com).
+ After you've reviewed the list of issues, fix all the reported issues and share the updated app package over email, for the validation team to revalidate your app thoroughly. If you've any queries related to the reported issues, contact the validation team at [teamsubm@microsoft.com](mailto:teamsubm@microsoft.com).
- If there are issues remaining or regression issues observed in your app, the validation team will share an updated validation report with you. If your app had blockers, you might see new issues reported when your app is validated after the blockers are resolved. Sometimes, the validation team has also noticed regression issues in apps post deployment of fixes. It takes a few re-submissions to close all the issues for an app that consists of bugs, and get it approved to publish to the Teams store.
+ If there are issues remaining or regression issues observed in your app, the validation team will share an updated validation report with you. If your app had blockers, you might see new issues reported when your app is validated after the blockers are resolved. Sometimes, the validation team has also noticed regression issues in apps post deployment of fixes. It takes a few resubmissions to close all the issues for an app that consists of bugs, and get it approved to publish to the Teams store.
After all reported issues are closed and final submission is made in the Partner Center, the validation team will approve and publish your app. Allow at least one business day for the app to be available in the Teams store.
If your app is production ready, you can begin the process of getting it listed
1. [Create your Partner Center account](prepare/create-partner-center-dev-account.md) well in advance. If you run into any challenges with your [Partner Center account](prepare/create-partner-center-dev-account.md), create a [support ticket](/azure/marketplace/partner-center-portal/support).
- 1. Review the [store validation guidelines](prepare/teams-store-validation-guidelines.md) again to ensure that your app is in alignment with the store requirements. This helps reduce the number of issues observed in your app and so, the time taken to approve your app.
+ 1. Review the [store validation guidelines](prepare/teams-store-validation-guidelines.md) again to ensure that your app is in alignment with the store requirements. Review helps reduce the number of issues observed in your app and so, the time taken to approve your app.
1. Test and re-test your app:
If your app is production ready, you can begin the process of getting it listed
* **Post app submission**
- * After youΓÇÖve reviewed the validation report, reply to the email thread with any queries related to the validation report or if you need any extra support to resolve the reported issues.
+ * After youΓÇÖve reviewed the validation report, reply to the email thread with any queries related to the validation report,, or if you need any extra support to resolve the reported issues.
* Ensure that you've adequate developer bandwidth to resolve any reported issues until the app is approved.
If your app is production ready, you can begin the process of getting it listed
1. Subscription cancellation is working as expected. Purchasers can cancel a subscription. Post cancellation, check if the correct subscription status is reflected in the Microsoft Admin Center and your SaaS application. Verify that the purchaser has lost access to the subscription after successful cancellation.
- 1. Re-purchasing a subscription is seamless. After cancellation of an active subscription, thoroughly test to ensure purchasers can repurchase the subscription.
+ 1. Repurchasing a subscription is seamless. After cancellation of an active subscription, thoroughly test to ensure purchasers can repurchase the subscription.
1. Purchasers can change their subscribed plan. After the plan is modified, users can access the upgraded or downgraded plan features.
- 1. Your SaaS application contains license management features. Purchasers must be able to assign, modify, and re-assign available licenses to users. Check if purchasers can add or remove users to manage the licenses.
+ 1. Your SaaS application contains license management features. Purchasers must be able to assign, modify, and reassign available licenses to users. Check if purchasers can add or remove users to manage the licenses.
1. You must test and ensure both minimum and bulk license purchase flows are working as expected.
platform Browser Device Permissions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/device-capabilities/browser-device-permissions.md
Title: Device permissions for the browser
-keywords: teams apps capabilities permissions
-description: Securely bring back device permissions support for apps in our web client
+description: Learn how to securely bring back device permissions, such as camera or microphone access for apps in web client.
localization_priority: medium
platform Device Capabilities Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/device-capabilities/device-capabilities-overview.md
Title: Device capabilities - Overview
-description: Learn how to integrate native device capabilities, such as camera, image, media, microphone, QR code, and more with Microsoft Teams app.
+description: Learn how to integrate native device capabilities, such as, camera, image, media, microphone, QR code, and more with Microsoft Teams app.
ms.localizationpriority: medium
platform Location Capability https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/device-capabilities/location-capability.md
Title: Integrate location capabilities
-description: Learn how to use Teams JavaScript client SDK to leverage location capabilities using Code snippets and samples
-keywords: location map capabilities native device permissions
+description: Learn how to use Teams JavaScript client SDK to leverage location capabilities using Code snippets and samples.
ms.localizationpriority: high
platform Media Capabilities https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/device-capabilities/media-capabilities.md
Title: Integrate media capabilities
-description: Learn how to use Teams JavaScript client SDK to enable media capabilities using code examples
-keywords: camera image microphone capabilities native device permissions media api
+description: Learn how to use Teams JavaScript client SDK to enable media capabilities using code examples and also learn the advantage of integrating media capabilities.
ms.localizationpriority: medium
platform Native Device Permissions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/device-capabilities/native-device-permissions.md
Title: Request device permissions for your Microsoft Teams app
-keywords: teams apps capabilities permissions device native scan qr barcode image audio video
description: How to update your app manifest in order to request access to native features that require user consent, such as scan QR, barcode, image, audio, and video capabilities ms.localizationpriority: medium
platform Qr Barcode Scanner Capability https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/device-capabilities/qr-barcode-scanner-capability.md
Title: Integrate QR or barcode scanner capability
-description: How to use Teams JavaScript client SDK to leverage QR or barcode scanner capability
-keywords: camera media qr code qrcode bar code barcode scanner scan capabilities native device permissions
+description: Learn how to use Teams JavaScript client SDK to leverage QR or barcode scanner capability and know the benefits of integrating QR or barcode scanner capability.
ms.localizationpriority: medium
platform Feedback https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/feedback.md
Use **Azure Admin Center** or **Microsoft 365 Admin Center** for any **business-
|:|:| | **Microsoft Teams product issues and failures** | If you have a Premier support contract for :::image type="icon" source="assets/icons/microsoft-icon.png" border="false"::: Microsoft 365, visit the Microsoft 365 Admin Center and use the Support menu to [open a service request](https://admin.microsoft.com/). | | **Azure help and support** | If you have a paid Azure subscription, visit the Azure Admin Center to [open a ticket](https://ms.portal.azure.com/#blade/Microsoft_Azure_Support/HelpAndSupportBlade/newsupportreq). |
-| **General questions about Microsoft Teams** | If you have general questions on Microsoft Teams, submit your questions on :::image type="icon" source="assets/icons/microsoft-icon.png" border="false"::: [Microsoft Teams Community](https://answers.microsoft.com/msteams/forum).|
+| **General questions about Teams** | If you have general questions on Teams, submit your questions on :::image type="icon" source="assets/icons/microsoft-icon.png" border="false"::: [Microsoft Teams Community](https://answers.microsoft.com/msteams/forum).|
## Developer community help
-Microsoft Teams community of developers use Stack Overflow and Microsoft Q&A to connect with other developers to ideate, get clarifications, and submit queries. In addition, you can also use other contacts or sites, depending on the type of community help required to raise issues, limitations, and general questions.
+Teams community of developers use Stack Overflow and Microsoft Q&A to connect with other developers to ideate, get clarifications, and submit queries. In addition, you can also use other contacts or sites, depending on the type of community help required to raise issues, limitations, and general questions.
### Developer community forums
-Post your questions and help other community members by sharing and responding to Microsoft Teams App Development questions.
+Post your questions and help other community members by sharing and responding to Teams App Development questions.
| **Community channel**| **Contact** | |:|:|
platform Import External Messages To Teams https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/graph-api/import-messages/import-external-messages-to-teams.md
Title: Use Microsoft Graph to import external platform messages to Teams
-description: Describes how to use Microsoft Graph to import messages from an external platform to Teams
+ Title: Use Microsoft Graph to import external platform messages to Teams
+description: Describes how to use Microsoft Graph to import messages from an external platform to Teams.
ms.localizationpriority: high--++
-keywords: teams import messages api graph microsoft migrate migration post
# Import third-party platform messages to Teams using Microsoft Graph
Since you're migrating existing data, maintaining the original message timestamp
|ScopeName|DisplayName|Description|Type|Admin Consent?|Entities/APIs covered| |-|-|-|-|-|-|
-|`Teamwork.Migrate.All`|Manage migration to Microsoft Teams|Creating and managing resources for migration to Microsoft Teams.|**Application-only**|**Yes**|`POST /teams`|
+|`Teamwork.Migrate.All`|Manage migration to Microsoft Teams|Creating and managing resources for migration to Teams.|**Application-only**|**Yes**|`POST /teams`|
#### Request (create a team in migration state) ```http POST https://graph.microsoft.com/v1.0/teams- Content-Type: application/json+ { "@microsoft.graph.teamCreationMode": "migration", "template@odata.bind": "https://graph.microsoft.com/v1.0/teamsTemplates('standard')",
Creating a channel for the imported messages is similar to the create team scena
|ScopeName|DisplayName|Description|Type|Admin Consent?|Entities/APIs covered| |-|-|-|-|-|-|
-|`Teamwork.Migrate.All`|Manage migration to Microsoft Teams|Creating and managing resources for migration to Microsoft Teams.|**Application-only**|**Yes**|`POST /teams`|
+|`Teamwork.Migrate.All`|Manage migration to Microsoft Teams|Creating and managing resources for migration to Teams.|**Application-only**|**Yes**|`POST /teams`|
#### Request (create a channel in migration state) ```http POST https://graph.microsoft.com/v1.0/teams/{team-id}/channels- Content-Type: application/json+ { "@microsoft.graph.channelCreationMode": "migration", "displayName": "Architecture Discussion",
After the message migration process has completed, both the team and channel are
```http POST https://graph.microsoft.com/v1.0/teams/team-id/channels/channel-id/completeMigration- ``` #### Response
You can add a member to a team [using the Teams UI](https://support.microsoft.co
POST https://graph.microsoft.com/beta/teams/{team-id}/members Content-type: application/json Content-length: 30+ {
-"@odata.type": "#microsoft.graph.aadUserConversationMember",
-"roles": [],
-"user@odata.bind": "https://graph.microsoft.com/beta/users/{user-id}"
+ "@odata.type": "#microsoft.graph.aadUserConversationMember",
+ "roles": [],
+ "user@odata.bind": "https://graph.microsoft.com/beta/users/{user-id}"
} ```
platform Graph Proactive Bots And Messages https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/graph-api/proactive-bots-and-messages/graph-proactive-bots-and-messages.md
Title: Use Microsoft Graph to authorize proactive bot installation and messaging in Teams
-description: Describes proactive messaging in Teams and how to implement it. Learn about enabling proactive app installation and messaging using code sample.
+description: This article describes proactive messaging in Teams and how to implement it. Learn about enabling proactive app installation and messaging using code sample.
ms.localizationpriority: medium
-keywords: teams proactive messaging chat installation Graph
# Proactive installation of apps using Graph API to send messages
server.get('/api/notify', async (req, res) => {
* [Manage app setup policies in Microsoft Teams](/MicrosoftTeams/teams-app-setup-policies#create-a-custom-app-setup-policy) * [Send proactive notifications to users SDK v4](/azure/bot-service/bot-builder-howto-proactive-message?view=azure-bot-service-4.0&tabs=csharp&preserve-view=true)
+* [Send activity feed notifications to users in Microsoft Teams](/graph/teams-send-activityfeednotifications)
platform Resource Specific Consent https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/graph-api/rsc/resource-specific-consent.md
Title: Enable resource-specific consent in Teams
-description: In this module, learn resource-specific consent in Microsoft Teams and how to make advantage of it.
+description: In this article, you'll learn resource-specific consent in Microsoft Teams and how to make advantage of it.
ms.localizationpriority: medium
The granular, Teams-specific, RSC permissions define what an application can do
|TeamMember.Read.Group|Get this team's members. | |TeamsActivity.Send.Group|Create new notifications in the activity feeds of the users in this team. |
-For more details, see [team resource-specific consent permissions](/graph/permissions-reference#teams-resource-specific-consent-permissions).
+For more details, see [team resource-specific consent permissions](/graph/permissions-reference#team-resource-specific-consent-permissions).
### Resource-specific permissions for a chat
platform Test Resource Specific Consent https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/graph-api/rsc/test-resource-specific-consent.md
Ensure that you verify the following app manifest changes for resource-specific
<details>
-<summary><b>RSC permissions for app manifest version 1.12</b></summary>
+<summary><b>RSC permissions for app manifest version 1.12 and later</b></summary>
Add a [webApplicationInfo](../../resources/schem#webapplicationinfo) key to your app manifest with the following values:
Example for RSC in a chat
<details>
-<summary><b>RSC permissions for app manifest version 1.11 or earlier</b></summary>
+<summary><b>RSC permissions for app manifest version 1.11 and earlier</b></summary>
Add a [webApplicationInfo](../../resources/schem#webapplicationinfo) key to your app manifest with the following values:
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: Here's how to update your search-based Teams message extension to run in Outlook
+description: Learn how to update search-based Teams message extension to run in Outlook by updating app manifest, adding an outlook channel, and sideloading updated app.
Last updated 05/24/2022
For users to interact with your message extension from Outlook, you'll need to a
:::image type="content" source="images/azure-bot-channel-message-extensions.png" alt-text="Add an Outlook 'Message Extensions' channel for your bot from the Azure Bot Channels pane":::
-1. Confirm that your Outlook channel is listed along with Microsoft Teams in your bot's **Channels** pane.
+1. Confirm that your Outlook channel is listed along with Teams in your bot's **Channels** pane.
- :::image type="content" source="images/azure-bot-channels.png" alt-text="Azure Bot Channels pane listing both Microsoft Teams and Outlook channels":::
+ :::image type="content" source="images/azure-bot-channels.png" alt-text="Azure Bot Channels pane listing both Teams and Outlook channels":::
## Update Microsoft Azure Active Directory (Azure AD) app registration for SSO
Azure Active Directory (AD) Single-sign on (SSO) for message extensions works th
## Sideload your updated message extension in Teams
-The final step is to sideload your updated message extension ([app package](/microsoftteams/platform/concepts/build-and-test/apps-package)) in Microsoft Teams. Once completed, your message extension will appear in your installed *Apps* from the compose message area.
+The final step is to sideload your updated message extension ([app package](/microsoftteams/platform/concepts/build-and-test/apps-package)) in Teams. Once completed, your message extension will appear in your installed *Apps* from the compose message area.
1. Package your Teams application (manifest and app [icons](/microsoftteams/platform/resources/schema/manifest-schema#icons)) in a zip file. If you used Teams Toolkit to create your app, you can easily do this using the **Zip Teams metadata package** option in the *Deployment* menu of Teams Toolkit.
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 across Microsoft 365
-description: Extend a Teams personal tab app across Microsoft 365
+description: Learn how to extend a Teams personal tab app across Microsoft 365 by updating personal tab to run in both outlook and office.
Last updated 05/24/2022
If your app makes use of [Content Security Policy](https://developer.mozilla.org
|--|--| |Teams desktop, mobile |1fec8e78-bce4-4aaf-ab1b-5451cc387264 | |Teams web |5e3ce6c0-2b1f-4285-8d4b-75ee78787346 |
- |Office.com |4765445b-32c6-49b0-83e6-1d93765276ca|
+ |Office web |4765445b-32c6-49b0-83e6-1d93765276ca|
|Office desktop | 0ec893e0-5785-4de6-99da-4ed124e5296c |
- |Outlook desktop | d3590ed6-52b3-4102-aeff-aad2292ab01c |
- |Outlook Web Access | 00000002-0000-0ff1-ce00-000000000000 |
- |Outlook Web Access | bc59ab01-8403-45c6-8796-ac3ef710b3e3 |
+ |Outlook desktop, mobile | d3590ed6-52b3-4102-aeff-aad2292ab01c |
+ |Outlook web | bc59ab01-8403-45c6-8796-ac3ef710b3e3|
## Sideload your app 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: Extend your Teams app experiences to other high-usage areas of Microsoft 365
+description: Learn how to build and update your Teams app experiences to other high-usage areas of Microsoft 365.
Last updated 05/24/2022
The Teams app platform continues to evolve and expand holistically into the Micr
|--|--|--|--|--|--| | [**Tabs**](../tabs/what-are-tabs.md) (personal scope) |`staticTabs` | Web, Desktop, Mobile | Web (Targeted Release), Desktop (Beta Channel) | Web (Targeted Release)| 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**](../messaging-extensions/what-are-messaging-extensions.md) (search-based)| `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#preview-your-message-extension-in-outlook). |
-| [**Graph connectors**](/microsoftsearch/connectors-overview)| `graphConnector` | Web, Desktop, Mobile| Web, Desktop | Web| See [notes](#graph-connectors)
+| [**Graph connectors**](/graph/connecting-external-content-connectors-overview)| `graphConnector` | Web, Desktop, Mobile| Web, Desktop | Web| See [notes](#graph-connectors)
| [**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).| \* The [Microsoft 365 Targeted release](/microsoft-365/admin/manage/release-options-in-office-365) option and [Microsoft 365 Apps update channel](/deployoffice/change-update-channels) enrollment require admin opt-in for the entire organization or selected users. Update channels are device specific and apply only to installations of Office running on Windows.
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: Here are the prerequisites for extending your Teams apps across Microsoft 365
+description: Learn about the prerequisites required to run preview builds for extending your Teams apps across Microsoft 365.
Last updated 05/24/2022 ms.localizationpriority: high
platform Publish https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/publish.md
Title: Publish Teams apps for Microsoft 365
-description: Make your Microsoft 365-enabled Teams apps discoverable to users in Teams, Outlook, and Office
+description: Learn how to make your Microsoft 365-enabled Teams apps discoverable to users in Teams, Outlook, and Office.
Last updated 05/24/2022
platform Define Action Command https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/how-to/action-commands/define-action-command.md
Before creating the action command, you must decide the following factors:
1. [How will the task module be created?](#select-how-to-create-your-task-module) 1. [Will the final message or card be sent to the channel from a bot, or will the message or card be inserted into the compose message area for the user to submit?](#select-how-the-final-message-is-sent)
+See the following video to learn how to define message extension action commands:
+<br>
+
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4OANG]
+<br>
+ ## Select action command invoke locations First, you must decide the location from where your action command must be invoked. By specifying the `context` in your app manifest, your command can be invoked from one or more of the following locations:
The following section is an example of a `composeExtensions` object defining two
"title": "Create To Do", "type": "action", "context": ["commandBox", "message", "compose"],
- "fetchTask": true,
+ "fetchTask": false,
"parameters": [ { "name": "Name",
The following section is an example of a `composeExtensions` object defining two
"description": "Reassign a todo item", "title": "Reassign a todo item", "type": "action",
- "fetchTask": true,
+ "fetchTask": false,
} ] }
platform Add Authentication https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/how-to/add-authentication.md
Title: Add authentication to your message extension
-description: In this module, learn how to add authentication to a messaging extension using code examples and sample
+description: In this article, you'll learn how to add authentication to a messaging extension using code examples and sample
ms.localizationpriority: medium
The sequence is as follows:
1. After the user signs in, you should close your window and send an **authentication code** to the Teams client. 1. The Teams client then reissues the query to your service, which includes the authentication code passed in Step 5.
-Your service should verify that the authentication code received in step 6 matches the one from step 5. This ensures that a malicious user doesn't try to spoof or compromise the sign in flow. This effectively "closes the loop" to finish the secure authentication sequence.
+Your service should verify that the authentication code received in step 6 matches with step 5. The steps ensure that a malicious user doesn't try to spoof or compromise the sign in flow. The flow effectively "closes the loop" to finish the secure authentication sequence.
### Respond with a sign in action
-To prompt an unauthenticated user to sign in, respond with a suggested action of type `openUrl` that includes the authentication URL.
+To prompt an unauthenticated user, to sign in, respond with a suggested action of type `openUrl` that includes the authentication URL.
#### Response example for a sign in action
platform Enable SSO Auth Me https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/how-to/enable-SSO-auth-me.md
Title: SSO support for your message extensions
-description: In this module, learn how to enable Single sign-on (SSO) support for your messaging extensions with Code samples.
+description: In this article, you'll learn how to enable Single sign-on (SSO) support for your messaging extensions with Code samples.
ms.localizationpriority: medium
This section provides Bot authentication v3 SDK sample.
| **Sample name** | **Description** | **.NET** | **Node.js** | **Python** | ||||-||
-| Bot authentication | This sample shows how to get started with authentication in a bot for Microsoft Teams. | [View](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/46.teams-auth) | [View](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/46.teams-auth) | [View](https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/python/46.teams-auth) |
-| Tab, Bot and Message Extension (ME) SSO | This sample shows SSO for Tab, Bot and ME - search, action, linkunfurl. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/app-sso/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/app-sso/nodejs) | Not available |
+| Bot authentication | This sample shows how to get started with authentication in a bot for Teams. | [View](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/46.teams-auth) | [View](https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/46.teams-auth) | [View](https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/python/46.teams-auth) |
+| Tab, Bot and Message Extension (ME) SSO | This sample shows SSO for Tab, Bot and ME - search, action, link unfurl. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/app-sso/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/app-sso/nodejs) | Not available |
## See also
platform Link Unfurling https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/how-to/link-unfurling.md
The Azure DevOps message extension uses link unfurling to look for URLs pasted i
:::image type="content" source="~/assets/images/compose-extensions/messagingextensions_linkunfurling.png" alt-text="Example of link unfurling":::
+See the following video to learn more about link unfurling:
+<br>
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4OFZG]
+<br>
+ ## Add link unfurling to your app manifest To add link unfurling to your app manifest, add a new `messageHandlers` array to the `composeExtensions` section of your app manifest JSON. You can add the array with the help of App Studio or manually. Domain listings can include wildcards, for example `*.example.com`. This matches exactly one segment of the domain; if you need to match `a.b.example.com` then use `*.*.example.com`.
platform Define Search Command https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/how-to/search-commands/define-search-command.md
Message extension search commands allow users to search external systems and ins
> [!NOTE] > The result card size limit is 28 KB. The card is not sent if its size exceeds 28 KB.
+See the following video to learn how to define message extension search commands:
+<br>
+
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4OIvK]
+<br>
+ ## Select search command invoke locations The search command is invoked from any one or both of the following locations:
platform What Are Messaging Extensions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/what-are-messaging-extensions.md
# Message extensions
-Message extensions allow the users to interact with your web service through buttons and forms in the Microsoft Teams client. They can search or initiate actions in an external system from the compose message area, the command box, or directly from a message. You can send back the results of that interaction to the Microsoft Teams client in the form of a richly formatted card.
+Message extensions allow the users to interact with your web service through buttons and forms in the Microsoft Teams client. They can search or initiate actions in an external system from the compose message area, the command box, or directly from a message. You can send back the results of that interaction to the Teams client in the form of a richly formatted card.
> [!IMPORTANT] > Message extensions are available in Government Community Cloud (GCC) and GCC-High environments but not in Department of Defense (DoD) environment.
The following image displays the locations from where message extensions are inv
## Understand how message extensions work
-A message extension consists of a web service that you host and an app manifest, which defines where your web service is invoked from in the Microsoft Teams client. The web service takes advantage of the Bot Framework's messaging schema and secure communication protocol, so you must register your web service as a bot in the Bot Framework.
+A message extension consists of a web service that you host and an app manifest, which defines where your web service is invoked from in the Teams client. The web service takes advantage of the Bot Framework's messaging schema and secure communication protocol, so you must register your web service as a bot in the Bot Framework.
> [!NOTE] > Though you can create the web service manually, use [Bot Framework SDK](https://github.com/microsoft/botframework-sdk) to work with the protocol.
-In the app manifest for Microsoft Teams app, a single message extension is defined with up to ten different commands. Each command defines a type, such as action or search and the locations in the client from where it is invoked. The invoke locations are compose message area, command bar, and message. On invoke, the web service receives an HTTPS message with a JSON payload including all the relevant information. Respond with a JSON payload, allowing the Teams client to know the next interaction to enable.
+In the app manifest for Teams app, a single message extension is defined with up to ten different commands. Each command defines a type, such as action or search and the locations in the client from where it is invoked. The invoke locations are compose message area, command bar, and message. On invoke, the web service receives an HTTPS message with a JSON payload including all the relevant information. Respond with a JSON payload, allowing the Teams client to know the next interaction to enable.
## Types of message extension commands
The following image displays the message extension search command task module:
## Link unfurling
-A web service is invoked when a URL is pasted in the compose message area. This functionality is known as link unfurling. You can subscribe to receive an invoke when URLs containing a particular domain are pasted into the compose message area. Your web service can "unfurl" the URL into a detailed card, providing more information than the standard website preview card. You can add buttons to allow the users to immediately take action without leaving the Microsoft Teams client.
+A web service is invoked when a URL is pasted in the compose message area. This functionality is known as link unfurling. You can subscribe to receive an invoke when URLs containing a particular domain are pasted into the compose message area. Your web service can "unfurl" the URL into a detailed card, providing more information than the standard website preview card. You can add buttons to allow the users to immediately take action without leaving the Teams client.
The following images display link unfurling feature when a link is pasted in message extension: :::image type="content" source="../assets/images/messaging-extension/unfurl-link.png" alt-text="unfurl link":::
platform Overview Solution https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/overview-solution.md
Last updated 11/02/2021
# The Teams solution
-The Microsoft Teams Platform is a powerful, flexible platform for creating apps for Microsoft Teams. It provides a vast suite of development environments and tools to support app development.
+
+The Microsoft Teams Platform is a powerful, flexible platform for creating apps for Teams. It provides a vast suite of development environments and tools to support app development.
## The user story
Collate and map requirements to Teams features:
| User app needs | Check forecast | Notification before travel | Registered user | | |::|::|::| | **Capability** | Bot | &nbsp; | &nbsp; |
-| **Integration** | &nbsp; | &nbsp; | Microsoft Graph, Weather API |
+| **Integration** | &nbsp; | &nbsp; | :::image type="icon" source="assets/icons/microsoft-icon.png" border="false"::: Microsoft Graph, Weather API |
| **Scope** | &nbsp; | Personal app | &nbsp; | | **Integration point** | &nbsp; | Chat | &nbsp; | **Teams app solution**: A Teams *personal chat bot* app that checks and *sends forecast notification* to *registered users* before their travel date. Teams offers these and many more capabilities to bring your users a feature-rich app solution. To develop this app: 1. Create a personal chat bot app. 1. Integrate with an external weather forecast API to connect and request forecast for specific date and location.
-1. Integrate with Microsoft Graph for registered users.
+1. Integrate with :::image type="icon" source="assets/icons/teams-icon.png" border="false"::: Microsoft Graph for registered users.
1. Check and send forecast details based on user's travel date and travel location. ## Choose what suits you
From designing to building and distributing a Teams app, you can use various too
1. Plan your project and figure out the requirement. 1. Design the app. Use Teams UI Kit and UI Library for designing tabs UI. 1. Build the app with JavaScript using Teams Toolkit.
-1. Extend functionality by adding more Teams capabilities and Microsoft 365 data with Microsoft Graph.
+1. Extend functionality by adding more Teams capabilities and M365 data with :::image type="icon" source="assets/icons/microsoft-icon.png" border="false"::: Microsoft Graph.
1. Test the app on a developer tenant with sample user data. 1. Deploy the app to Azure. 1. Manage and publish the apps to Store with Developer Portal. Monetize your app with options, such as SaaS offers, in-app purchases, and more.
From designing to building and distributing a Teams app, you can use various too
**Design your app** :::column-end::: :::column span="2":::
- Design your app UI with Microsoft Teams UI Kit.
+ Design your app UI with Teams UI Kit.
> [!div class="nextstepaction"] > [Design your Teams app](~/concepts/design/design-teams-app-process.md)
From designing to building and distributing a Teams app, you can use various too
**Extend your app across Microsoft 365** :::column-end::: :::column span="2":::
- You can preview your Teams apps running in other high usage Microsoft 365 experiences with Microsoft Teams JavaScript client SDK v2 Preview.
+You can preview your Teams apps running in other high usage Microsoft 365 experiences with Teams JavaScript client SDK v2 Preview.
> [!div class="nextstepaction"] > [Extend your app](m365-apps/overview.md)
From designing to building and distributing a Teams app, you can use various too
**Test your app** :::column-end::: :::column span="2":::
- After integrating your app with Microsoft Teams, you must test your app before publishing it.
+ After integrating your app with Teams, you must test your app before publishing it.
> [!div class="nextstepaction"] > [Test your app](concepts/build-and-test/test-app-overview.md)
From designing to building and distributing a Teams app, you can use various too
**Distribute your app** :::column-end::: :::column span="2":::
- You can provide your Microsoft Teams app to an individual, team, organization, or anyone who wants to use it.
+ You can provide your Teams app to an individual, team, organization, or anyone who wants to use it.
> [!div class="nextstepaction"] > [Distribute your app](~/concepts/deploy-and-publish/apps-publish-overview.md)
platform Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/overview.md
You can build apps with Teams Developer platform by extending Teams capabilities
## Build apps with Microsoft Teams platform
-Microsoft Teams apps help your collaborative workspace to be more productive by bringing key information, common tools, and trusted processes to where people increasingly gather, learn, and work. Apps are how you extend the capabilities of Team platform to fit your requirements. Create something brand new or integrate an existing app, and you utilize benefits of Microsoft Teams platform for your particular business needs.
+Teams apps help your collaborative workspace to be more productive by bringing key information, common tools, and trusted processes to where people increasingly gather, learn, and work. Apps are how you extend the capabilities of Team platform to fit your requirements. Create something brand new or integrate an existing app, and you utilize benefits of Teams platform for your particular business needs.
The benefits of building apps span from meeting organizational goals to increasing internal productivity.
Here's why Teams is best-suited for your app needs:
- **Social interactions**
- Teams is a social platform; custom social-focused apps encourage your team to extend your company culture into your collaboration space. Use apps for sending polls, letting people share feedback with each other, enabling connection and communication.
+ Teams is a social platform; custom social-focused apps encourage your team to extend your company culture into your collaboration space. Use apps for sending polls, letting people share feedback with each other, enabling connection, and communication.
:::image type="content" source="../msteams-platform/assets/images/overview/teams-apps-social.png" alt-text="Teams app for building team culture" border="false":::
Here's why Teams is best-suited for your app needs:
- **Personal apps with tabs and bots**
- One-to-one conversational bots are one of the more open-ended features in Microsoft Teams. The conversation is just between the bot and your user. You have the flexibility of including task modules to simplify complex sets of information.
+ One-to-one conversational bots are one of the more open-ended features in Teams. The conversation is just between the bot and your user. You have the flexibility of including task modules to simplify complex sets of information.
For example, if your app is a design tool with multiple collaborators, a shared bot that notifies all users helps to build user engagement.
platform Bots Conv Channel https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bot-conversations/bots-conv-channel.md
Bots added to a team become another team member and can be @mentioned as part of
A bot in a group or channel should provide information relevant and appropriate for all members. While your bot can certainly provide any information relevant to the experience, keep in mind conversations with it are visible to everyone. Therefore, a great bot in a group or channel should add value to all users, and certainly not inadvertently share information more appropriate to a one-to-one conversation.
-Your bot, just as it is, may be entirely relevant in all scopes without requiring more work. In Microsoft Teams, there's no expectation that your bot function in all scopes, but you should ensure that your bot provides user value in whichever scope(s) you choose to support. For more information on scopes, see [Apps in Microsoft Teams](~/concepts/build-and-test/app-studio-overview.md).
+Your bot, just as it is, may be entirely relevant in all scopes without requiring more work. In Teams, there's no expectation that your bot function in all scopes, but you should ensure that your bot provides user value in whichever scope(s) you choose to support. For more information on scopes, see [Apps in Microsoft Teams](~/concepts/build-and-test/app-studio-overview.md).
Developing a bot that works in groups or channels uses much of the same functionality as personal conversations. Additional events and data in the payload provide Teams group and channel information. Those differences, as well as key differences in common functionality are described in the following sections.
platform Bots Conv Personal https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bot-conversations/bots-conv-personal.md
Last updated 05/20/2019
Microsoft Teams allows users to engage in direct conversations with bots built on the [Microsoft Bot Framework](/azure/bot-service/?view=azure-bot-service-3.0&preserve-view=true). Users can find bots in the Discover Apps gallery and add them to their Teams experience for personal conversations. Team owners and users with the appropriate permissions can also add bots as team members. For more information, see [Interact in a team channel](~/resources/bot-v3/bot-conversations/bots-conv-channel.md), which not only makes them available in that team's channels, but for personal chat users as well. Personal chat differs from chat in channels in that the user doesn't need to @mention the bot. If a bot is used in multiple contexts such as in the following scopes:+ * Personal * Group chat * Channel
You need to detect if the bot is in a group chat or channel, and process message
## Designing a great personal bot
-A great bot in Microsoft Teams helps users get the information they need, all within the context of the Teams experience. Personal conversations with a bot are private exchanges between a bot and its user; they're a great way to provide information specific and relevant to that user in the personal context. A bot in personal chat is a dialog between your service and the individual, where a bot in a group chat or channel broadcasts everything to a group of people.
+A great bot in Teams helps users get the information they need, all within the context of the Teams experience. Personal conversations with a bot are private exchanges between a bot and its user; they're a great way to provide information specific and relevant to that user in the personal context. A bot in personal chat is a dialog between your service and the individual, where a bot in a group chat or channel broadcasts everything to a group of people.
Depending on the experience you want to create, the bot might need to work in multiple scopes - personal, group chat, and team. The work to support more than one scope is minimal. There is no expectation in Teams that your bot function in all scopes, but you should ensure that your bot makes sense and provides user value in whatever scopes you choose to support.
platform Bots Create https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bots-create.md
For more information, see [Bot Framework Documentation](/azure/bot-service/?view
> * When you edit the properties of an existing bot in the [list of your bots in Bot Framework](https://dev.botframework.com/bots) such as its "messaging endpoint," which is common when first developing a bot, especially if you use [ngrok](https://ngrok.com), you will see "Migration status" column and a blue "Migrate" button that will take you into the Microsoft Azure portal. Don't click on the "Migrate" button unless that's what you want to do; instead, click on the name of the bot and you can edit its properties:</br> ![Edit Bot Properties](~/assets/images/bots/bf-migrate-bot-to-azure.png) > * If you register your bot using Microsoft Azure, your bot code does not need to be *hosted* on Microsoft Azure.
-> * If you do register a bot using Azure portal, you must have a Microsoft Azure account. You can [create one for free](https://azure.microsoft.com/free/). To verify your identity when you create one, you must provide a credit card, but it won't be charged; it's always free to create and use bots with Microsoft Teams.
-> * You can now use App Studio to register/update app and bot information directly within Microsoft Teams. You'll only have to use the Azure portal for adding or configuring other Bot Framework channels such as Direct Line, Web Chat, Skype, and Facebook Messenger.
+> * If you do register a bot using Azure portal, you must have a Microsoft Azure account. You can [create one for free](https://azure.microsoft.com/free/). To verify your identity when you create one, you must provide a credit card, but it won't be charged; it's always free to create and use bots with Teams.
+> * You can now use App Studio to register/update app and bot information directly within Teams. You'll only have to use the Azure portal for adding or configuring other Bot Framework channels such as Direct Line, Web Chat, Skype, and Facebook Messenger.
> [!WARNING]
+>
>* If you have been using App Studio, we recommend that you'd try the Developer Portal to configure, distribute, and manage your Teams apps. App Studio will be deprecated by June 30, 2022 ## See also
platform Bots Message Format https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bots-message-format.md
Microsoft Teams supports the following formatting options:
## Formatting text content
-Microsoft Teams supports a subset of Markdown and XML (HTML) formatting tags.
+Teams supports a subset of Markdown and XML (HTML) formatting tags.
Currently, the following limitations apply:
Currently, the following limitations apply:
## Cross-platform support
-To ensure that your formatting works across all platforms supported by Microsoft Teams, be aware that some styles aren't currently supported across all platforms.
+To ensure that your formatting works across all platforms supported by Teams, be aware that some styles aren't currently supported across all platforms.
| Style | Text-only messages | Rich cards (XML only) | | | :: | :: |
platform Bots Notifications https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bots-notifications.md
The [`conversationUpdate`](/azure/bot-service/dotnet/bot-builder-dotnet-activiti
### Bot or user added to a team
-The `conversationUpdate` event with the `membersAdded` object in the payload is sent when either a bot is added to a team or a new user is added to a team where a bot has been added. Microsoft Teams also adds `eventType.teamMemberAdded` in the `channelData` object.
+The `conversationUpdate` event with the `membersAdded` object in the payload is sent when either a bot is added to a team or a new user is added to a team where a bot has been added. Teams also adds `eventType.teamMemberAdded` in the `channelData` object.
Because this event is sent in both cases, you should parse the `membersAdded` object to determine whether the addition was a user or the bot itself. For the latter, a best practice is to send a [welcome message](~/resources/bot-v3/bot-conversations/bots-conv-channel.md#best-practice-welcome-messages-in-teams) to the channel so users can understand the features your bot provides.
Your bot receives a `conversationUpdate` with `membersAdded` when a user adds it
## Team member or bot removed
-The `conversationUpdate` event with the `membersRemoved` object in the payload is sent when either your bot is removed from a team, or a user is removed from a team where a bot has been added. Microsoft Teams also adds `eventType.teamMemberRemoved` in the `channelData` object. As with the `membersAdded` object, you should parse the `membersRemoved` object for your bot's App ID to determine who was removed.
+The `conversationUpdate` event with the `membersRemoved` object in the payload is sent when either your bot is removed from a team, or a user is removed from a team where a bot has been added. Teams also adds `eventType.teamMemberRemoved` in the `channelData` object. As with the `membersAdded` object, you should parse the `membersRemoved` object for your bot's App ID to determine who was removed.
### Schema example: Team member removed
platform Bots Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bots-overview.md
A bot behaves differently depending on what kind of conversation it's involved i
For more information, see [Have a conversation with a Microsoft Teams bot](~/resources/bot-v3/bot-conversations/bots-conversations.md).
-With Microsoft Teams apps, you can make the bot the star of your experience, or just a helper. Bots are distributed as part of your broader app package which can include other capabilities such as [tabs](~/tabs/what-are-tabs.md) or [message extensions](~/messaging-extensions/what-are-messaging-extensions.md).
+With Teams apps, you can make the bot the star of your experience, or just a helper. Bots are distributed as part of your broader app package which can include other capabilities such as [tabs](~/tabs/what-are-tabs.md) or [message extensions](~/messaging-extensions/what-are-messaging-extensions.md).
## Bot APIs
-Microsoft Teams supports most of the [Microsoft Bot Framework](https://dev.botframework.com/). (If you already have a bot that's based on the Bot Framework, you can easily adapt it to work in Microsoft Teams.) We recommend you use either C# or Node.js to take advantage of our [SDKs](/microsoftteams/platform/#pivot=sdk-tools). These packages extend the basic Bot Builder SDK classes and methods:
+Teams supports most of the [Microsoft Bot Framework](https://dev.botframework.com/). (If you already have a bot that's based on the Bot Framework, you can easily adapt it to work in Teams.) We recommend you use either C# or Node.js to take advantage of our [SDKs](/microsoftteams/platform/#pivot=sdk-tools). These packages extend the basic Bot Builder SDK classes and methods:
* Using specialized card types like the Office 365 Connector card. * Consuming and setting Teams-specific channel data on activities.
platform Bots Test https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bots-test.md
Last updated 03/20/2019
[!include[v3-to-v4-SDK-pointer](~/includes/v3-to-v4-pointer-bots.md)]
-When testing your bot you need to take into consideration both the context(s) you want your bot to run in, as well as any functionality you may have added to your bot that requires data specific to Microsoft Teams. Ensure that the method you chose to test your bot aligns with its functionality.
+When testing your bot you have to take into consideration both the context(s) you want your bot to run in, as well as any functionality you may have added to your bot that requires data specific to Microsoft Teams. Ensure that the method you chose to test your bot aligns with its functionality.
## Test by uploading to Teams The most comprehensive way to test your bot is by creating an app package and uploading it to Teams. This is the only method to test the full functionality available to your bot, across all scopes.
-There are two methods for uploading your app. You can either use [App Studio](~/concepts/build-and-test/app-studio-overview.md) or you can manually [create an app package](~/concepts/build-and-test/apps-package.md) and [upload your app](~/concepts/deploy-and-publish/apps-upload.md). If you need to alter your manifest and reupload your app, you should [delete your bot](#deleting-a-bot-from-teams) before uploading your altered app package.
+There are two methods for uploading your app. You can either use [App Studio](~/concepts/build-and-test/app-studio-overview.md) or you can manually [create an app package](~/concepts/build-and-test/apps-package.md) and [upload your app](~/concepts/deploy-and-publish/apps-upload.md). If you need to alter your manifest, and reupload your app, you should [delete your bot](#deleting-a-bot-from-teams) before uploading your altered app package.
## Debug your bot locally
If you're hosting your bot locally during development, you'll need to use a tunn
ngrok http <port> -host-header=localhost:<port> ```
-Use the https endpoint provided by ngrok in your app manifest. If you close your command window and restart, you'll get a new URL and need to update your bot endpoint address to use that one as well.
+Use the https endpoint provided by ngrok in your app manifest. If you close your command window and restart, you'll get a new URL, and need to update your bot endpoint address to use that one as well.
## Testing your bot without uploading to Teams
-Occasionally it's necessary to test your bot without installing it as an app in Teams. We provide two methods for testing. Testing your bot without installing it as an app can be useful to ensure your bot is available and responding, however it won't allow you to test the full breadth of Microsoft Teams functionality you may have added to your bot. If you need to test your bot completely, follow the instructions for [testing by uploading](#test-by-uploading-to-teams).
+Occasionally it's necessary to test your bot without installing it as an app in Teams. We provide two methods for testing. Testing your bot without installing it as an app can be useful to ensure your bot is available and responding, however it won't allow you to test the full breadth of Teams functionality you may have added to your bot. If you need to test your bot completely, follow the instructions for [testing by uploading](#test-by-uploading-to-teams).
### Use the Bot Emulator
Complete instructions on the Bot Framework Emulator can be found [here](/azure/b
>[!Important] >Talking to your bot by ID is intended for testing purposes only.
-You can also initiate a conversation with your bot by using its ID. Two methods for doing so are given below. When a bot has been added through one of these methods it won't be addressable in channel conversations, and you can't take advantage of other Microsoft Teams app capabilities like tabs or message extensions.
+You can also initiate a conversation with your bot by using its ID. Two methods for doing so are given below. When a bot is added through one of these methods it won't be addressable in channel conversations, and you can't take advantage of other Microsoft Teams app capabilities like tabs or message extensions.
-1. On the [Bot Dashboard](https://dev.botframework.com/bots) page for your bot, under **Channels**, select **Add to Microsoft Teams**. Microsoft Teams will launch with a personal chat with your bot.
-2. Directly reference your bot's app ID from within Microsoft Teams:
+1. On the [Bot Dashboard](https://dev.botframework.com/bots) page for your bot, under **Channels**, select **Add to Microsoft Teams**. Teams will launch with a personal chat with your bot.
+2. Directly reference your bot's app ID from within Teams:
* On the [Bot Dashboard](https://dev.botframework.com/bots) page for your bot, under **Details**, copy the **Microsoft App ID** for your bot. :::image type="content" source="../../assets/images/bots_appid_botframework.png" alt-text="Bot Dashboard":::
- * From within Microsoft Teams, on the **Chat** pane, select the **Add chat** icon. For **To:**, paste your bot's Microsoft App ID.
+ * From within Teams, on the **Chat** pane, select the **Add chat** icon. For **To:**, paste your bot's Microsoft App ID.
:::image type="content" source="../../assets/images/bots_uploading.png" alt-text="Uploading the AppID for the bot"border="true"::: The app ID should resolve to your bot name. * Select your bot and send a message to initiate a conversation.
- * Alternatively, you can paste your bot's app ID in the search box in the top left in Microsoft Teams. In the search results page, navigate to the People tab to see your bot and to start chatting with it.
+
+ * Alternatively, you can paste your bot's app ID in the search box in the top left in Microsoft Teams. In the search results page, go to the People tab to see your bot and to start chatting with it.
Your bot will receive the `conversationUpdate` event just like bots added to a team, but without the team information in the `channelData` object.
platform Bots Text Formats https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bots-text-formats.md
Microsoft Teams supports the following formatting options:
## Formatting text content
-Microsoft Teams supports a subset of Markdown and XML (HTML) formatting tags.
+Teams supports a subset of Markdown and XML (HTML) formatting tags.
Currently, the following limitations apply: * Text-only messages do not support table formatting.
For information on formatting in cards, see [Teams Card Reference](~/task-module
### Cross-platform support
-To ensure that your formatting works across all platforms supported by Microsoft Teams, be aware that some styles aren't currently supported across all platforms.
+To ensure that your formatting works across all platforms supported by Teams, be aware that some styles aren't currently supported across all platforms.
| Style | Text-only messages | Cards (XML only) | ||--||
platform Bots With Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/bot-v3/bots-with-tabs.md
This flow works best if your identity provider implements the OAuth 2.0 protocol
## Constructing deep links to tabs in messages from your bot
-You want to use tabs to show more content than can fit inside of a card, or provide a way to complete complex form-filling tasks using the tab canvas. For example, consider navigating the user to the tab when he or she clicks on the card from your bot. For this to happen, youΓÇÖll need to encode your botΓÇÖs message to include a [deep link](~/concepts/build-and-test/deep-links.md) URL, either through markup or as the target of the openUrl action.
+You want to use tabs to show more content that can fit inside of a card, or provide a way to complete complex form-filling tasks using the tab canvas. For example, consider navigating the user to the tab when the user selects the card from your bot. For this to happen, youΓÇÖll need to encode your botΓÇÖs message to include a [deep link](~/concepts/build-and-test/deep-links.md) URL, either through markup or as the target of the openUrl action.
-Deep links rely on an entityId, which is an opaque value that maps to a unique entity in your system. When the tab is created, you ideally store some simple state. For example, flag on your backend indicating the tab has been created in the channel. When your bot constructs a message, it can target the entityId associated with that tab.
+Deep links rely on an entityId, which is an opaque value that maps to a unique entity in your system. When the tab is created, you store some simple state. For example, flag on your backend indicating the tab is created in the channel. When your bot constructs a message, it can target the entityId associated with that tab.
> [!NOTE] > in personal chats, because tabs are ΓÇ£staticΓÇ¥ and installed with the app, you can always assume their existence and thus construct deep links accordingly.
platform Create Messaging Extension Using Appstudio https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/create-messaging-extension-using-appstudio.md
At a high level, you'll need to complete the following steps to create a messagi
2. Create and deploy your web service (while developing use a tunneling service like ngrok to run it locally). 3. Register your web service with the Bot Framework. 4. Create your app package.
-5. Upload your package to Microsoft Teams.
+5. Upload your package to Teams.
Creating your web service, creating your app package, and registering your web service with the Bot Framework can be done in any order. Because those three pieces are so intertwined, no matter which order you do them in you'll need return to update the others. Your registration needs the messaging endpoint from your deployed web service, and your web service needs the ID and password created from your registration. Your app manifest also needs that ID to connect Teams to your web service.
You can either use App Studio to help you create your app manifest, or create it
### Create your app manifest using App Studio
-You can use the App Studio app from within the Microsoft Teams client to help create your app manifest.
+You can use the App Studio app from within the Teams client to help create your app manifest.
1. In the Teams client, open App Studio from the **...** overflow menu on the left navigation rail. If it isn't already installed, you can do so by searching for it. 2. On the **Manifest editor** tab select **Create a new app** (or if you're adding a messaging extension to an existing app, you can import your app package)
From the **Finish => Test and distribute** tab you can **Download** your app pac
### Create your app manifest manually
-As with bots and tabs, you update the [app manifest](~/resources/schem#composeextensions) of your app to include the messaging extension properties. These properties govern how your messaging extension appears and behaves in the Microsoft Teams client. Messaging extensions are supported beginning with v1.0 of the manifest.
+As with bots and tabs, you update the [app manifest](~/resources/schem#composeextensions) of your app to include the messaging extension properties. These properties govern how your messaging extension appears and behaves in the Teams client. Messaging extensions are supported beginning with v1.0 of the manifest.
#### Declare your messaging extension
platform Developer Preview Intro https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/dev-preview/developer-preview-intro.md
ms.localizationpriority: high
>[!NOTE] >Features included in preview may not be complete, and may undergo changes before becoming available in the public release. They are provided for testing and exploration purposes only. They should not be used in production applications.
-Developer Preview is a public program for developers, which provides early access to unreleased features in Microsoft Teams. This allows you to explore and test upcoming features for potential inclusion in your Microsoft Teams app. We also welcome [feedback](~/feedback.md) on any feature in developer preview. Developer preview is enabled per Microsoft Teams client, so you don't need to worry about affecting your entire organization.
+Developer Preview is a public program for developers, which provides early access to unreleased features in Microsoft Teams. This allows you to explore and test upcoming features for potential inclusion in your Teams app. We also welcome [feedback](~/feedback.md) on any feature in developer preview. Developer preview is enabled per Microsoft Teams client, so you don't need to worry about affecting your entire organization.
## Developer preview app manifest
platform Search Extensions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/messaging-extension-v3/search-extensions.md
Title: Search with message extensions
-description: In this module, learn how to develop search based message extensions
+description: In this article, you'll learn how to develop search based message extensions
ms.localizationpriority: medium Last updated 07/20/2019
To open your message extension, navigate to any of your chats or channels. Choos
Most of your work involves the `onQuery` event, which handles all interactions in the message extension window.
-If you set `canUpdateConfiguration` to `true` in the manifest, you enable the **Settings** menu item for your message extension and must also handle `onQuerySettingsUrl` and `onSettingsUpdate`.
+If you set `canUpdateConfiguration` to `true` in the manifest, you enable the Settings menu item for your message extension, and must also handle `onQuerySettingsUrl` and `onSettingsUpdate`.
## Handle onQuery events A message extension receives an `onQuery` event when anything happens in the message extension window or is sent to the window.
-If your message extension uses a configuration page, your handler for `onQuery` should first check for any stored configuration information; if the message extension isn't configured, return a `config` response with a link to your configuration page. Be aware that the response from the configuration page is also handled by `onQuery`. The sole exception is when the configuration page is called by the handler for `onQuerySettingsUrl`; see the following section:
+If your message extension uses a configuration page, your handler for `onQuery` should first check for any stored configuration information; if the message extension isn't configured, return a `config` response with a link to your configuration page. The response from the configuration page is also handled by `onQuery`. The sole exception is when the configuration page is called by the handler for `onQuerySettingsUrl`; see the following section:
-If your message extension requires authentication, check the user state information; if the user isn't signed in, follow the instructions in the [Authentication](#authentication) section later in this topic.
+If your message extension requires authentication, check the user state information. If the user isn't signed in, follow the instructions in the [Authentication](#authentication) section later in this topic.
Next, check whether `initialRun` is set; if so, take appropriate action, such as providing instructions or a list of responses.
In addition to the standard bot activity properties, the payload contains the fo
|`channelData.tenant.id`| Microsoft Azure Active Directory (Azure AD) tenant ID. | |`channelData.channel.id`| Channel ID (if the request was made in a channel). | |`channelData.team.id`| Team ID (if the request was made in a channel). |
-|`clientInfo`|Optional metadata about the client software used to send a user's message. The entity can contain two properties:<br>The `country` field contains the user's detected location.<br>The `platform` field describes the messaging client platform. <br>For additional information, please *see* [Non-IRI entity types ΓÇö clientInfo](https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-activity.md#clientinfo).|
+|`clientInfo`|Optional metadata about the client software used to send a user's message. The entity can contain two properties:<br>The `country` field contains the user's detected location.<br>The `platform` field describes the messaging client platform. <br>For more information, *see* [Non-IRI entity types ΓÇö clientInfo](https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-activity.md#clientinfo).|
-The request parameters itself are found in the value object, which includes the following properties:
+The request parameters are found in the value object, which includes the following properties:
| Property name | Purpose | |||
The request parameters itself are found in the value object, which includes the
### Receive requests from links inserted into the compose message box
-As an alternative (or in addition) to searching your external service, you can use a URL inserted into the compose message box to query your service and return a card. In the screenshot below a user has pasted in a URL for a work item in Azure DevOps which the message extension has resolved into a card.
+As an alternative (or in addition) to searching your external service, you can use a URL inserted into the compose message box to query your service and return a card. In the screenshot below a user has pasted in a URL for a work item in Azure DevOps, which the message extension has resolved into a card.
![Example of link unfurling](~/assets/images/compose-extensions/messagingextensions_linkunfurling.png)
-To enable your message extension to interact with links this way you'll first need to add the `messageHandlers` array to your app manifest as in the example below:
+To enable your message extension to interact with links this way, you'll first need to add the `messageHandlers` array to your app manifest as in the example below:
```json "composeExtensions": [
If your app returns multiple items only the first will be used.
### Respond to user requests
-When the user performs a query, Microsoft Teams issues a synchronous HTTP request to your service. At that point, your code has 5 seconds to provide an HTTP response to the request. During this time, your service can perform additional lookup, or any other business logic needed to serve the request.
+When the user performs a query, Teams issues a synchronous HTTP request to your service. During this time, your code has 5 seconds to provide an HTTP response to the request. During this time, your service can perform additional lookup, or any other business logic needed to serve the request.
Your service should respond with the results matching the user query. The response must indicate an HTTP status code of `200 OK` and a valid application/json object with the following body:
For additional documentation regarding the Office 365 Connector card, see [Using
The result list is displayed in the Microsoft Teams UI with a preview of each item. The preview is generated in one of two ways: * Using the `preview` property within the `attachment` object. The `preview` attachment can only be a Hero or Thumbnail card.
-* Extracted from the basic `title`, `text`, and `image` properties of the attachment. These are used only if the `preview` property is not set and these properties are available.
+* Extracted from the basic `title`, `text`, and `image` properties of the attachment. These are used only if the `preview` property isn't set and these properties are available.
-You can display a preview of an Adaptive or Office 365 Connector card in the result list simply by setting its preview property; this is not necessary if the results are already hero or thumbnail cards. If you use the preview attachment, it must be either a Hero or Thumbnail card. If no preview property is specified, the preview of the card will fail and nothing will be displayed.
+You can display a preview of an Adaptive or Office 365 Connector card in the result list simply by setting its preview property. This isn't necessary if the results are already hero or thumbnail cards. If you use the preview attachment, it must be either a Hero or Thumbnail card. If no preview property is specified, the preview of the card will fail and nothing will be displayed.
#### Response example
This example shows a response with two results, mixing different card formats: O
### Default query
-If you set `initialRun` to `true` in the manifest, Microsoft Teams issues a "default" query when the user first opens the message extension. Your service can respond to this query with a set of prepopulated results. This can be useful for displaying, for instance, recently viewed items, favorites, or any other information that is not dependent on user input.
+If you set `initialRun` to `true` in the manifest, Microsoft Teams issues a "default" query when the user first opens the message extension. Your service can respond to this query with a set of prepopulated results. This can be useful for displaying, for instance, recently viewed items, favorites, or any other information that isn't dependent on user input.
The default query has the same structure as any regular user query, except with a parameter `initialRun` whose string value is `true`.
The default query has the same structure as any regular user query, except with
## Identify the user
-Every request to your services includes the obfuscated ID of the user that performed the request, as well as the user's display name and Microsoft Azure Active Directory (Azure AD) object ID.
+Every request to your services includes the obfuscated ID of the user that performed the request, and the user's display name and Microsoft Azure Active Directory (Azure AD) object ID.
```json "from": {
The `id` and `aadObjectId` values are guaranteed to be that of the authenticated
## Authentication
-If your service requires user authentication, you need to sign in the user before he or she can use the message extension. If you have written a bot or a tab that signs in the user, this section should be familiar.
+If your service requires user authentication, you need to sign in the user before the user can use the message extension. If you've written a bot or a tab that signs in the user, this section should be familiar.
The sequence is as follows: 1. User issues a query, or the default query is automatically sent to your service. 2. Your service checks whether the user has first authenticated by inspecting the Teams user ID.
-3. If the user has not authenticated, send back an `auth` response with an `openUrl` suggested action including the authentication URL.
+3. If the user hasn't authenticated, send back an `auth` response with an `openUrl` suggested action including the authentication URL.
4. The Microsoft Teams client launches a pop-up window hosting your webpage using the given authentication URL. 5. After the user signs in, you should close your window and send an "authentication code" to the Teams client. 6. The Teams client then reissues the query to your service, which includes the authentication code passed in step 5.
-Your service should verify that the authentication code received in step 6 matches the one from step 5. This ensures that a malicious user does not try to spoof or compromise the sign-in flow. This effectively "closes the loop" to finish the secure authentication sequence.
+Your service should verify that the authentication code received in step 6 matches the one from step 5, which ensures that a malicious user doesn't try to spoof or compromise the sign-in flow. This effectively "closes the loop" to finish the secure authentication sequence.
### Respond with a sign-in action
To prompt an unauthenticated user to sign in, respond with a suggested action of
Your sign-in experience should be responsive and fit within a popup window. It should integrate with the [Microsoft Teams JavaScript client SDK](/javascript/api/overview/msteams-client), which uses message passing.
-As with other embedded experiences running inside Microsoft Teams, your code inside the window needs to first call `microsoftTeams.initialize()`. If your code performs an OAuth flow, you can pass the Teams user ID into your window, which then can pass it to the OAuth sign-in URL.
+As with other embedded experiences running inside Teams, your code inside the window needs to first call `microsoftTeams.initialize()`. If your code performs an OAuth flow, you can pass the Teams user ID into your window, which then can pass it to the OAuth sign-in URL.
### Complete the sign-in flow
platform Moodle Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/moodle-overview.md
This content is modified as per the requirement.-->
Moodle LMS helps users access the following apps:
-* **Microsoft 365 plugins**: The Microsoft 365 plugins are designed to ensure integration between Moodle sites and Microsoft Teams. These plugins can be used independently, or in partnership to achieve distinct user requirements. For more information, see [Microsoft 365 plugins](m365-plugins/m365-plugins-overview.md).
+* **Microsoft 365 plugins**: The Microsoft 365 plugins are designed to ensure integration between Moodle sites and Teams. These plugins can be used independently, or in partnership to achieve distinct user requirements. For more information, see [Microsoft 365 plugins](m365-plugins/m365-plugins-overview.md).
* **Partner apps for Moodle**: All the partner set of apps for Moodle and Teams are available in Microsoft Store. For more information, see [Partner apps for Moodle](partner-apps-for-moodle.md).
platform Moodleinstructions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/moodleInstructions.md
Title: Install Moodle LMS
-description: How to install and configure the Moodle integration app for Microsoft Teams
-keywords: Teams Moodle app integration plugins
+description: In this article, you'll learn how to install and configure the Moodle integration app for Microsoft Teams
ms.localizationpriority: medium
# Install Moodle LMS
-In this article you'll learn how to install the Moodle LMS.
+In this article, you'll learn how to install the Moodle LMS.
> [!NOTE] > To help IT admins to easily set-up Moodle and Teams integration, open-source Microsoft 365 Moodle Plugins is updated for the following:
Use the generated `AppID` and `Key` in your Microsoft 365 Moodle Plugins setup p
1. Next you must add the `AppID` and `Key` to the Microsoft 365 Moodle Plugins. Return to the plugins administration page, Site administration > Plugins > Microsoft 365 Integration.
-1. On the **Setup** tab add the `AppID` and `Key` you copied previously, and then select **Save changes**. After the page refreshes, you can see a new section **Choose connection method**.
+1. On the **Setup** tab, add the `AppID` and `Key` you copied previously, and then select **Save changes**. After the page refreshes, you can see a new section **Choose connection method**.
1. In the **Choose connection method**, select the checkbox labeled **Default**, and then select **Save changes** again.
Use the generated `AppID` and `Key` in your Microsoft 365 Moodle Plugins setup p
1. To enable **OpenID Connect**, select the **Manage Authentication** link, and select the eye icon on the **OpenId Connect** line if it is unavailable. 1. To enable frame embedding, select the **HTTP Security** link, and then select the checkbox next to **Allow frame embedding**.
- 1. To enable web services, which enables the Moodle API features, select the **Advanced Features** link, and then ensure the checkbox next to **Enable web services** is selected.
+ 1. To enable web services, which enable the Moodle API features, select the **Advanced Features** link, and then ensure the checkbox next to **Enable web services** is selected.
1. To enable the external services for Microsoft 365, select the **External services** link, and then: Γ£ö Select **Edit** on the **Moodle Microsoft 365 Webservices** row.
To register your bot:
1. Copy the **Application ID** and paste it into the **Bot Application ID** field on the **Team Settings** page.
-1. Select the **Generate New Password** button. Copy the generated password and and paste it into the **Bot Application Password** field on the **Team Settings** page.
+1. Select the **Generate New Password** button. Copy the generated password and paste it into the **Bot Application Password** field on the **Team Settings** page.
1. Scroll to the bottom of the form and select **Save Changes**.
After the resources have completed deploying to Azure, you must configure the Mi
1. In Moodle, open the **Team Settings** page of your Microsoft 365 Moodle Plugins.
-1. In the **Bot Endpoint** field paste the URL you just copied and change the word *messages* to *webhook*. The URL must appear as follows: `https://botname.azurewebsites.net/api/webhook`
+1. In the **Bot Endpoint** field paste the URL you copied and change the word *messages* to *webhook*. The URL must appear as follows: `https://botname.azurewebsites.net/api/webhook`
1. Select **Save Changes**.
After the resources have completed deploying to Azure, you must configure the Mi
After your bot deployed to Azure and configured to talk to your Moodle server, you must deploy your Microsoft Teams app. To do this you must load the app manifest file that you downloaded from the Microsoft 365 Moodle Plugins Team Settings page in the previous step.
-Before you install the app you must ensure to enable external apps and uploading of apps. For more information, see [Prepare your Microsoft 365 tenant](../concepts/build-and-test/prepare-your-o365-tenant.md).
+Before you install the app, you must ensure to enable external apps and uploading of apps. For more information, see [Prepare your Microsoft 365 tenant](../concepts/build-and-test/prepare-your-o365-tenant.md).
To deploy your app:
To allow automatic creation of Moodle tabs:
1. Open Microsoft Teams.
-1. Select the Apps icon from the lower-left area of the navigation bar.
+1. Select the Apps icon from the lower-left pane.
1. Locate the uploaded **Moodle app** > select the **options** icon > select **copy link**.
To allow automatic creation of Moodle tabs:
1. Paste the ID of the Microsoft Teams app into the Moodle app ID field, and save changes.
-When a Moodle course is synced, Microsoft Teams automatically installs the Moodle app in the team, creates a Moodle tab in the General channel of Teams, and configures it to contain the course page for the Moodle course from which it is synced. You can now start working with your Moodle courses directly from Microsoft Teams.
+When a Moodle course is synced, Teams automatically installs the Moodle app in the team, creates a Moodle tab in the General channel of Teams, and configures it to contain the course page for the Moodle course from which it is synced. You can now start working with your Moodle courses directly from Teams.
> [!NOTE] > To share any feature requests or feedback with us, visit our [User Voice page](https://support.microsoft.com/en-us/office/uservoice-pages-430e1a78-e016-472a-a10f-dc2a3df3450a).
platform Removing Tab Margins https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/removing-tab-margins.md
# Tab margin changes
-This document describes how the removal of margins around all tabs in Microsoft Teams enhances your app building experience. This is an enhancement introduced in Microsoft Teams in 2021.
+This document describes how the removal of margins around all tabs in Microsoft Teams enhances your app building experience. This is an enhancement introduced in Teams in 2021.
You can build apps that look more native to Teams by removing the margins around all tabs. Tabs with removed margins align with Microsoft Teams' [UI kit designs](~/tabs/design/tabs.md). Most apps experience enhanced look without margins. :::image type="content" source="../assets/images/tabs/remove-margins-tabs.png" alt-text="Tab wit and without margins" border="false":::
platform Manifest Schema Dev Preview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema-dev-preview.md
The object is an array (maximum of 1 element) with all elements of type `object`
### composeExtensions.commands
-Your message extension should declare one or more commands. Each command appears in Microsoft Teams as a potential interaction from the UI-based entry point. There's a maximum of 10 commands.
+Your message extension should declare one or more commands. Each command appears in Teams as a potential interaction from the UI-based entry point. There's a maximum of 10 commands.
Each command item is an object with the following structure:
platform Manifest Schema https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema.md
The following schema sample shows all extensibility options:
], "description": "Command Description; e.g., Add a customer", "initialRun": true,
- "fetchTask": true,
+ "fetchTask": false ,
"parameters": [ { "name": "custinfo",
Each command item is an object with the following structure:
|`parameters.title`|string|32 characters|✔️|User-friendly title for the parameter.| |`parameters.description`|string|128 characters||User-friendly string that describes this parameter’s purpose.| |`parameters.value`|string|512 characters||Initial value for the parameter. Currently the value is not supported|
-|`parameters.inputType`|string|128 characters||Defines the type of control displayed on a task module for`fetchTask: true` . One of `text, textarea, number, date, time, toggle, choiceset` .|
+|`parameters.inputType`|string|128 characters||Defines the type of control displayed on a task module for`fetchTask: false` . One of `text, textarea, number, date, time, toggle, choiceset` .|
|`parameters.choices`|array of objects|10 items||The choice options for the`choiceset`. Use only when`parameter.inputType` is `choiceset`.| |`parameters.choices.title`|string|128 characters|✔️|Title of the choice.| |`parameters.choices.value`|string|512 characters|✔️|Value of the choice.|
platform App Templates https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/samples/app-templates.md
The key benefits of using App templates are:
## Adoption Tool- Champion Management Platform
-The Champion Management Platform (CMP) app template helps you manage, scale, and inspire your teamwork champions to achieve more. This app template is built on the SharePoint Framework and loaded into a tab within a team. Groups can leverage this tool to help manage program membership, provide a leaderboard and event types for logging, and tools to overlay digital badges to program participants.
+The Champion Management Platform (CMP) app template helps you manage, scale, and inspire your teamwork champions to achieve more. This app template is built on the SharePoint Framework and loaded into a tab within a team. Groups can leverage this tool to help manage program membership, provide a leaderboard, and event types for logging, and tools to overlay digital badges to program participants.
[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-champion-management) ## Adoption Tool- Microsoft 365 Learning Pathways (Get Started)
-The Get Started app template allows you to bring the power of Microsoft 365 learning pathways inside of Microsoft Teams. This app template allows you to grant easy access to specific training pages or other intranet assets and load the content directly within Teams. You can also change the app name or logo to match your company branding.
+The Get Started app template allows you to bring the power of Microsoft 365 learning pathways inside of Teams. This app template allows you to grant easy access to specific training pages or other intranet assets and load the content directly within Teams. You can also change the app name or logo to match your company branding.
[Get it on GitHub](https://github.com/msft-teams/tools/tree/master/M365%20Learning%20Pathways)
It provides a foundation to build custom targeted communication capabilities suc
## Co-worker Appreciation
-Using the co-worker appreciation template in Microsoft Teams, users can recognize their colleagues' achievements within the TeamsΓÇÖ context. When co-workers select to reward a colleague, recipients and other team members are tagged in a channel conversation and they receive a notification about the channel's award details. The awards are recorded in the Teams app, which is secure, portable, and easily shareable. This is considered as the PowerApps based version of the Open Badges app template, with a leaderboard.
+Using the co-worker appreciation template in Teams, users can recognize their colleagues' achievements within the TeamsΓÇÖ context. When co-workers select to reward a colleague, recipients and other team members are tagged in a channel conversation and they receive a notification about the channel's award details. The awards are recorded in the Teams app, which is secure, portable, and easily shareable. This is considered as the PowerApps based version of the Open Badges app template, with a leaderboard.
[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-coworker-appreciation)
In addition to encouraging personal connections across your entire team, the Ice
## New Employee Onboarding
-New Employee Onboarding is an integrated Microsoft Teams and [SharePoint New Employee Onboarding Solution](https://lookbook.microsoft.com/details/75e60a32-9849-4ed4-b83e-b2b08983ad19) that enables your organization to provide a consistent, high-quality onboarding experience for employees on their new-hire journey. The app is used by human resource teams and hiring managers to provide relevant information throughout the orientation and induction process and by new hires to share feedback, provide introductions, and complete onboarding tasks.
+New Employee Onboarding is an integrated Teams and [SharePoint New Employee Onboarding Solution](https://lookbook.microsoft.com/details/75e60a32-9849-4ed4-b83e-b2b08983ad19) that enables your organization to provide a consistent, high-quality onboarding experience for employees on their new-hire journey. The app is used by human resource teams and hiring managers to provide relevant information throughout the orientation and induction process and by new hires to share feedback, provide introductions, and complete onboarding tasks.
[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-newemployeeonboarding)
New Employee Onboarding is an integrated Microsoft Teams and [SharePoint New Emp
App template code samples are a collection of sample apps for Microsoft Teams platform capabilities. > [!NOTE]
+>
> * Microsoft is not actively managing the source code. The complete source code is open source and you can explore, fork, and modify the source code to meet your specific requirements. > * You must not use Microsoft Power Platform to create apps that are to be published to the Teams app store. Microsoft Power Platform apps can be published to an organizationΓÇÖs app store only.
The following table describes App template code samples:
| Associate Insights |Associate Insights is a [Power Apps](/powerapps/maker/canvas-apps/embed-teams-app) template that empowers firstline workers to directly capture and submit customer opinion, sentiment, and perception. Firstline workers are often the first company representative to engage with customers in a one-to-one point-of contact. The collected data are shared and used collaboratively by business teams, such as through a Power BI Teams tab, for product improvement and enhancing the customer experience. | [Associate Insights](https://github.com/OfficeDev/microsoft-teams-apps-associateinsights) | | Attendance | The Attendance app is a [Power Apps](/powerapps/maker/canvas-apps/embed-teams-app) tab that is pinned in a team. It's designed to record presence in settings, such as learning and training environments. Users can mark or edit attendance for up to 30 days in the past and view summarized attendance reports for an entire group or individual attendees. | [Attendance](https://github.com/OfficeDev/microsoft-teams-apps-attendance) | |Book-a-room | Book-a-room is a [Microsoft Teams bot](../bots/what-are-bots.md) that allows users quickly to find and reserve a meeting room for 30, 60, or 90 minutes starting from the current time. The default time is 30 minutes. The Book-a-room bot scopes to personal or 1:1 conversations.| [Book-a-room](https://github.com/OfficeDev/microsoft-teams-apps-bookaroom) |
-| Building Access | Building Access is a Microsoft [Power Platform](https://powerapps.microsoft.com/blog/now-in-preview-customize-teams-with-built-in-power-platform-capabilities/) based app that supports the administration of building occupancy thresholds and social distancing norms by enabling facilities directors to manage, track, and report employee on-site presence. The app, built using Microsoft [Power Apps](/powerapps/powerapps-overview), and [Power Automate](/power-automate/getting-started), deeply integrates with Microsoft Teams and enables organizations to determine building readiness, establish eligibility criteria for on-site access, and gather insights for future planning. | [Building Access](https://github.com/OfficeDev/microsoft-teams-apps-buildingaccess) |
+| Building Access | Building Access is a Microsoft [Power Platform](https://powerapps.microsoft.com/blog/now-in-preview-customize-teams-with-built-in-power-platform-capabilities/) based app that supports the administration of building occupancy thresholds and social distancing norms by enabling facilities directors to manage, track, and report employee on-site presence. The app, built using Microsoft [Power Apps](/powerapps/powerapps-overview), and [Power Automate](/power-automate/getting-started), deeply integrates with Teams and enables organizations to determine building readiness, establish eligibility criteria for on-site access, and gather insights for future planning. | [Building Access](https://github.com/OfficeDev/microsoft-teams-apps-buildingaccess) |
| Celebrations |Celebrations is a Teams app that helps team members to celebrate each others' birthdays, anniversaries, and other recurring events. It remembers special occasions of all the team members and sends a friendly message in all the teams selected at the time of event creation, to make the team members feel special on their day. The app provides an easy interface for all the team members to personally add and view their events and also allows the user to select the teams in which the events get shared. | [Celebrations](https://github.com/OfficeDev/microsoft-teams-celebrations-app) |
-| Checklist | Checklist is a custom Microsoft Teams [message extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to collaborate with your team by creating a shared checklist in a chat or channel. The app is supported across all Teams platform clients, such as desktop browser, iOS, and Android. The app is ready for deployment as part of your Microsoft 365 subscription. | [Checklist](https://github.com/OfficeDev/microsoft-teams-checklist-app)|
-| Classroom Drop-in | Classroom Drop-in is a Microsoft [Power Platform](https://powerapps.microsoft.com/blog/now-in-preview-customize-teams-with-built-in-power-platform-capabilities/)-based app that enables system leaders to find class teams, means virtual classrooms and add themselves or others to these class teams for a specified drop-in period, as needed. The app built using Microsoft [Power Apps](/powerapps/powerapps-overview) and [Power Automate](/power-automate/getting-started), deeply integrates with Microsoft Teams to ensure educational institutes can optimize their operations in a hybrid learning environment by providing access to relevant stakeholders for class teams per business requirements.| [Classroom Drop-in](https://github.com/OfficeDev/microsoft-teams-apps-classroom-dropin) |
+| Checklist | Checklist is a custom Teams [message extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to collaborate with your team by creating a shared checklist in a chat or channel. The app is supported across all Teams platform clients, such as desktop browser, iOS, and Android. The app is ready for deployment as part of your Microsoft 365 subscription. | [Checklist](https://github.com/OfficeDev/microsoft-teams-checklist-app)|
+| Classroom Drop-in | Classroom Drop-in is a Microsoft [Power Platform](https://powerapps.microsoft.com/blog/now-in-preview-customize-teams-with-built-in-power-platform-capabilities/)-based app that enables system leaders to find class teams, means virtual classrooms and add themselves or others to these class teams for a specified drop-in period, as needed. The app built using Microsoft [Power Apps](/powerapps/powerapps-overview) and [Power Automate](/power-automate/getting-started), deeply integrates with Teams to ensure educational institutes can optimize their operations in a hybrid learning environment by providing access to relevant stakeholders for class teams per business requirements.| [Classroom Drop-in](https://github.com/OfficeDev/microsoft-teams-apps-classroom-dropin) |
| Contact Group Lookup |The Contact Group Lookup app provides a convenient and useful approach to creating, accessing, and managing your organization's contact groups, formerly known as distribution lists or communication groups. Users can quickly view and chat with group members, view member status, and create a group chat with selected members in the contact group, all within the Teams environment.| [Contact Group Lookup](https://github.com/OfficeDev/microsoft-teams-app-contactgrouplookup)| | CrowdSourcer | CrowdSourcer is a [Microsoft Teams bot](../bots/what-are-bots.md) that gives teams queried information sourced collaboratively from group members. It helps to answer frequently asked questions while enabling participants to actively engage in and contribute to a fun and helpful information resource.| [CrowdSourcer](https://github.com/OfficeDev/microsoft-teams-crowdsourcer-app)|
-|Custom Stickers | Self-expression is core to a healthy team culture. This app template is a [message extension](~/messaging-extensions/what-are-messaging-extensions.md) that enables your users to use custom stickers and GIFs within Microsoft Teams. This template provides an easy web-based configuration experience where anyone with configuration access can upload the GIFs, stickers, and images they want their users to have, allowing your entire team to use any set of stickers you choose. This app also enables easy sharing of images, GIFs, stickers across teams without needing access to SharePoint sites or individual channels as storage and sharing mechanisms. For example, product teams can easily share product images and GIFs to social media, marketing, and sales teams programmatically. One can also extend this app by triggering a notification flow to specific teams or individuals when new images, and GIFs are made available.| [Custom Stickers](https://github.com/OfficeDev/microsoft-teams-stickers-app) |
+|Custom Stickers | Self-expression is core to a healthy team culture. This app template is a [message extension](~/messaging-extensions/what-are-messaging-extensions.md) that enables your users to use custom stickers and GIFs within Teams. This template provides an easy web-based configuration experience where anyone with configuration access can upload the GIFs, stickers, and images they want their users to have, allowing your entire team to use any set of stickers you choose. This app also enables easy sharing of images, GIFs, stickers across teams without needing access to SharePoint sites or individual channels as storage and sharing mechanisms. For example, product teams can easily share product images and GIFs to social media, marketing, and sales teams programmatically. One can also extend this app by triggering a notification flow to specific teams or individuals when new images, and GIFs are made available.| [Custom Stickers](https://github.com/OfficeDev/microsoft-teams-stickers-app) |
| Employee Ideas |The Employee Ideas app is the PowerApps version of the Azure based Great Ideas app template. The app enables the Teams users to set up and configure an idea campaign. An idea campaign is a category for grouping ideas around common themes. Teams users can also perform the following activities:<br/> Configure a standard submission form that employees must submit for each idea.<br/>Review and manage the ideas and list of campaigns. <br/>Modify and delete campaigns. <br/> Review leader boards of ideas. <br/> Vote for and share prioritized ideas. <br/> Submit ideas for a campaign. <br/> View other team member's idea. <br/>Vote on most liked ideas. <br/> Review the performance of their ideas compared with others within a campaign.|[Employee Ideas](https://github.com/OfficeDev/microsoft-teams-apps-employeeideas) | |E-Prescriptions| E-Prescriptions is a [Power Apps](/powerapps/maker/canvas-apps/embed-teams-app) based app that enhances telemedicine and virtual care by automating the process of issuing e-prescriptions to patients. Medical professionals can quickly review appointments, generate e-prescriptions, and send emails with e-prescription attachments to patients directly within the Teams platform.|[E-Prescriptions](https://github.com/OfficeDev/microsoft-teams-apps-eprescription)| | Employee Training | Employee training is a Microsoft Teams app that enables organizers to easily publish, track, and promote learning and training events for your organization. With the app, event planners can send reminders and notifications to event registrants and employees can indicate interest in upcoming events, stay updated on current events, and share event details with colleagues through the Teams message extension.|[Employee Training](https://github.com/OfficeDev/microsoft-teams-apps-employeetraining)| | Expert Finder| Expert Finder is a [Microsoft Teams bot](../bots/what-are-bots.md) that identifies specific organization members based on their skills, interests, and education attributes. Members find experts within an organization that match a keyword search of Microsoft Azure Active Directory (Azure AD) user profiles.| [Expert Finder](https://github.com/OfficeDev/microsoft-teams-apps-expertfinder)|
-| Get Support App| The Get Support app is used by organizations that are using Microsoft Teams, to enable any set of users to request assistance from supervisors. This app includes the following features: <br/>Requesting assistance on different categories from a Power App.<br/>Notifications sent to requestors informing them of who is assigned.<br/> Notifications sent to assigned supervisors informing them of who needs assistance. <br/>Analyzing escalations and patterns in SharePoint and Power BI.|[Get Support App](https://github.com/OfficeDev/microsoft-teams-app-get-support/) |
+| Get Support App| The Get Support app is used by organizations that are using Teams, to enable any set of users to request assistance from supervisors. This app includes the following features: <br/>Requesting assistance on different categories from a Power App.<br/>Notifications sent to requestors informing them of who is assigned.<br/> Notifications sent to assigned supervisors informing them of who needs assistance. <br/>Analyzing escalations and patterns in SharePoint and Power BI.|[Get Support App](https://github.com/OfficeDev/microsoft-teams-app-get-support/) |
| Goal Tracker|The Goal Tracker app is a comprehensive solution for your organization to support establishing goals, observing progress, and acknowledging success within Microsoft Teams. The app enables users to set, track, and update objectives on a professional, personal, and team level. Team members also receive timely reminders and status updates to remain focused and stay on track. |[Goal Tracker](https://github.com/OfficeDev/microsoft-teams-app-goaltracker) | | Great Ideas|The Great Ideas app supports and empowers innovation and creativity within your organization. The app enables your employees to share ideas with colleagues and leadership, discover new submissions, spotlight contributions for peer consideration, and cast their vote for the best proposals within Microsoft Teams. |[Great Ideas](https://github.com/OfficeDev/microsoft-teams-apps-greatideas) |
-|Group Activities | Group Activities is a Microsoft Teams app that makes it easy for team owners to quickly create activity groups and manage collaboration workflows within the context of Microsoft Teams. Activity authors are enabled to create activities, randomly distribute team members in groups, and optionally have the bot send reminders until activities are complete.|[Group Activities](https://github.com/OfficeDev/microsoft-teams-apps-groupactivities) |
+|Group Activities | Group Activities is a Teams app that makes it easy for team owners to quickly create activity groups and manage collaboration workflows within the context of Teams. Activity authors are enabled to create activities, randomly distribute team members in groups, and optionally have the bot send reminders until activities are complete.|[Group Activities](https://github.com/OfficeDev/microsoft-teams-apps-groupactivities) |
|Group Connect |Group Connect is a Microsoft Teams app that helps organization members discover employee groups and find information relevant to employee groups. The app comes built-in with rich capabilities for organization leaders to communicate with their employees regarding groups, events, and resources. The Group Connect app also matches group members with each other at their desired frequency to encourage networking and cohesion within a group. For more information on how you can leverage the Group Connect app to help employee groups foster within your organization, see the app on GitHub. |[Group Connect](https://github.com/OfficeDev/microsoft-teams-apps-groupconnect) | |Grow Your Skills | The Grow Your Skills app supports professional growth and development by enabling employees to contribute to supplemental projects for your organization while simultaneously learning new skills. Employees can use the app to locate opportunities that meet their interests, enjoy meaningful collaboration with peers, and acquire new levels of expertise and capabilities, all within the Teams environment.|[Grow Your Skills](https://github.com/OfficeDev/microsoft-teams-apps-growyourskills) | | HR Support|HR Support bot is a friendly Q&A bot that brings a support professional or expert from the HR team in the loop when it's unable to help. One can ask the bot a question and the bot responds with an answer if it's contained in the knowledge base. If not, the bot allows the user to submit a query, which then gets posted in a pre-configured team of experts who are help to provide support by acting upon the notifications from within their team itself. Additionally, the bot suggests links to recommended HR policies or questions by searching for pre-configured tags in the question. These tiles are found in the associated tab as a quick reference. HR Support works well for light weight Q&A and to provide quick support when launching new projects or initiatives in the organization. |[HR Support](https://github.com/OfficeDev/microsoft-teams-hrsupport-app) | |Incentives | Incentives is a [Power Apps](/powerapps/maker/canvas-apps/embed-teams-app) template that manages and tracks incentivized employee participation in designated activities, such as trainings and change management initiatives. Admins use the app to establish designated activities, assign points for completion, and specify required eligibility point levels for rewards. Employees use the app to view their accumulated points and, upon reaching eligibility, request and claim redeemable rewards.|[Incentives](https://github.com/OfficeDev/microsoft-teams-apps-incentives) | |Incident Reporter | Incident Reporter is a [Microsoft Teams bot](../bots/what-are-bots.md) that optimizes the management of incidents in your organization. The bot facilitates automated incident data collection, customized incident reports, relevant stakeholder notifications, and end-to-end incident tracking.|[Incident Reporter](https://github.com/OfficeDev/microsoft-teams-apps-incidentreport) |
-| Inspection|Inspection is a Microsoft Teams app that enables front line workers to inspect anything from locations to assets and equipments. For example, a retail store, manufacturing plant, or vehicles and machines. There are two apps in this solution, each intended for different types of users. The app empowers the front line workers to inspect an asset or area, to manage quality of products and services, or maintain safety at workplace. It facilitates communication between team members to address issues found during inspection. The app provides simple reports for managers to expedite issue resolution and highlight trends. |[Inspection](https://github.com/OfficeDev/microsoft-teams-apps-inspection) |
-|Issue Reporting |The Issue Reporting app empowers the employees and managers to raise and manage issues. It consists of two apps, Issue reporting app for reporting issues and Manage Issues app for managing issues. The team managers use the Manage Issues app to configure the app experience, including the channel in which Microsoft Teams messages and Planner tasks are created by the app. Managers also use the app to create template forms to collect details when a user reports an issue. For example, review, edit, or delete issue template forms. The app is also used to review team issues, report on issue history, and efficiently manage issue resolution. The employees use the Issue reporting app to log issues and details required to resolve them. The app is also used to modify and resolve existing issues and get a high-level view of individual or team issues. |[Issue Reporting](https://github.com/OfficeDev/microsoft-teams-apps-issuereporting) |
-| Open Badges| Open Badges is a Microsoft Teams app that enables individuals to earn digital learning credential badges within the Teams context and share them everywhere. Using capabilities from the third-party digital badge issuing authority, [Badgr](https://badgr.org/), awarded badges are recorded in a recipient's Badgr profile and available to build and share a rich picture of lifetime learning journeys.|[Open Badges](https://github.com/OfficeDev/microsoft-teams-apps-openbadges) |
-| Poll| Poll is a custom Microsoft Teams [message extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to quickly create and send polls in a chat or a channel to gather team opinions and preferences. The app is supported across all Teams platform clients, such as desktop, browser, iOS, and Android and is ready for deployment as part of your Microsoft 365 subscription.|[Poll](https://github.com/OfficeDev/microsoft-teams-poll-app) |
-| Quick Responses| Quick Responses is a Microsoft Teams app that delivers a robust solution for effectively answering users' commonly asked questions FAQs. Instead of answering each query manually and continuously repeating information, the app builds a library of responses for an interactive user experience through Teams [message extensions](../messaging-extensions/what-are-messaging-extensions.md).|[Quick Responses](https://github.com/OfficeDev/microsoft-teams-apps-quickresponses) |
+| Inspection|Inspection is a Teams app that enables front line workers to inspect anything from locations to assets and equipments. For example, a retail store, manufacturing plant, or vehicles and machines. There are two apps in this solution, each intended for different types of users. The app empowers the front line workers to inspect an asset or area, to manage quality of products and services, or maintain safety at workplace. It facilitates communication between team members to address issues found during inspection. The app provides simple reports for managers to expedite issue resolution and highlight trends. |[Inspection](https://github.com/OfficeDev/microsoft-teams-apps-inspection) |
+|Issue Reporting |The Issue Reporting app empowers the employees and managers to raise and manage issues. It consists of two apps, Issue reporting app for reporting issues and Manage Issues app for managing issues. The team managers use the Manage Issues app to configure the app experience, including the channel in which Teams messages and Planner tasks are created by the app. Managers also use the app to create template forms to collect details when a user reports an issue. For example, review, edit, or delete issue template forms. The app is also used to review team issues, report on issue history, and efficiently manage issue resolution. The employees use the Issue reporting app to log issues and details required to resolve them. The app is also used to modify and resolve existing issues and get a high-level view of individual or team issues. |[Issue Reporting](https://github.com/OfficeDev/microsoft-teams-apps-issuereporting) |
+| Open Badges| Open Badges is a Teams app that enables individuals to earn digital learning credential badges within the Teams context and share them everywhere. Using capabilities from the third-party digital badge issuing authority, [Badgr](https://badgr.org/), awarded badges are recorded in a recipient's Badgr profile and available to build and share a rich picture of lifetime learning journeys.|[Open Badges](https://github.com/OfficeDev/microsoft-teams-apps-openbadges) |
+| Poll| Poll is a custom Teams [message extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to quickly create and send polls in a chat or a channel to gather team opinions and preferences. The app is supported across all Teams platform clients, such as desktop, browser, iOS, and Android and is ready for deployment as part of your Microsoft 365 subscription.|[Poll](https://github.com/OfficeDev/microsoft-teams-poll-app) |
+| Quick Responses| Quick Responses is a Teams app that delivers a robust solution for effectively answering users' commonly asked questions FAQs. Instead of answering each query manually and continuously repeating information, the app builds a library of responses for an interactive user experience through Teams [message extensions](../messaging-extensions/what-are-messaging-extensions.md).|[Quick Responses](https://github.com/OfficeDev/microsoft-teams-apps-quickresponses) |
|Quiz | Quiz is a custom [Teams message extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to create a quiz within a chat or a channel for knowledge check and instantaneous results. You can use Quiz for, In-class and offline exams, Knowledge check within team, and for fun quizzes within a team. Quiz app is supported across multiple platforms, such as Teams desktop, browser, iOS, and Android clients. This app is ready for deployment as part of your existing Microsoft 365 subscription.|[Quiz](https://github.com/OfficeDev/microsoft-teams-apps-quiz) |
-| Rapid Assist|Rapid Assist is a Microsoft [Power Platform](https://powerapps.microsoft.com/blog/) based app that allows customer facing associates to rapidly connect with the experts to get quick answers, search for information, follow up open requests, and allow experts to receive notifications to quickly get on a call to help answer questions. The app built using Microsoft [Power Apps](/powerapps/powerapps-overview) and [Power Automate](/power-automate/getting-started), deeply integrates with Microsoft Teams to enable organizations to easily connect frontline workers with corporate liaisons to resolve customer queries and deliver a great customer experience. |[Rapid Assist](https://github.com/OfficeDev/microsoft-teams-apps-rapid-assist) |
-| Reflect|Reflect is a custom Microsoft Teams [message extension](../messaging-extensions/what-are-messaging-extensions.md) app that provides a safe and inclusive resource for your team members to share the state of their emotional well-being with colleagues or group leaders directly within Teams. The app is available in channel, group, meeting, and 1:1 chats and the check-in response is set to public, private-to-sender, or fully anonymous. |[Reflect](https://github.com/OfficeDev/Microsoft-Teams-App-Reflect) |
+| Rapid Assist|Rapid Assist is a Microsoft [Power Platform](https://powerapps.microsoft.com/blog/) based app that allows customer facing associates to rapidly connect with the experts to get quick answers, search for information, follow up open requests, and allow experts to receive notifications to quickly get on a call to help answer questions. The app built using Microsoft [Power Apps](/powerapps/powerapps-overview) and [Power Automate](/power-automate/getting-started), deeply integrates with Teams to enable organizations to easily connect frontline workers with corporate liaisons to resolve customer queries and deliver a great customer experience. |[Rapid Assist](https://github.com/OfficeDev/microsoft-teams-apps-rapid-assist) |
+| Reflect|Reflect is a custom Teams [message extension](../messaging-extensions/what-are-messaging-extensions.md) app that provides a safe and inclusive resource for your team members to share the state of their emotional well-being with colleagues or group leaders directly within Teams. The app is available in channel, group, meeting, and 1:1 chats and the check-in response is set to public, private-to-sender, or fully anonymous. |[Reflect](https://github.com/OfficeDev/Microsoft-Teams-App-Reflect) |
|Remote Support | Remote Support is a [Microsoft Teams bot](../bots/what-are-bots.md) that provides a focused interface between support requesters throughout your organization and the internal support team. End-users can submit, edit, or withdraw requests for support and the support team can respond, manage, and update requests all within the Teams platform.|[Remote Support](https://github.com/OfficeDev/microsoft-teams-apps-remotesupport) |
-| Request-a-team|Request-a-team is a Microsoft Teams app that optimizes new team creation for your enterprise organization. The app supports standardization and best practices when creating new team instances through the integration of a wizard-guided request form, an embedded approval process, a request status dashboard, and automated team builds.|[Request-a-team](https://github.com/OfficeDev/microsoft-teams-apps-requestateam) |
-|Scrums for Channels |Scrums for Channels is a scrum assistant app that enables users to schedule and run scrums in channels within Microsoft Teams. The app is great for remote teams and teams comprised of members from varied geographical locations and time zones to share daily updates and ensure participation in scrum stand-up meetings.|[Scrums for Channels](https://github.com/OfficeDev/microsoft-teams-apps-scrumsforchannels) |
+| Request-a-team|Request-a-team is a Teams app that optimizes new team creation for your enterprise organization. The app supports standardization and best practices when creating new team instances through the integration of a wizard-guided request form, an embedded approval process, a request status dashboard, and automated team builds.|[Request-a-team](https://github.com/OfficeDev/microsoft-teams-apps-requestateam) |
+|Scrums for Channels |Scrums for Channels is a scrum assistant app that enables users to schedule and run scrums in channels within Teams. The app is great for remote teams and teams comprised of members from varied geographical locations and time zones to share daily updates and ensure participation in scrum stand-up meetings.|[Scrums for Channels](https://github.com/OfficeDev/microsoft-teams-apps-scrumsforchannels) |
| Scrums for Group Chat| The Scrums Status app template is updated and called as Scrums for Group Chat. Scrums for Group Chat is a supportive scrum assistant that enables group chat members to run asynchronous stand-up meetings and easily share their daily updates. It allows all members of the group chat to contribute to the scrum and view the updates made by others in the running scrum. |[Scrums for Group Chat](https://github.com/OfficeDev/microsoft-teams-apps-scrumsforgroupchat) | |Share Now |The Share Now app promotes the positive exchange of information between colleagues by enabling your users to easily share content within the Teams environment. Users engage the app to share items of interest with team members, discover new shared content, set preferences, and bookmark favorites for later reading. |[Share Now](https://github.com/OfficeDev/microsoft-teams-apps-sharenow) |
-|SharePoint List Search |Collaboration in Microsoft Teams often references information contained within items in a SharePoint list. Paste a link to the item in question forces everyone to switch context away from the conversation, find the needed information, then return to Teams to continue the conversation. As the conversation continues people have to switch back to the reference item multiple times to verify new comments and refresh their memories of the information contained within the item. This context switching creates a barrier to smooth collaboration. To resolve this problem, the List Search app template is used. Many users use SharePoint to power some of the core workflows in their organizations. However, collaborating around lists is difficult. Using the List Search app template in Microsoft Teams, users can insert information from SharePoint list items directly within a chat conversation to alleviate the context-switching caused when simply inserting a link into a chat. The information is inserted as an easy-to-read auto-formatted card, helping the users stay engaged in the conversation. |[SharePoint List Search](https://github.com/OfficeDev/microsoft-teams-list-search-app) |
+|SharePoint List Search |Collaboration in Teams often references information contained within items in a SharePoint list. Paste a link to the item in question forces everyone to switch context away from the conversation, find the needed information, then return to Teams to continue the conversation. As the conversation continues people have to switch back to the reference item multiple times to verify new comments and refresh their memories of the information contained within the item. This context switching creates a barrier to smooth collaboration. To resolve this problem, the List Search app template is used. Many users use SharePoint to power some of the core workflows in their organizations. However, collaborating around lists is difficult. Using the List Search app template in Teams, users can insert information from SharePoint list items directly within a chat conversation to alleviate the context-switching caused when simply inserting a link into a chat. The information is inserted as an easy-to-read auto-formatted card, helping the users stay engaged in the conversation. |[SharePoint List Search](https://github.com/OfficeDev/microsoft-teams-list-search-app) |
|Staff Check-ins | Staff Check-ins is a [Power Apps](/powerapps/powerapps-overview) based app that enables oversight communication between your business and field personnel. Staff can easily provide time-critical information and status updates on either a scheduled or ad-hoc basis directly from Teams. The app supports real-time location, photos, notes, reminder notifications, and automated workflows.|[Staff Check-ins](https://github.com/OfficeDev/microsoft-teams-apps-staffcheckins) |
-| Survey|Survey is a custom Microsoft Teams [message extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to create a survey in a chat or a channel to gather data and gain actionable insight. The app is supported across all Teams platform clients, such as desktop, browser, iOS, and Android and is ready for deployment as part of your Microsoft 365 subscription. |[Survey](https://github.com/OfficeDev/Microsoft-Teams-Survey-app) |
+| Survey|Survey is a custom Teams [message extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to create a survey in a chat or a channel to gather data and gain actionable insight. The app is supported across all Teams platform clients, such as desktop, browser, iOS, and Android and is ready for deployment as part of your Microsoft 365 subscription. |[Survey](https://github.com/OfficeDev/Microsoft-Teams-Survey-app) |
|Time Tally |A project can include multiple tasks, and various projects can be assigned to employees. Managers are required to understand the project progress through the time spent by the employees on these tasks. This can be a cumbersome activity, as the employees need to fill in the timesheets. Time Tally app enables employees to fill their timesheets quickly, using the mobile device, and managers don't have to follow up with employees on the timesheet entry. Managers get to view the project utilization based on resources, and they can approve or reject the entries. Reminder notifications are sent to ensure timesheet compliance. Also, historical data and utilizations are available for analytics. |[Time Tally](https://github.com/OfficeDev/microsoft-teams-apps-timetally) | | Training | Training is a custom [Teams message extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables users to publish a training within a chat or a channel for offline knowledge sharing and upskilling. The app is supported across multiple Teams platform clients, such as desktop, browser, iOS, and Android. This app is ready for deployment as part of your Microsoft 365 subscription.|[Training](https://github.com/OfficeDev/microsoft-teams-apps-training) |
-|Virtual Rounding | Hospital and emergency room providers make many **rounds** per day. These quick check-ins on patients are intended to provide a status check on how the patient is doing and ensure that the patientΓÇÖs concerns are addressed. While rounding is an essential practice to ensure patients are being monitored by multiple types of providers, they represent a huge drain on PPE, because for each visit, from each provider, a new mask, and new set of gloves are used. With this app templates, medical workers can easily conduct rounds virtually, through a Microsoft Teams meeting between the provider and the patient. The Virtual Rounding solution is also referenced in the Microsoft Health and Life Sciences [blog post](https://aka.ms/teamsvirtualrounding).|[Virtual Rounding](https://github.com/SmartterHealth/Virtual-Rounding) |
-|Visitor Management | The Visitor Management app enables your organization and employees to easily and efficiently manage the on-site visitor process, directly from Microsoft Teams. The app enables employees to create visitor requests, centrally track a request status through the visitor dashboard, and receive real-time notifications when a visitor arrives.|[Visitor Management](https://github.com/OfficeDev/microsoft-teams-app-visitormanagement) |
+|Virtual Rounding | Hospital and emergency room providers make many **rounds** per day. These quick check-ins on patients are intended to provide a status check on how the patient is doing and ensure that the patientΓÇÖs concerns are addressed. While rounding is an essential practice to ensure patients are being monitored by multiple types of providers, they represent a huge drain on PPE, because for each visit, from each provider, a new mask, and new set of gloves are used. With this app templates, medical workers can easily conduct rounds virtually, through a Teams meeting between the provider and the patient. The Virtual Rounding solution is also referenced in the Microsoft Health and Life Sciences [blog post](https://aka.ms/teamsvirtualrounding).|[Virtual Rounding](https://github.com/SmartterHealth/Virtual-Rounding) |
+|Visitor Management | The Visitor Management app enables your organization and employees to easily and efficiently manage the on-site visitor process, directly from Teams. The app enables employees to create visitor requests, centrally track a request status through the visitor dashboard, and receive real-time notifications when a visitor arrives.|[Visitor Management](https://github.com/OfficeDev/microsoft-teams-app-visitormanagement) |
|Water Cooler |Water Cooler is a custom Teams app that enables corporate teams to create, invite, and join casual conversations among teammates, such as those that take place by the Water Cooler or break room. Use this template for multiple scenarios, such as new non project related announcements, topics of interest, current events, or conversations about hobbies. The app provides an easy interface for anyone to find an existing conversation or start a new one. It's a foundation for building custom targeted communication capabilities, promoting interaction amongst coworkers who may otherwise not get a chance to socialize during breaks. Key features are: <br/> **Water Cooler Home Page**: You can browse existing rooms where team members are interacting in existing conversations with certain people or topics of interest. Active conversations on the **Home Page** show a room name, short description, call duration, and room image. <br/>**Join room**: Use the **Join room** feature to join an ongoing conversation immediately. Select **Join** from active conversations to join the room.<br/>**Room creation**: Use the **Room creation** feature to create a Teams call or chat for all attendees to interact. Create rooms easily by specifying the room name, short description, up to five colleagues as an initial group and selecting from the provided set of room images. <br/>**Find room**: Use the **Find room** feature to search keyword, which matches with the topic or short descriptions of ongoing conversations.<br/>**Attendee invitation**: Use the **Attendee invitation** feature to invite additional users after room creation. This is similar to Teams call.<br/>**App badge**: The **Water Cooler** icon on the left menu shows a badge with the number of active conversations visible from Teams while using any app. |[Water Cooler](https://github.com/microsoft/csapps-msteams-watercooler) | | Workplace Awards| Workplace Awards is a Teams app template that provides a positive framework to foster recognition and encourage the culture of employee appreciation in the modern workplace. The app enables you to setup and manage an employee rewards and recognition, called R&R program where employees can easily nominate and endorse colleagues and your R&R leader can view submitted nominations, grant awards, and announce recipients.|[Workplace Awards](https://github.com/OfficeDev/microsoft-teams-apps-workplaceawards) |
platform Integrate Web Apps Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/samples/integrate-web-apps-overview.md
ms.localizationpriority: high
# Integrate web apps You can provide an enriched user experience by integrating the features of an existing web application into Microsoft Teams platform. Ensure to follow [Teams design guidelines](~/concepts/design/understand-use-cases.md) to make your app native to Teams.
-This document gives an overview of prerequisites to integrate web applications with Teams, Power platform to create Power apps, Power Virtual Agents, Virtual Assistant, app templates, Shift connectors, Moodle LMS, creating a Share-to-Teams button for your website, adding a Microsoft Teams tab in SharePoint, creating deep links, and integrating device capabilities.
+This document gives an overview of prerequisites to integrate web applications with Teams, Power platform to create Power apps, Power Virtual Agents, Virtual Assistant, app templates, Shift connectors, Moodle LMS, creating a Share-to-Teams button for your website, adding a Teams tab in SharePoint, creating deep links, and integrating device capabilities.
## Prerequisites
Microsoft Power platform combines four robust Microsoft technologies, such as Po
### Power Apps
-With Power Apps, you can build business apps that connect to your business data and are tailored to your organization's needs. Power Apps enables a wide range of app scenarios to solve business challenges through canvas apps. After building the app, you can export it from the Power Apps maker portal and embed in Microsoft Teams.
+With Power Apps, you can build business apps that connect to your business data and are tailored to your organization's needs. Power Apps enables a wide range of app scenarios to solve business challenges through canvas apps. After building the app, you can export it from the Power Apps maker portal and embed in Teams.
### Power Virtual Agents
You can use app template to create custom made apps to suit your organizational
## Install Moodle LMS
-Moodle is a popular open-source Learning Management System (LMS). It's now integrated with Microsoft Teams. This integration helps educators and teachers to collaborate around Moodle courses, ask questions about grades and assignments, and stay updated with notifications directly within Teams.
+Moodle is a popular open-source Learning Management System (LMS). It's now integrated with Teams. This integration helps educators and teachers to collaborate around Moodle courses, ask questions about grades and assignments, and stay updated with notifications directly within Teams.
## Create a Share-to-Teams button for your website
Third-party websites can use the launcher script to embed Share to Teams buttons
## Add a Microsoft Teams tab in SharePoint
-You can get a rich integration experience between Microsoft Teams and SharePoint by adding a Microsoft Teams tab in SharePoint as an SPFx web part.
+You can get a rich integration experience between Teams and SharePoint by adding a Teams tab in SharePoint as an SPFx web part.
## Create deep link
You can create deep links to the entities in Teams. You can create links to info
## Integrate device capabilities
-Microsoft Teams platform is continuously enhancing developer capabilities aligning with built-in first-party experiences. The enhanced Teams platform allows partners to access and integrate the native device capabilities, such as camera, QR or barcode scanner, photo gallery, microphone, and location using dedicated APIs available in Microsoft Teams JavaScript client SDK.
+Teams platform is continuously enhancing developer capabilities aligning with built-in first-party experiences. The enhanced Teams platform allows partners to access and integrate the native device capabilities, such as camera, QR or barcode scanner, photo gallery, microphone, and location using dedicated APIs available in Microsoft Teams JavaScript client SDK.
## Integrate People Picker
You can integrate the Teams native people picker control that allows users to se
## Integrate Teams in your external app
-You can embed your own experiences into Microsoft Teams by building Teams apps. If you'd like to *reverse* this model and integrate Teams or other communication capabilities into your own external app experience, see [Azure Communication Services](/azure/communication-services/overview). Azure Communication Services are cloud-based services with REST APIs and client library SDKs to help you integrate communication into your own custom applications. You can embed generic or Teams-styled React Web components for calling and chat with the help of the [UI library](https://azure.github.io/communication-ui-library/).
+You can embed your own experiences into Teams by building Teams apps. If you'd like to *reverse* this model and integrate Teams or other communication capabilities into your own external app experience, see [Azure Communication Services](/azure/communication-services/overview). Azure Communication Services are cloud-based services with REST APIs and client library SDKs to help you integrate communication into your own custom applications. You can embed generic or Teams-styled React Web components for calling and chat with the help of the [UI library](https://azure.github.io/communication-ui-library/).
-Azure Communication Services applications can use public preview functionality to [interoperate with Teams](/azure/communication-services/concepts/teams-interop) and enable your custom application to join Teams meetings anonymously. For example, you can integrate video calling into a mobile banking application and allow end-users to virtually meet with bank employees using Microsoft Teams.
+Azure Communication Services applications can use public preview functionality to [interoperate with Teams](/azure/communication-services/concepts/teams-interop) and enable your custom application to join Teams meetings anonymously. For example, you can integrate video calling into a mobile banking application and allow end-users to virtually meet with bank employees using Teams.
You can also integrate Microsoft 365 identity to build external applications that embed video and PSTN calling on behalf of a Teams user. If you've used [Skype for Business SDKs](/skype-sdk/appsdk/skypeappsdk) in the past, these capabilities as part of Azure Communication Services are recommended as a replacement.
platform Virtual Assistant https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/samples/virtual-assistant.md
The snippet from a skill's manifest file is shown in the following section:
"id": "searchQuery", "context": [ "compose", "commandBox" ], "description": "Test command to run query",
- ....
+ ....}
+ ]
+ }
+ ]
+
``` The corresponding Virtual Assistant manifest file code snippet is shown in the following section:
The corresponding Virtual Assistant manifest file code snippet is shown in the f
"id": "searchQuery:<skill_id>", "context": [ "compose", "commandBox" ], "description": "Test command to run query",
- ....
+ ....}
+ ]
+ }
+ ]
+
``` Once the commands are invoked by a user, the Virtual Assistant can identify an associated skill by parsing the command ID, update the activity by removing the extra suffix `:<skill_id>` from the command ID, and forward it to the corresponding skill. The code for a skill doesn't need to handle the extra suffix. Thus, conflicts between command IDs across skills are avoided. With this approach, all the search and action commands of a skill within all contexts, such as **compose**, **commandBox**, and **message** are powered by a Virtual Assistant.
Some message extension activities do not include the command ID. For example, `c
## Example The following example shows how to convert the Book-a-room app template to a Virtual Assistant skill:
-Book-a-room is a Microsoft Teams that allows users quickly to find and reserve a meeting room for 30, 60, or 90 minutes starting from the current time. The default time is 30 minutes. The Book-a-room bot scopes to personal or 1:1 conversations.
+Book-a-room is a Teams that allows users quickly to find and reserve a meeting room for 30, 60, or 90 minutes starting from the current time. The default time is 30 minutes. The Book-a-room bot scopes to personal or 1:1 conversations.
The following image displays a Virtual Assistant with a **book a room** skill: ![Virtual Assistant with a "book a room" skill](../assets/images/bots/virtual-assistant/book-a-room-skill.png)
Followings are the delta changes introduced to convert it to a skill which is at
### Skill manifest
-A skill manifest is a JSON file that exposes a skill's messaging endpoint, ID, name, and other relevant metadata. This manifest is different than the manifest used for sideloading an app in Microsoft Teams. A Virtual Assistant requires a path to this file as an input to attach a skill. We have added the following manifest to the bot's wwwroot folder.
+A skill manifest is a JSON file that exposes a skill's messaging endpoint, ID, name, and other relevant metadata. This manifest is different than the manifest used for sideloading an app in Teams. A Virtual Assistant requires a path to this file as an input to attach a skill. We have added the following manifest to the bot's wwwroot folder.
```bash botskills connect --remoteManifest "<url to skill's manifest>" ..
platform Create Channel Group Tab https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/create-channel-group-tab.md
gulp ngrok-serve
### Upload your application to Teams
-1. Go to Microsoft Teams and select **Apps**&nbsp;:::image type="content" source="~/assets/images/tab-images/store.png" alt-text="Teams Store":::.
+1. Go to Teams and select **Apps**&nbsp;:::image type="content" source="~/assets/images/tab-images/store.png" alt-text="Teams Store":::.
1. Select **Manage your apps** and **Upload a custom app**. 1. Go to your project directory, browse to the **./package** folder, select the app package zip folder, and choose **Open**.
Following are the steps to create a channel or group tab:
1. In Visual Studio, select **F5** or choose **Start Debugging** from your application's **Debug** menu to verify if the application has loaded properly. In a browser, go to the following URLs:
- * https://localhost:3978/
- * https://localhost:3978/privacy
- * https://localhost:3978/tou
+ * <https://localhost:3978/>
+ * <https://localhost:3978/privacy>
+ * <https://localhost:3978/tou>
<details> <summary><b>Review the source code</b></summary>
This folder contains the following required app package files:
* A **transparent outline icon** measuring 32 x 32 pixels. * A `manifest.json` file that specifies the attributes of your app.
-These files need to be zipped in an app package for use in uploading your tab to Teams. When a user chooses to add or update your tab, Microsoft Teams loads the `configurationUrl` specified in your manifest, embeds it in an IFrame, and renders it in your tab.
+These files need to be zipped in an app package for use in uploading your tab to Teams. When a user chooses to add or update your tab, Teams loads the `configurationUrl` specified in your manifest, embeds it in an IFrame, and renders it in your tab.
#### .csproj
Ensure that you keep the command prompt with ngrok running and make a note of th
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.4.1.min.js"></script> <script src="https://statics.teams.cdn.office.net/sdk/v1.6.0/js/MicrosoftTeams.min.js"></script> ```
-
+ > [!IMPORTANT] > Do not copy and paste the `<script src="...">` URLs from this page, as they do not represent the latest version. To get the latest version of the SDK, always go to [Microsoft Teams JavaScript API](https://www.npmjs.com/package/@microsoft/teams-js).
-
+ 1. Insert a call to `microsoftTeams.initialize();` in the `script` tag. 1. In Visual Studio Solution Explorer go to the **Pages** folder and open **Tab.cshtml**
Ensure that you keep the command prompt with ngrok running and make a note of th
### Update your app package with Developer Portal
-1. Go to Microsoft Teams. If you use the [web-based version](https://teams.microsoft.com), you can inspect your front-end code using your browser's [developer tools](~/tabs/how-to/developer-tools.md).
+1. Go to Teams. If you use the [web-based version](https://teams.microsoft.com), you can inspect your front-end code using your browser's [developer tools](~/tabs/how-to/developer-tools.md).
1. Go to [**Developer portal**](https://dev.teams.microsoft.com/home).
Ensure that you keep the command prompt with ngrok running and make a note of th
1. Select **Add to team** to Set up the tab in a team. Configure your tab and select **Save**. Your tab is now available in Teams. :::image type="content" source="~/assets/images/tab-images/channeltabaspnetuploaded.png" alt-text="Channel tab ASPNET uploaded" border="true":::
-
+ Now you have succesfully created and added your channel or group tab in Teams. ::: zone-end
Following are the steps to create a channel or group tab:
1. In Visual Studio, select **F5** or choose **Start Debugging** from your application's **Debug** menu to verify if the application has loaded properly. In a browser, go to the following URLs:
- * https://localhost:3978/
- * https://localhost:3978/privacy
- * https://localhost:3978/tou
+ * <https://localhost:3978/>
+ * <https://localhost:3978/privacy>
+ * <https://localhost:3978/tou>
<details> <summary><b>Review the source code</b></summary>
Ensure that you keep the command prompt with ngrok running and make a note of th
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.4.1.min.js"></script> <script src="https://statics.teams.cdn.office.net/sdk/v1.6.0/js/MicrosoftTeams.min.js"></script> ```
-
+ > [!IMPORTANT] > Do not copy and paste the `<script src="...">` URLs from this page, as they do not represent the latest version. To get the latest version of the SDK, always go to [Microsoft Teams JavaScript API](https://www.npmjs.com/package/@microsoft/teams-js).
-
+ 1. Insert a call to `microsoftTeams.initialize();` in the `script` tag. 1. In Visual Studio Solution Explorer go to the **Tab** folder and open **Tab.cshtml**
- Within **Tab.cshtml** the application presents the user with two option buttons for displaying the tab with either a red or gray icon. Choosing the **Select Gray** or **Select Red** button triggers `saveGray()` or `saveRed()`, respectively, sets `settings.setValidityState(true)`, and enables the **Save** button on the configuration page. This code lets Teams know that you have completed the configuration requirements and the installation can proceed. The parameters of `settings.setSettings` are set. Finally, `saveEvent.notifySuccess()` is called to indicate that the content URL has been successfully resolved.
+ Within **Tab.cshtml** the application presents the user with two option buttons for displaying the tab with either a red or gray icon. Choosing the **Select Gray** or **Select Red** button triggers `saveGray()` or `saveRed()`, respectively, sets `settings.setValidityState(true)`, and enables the **Save** button on the configuration page. This code lets Teams know that you have completed the configuration requirements and the installation can proceed. The parameters of `settings.setSettings` are set. Finally, `saveEvent.notifySuccess()` is called to indicate that the content URL has been successfully resolved.
1. Update the `websiteUrl` and `contentUrl` values in each function with the HTTPS ngrok URL to your tab.
Ensure that you keep the command prompt with ngrok running and make a note of th
### Update your app package with Developer Portal
-1. Go to Microsoft Teams. If you use the [web-based version](https://teams.microsoft.com), you can inspect your front-end code using your browser's [developer tools](~/tabs/how-to/developer-tools.md).
+1. Go to Teams. If you use the [web-based version](https://teams.microsoft.com), you can inspect your front-end code using your browser's [developer tools](~/tabs/how-to/developer-tools.md).
1. Go to [**Developer portal**](https://dev.teams.microsoft.com/home).
Ensure that you keep the command prompt with ngrok running and make a note of th
1. Select **Add to team** to Set up the tab in a team. Configure your tab and select **Save**. Your tab is now available in Teams. :::image type="content" source="~/assets/images/tab-images/channeltabaspnetuploaded.png" alt-text="Channel tab ASPNET MVC uploaded" border="true":::
-
+ Now you have succesfully created and added your channel or group tab in Teams. ::: zone-end
Ensure that you keep the command prompt with ngrok running and make a note of th
* [Create a personal tab](~/tabs/how-to/create-personal-tab.md) * [Tabs on mobile](~/tabs/design/tabs-mobile.md) * [Build tabs with Adaptive Cards](~/tabs/how-to/build-adaptive-card-tabs.md)
-* [Create a removal page](~/tabs/how-to/create-tab-pages/removal-page.md)
+* [Create a removal page](~/tabs/how-to/create-tab-pages/removal-page.md)
platform Create Personal Tab https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/create-personal-tab.md
gulp ngrok-serve
### Upload your application to Teams
-1. Go to Microsoft Teams and select **Apps**&nbsp;:::image type="content" source="~/assets/images/tab-images/store.png" alt-text="Teams Store":::.
+1. Go to Teams and select **Apps**&nbsp;:::image type="content" source="~/assets/images/tab-images/store.png" alt-text="Teams Store":::.
1. Select **Manage your apps** and **Upload a custom app**. 1. Go to your project directory, browse to the **./package** folder, select the zip folder, and choose **Open**.
This folder contains the following required app package files:
* A transparent outline icon measuring 32 x 32 pixels. * A `manifest.json` file that specifies the attributes of your app.
-These files must be zipped in an app package for use in uploading your tab to Teams. Microsoft Teams loads the `contentUrl` specified in your manifest, embeds it in an <iframe\>, and renders it in your tab.
+These files must be zipped in an app package for use in uploading your tab to Teams. Teams loads the `contentUrl` specified in your manifest, embeds it in an <iframe\>, and renders it in your tab.
#### .csproj
This folder contains the following required app package files:
* A **transparent outline icon** measuring 32 x 32 pixels. * A `manifest.json` file that specifies the attributes of your app.
-These files must be zipped in an app package for use in uploading your tab to Teams. Microsoft Teams loads the `contentUrl` specified in your manifest, embeds it in an IFrame, and renders it in your tab.
+These files must be zipped in an app package for use in uploading your tab to Teams. Teams loads the `contentUrl` specified in your manifest, embeds it in an IFrame, and renders it in your tab.
#### .csproj
platform Tabs In Sharepoint https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/tabs-in-sharepoint.md
With SharePoint Framework v.1.7, you can host your Teams tabs in SharePoint. As
### SharePoint Framework in Teams
-You can also implement your Microsoft Teams tabs using SharePoint Framework. SharePoint Framework web parts are hosted within SharePoint without any need for external services, such as Azure. For SharePoint developers, this significantly simplifies the development process for Teams tabs. For more information on SharePoint Framework in Teams, see [how to use the SharePoint Framework in Teams.](/sharepoint/dev/spfx/web-parts/get-started/using-web-part-as-ms-teams-tab)
+You can also implement your Teams tabs using SharePoint Framework. SharePoint Framework web parts are hosted within SharePoint without any need for external services, such as Azure. For SharePoint developers, this significantly simplifies the development process for Teams tabs. For more information on SharePoint Framework in Teams, see [how to use the SharePoint Framework in Teams.](/sharepoint/dev/spfx/web-parts/get-started/using-web-part-as-ms-teams-tab)
## Introduction
platform Using Teams Client Sdk https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/using-teams-client-sdk.md
The name of the host your app is running in is exposed as a *hostName* property
* **Don't** assume certain functionality is or isn't available in a host based on the *hostName* property value. Instead, check for capability support (`isSupported`). * **Don't** use *hostName* to gate API calls. Instead, check for capability support (`isSupported`). * **Do** use *hostName* to differentiate the theme of your application based on the host it's running in. For example, you can use Microsoft Teams purple as the main accent color when running in Teams, and Outlook blue when running in Outlook.
-* **Do** use *hostName* to differentiate messages shown to the user based on which host it's running in. For example, show *Manage your tasks in Office* when running in Office on the web, and *Manage your tasks in Teams* when running in Microsoft Teams.
+* **Do** use *hostName* to differentiate messages shown to the user based on which host it's running in. For example, show *Manage your tasks in Office* when running in Office on the web, and *Manage your tasks in Teams* when running in Teams.
#### Namespaces
Starting with TeamsJS v.2.0, APIs are organized into *capabilities* by way of na
##### *app* namespace
-The `app` namespace contains top-level APIs required for overall app usage, across Microsoft Teams, Office, and Outlook. All the APIs from various other TeamsJS namespaces have been moved to the `app` namespace as of TeamsJS v.2.0:
+The `app` namespace contains top-level APIs required for overall app usage, across Teams, Office, and Outlook. All the APIs from various other TeamsJS namespaces have been moved to the `app` namespace as of TeamsJS v.2.0:
| Original namespace `global (window)` | New namespace `app` | | - | - |
platform Cards Actions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/cards-actions.md
The following code shows an example of Adaptive Cards with `invoke` action with
} ```
+## Code samples
+
+|S.no|Card| description|.NET|Javascript|Python|Java|
+|:--|:--|:--|--||--|-|
+|1|Using cards|Introduces all card types including thumbnail, audio, media etc. Builds on Welcoming user + multi-prompt bot by presenting a card with buttons in welcome message that route to appropriate dialog.|[.Net Core](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/csharp_dotnetcore/06.using-cards)|[JavaScript](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/javascript_nodejs/06.using-cards)|[Python](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/python/06.using-cards)|[Java](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/java_springboot/06.using-cards)|
+|2|Adaptive cards|Demonstrates how the multi-turn dialog can use a card to get user input for name and age.|[.NET Core](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/csharp_dotnetcore/07.using-adaptive-cards)|[JavaScript](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/javascript_nodejs/07.using-adaptive-cards)|[Python](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/python/07.using-adaptive-cards)|[Java](https://github.com/microsoft/BotBuilder-Samples/blob/main/samples/java_springboot/07.using-adaptive-cards)|
+
+> [!NOTE]
+> Media elements are not supported for adaptive card in Teams
+ ## Next step > [!div class="nextstepaction"]
platform Teamsfx SDK https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/TeamsFx-SDK.md
TeamsFx SDK provides several functions to ease the configuration for third-party
Required configuration:
-* `sqlServerEndpoint`, `sqlUsername`, `sqlPassword` if you want to use user identity
-* `sqlServerEndpoint`, `sqlIdentityId` if you want to use MSI identity
+* `sqlServerEndpoint`, `sqlUsername`, `sqlPassword` if you want to use user identity.
+* `sqlServerEndpoint`, `sqlIdentityId` if you want to use MSI identity.
### Error handling
platform Teamsfx Collaboration https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/TeamsFx-collaboration.md
Multiple developers can work together to debug, provision and deploy for the sam
## Prerequisites
-* Microsoft 365 subscription
-* Azure with valid subscription
+* Microsoft 365 subscription.
+* Azure with valid subscription.
For more information on different accounts, see [prepare accounts to build Teams app](accounts.md).
platform Teamsfx Multi Env https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/TeamsFx-multi-env.md
You can select the target environment for all environment-related operations. Th
After creating the project, you can view the project folders and files under **Explorer** in VS Code. Besides the custom codes, Teams Toolkit uses some files to maintain the config, state, and template of the app. The following list provides files and outlines their relationship with multiple environments.
-* `.fx/configs`: Configure files that user can customize for the Teams app
- * `config.<envName>.json`: Configuration file per-environment
- * `azure.parameters.<envName>.json`: Parameters file for Azure bicep provision per-environment
- * `projectSettings.json`: Global project settings that apply to all environments
-* `.fx/states`: Provision result that is generated by the Toolkit
- * `state.<envName>.json`: Provision output file per-environment
- * `<env>.userdata`: User data for the provision output per-environment
+* `.fx/configs`: Configure files that user can customize for the Teams app.
+ * `config.<envName>.json`: Configuration file per-environment.
+ * `azure.parameters.<envName>.json`: Parameters file for Azure bicep provision per-environment.
+ * `projectSettings.json`: Global project settings that apply to all environments.
+* `.fx/states`: Provision result that is generated by the Toolkit.
+ * `state.<envName>.json`: Provision output file per-environment.
+ * `<env>.userdata`: User data for the provision output per-environment.
* `templates`
- * `appPackage`: App manifest template files
- * `azure`: Bicep template files
+ * `appPackage`: App manifest template files.
+ * `azure`: Bicep template files.
## Customize resource provision
Follow the steps for customization:
You can set different Teams app description for the different environments:
-* For the default environment `dev`, the description is `my app description for dev`
-* For the staging environment `staging`, the description is `my app description for staging`
+* For the default environment `dev`, the description is `my app description for dev`.
+* For the staging environment `staging`, the description is `my app description for staging`.
Follow the steps for customization:
platform Add Resource https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/add-resource.md
TeamsFx helps to provision the cloud resources for your application hosting. You
The following list provides advantages to add more cloud resources in TeamsFx:
-* Provides convenience
-* Autogenerates all configuration files and connect to Teams app by using Teams Toolkit
+* Provides convenience.
+* Autogenerates all configuration files and connect to Teams app by using Teams Toolkit.
## Limitation
If you have created SPFx based tab project, you can't add Azure cloud resources.
**You can add cloud resources by the following methods:**
-* To add cloud resources by using Teams Toolkit in Visual Studio Code
-* To add cloud resources by using command palette
+* To add cloud resources by using Teams Toolkit in Visual Studio Code.
+* To add cloud resources by using command palette.
> [!NOTE] > You need to provision for each environment, after you have successfully added the resource in your Teams app.
If you have created SPFx based tab project, you can't add Azure cloud resources.
In the following scenarios, TeamsFx integrates with Azure -- [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](deploy.md): An API gateway 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.
+* [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](deploy.md): An API gateway 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 The following changes appear after adding resources in your project: -- New parameters added to azure.parameter.{env}.json to provide required information for provision.-- New content is included to ARM template under `templates/azure`, except the files are in `templates/azure/teamsfx` folder for added the 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 available resources in your project.
+* New parameters added to azure.parameter.{env}.json to provide required information for provision.
+* New content is included to ARM template under `templates/azure`, except the files are in `templates/azure/teamsfx` folder for added the 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 available resources in your project.
The following additional changes appear after adding resources in your project:
The following additional changes appear after adding resources in your project:
* [Provision cloud resources](provision.md) * [Create a new Teams app](create-new-project.md) * [Add capabilities to Teams apps](add-capability.md)
-* [Deploy to the cloud](deploy.md)
+* [Deploy to the cloud](deploy.md)
platform Publish https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/publish.md
Perform the following steps to upload app package:
1. In the Teams client, select **Apps** in left bar. 2. Select **Manage your apps**.
-3. Select **publish an app**
+3. Select **publish an app**.
:::image type="content" source="../assets/images/teams-toolkit-v2/teams toolkit fundamentals/pub.png" alt-text="publish":::
platform Teams Toolkit Fundamentals https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/teams-toolkit-fundamentals.md
Teams Toolkit lets you create, debug, and deploy your Teams app right from Visua
* Integrated identity * Access to cloud storage * Data from Microsoft Graph
-* Azure and Microsoft 365 services with zero-configuration approach
+* Azure and Microsoft 365 services with zero-configuration approach.
Teams Toolkit brings all tools needed for building a Teams app in one place.
It helps you to start with Teams app development by creating new Teams project u
### Add Features
-It helps you to incrementally add additional Teams capabilities such as **Tab** or **Bot** or optionally add Azure resources such as **Azure SQL Database** or **Azure Key Vault**, which fits your development needs to your current Teams app. You can also add **Single Sign-on** or **CI/CD workflows** for your Teams app.
+It helps you to incrementally add additional Teams capabilities such as **Tab** or **Bot** or optionally add Azure resources such as **Azure SQL Database** or **Azure Key Vault**, which fits your development needs to your current Teams app. You can also add **Single Sign-on** or **CI/CD workflows** for your Teams app.
### Edit manifest file
platform Add Incoming Webhook https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/webhooks-and-connectors/how-to/add-incoming-webhook.md
An Incoming Webhook lets external applications to share content in Microsoft Tea
* Message extensions * Connectors
+See the following video to learn how to create an Incoming Webhooks:
+<br>
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4ODcY]
+ ## Key features of an Incoming Webhook The following table provides the features and description of an Incoming Webhook:
platform Add Outgoing Webhook https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/webhooks-and-connectors/how-to/add-outgoing-webhook.md
The Outgoing Webhook acts as a bot and search for messages in channels using **@
* Table with just a row is not really needed. Provide the content without tabulating it. >
+See the following video to learn how to create an Outgoing Webhooks:
+<br>
+
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4OIzu]
+<br>
+ ## Key features of Outgoing Webhook The following table provides the features and description of Outgoing Webhooks:
Your code must always validate the HMAC signature included in the request as fol
**Create a method to send a success or failure response**
-Responses from your Outgoing Webhooks appear in the same reply chain as the original message. When the user performs a query, Microsoft Teams issues a synchronous HTTP request to your service and your code gets five seconds to respond to the message before the connection times out and terminates.
+Responses from your Outgoing Webhooks appear in the same reply chain as the original message. When the user performs a query, Teams issues a synchronous HTTP request to your service and your code gets five seconds to respond to the message before the connection times out and terminates.
### Example response
var responseMsg = JSON.stringify({
|**Sample name** | **Description** | **.NET** | **Node.js** | |-||--|-|
-| Outgoing Webhooks | Samples to create custom bots to be used in Microsoft Teams.| [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/outgoing-webhook/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/outgoing-webhook/nodejs)|
+| Outgoing Webhooks | Samples to create custom bots to be used in Teams.| [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/outgoing-webhook/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/outgoing-webhook/nodejs)|
## Step-by-step guide
platform Connectors Creating https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/webhooks-and-connectors/how-to/connectors-creating.md
Last updated 06/16/2021
With Microsoft Teams apps, you can add your existing Office 365 Connector or build a new one within Teams. For more information, see [build your own connector](/outlook/actionable-messages/connectors-dev-dashboard#build-your-own-connector).
+See the following video to learn how to create an Office 365 Connectors:
+<br>
+
+> [!VIDEO https://www.microsoft.com/en-us/videoplayer/embed/RE4OIzv]
+<br>
++ ## Add a connector to Teams app You can create a [package](~/concepts/build-and-test/apps-package.md) and [publish](~/concepts/deploy-and-publish/apps-publish.md) your connector as part of your AppSource submission. You can distribute your registered connector as part of your Teams app package. For information on entry points for Teams app, see [capabilities](~/concepts/extensibility-points.md). You can also provide the package to users directly for uploading within Teams. To distribute your connector, register it in the [Connectors Developer Dashboard](https://aka.ms/connectorsdashboard).
-For a connector to work only in Microsoft Teams, follow the instructions to submit connector in [publish your app to the Microsoft Teams store](~/concepts/deploy-and-publish/appsource/publish.md) article. Otherwise, a registered connector works in all Office 365 products that support applications, including Outlook and Teams.
+For a connector to work only in Teams, follow the instructions to submit connector in [publish your app to the Microsoft Teams store](~/concepts/deploy-and-publish/appsource/publish.md) article. Otherwise, a registered connector works in all Office 365 products that support applications, including Outlook and Teams.
> [!IMPORTANT] > Your connector is registered after you select **Save** in the Connectors Developer Dashboard. If you want to publish your connector in AppSource, follow the instructions in [publish your Microsoft Teams app to AppSource](~/concepts/deploy-and-publish/apps-publish.md). If you do not want to publish your app in AppSource, distribute it directly to the organization. After publishing connectors for your organization, no further action is required on the Connector Dashboard.
Users can complete the entire connector configuration experience without having
> * The code can process the save event by retrieving the webhook settings. Your code stores the webhook to post events later. > * The configuration experience is loaded inline within Teams.
-You can reuse your existing web configuration experience or create a separate version to be hosted specifically in Teams. Your code must include the Microsoft Teams JavaScript SDK. This gives your code access to APIs to perform common operations, such as getting the current user, channel, or team context and initiate authentication flows.
+You can reuse your existing web configuration experience or create a separate version to be hosted specifically in Teams. Your code must include the Teams JavaScript SDK. This gives your code access to APIs to perform common operations, such as getting the current user, channel, or team context, and initiate authentication flows.
To integrate the configuration experience:
The following table provides the parameters and the details of `GetSetting` resp
| `configName` | The configuration name, as set by your code when calling `setSettings()`. | | `contentUrl` | The URL of the configuration page, as set by your code when calling `setSettings()`. | | `webhookUrl` | The webhook URL created for the connector. Use the webhook URL to POST structured JSON to send cards to the channel. The `webhookUrl` is returned only when the application returns data successfully. |
-| `appType` | The values returned can be `mail`, `groups`, or `teams` corresponding to the Office 365 Mail, Office 365 Groups, or Microsoft Teams respectively. |
+| `appType` | The values returned can be `mail`, `groups`, or `teams` corresponding to the Office 365 Mail, Office 365 Groups, or Teams respectively. |
| `userObjectId` | The unique ID corresponding to the Office 365 user who initiated the set up of the connector. It must be secured. This value can be used to associate the user in Office 365, who has set up the configuration in your service. | #### Handle edits
After you upload the app, open the connectors list from any channel. Scroll to t
![Screenshot of an uploaded section in connector dialog box](~/assets/images/connectors/connector_dialog_uploaded.png) > [!NOTE]
-> The flow occurs entirely within Microsoft Teams as a hosted experience.
+> The flow occurs entirely within Teams as a hosted experience.
To verify that `HttpPOST` action is working correctly, [send messages to your connector](~/webhooks-and-connectors/how-to/connectors-using.md).
-Follow the [step-by-step guide](../../sbs-teams-connectors.yml) to create and test the connectors in your Microsoft Teams.
+Follow the [step-by-step guide](../../sbs-teams-connectors.yml) to create and test the connectors in your Teams.
## Distribute webhook and connector
platform Connectors Using https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/webhooks-and-connectors/how-to/connectors-using.md
To post a message in the webhook with cURL, follow these steps:
> [!NOTE] > If the POST succeeds, you must see a simple **1** output by `curl`.
-1. Check the Microsoft Teams client for the new card posted.
+1. Check the Teams client for the new card posted.
# [PowerShell](#tab/PowerShell)
To post a message to the webhook with PowerShell, follow these steps:
> [!NOTE] > If the POST succeeds, you must see a simple **1** output by `Invoke-RestMethod`.
-1. Check the Microsoft Teams channel associated with the webhook URL. You can see the new card posted to the channel. Before you use the connector to test or publish your app, you must do the following:
+1. Check the Teams channel associated with the webhook URL. You can see the new card posted to the channel. Before you use the connector to test or publish your app, you must do the following:
* [Include two icons](../../concepts/build-and-test/apps-package.md#app-icons). * Modify the `icons` portion of the manifest to the file names of the icons instead of URLs.
platform What Are Webhooks And Connectors https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/webhooks-and-connectors/what-are-webhooks-and-connectors.md
# Webhooks and connectors
-Webhooks and connectors help to connect the web services to channels and teams in Microsoft Teams. Webhooks are user defined HTTP callback that notifies users about any action that has taken place in the Microsoft Teams channel. It is a way for an app to get real time data. Connectors allow users to subscribe to receive notifications and messages from your web services. They expose an HTTPS endpoint for your service to post messages in the form of cards.
+Webhooks and connectors help to connect the web services to channels and teams in Microsoft Teams. Webhooks are user defined HTTP callback that notifies users about any action that has taken place in the Teams channel. It is a way for an app to get real time data. Connectors allow users to subscribe to receive notifications and messages from your web services. They expose an HTTPS endpoint for your service to post messages in the form of cards.
## Outgoing Webhooks