Updates from: 02/22/2022 02:14:20
Service Microsoft Docs article Related commit history on GitHub Change details
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
People might use the in-meeting tab to:
### Anatomy: In-meeting tab |Counter|Description| |-|--|
In-meeting dialogs are triggered by a user (such as the meeting organizer) who m
### Anatomy: In-meeting dialog |Counter|Description| |-|--|
platform Meeting App Extensibility https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/meeting-app-extensibility.md
With the pre-meeting app experience, you can find and add meeting apps. You can
After adding the tabs to an existing meeting on mobile, you can see the same apps in pre-meeting experience under **More** section of the meeting details.
-<img src="../assets/images/apps-in-meetings/mobilepremeeting.png" alt="Mobile pre-meeting experience" width="200"/>
+<img src="../assets/images/apps-in-meetings/mobilePostMeeting.png" alt="Mobile pre-meeting experience" width="200"/>
The following image illustrates the in-meeting side panel:
# [Desktop](#tab/desktop)
-![In-meeting side panel](../assets/images/apps-in-meetings/in-meeting-dialog.png)
+![In-meeting side panel](../assets/images/in-meeting-dialog.png)
# [Mobile](#tab/mobile)
platform Teams Together Mode https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/teams-together-mode.md
ms.localizationpriority: high
Custom Together Mode scenes in Microsoft Teams provide an immersive and engaging meeting environment with the following actions:
-* Bring people together and encourage them to turn on their video.
-* Combine participants digitally into a single virtual scene.
+* Bring people together and encourage them to turn on their video.
+* Combine participants digitally into a single virtual scene.
* Place the participants' video streams in pre-determined seats designed and fixed by the scene creator. In custom Together Mode scenes, the scene is an artifact. The scene is created by the scene developer using the Microsoft Scene studio. In a conceived scene setting, participants have seats with video streams. The videos are rendered in those seats. Scene only apps are recommended as the experience for such apps is clear.
The following process gives an overview to create a scene only app:
A scene only app is still an app in Microsoft Teams. The Scene studio handles the app package creation in the background. Multiple scenes in a single app package appear as a flat list to the users. > [!NOTE]
-> Users can't initiate Together Mode from mobile. However, after a user joins a meeting through mobile and Together Mode is turned on from desktop, the mobile users who have turned on the video, will appear in Together Mode on desktop.
+> Users can't initiate Together Mode from mobile. However, after a user joins a meeting through mobile and Together Mode is turned on from desktop, the mobile users who have turned on the video, will appear in Together Mode on desktop.
## Prerequisites
Microsoft has a Scene studio that allows you to build scenes. It's available on
A scene in the context of the Scene studio is an artifact that contains the following elements:
-* Seats reserved for meeting organizer and meeting presenters. The presenter doesn't refer to the user who is actively sharing. It refers to the [meeting role](https://support.microsoft.com/en-us/office/roles-in-a-teams-meeting-c16fa7d0-1666-4dde-8686-0a0bfe16e019).
+* Seats reserved for meeting organizer and meeting presenters. The presenter doesn't refer to the user who is actively sharing. It refers to the [meeting role](https://support.microsoft.com/office/roles-in-a-teams-meeting-c16fa7d0-1666-4dde-8686-0a0bfe16e019).
* Seat and image for each participant with an adjustable width and height. Only PNG format is supported for the image.
The following image shows each seat represented as an avatar for building the sc
![Scene studio](../assets/images/apps-in-meetings/scene-design-studio.png)
-**To build a scene using the Scene studio**
+To build a scene using the Scene studio, follow these steps:
1. Go to [Scenes Editor - Teams Developer Portal](https://dev.teams.microsoft.com/scenes).
The following image shows each seat represented as an avatar for building the sc
![Add images into environment](../assets/images/apps-in-meetings/addimages.png) >[!NOTE]
- > * You can download the [SampleScene.zip](https://github.com/MicrosoftDocs/msteams-docs/tree/master/msteams-platform/apps-in-teams-meetings/SampleScene.zip) and [SampleApp.zip](https://github.com/MicrosoftDocs/msteams-docs/tree/master/msteams-platform/apps-in-teams-meetings/SampleApp.zip) files with the images.
+ >You can download the [SampleScene.zip](https://github.com/MicrosoftDocs/msteams-docs/tree/master/msteams-platform/apps-in-teams-meetings/SampleScene.zip) and [SampleApp.zip](https://github.com/MicrosoftDocs/msteams-docs/tree/master/msteams-platform/apps-in-teams-meetings/SampleApp.zip) files with the images.
1. Select the image that you've added.
Now that you've gone through the sample scene.json, you can activate the custom
Get more information of how a user engages with scenes in custom Together Mode scenes.
-**To select scenes and activate custom Together Mode scenes**
+To select scenes and activate custom Together Mode scenes, follow these steps:
1. Create a new test meeting.
You can share the Scene Package that is a .zip file retrieved from the Scene stu
## See also * [Apps for Teams meetings](teams-apps-in-meetings.md)
-* [Calls and meetings bots ](~/bots/calls-and-meetings/calls-meetings-bots-overview.md)
+* [Calls and meetings bots](~/bots/calls-and-meetings/calls-meetings-bots-overview.md)
* [Real-time media calls and meetings with Microsoft Teams](~/bots/calls-and-meetings/real-time-media-concepts.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
* Notifications * Scheduled messages
-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.
+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 required, 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. Sending a proactive message is different from sending a regular message. There's no active `turnContext` to use for a reply. You must create the conversation before sending the message. For example, a new one-to-one chat or a new conversation thread in a channel. You can't create a new group chat or a new channel in a team with proactive messaging.
-**To send a proactive message**
+To send a proactive message, follow these steps:
1. [Get the user ID, team ID, or channel ID](#get-the-user-id-team-id-or-channel-id), if required. 1. [Create the conversation](#create-the-conversation), if required.
platform Apps Package https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/apps-package.md
When a user installs your app in Teams, they install an app package that contain
## App manifest
-Your app manifest file must be at the top level of the package with the name `manifest.json`.
+Your app manifest file must be at the top level of the package with the name `manifest.json`.
When publishing to the Teams store, make sure your manifest references to the latest [schema](~/resources/schem). ## App icons
-Your app package must include two PNG versions of your app icon: A color and outline version.
+Your app package must include two .png versions of your app icon: A color and outline version.
> [!Note] > If your app has a bot or messaging extension, your icons also will be included in your Microsoft Azure Bot Service registration.
Choose how you plan to distribute your app:
## See also
-[Manage your apps with the Developer Portal for Microsoft Teams](~/concepts/build-and-test/teams-developer-portal.md)
+[Manage your apps with the Developer Portal for Microsoft Teams](~/concepts/build-and-test/teams-developer-portal.md)
platform Debug https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/debug.md
Your bot can run within the Bot Emulator. This enables you to test some of the c
Microsoft Teams is an entirely cloud-based product, it requires all services it accesses to be available publicly using HTTPS endpoints. Therefore, to enable your app to work within Teams, you need to either publish the code to the cloud of your choice or make our local running instance externally accessible. We can do the latter with tunneling software.
-Although you can use any tool of your choice, we use and recommend [ngrok](https://ngrok.com/download), which creates an externally addressable URL for a port you open locally on your machine.
+Although you can use any tool of your choice, we use and recommend [ngrok](https://ngrok.com/download), which creates an externally addressable URL for a port you open locally on your machine.
-**To set up ngrok in preparation for running your Microsoft Teams app locally**
+To set up ngrok in preparation to execute your Microsoft Teams app locally, follow these steps:
1. Go to the directory where you have ngrok.exe installed in a terminal application. You may want to add it as a path variable to avoid this step. 2. Run, for example, `ngrok http 3978 --host-header=localhost:3978`, or replace the port number as needed.
To load and run your experience within Microsoft Teams, you need to create a pac
## Next step
-> [!div class="nextstepaction"]
+> [!div class="nextstepaction"]
> [Add test data to your environment](~/concepts/build-and-test/test-data.md) ## See also
platform Deep Links https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/deep-links.md
ms.localizationpriority: high
keywords: teams deep link deeplink
-# Create deep links
+# Create deep links
You can create links to information and features within Teams. The scenarios where creating deep links are useful are as follows:
You can create links to information and features within Teams. The scenarios whe
## Deep linking to your tab
-You can create deep links to entities in Teams. This is used to create links that navigate to content and information within your tab. For example, if your tab contains a task list, team members can create and share links to individual tasks. When you select the link, it navigates to your tab which focuses on the specific item. To implement this, you add a **copy link** action to each item, in whatever way best suits your UI. When the user takes this action, you call `shareDeepLink()` to display a dialog box containing a link that the user can copy to the clipboard. When you make this call, you also pass an ID for your item, which you get back in the [context](~/tabs/how-to/access-teams-context.md) when the link is followed and your tab is reloaded.
+You can create deep links to entities in Teams. This is used to create links that navigate to content and information within your tab. For example, if your tab contains a task list, team members can create and share links to individual tasks. When you select the link, it navigates to your tab that focuses on the specific item. To implement this, you add a **copy link** action to each item, in whatever way best suits your UI. When the user takes this action, you call `shareDeepLink()` to display a dialog box containing a link that the user can copy to the clipboard. When you make this call, you also pass an ID for your item, which you get back in the [context](~/tabs/how-to/access-teams-context.md) when the link is followed and your tab is reloaded.
-Alternatively, you can also generate deep links programmatically, using the format specified later in this topic. You can use deep links in [bot](~/bots/what-are-bots.md) and [connector](~/webhooks-and-connectors/what-are-webhooks-and-connectors.md) messages that inform users about changes to your tab, or to items within it.
+Alternatively, you can also generate deep links programmatically, using the format specified later in this article. You can use deep links in [bot](~/bots/what-are-bots.md) and [connector](~/webhooks-and-connectors/what-are-webhooks-and-connectors.md) messages that inform users about changes to your tab, or to items within it.
> [!NOTE] > This deep link is different from the links provided by the **Copy link to tab** menu item, which just generates a deep link that points to this tab.
->[!NOTE]
+>[!IMPORTANT]
> Currently, shareDeepLink does not work on mobile platforms. ### Show a deep link to an item within your tab
To show a dialog box that contains a deep link to an item within your tab, call
Provide the following fields:
-* `subEntityId`: A unique identifier for the item within your tab to which you are deep linking.
+* `subEntityId`: A unique identifier for the item within your tab to which you're deep linking.
* `subEntityLabel`: A label for the item to use for displaying the deep link.
-* `subEntityWebUrl`: An optional field with a fallback URL to use if the client does not support rendering the tab.
+* `subEntityWebUrl`: An optional field with a fallback URL to use if the client doesn't support rendering the tab.
### Generate a deep link to your tab
Use the following format for a deep link that you can use in a bot, connector, o
> If the bot sends a message containing a `TextBlock` with a deep link, then a new browser tab is opened when the user selects the link. This happens in Chrome and in the Microsoft Teams desktop app, both running on Linux. > If the bot sends the same deep link URL into an `Action.OpenUrl`, then the Teams tab is opened in the current browser tab when the user selects the link. A new browser tab is not opened.
+<! TBD: Edit this article.
+* Admonitions/alerts seem to be overused.
+* An important alert at the end of this table does not make sense. Also, it has a code snippet inside it.
+* List items in the table are not formatted well in output.
+* Some headings use -ing verbs.
+* Example values and some URLs should be in backticks and not emphasized.
+* Codeblock are missing language.
+* Check for markdownlint errors.
+* Table with just a row is not really needed. Provide the content without tabulating it.
+>
+ The query parameters are: | Parameter name | Description | Example | |:|:--|:| | `appId`&emsp; | The ID from your manifest. |fe4a8eba-2a31-4737-8e33-e5fae6fee194| | `entityId`&emsp; | The ID for the item in the tab, which you provided when [configuring the tab](~/tabs/how-to/create-tab-pages/configuration-page.md).|Tasklist123|
-| `entityWebUrl` or `subEntityWebUrl`&emsp; | An optional field with a fallback URL to use if the client does not support rendering the tab. | `https://tasklist.example.com/123` or `https://tasklist.example.com/list123/task456` |
+| `entityWebUrl` or `subEntityWebUrl`&emsp; | An optional field with a fallback URL to use if the client doesn't support rendering the tab. | `https://tasklist.example.com/123` or `https://tasklist.example.com/list123/task456` |
| `entityLabel` or `subEntityLabel`&emsp; | A label for the item in your tab, to use when displaying the deep link. | Task List 123 or "Task 456 | | `context.subEntityId`&emsp; | An ID for the item within the tab. |Task456 | | `context.channelId`&emsp; | Microsoft Teams channel ID that is available from the tab [context](~/tabs/how-to/access-teams-context.md). This property is only available in configurable tabs with a scope of **team**. It is not available in static tabs, which have a scope of **personal**.| 19:cbe3683f25094106b826c9cada3afbe0@thread.skype |
The query parameters are:
* Link to a task item within the configurable tab: >`https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123/456&label=Task 456&context={"subEntityId": "task456","channelId": "19:cbe3683f25094106b826c9cada3afbe0@thread.skype"}`
-
-* Link to a tab app added to a meeting or group chat:
+
+* Link to a tab app added to a meeting or group chat:
>`https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123/456&label=Task 456?context={"chatId": "17:b42de192376346a7906a7dd5cb84b673@thread.v2","contextType":"chat"}`
The [`microsoftTeams.getContext`](/javascript/api/@microsoft/teams-js#getcontext
## Deep linking from your tab
-You can deeplink to content in Teams from your tab. This is useful if your tab needs to link to other content in Teams, such as to a channel, message, another tab or even to open a scheduling dialog. To trigger a deeplink from your tab you should call:
+You can deep link to content in Teams from your tab. This is useful if your tab needs to link to other content in Teams, such as to a channel, message, another tab or even to open a scheduling dialog. To trigger a deeplink from your tab, call:
```Javascript microsoftTeams.executeDeepLink(/*deepLink*/);
microsoftTeams.executeDeepLink("https://teams.microsoft.com/l/app/f46ad259-0fe5-
## Deep linking to a chat
-You can create deep links to private chats between users by specifying the set of participants. If a chat does not exist with the specified participants, the link navigates the user to an empty new chat. New chats are created in draft state until the user sends the first message. Otherwise, you can specify the name of the chat if it does not already exist, along with text that should be inserted into the user's compose box. You can think of this feature as a shortcut for the user taking the manual action of navigating to or creating the chat, and then typing out the message.
+You can create deep links to private chats between users by specifying the set of participants. If a chat doesnΓÇÖt exist with the specified participants, the link navigates the user to an empty new chat. New chats are created in draft state until the user sends the first message. Otherwise, you can specify the name of the chat if it doesnΓÇÖt already exist, along with text that should be inserted into the user's compose box. You can think of this feature as a shortcut for the user taking the manual action of navigating to or creating the chat, and then typing out the message.
-As an example use case, if you are returning an Office 365 user profile from your bot as a card, this deep link can allow the user to easily chat with that person.
+As an example use case, if youΓÇÖre returning an Office 365 user profile from your bot as a card, this deep link can allow the user to easily chat with that person.
### Generate a deep link to a chat
The following deep link format can be used in a bot, connector, or messaging ext
The query parameters are:
-* `fileId`: Unique file ID from Sharepoint Online, aka sourcedoc. For example 1FA202A5-3762-4F10-B550-C04F81F6ACBD
-* `tenantId`: Tenant ID example, 0d9b645f-597b-41f0-a2a3-ef103fbd91bb
-* `fileType`: Supported file type, such as docx, pptx, xlsx, and pdf
-* `objectUrl`: Object URL of the file. The format is `https://{tenantName}.sharepoint.com/sites/{TeamName}/SharedDocuments/{ChannelName}/FileName.ext`. For example, `https://microsoft.sharepoint.com/teams/(filepath)`
-* `baseUrl`: Base URL of the file. The format is `https://{tenantName}.sharepoint.com/sites/{TeamName}`. For example, `https://microsoft.sharepoint.com/teams`
-* `serviceName`: Name of the service, app ID. For example, teams.
-* `threadId`: The threadId is the team ID of the team where the file is stored. It is optional and cannot be set for files stored in a user's OneDrive folder. threadId - 19:f8fbfc4d89e24ef5b3b8692538cebeb7@thread.skype
-* `groupId`: Group ID of the file, ae063b79-5315-4ddb-ba70-27328ba6c31e
+* `fileId`: Unique file ID from Sharepoint Online, also known as `sourcedoc`. For example,`1FA202A5-3762-4F10-B550-C04F81F6ACBD`.
+* `tenantId`: Tenant ID such as `0d9b645f-597b-41f0-a2a3-ef103fbd91bb`.
+* `fileType`: Supported file type, such as .docx, .pptx, .xlsx, and .pdf.
+* `objectUrl`: Object URL of the file. The format is `https://{tenantName}.sharepoint.com/sites/{TeamName}/SharedDocuments/{ChannelName}/FileName.ext`. For example, `https://microsoft.sharepoint.com/teams/(filepath)`.
+* `baseUrl`: Base URL of the file. The format is `https://{tenantName}.sharepoint.com/sites/{TeamName}`. For example, `https://microsoft.sharepoint.com/teams`.
+* `serviceName`: Name of the service, app ID. For example, `teams`.
+* `threadId`: The threadId is the team ID of the team where the file is stored. It is optional and cannot be set for files stored in a user's OneDrive folder. threadId - 19:f8fbfc4d89e24ef5b3b8692538cebeb7@thread.skype.
+* `groupId`: Group ID of the file. For example `ae063b79-5315-4ddb-ba70-27328ba6c31e`.
> [!NOTE] > You can see `threadId` and `groupId` in the URL from the channel. The following deep link format is used in a bot, connector, or messaging extension card:+ `https://teams.microsoft.com/l/file/<fileId>?tenantId=<tenantId>&fileType=<fileType>&objectURL=<objectURL>&baseUrl=<baseURL>&serviceName=<Name>&threadId=<threadId>&groupId=<groupId>`
-The following example format shows the deeplink to files:
+The following example format illustrates the deeplink to files:
`https://teams.microsoft.com/l/file/5E0154FC-F2B4-4DA5-8CDA-F096E72C0A80?tenantId=0d9b645f-597b-41f0-a2a3-ef103fbd91bb&fileType=pptx&objectUrl=https%3A%2F%2Fmicrosoft.sharepoint.com%2Fteams%2FActionPlatform%2FShared%20Documents%2FFC7-%20Bot%20and%20Action%20Infra%2FKaizala%20Actions%20in%20Adaptive%20Cards%20-%20Deck.pptx&baseUrl=https%3A%2F%2Fmicrosoft.sharepoint.com%2Fteams%2FActionPlatform&serviceName=teams&threadId=19:f8fbfc4d89e24ef5b3b8692538cebeb7@thread.skype&groupId=ae063b79-5315-4ddb-ba70-27328ba6c31e`
-### Serialization of this object:
+### Serialization of this object
+ ``` { fileId: "5E0154FC-F2B4-4DA5-8CDA-F096E72C0A80",
groupId: "ae063b79-5315-4ddb-ba70-27328ba6c31e"
## Deep linking to an app
-Create deeplinks for the app after the app is listed in the Teams store. To create a link to launch Teams, append the app ID to the following URL: `https://teams.microsoft.com/l/app/<your-app-id>`. A dialog box appears to install the app.
+Create deeplinks for the app after the app is listed in the Teams store. To create a link to launch Teams, append the app ID to the following URL: `https://teams.microsoft.com/l/app/<your-app-id>`. A dialog box appears to install the app.
## Deep linking for SharePoint Framework tabs
The following deep link format can be used in a bot, connector or messaging exte
The query parameters are:
-* `appID`: Your manifest ID, for example **fe4a8eba-2a31-4737-8e33-e5fae6fee194**.
+* `appID`: Your manifest ID, for example `fe4a8eba-2a31-4737-8e33-e5fae6fee194`.
-* `entityID`: The item ID that you provided when [configuring the tab](~/tabs/how-to/create-tab-pages/configuration-page.md). For example, **tasklist123**.
+* `entityID`: The item ID that you provided when [configuring the tab](~/tabs/how-to/create-tab-pages/configuration-page.md). For example, `tasklist123`.
* `entityWebUrl`: An optional field with a fallback URL to use if the client does not support rendering of the tab - `https://tasklist.example.com/123` or `https://tasklist.example.com/list123/task456`. * `entityName`: A label for the item in your tab, to use when displaying the deep link, Task List 123 or Task 456.
-Example: https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123&TaskList
+Example: `https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123&TaskList`
## Deep linking to the scheduling dialog
To use this deep link with your bot, you can specify this as the URL target in y
## Deep linking to an audio or audio-video call
-You can create deep links to invoke audio only or audio-video calls to a single user or a group of users, by specifying the call type, as *audio* or *av*, and the participants. After the deep link is invoked and before placing the call, Teams desktop client prompts a confirmation to make the call. In case of group call, you can call a set of VoIP users and a set of PSTN users in the same deeplink invocation.
+You can create deep links to invoke audio only or audio-video calls to a single user or a group of users, by specifying the call type, as *audio* or *av*, and the participants. After the deep link is invoked and before placing the call, Teams desktop client prompts a confirmation to make the call. In case of group call, you can call a set of VoIP users and a set of PSTN users in the same deeplink invocation.
In case of a video call, the client will ask for confirmation and turn on the caller's video for the call. The receiver of the call has a choice to respond through audio only or audio and video, through the Teams call notification window.
In case of a video call, the client will ask for confirmation and turn on the ca
| Deep link | Format | Example | |--|--||
-| Make an audio call | https://teams.microsoft.com/l/call/0/0?users=&lt;user1&gt;,&lt;user2&gt; | https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com |
-| Make an audio and video call | https://teams.microsoft.com/l/call/0/0?users=&lt;user1&gt;,&lt;user2&gt;&withVideo=true | https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com&withVideo=true |
-|Make an audio and video call with an optional parameter source | https://teams.microsoft.com/l/call/0/0?users=&lt;user1&gt;,&lt;user2&gt;&withVideo=true&source=demoApp | https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com&withVideo=true&source=demoApp |
-| Make an audio and video call to a combination of VoIP and PSTN users | https://teams.microsoft.com/l/call/0/0?users=&lt;user1&gt;,4:&lt;phonenumber&gt; | https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com,4:9876543210 |
+| Make an audio call | `https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2>` | `https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com` |
+| Make an audio and video call | `https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2>&withVideo=true` | `https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com&withVideo=true` |
+|Make an audio and video call with an optional parameter source | `https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2>&withVideo=true&source=demoApp` | `https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com&withVideo=true&source=demoApp` |
+| Make an audio and video call to a combination of VoIP and PSTN users | `https://teams.microsoft.com/l/call/0/0?users=<user1>,4:<phonenumber>` | `https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com,4:9876543210` |
Following are the query parameters:+ * `users`: The comma-separated list of user IDs representing the participants of the call. Currently, the User ID field supports the Azure AD UserPrincipalName, typically an email address, or in case of a PSTN call, it supports a pstn mri 4:&lt;phonenumber&gt;.
-* `withVideo`: This is an optional parameter, which you can use to make a video call. Setting this parameter will only turn on the caller's camera. The receiver of the call has a choice to answer through audio or audio and video call through the Teams call notification window.
+* `withVideo`: This is an optional parameter, which you can use to make a video call. Setting this parameter will only turn on the caller's camera. The receiver of the call has a choice to answer through audio or audio and video call through the Teams call notification window.
* `Source`: This is an optional parameter, which informs about the source of the deeplink. ## Code sample
platform Apps Upload https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/apps-upload.md
Title: Upload your custom app description: Learn how to sideload your app in Microsoft Teams. Sideloading is common when testing and debugging an app during development. -+ ms.localizationpriority: high
platform Submission Checklist https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/prepare/submission-checklist.md
Screenshots provide a prominent visual preview of your app to complement your ap
Remember the following best practices about screenshots: * You can have up to five screenshots per listing.
-* Supported file types include PNG, JPEG, and GIF.
-* Dimensions should be 1366x768 pixels.
+* Supported file types include .png, .jpeg, and gif image formats.
+* Dimensions should be 1366 x 768 pixels.
* Maximum size of 1,024 KB. For best practices, see the following resources:
platform Teams Store Validation Guidelines https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md
The Teams app manifest defines your app's configuration.
Icons are one of the main elements people see when browsing the Teams store. Your icons must communicate your app's brand and purpose while adhering to the following requirements:
-* Your app package must include two PNG versions of your app icon: A color icon and an outline icon.
+* Your app package must include two .png versions of your app icon: A color icon and an outline icon.
* The color version of your icon must be 192x192 pixels. Your icon symbol can be any color or colors, but it must sit on a solid or fully transparent square background. * The outline version of your icon is displayed in the following scenarios: * When your app is in use and **hosted** on the app bar on the left side of Teams.
Use the following guidelines for meeting extensions:
* Must not use task modules. * Must align with the center of the meeting stage. :::column span=""::: :::column-end::: :::column span="3":::
Use the following guidelines for meeting extensions:
:::column-end::: :::column span=""::: :::column-end:::
-
* Must be dismissed after a user selects a button or performs an action.
-* **Together mode**: Ensure that you consider the following best practices for a scene building experience:
- * All images are in PNG format.
+* **Together mode**: Ensure that you consider the following best practices for a scene building experience:
+ * All images are in .png format.
* The final package with all the images put together must not exceed 1920x1080 resolution. The resolution is an even number. This resolution is a requirement for scenes to be shown successfully. * The maximum scene size is 10 MB. * The maximum size of each image is 5 MB. A scene is a collection of multiple images. The limit is for each individual image.
platform Design Teams App Ui Templates https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/design/design-teams-app-ui-templates.md
Forms are used to collect, validate, and submit user input in a structured way.
### Desktop ## List
platform Extend M365 Teams Message Extension https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/extend-m365-teams-message-extension.md
As a Teams admin, you can upload and pre-install the app package for your organi
As a global admin, you can upload and pre-install the app package from https://admin.microsoft.com/. See [Test and deploy Microsoft 365 Apps by partners in the Integrated apps portal](/microsoft-365/admin/manage/test-and-deploy-microsoft-365-apps) for details.
-### Multi-tenant distribution
+### Multitenant distribution
Distribution to Microsoft AppSource is not yet supported during this early developer preview of Outlook-enabled Teams messaging extensions.
platform Extend M365 Teams Personal Tab https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/extend-m365-teams-personal-tab.md
As a Teams admin, you can upload and pre-install the app package for your organi
As a global admin, you can upload and pre-install the app package from https://admin.microsoft.com/. See [Test and deploy Microsoft 365 Apps by partners in the Integrated apps portal](/microsoft-365/admin/manage/test-and-deploy-microsoft-365-apps) for details.
-### Multi-tenant distribution
+### Multitenant distribution
Distribution to Microsoft AppSource is not supported during this early developer preview of Outlook- and Office-enabled Teams personal tabs.
platform What Are Messaging Extensions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/messaging-extensions/what-are-messaging-extensions.md
The following image displays the locations from where messaging extensions are i
## Understand how messaging extensions work
-A messaging 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 messaging 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.
> [!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 messaging 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 Microsoft Teams app, a single messaging 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 messaging extension commands
The following image displays the messaging extension search command task module:
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. The following images display link unfurling feature when a link is pasted in messaging extension:
-
+ ![unfurl link](../assets/images/messaging-extension/unfurl-link.png) ![link unfurling](../assets/images/messaging-extension/link-unfurl.gif)
async handleTeamsMessagingExtensionQuery(context, query) {
## See also * [Define search messaging extension command](~/messaging-extensions/how-to/search-commands/define-search-command.md)
-* [Create a messaging extension](../build-your-first-app/build-messaging-extension.md)
+* [Create a messaging extension](../build-your-first-app/build-messaging-extension.md)
platform App Templates https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/samples/app-templates.md
App templates are examples of complete apps for Microsoft Teams that are open-source and available on GitHub. Each app template contains detailed instructions for deploying and installing that app for your organization. It also provides a sample app that you can install and start using immediately. The complete source code is also available, which allows you to explore it in detail or fork the code and alter it to meet your specific requirements. All app templates are provided under the [MIT License](https://github.com/OfficeDev/microsoft-teams-apps-eprescription/blob/master/LICENSE) terms.
-> [!NOTE]
+> [!NOTE]
> You must license and support apps created from app templates for your users and organizations.
-### Key benefits
+The key benefits of using App templates are:
-* **Deploy directly to the cloud:** All app templates include deployment scripts that allows you to host all required services in Microsoft Azure or the Power Platform.
+* **Deploy directly to the cloud:** All app templates include deployment scripts that allows you to host all required services in Microsoft Azure or the Power Platform.
* **Recommended sample code:** The app templates conform to recommended best practices around security and infrastructure. All community submitted changes to the app templates are reviewed to ensure conformance. * **Customizable and extensible:** While all app templates are deployed with minimal configuration, the entire code base and deployment scripts are provided, so that you can easily customize or extend them to fit your unique needs. * **Detailed documentation:** All app templates are accompanied by end-to-end documentation on solution architecture, deployment, and configuration steps.
The Champion Management Platform (CMP) app template helps you manage, scale, and
[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-champion-management)
-## Adoption Tool- Microsoft 365 Learning Pathways (Get Started)
+## 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.
It provides a foundation to build custom targeted communication capabilities suc
![jCompany Communicator compose box view](../assets/images/CompanyCommunicatorCompose.png)
-## Co-worker Appreciation
+## 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.
In addition to encouraging personal connections across your entire team, the Ice
![Icebreaker app](../assets/images/icebreaker.png)
-## New Employee Onboarding
+## 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 Microsoft Teams and [SharePoint New Emp
App template code samples are a collection of sample apps for Microsoft Teams platform capabilities.
-> [!NOTE]
+> [!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. The following table describes App template code samples:
-|Name|Scenario|GitHub link|
+|Name|Scenario|GitHub link|
||||-| |Adoption Bot |Adoption Bot is a user care chat bot built with Power Virtual Agent for Teams PVA. It is considered as the PVA version of FAQ Plus. Adoption Bot answers 100+ common questions about Microsoft 365 and Teams. You can edit the existing topics, add your own topics, and ingest existing FAQs. If users need additional help, Adoption Bot can connect them to experts or even be extended to open service tickets with premium flow connectors. This bot is self-installed or built into a custom app, such as the [Adoption Hub](https://github.com/akporzondek/adoption_hub). | [Adoption Bot](https://github.com/OfficeDev/microsoft-teams-apps-adopt-bot) | | Appointment Manager | Appointment Manager is a Teams app template to help businesses create, manage, and conduct virtual appointments with consumers through Teams. New appointment requests from consumers are visible in Teams channels, where they are quickly assigned and reassigned to staff in a team. Appointment requests are viewed at team or personal levels through custom tabs. Every appointment is associated with a Teams online meeting, hence the staff and consumers can easily join the meeting at the scheduled time. The app template integrates with Microsoft Bookings for easy appointment management. Scheduled appointments automatically appear on assigned staff members' calendars, and consumers receive customizable email notifications and reminders with embedded meeting links.| [Appointment Manager](https://github.com/OfficeDev/microsoft-teams-apps-appointment-manager) |
The following table describes App template code samples:
|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 is 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) | - To provide feedback, see [App template feedback](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR2_7qFm_lcZAr4eqEhnLsZ9UMVZGT1lCT0FXUDdZMUM0RkpBS1BESTAwWC4u). ## See also
platform Integrate Web Apps Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/samples/integrate-web-apps-overview.md
keywords: power platform power apps people picker deep link virtual agent assist
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.
-## Prerequisites
+## Prerequisites
For effective integration, ensure to have a better understanding of the following prerequisites:
-* Teams capabilities.
+
+* Teams capabilities.
* SharePoint requirements for file and data storage. * API requirements. * Authentication.
For effective integration, ensure to have a better understanding of the followin
## Low code platforms Low code platforms provide an intuitive approach to software development and require little or no coding to build applications and processes. You can create custom apps easily with low code platforms. These platforms consist of a visual interface, connectors to back end services, and a built-in app lifecycle management system to build, debug, deploy, and maintain applications. Microsoft provides the following innovative gateways to rapidly build Teams-compatible apps using low code attributes:+ * Microsoft Power platform * Microsoft Teams app templates
Power Virtual Agent is a no code, guided graphical interface solution. It is bui
### Create Virtual Assistant
-Virtual Assistant is a Microsoft open-source template that enables you to create a robust conversational solution while maintaining full control of user experience, organizational branding, and necessary data.
+Virtual Assistant is a Microsoft open-source template that enables you to create a robust conversational solution while maintaining full control of user experience, organizational branding, and necessary data.
## App templates
-You can use app template to create custom made apps to suit your organizational needs. These are production-ready apps for Microsoft Teams that are community driven, open-source, and available on GitHub. Each template contains detailed instructions to deploy and install the app for your organization. It provides a ready-to-use application that you can install and start using immediately.
+You can use app template to create custom made apps to suit your organizational needs. These are production-ready apps for Microsoft Teams that are community driven, open-source, and available on GitHub. Each template contains detailed instructions to deploy and install the app for your organization. It provides a ready-to-use application that you can install and start using immediately.
## Teams Shifts Work Force Management connectors
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 Microsoft Teams and SharePoint by adding a Microsoft 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.
+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.
## Integrate People Picker You can integrate the Teams native people picker control that allows users to search and select people in the web app experience. ## 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/).
-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 Microsoft 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 Integrating Web Apps https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/samples/integrating-web-apps.md
ms.localizationpriority: medium
Title: Considerations for Teams integration
-# Considerations for Teams integration
+# Considerations for Teams integration
You can make web apps suitable with Teams' social and collaborative features, by properly integrating them with Teams. The different types of apps which you can integrate with Teams are as follows:+ * **Standalone apps**: A stand alone app is a single-page or large, and complex app. The user can use some aspects of it in Teams. * **Collaboration apps**: An app already built for the social and collaborative features inherent to Teams. * **SharePoint**: A SharePoint page you want to surface in Teams.
Your Teams app must include required and expected collaborative features. To wor
|Embedded webpage, homepage, or webview |[Tabs](../tabs/what-are-tabs.md) | |Share shortcuts and extensions |[Messaging extensions](../messaging-extensions/what-are-messaging-extensions.md) | |Action shortcuts and extensions |[Messaging extensions](../messaging-extensions/what-are-messaging-extensions.md) |
-|Chatbots |[Bots](../bots/what-are-bots.md) |
+|Chatbots |[Bots](../bots/what-are-bots.md) |
|Channel notifications |[Bots](../bots/what-are-bots.md)<br/>[Incoming webhooks](../webhooks-and-connectors/what-are-webhooks-and-connectors.md)<br/>[Office 365 Connectors](../webhooks-and-connectors/what-are-webhooks-and-connectors.md) | |Message external services |[Bots](../bots/what-are-bots.md)<br/>[Outgoing webhooks](../webhooks-and-connectors/what-are-webhooks-and-connectors.md) | |Modals |[Task modules](../task-modules-and-cards/what-are-task-modules.md) |
Your Teams app must include required and expected collaborative features. To wor
Integrating all features of an existing application into Teams often leads to a forced or unnatural user experience, particularly in larger apps. Start with the most impactful features and those that integrates more naturally with Teams. You can allow users to launch the main app and access its full set of features.
-**Prerequisites to integrate your app with Teams**
+The following are the prerequisites to integrate your app with Teams.
1. [Map your app's use cases to Teams platform capabilities](../concepts/design/map-use-cases.md). 1. [Determine your app's entry points](../concepts/extensibility-points.md). Is it for personal use, for collaboration, or for both?
To integrate an existing [SharePoint page](/MicrosoftTeams/teams-standalone-stat
Alternatively, you can build a Teams tab [using the SharePoint Framework](/sharepoint/dev/spfx/integrate-with-teams-introduction).
-## Aim towards multi-tenancy
+## Aim towards multitenancy
***Integration scenarios**: Standalone apps, collaboration apps, SharePoint*
-If your app is used by multiple organizations, consider multi-tenant hosting. It makes your product scalable and simplifies the distribution.
+If your app is used by multiple organizations, consider multitenant hosting. It makes your product scalable and simplifies the distribution.
## Review your APIs
platform Shifts Wfm Connectors https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/samples/shifts-wfm-connectors.md
# Production-ready Shifts Connectors
-Teams Shifts Workforce management (WFM) connectors are production-ready, open-source, and community-driven integrations, useful for firstline workers. They offer a seamless experience and quick process for the digital transformation of firstline workers with Teams Shifts.
+Teams Shifts Workforce management (WFM) connectors are production-ready, open-source, and community-driven integrations, useful for first-line workers. They offer a seamless experience and quick process for the digital transformation of first-line workers with Teams Shifts.
Each connector provides detailed guidance for deployment and integration to your organization. The complete source code is available in GitHub repository. You can explore in detail or fork, and customize to meet your specific needs.
Following are the key benefits of Teams Shifts WFM connectors:
* **Plug and play experience:** All Shifts WFM connectors include ARM Azure deployment scripts that allow you to host all necessary services in Microsoft Azure. No coding is required to deploy the apps.
-* **Production-ready code:** All  Shifts connectors conform to the recommended security and infrastructure best practices and all community-submitted changes are reviewed to ensure continued conformance.
+* **Production-ready code:** All Shifts connectors conform to the recommended security and infrastructure best practices and all community-submitted changes are reviewed to ensure continued conformance.
-* **Customizable and extensible:**  While all Shifts WFM connectors are ready to deploy for immediate use, with the entire code base and deployment scripts readily available. You can easily customize or extend them to fit your unique needs.
+* **Customizable and extensible:** While all Shifts WFM connectors are ready to deploy for immediate use, with the entire code base and deployment scripts readily available. You can easily customize or extend them to fit your unique needs.
-* **Detailed documentation & support:**  All Shifts WFM connectors are accompanied by end-to-end documentation for solution architecture, deployment, and configuration steps. The connector repositories are monitored, so that you can report any issues, challenges or difficulties you encounter through the repo's GitHub Issues tracker.
+* **Detailed documentation & support:** All Shifts WFM connectors are accompanied by end-to-end documentation for solution architecture, deployment, and configuration steps. The connector repositories are monitored, so that you can report any issues, challenges or difficulties you encounter through the repo's GitHub Issues tracker.
-* **Seamless integration:** The integration between WFM solutions and Teams Shifts allows firstline workers to use the Teams Shifts app to view or manage their schedules and shift times, and use all the other rich collaboration features provided in Teams right from their mobile device or desktop without having to switch context to another app.
+* **Seamless integration:** The integration between WFM solutions and Teams Shifts allows first-line workers to use the Teams Shifts app to view or manage their schedules and shift times, and use all the other rich collaboration features provided in Teams right from their mobile device or desktop without having to switch context to another app.
-**Open shifts view in Teams**
+**Open shifts view in Teams**
-The shifts view in Teams is shown in the following image:
+The shifts view in Teams is shown in the following image:
![Open shifts in Teams](../assets/images/teams-open-shifts-view.png) ## Kronos-to-Teams Shifts connector
-With open-source code, you can integrate Kronos Workforce Central Version 8.1 and above, with Teams Shifts such as, desktop or mobile Teams app for the following firstline worker and manager scenarios:
+With open-source code, you can integrate Kronos Workforce Central Version 8.1 and above, with Teams Shifts such as, desktop or mobile Teams app for the following first-line worker and manager scenarios:
* View schedule.
For more information on deployment of Kronos-to-Teams Shifts connector, see [Get
## JDA-to-Teams Shifts connector
-With open-source code, you can integrate JDA, such as BlueYonder Version 17.2 and above, with Teams Shifts such as, desktop or mobile Teams app for the following firstline worker and manager scenarios:
+With open-source code, you can integrate JDA, such as BlueYonder Version 17.2 and above, with Teams Shifts such as, desktop or mobile Teams app for the following first-line worker and manager scenarios:
* Publish shifts and schedule groups in JDA and view them in Teams.
With open-source code, you can integrate JDA, such as BlueYonder Version 17.2 an
* Set user availability using the [Microsoft Graph API for Shifts](/graph/api/resources/shift?view=graph-rest-beta&preserve-view=true).
-For more information on contribution and suggestion, see [Get it on GitHub](https://aka.ms/JDAShiftsConnector).</br></br>
+For more information on contribution and suggestion, see [Get it on GitHub](https://aka.ms/JDAShiftsConnector).
## See also
platform Teams Low Code Solutions https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/samples/teams-low-code-solutions.md
Title: Create low-code custom apps for Microsoft Teams -
-description: Learn about the available Microsoft low and no code solutions with Teams an Microsoft Power Platform. Learn about solutions, such as Power Apps, Power Automate, Virtual Assistant, and more.
+ Title: Create low-code custom apps for Microsoft Teams
+
+description: Learn about the available Microsoft low and no code solutions with Teams an Microsoft Power Platform. Learn about solutions, such as Power Apps, Power Automate, Virtual Assistant, and more.
ms.localizationpriority: medium + # Create low-code custom apps for Microsoft Teams Microsoft Teams is extensible and adaptive. This means that you can build custom applications for Teams that meet the distinct needs of your users. The low code custom apps save time, provide speedy solutions and meet the same demand as apps created from scratch. This document gives an overview of Microsoft Power Platform, Power Virtual Agents chatbot, and Virtual Assistant.
Use the new [Power Virtual Agents app](https://aka.ms/pva-teams-docs) in Teams,
### Γ£ö Virtual Assistant for Teams
-Virtual Assistant is a Microsoft open-source template that enables you to create a robust conversational solution while maintaining full control of user experience, organizational branding, and necessary data. You can configure your virtual assistant for [integration into the Teams environment](https://microsoft.github.io/botframework-solutions/clients-and-channels/tutorials/enable-teams/1-intro).
+Virtual Assistant is a Microsoft open-source template that enables you to create a robust conversational solution while maintaining full control of user experience, organizational branding, and necessary data. You can configure your virtual assistant for [integration into the Teams environment](https://microsoft.github.io/botframework-solutions/clients-and-channels/tutorials/enable-teams/1-intro).
### Γ£ö Power Platform Learn modules
platform Auth Aad Sso https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/authentication/auth-aad-sso.md
Users sign in to Microsoft Teams through their work, school, or Microsoft accoun
> Γ£öTeams for Android (1416/1.0.0.2020073101 and later) > > Γ£öTeams for iOS (_Version_: 2.0.18 and later)
->
-> Γ£öTeams JavaScript SDK (_Version_: 1.10 and later) for SSO to work in meeting side panel.
+>
+> Γ£öTeams JavaScript SDK (_Version_: 1.10 and later) for SSO to work in meeting side panel.
> > For the best experience with Teams, use the latest version of iOS and Android.
Users sign in to Microsoft Teams through their work, school, or Microsoft accoun
> > The simplest path to get started with tab SSO is with the Teams toolkit for Microsoft Visual Studio Code. For more information, see [SSO with Teams toolkit and Visual Studio Code for tabs](../../../toolkit/visual-studio-code-tab-sso.md)
+<! TBD: Edit this article.
+* Admonitions/alerts seem to be overused.
+* Don't add note for a list of items.
+* Don't add numbers to headings.
+* Don't copy-paste superscript characters as is. Use HTML entities. See https://sitefarm.ucdavis.edu/training/all/using-wysiwyg/special-characters for the values.
+* Same for the check marks added in the content in the note above. The content should not be in a note anyway.
+>
+ ## How SSO works at runtime The following image shows how the SSO process works:
This section describes the tasks involved in creating a Teams tab that uses SSO.
> * Currently multiple domains per app are not supported. > * The user must set `accessTokenAcceptedVersion` to `2` for a new application.
-**To register your app through the Azure AD portal**
+To register your app through the Azure AD portal, follow these steps:
1. Register a new application in the [Azure AD App Registrations](https://go.microsoft.com/fwlink/?linkid=2083908) portal. 1. Select **New Registration**. The **Register an application** page appears.
A simple way of consenting on behalf of an organization as a tenant admin is to
Another approach for getting Graph scopes is to present a consent dialog using our existing [web-based Azure AD authentication approach](~/tabs/how-to/authentication/auth-tab-aad.md#navigate-to-the-authorization-page-from-your-pop-up-page). This approach involves popping up an Azure AD consent dialog box.
-**To ask for additional consent using the Auth API**
+To ask for additional consent using the Auth API, follow these steps:
1. The token retrieved using `getAuthToken()` must be exchanged server-side using Azure AD [on-behalf-of flow](/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow) to get access to those other Graph APIs. Ensure you use the v2 Graph endpoint for this exchange. 2. If the exchange fails, Azure AD returns an invalid grant exception. There are usually one of two error messages, `invalid_grant` or `interaction_required`.
The above-described authentication solution only works for apps and services tha
* Follow the [step-by-step guide](../../../sbs-tab-with-adaptive-cards.yml) to create tab with adaptive cards. ## See also+ [Teams Bot with Single sign-on](../../../sbs-bots-with-sso.yml)
platform Build Adaptive Card Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/build-adaptive-card-tabs.md
You can build your tabs with ready-made user interface (UI) building blocks nati
The following image shows build tabs with Adaptive Cards in desktop and mobile: ## Prerequisites
platform What Are Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/what-are-tabs.md
# Build Tabs for Microsoft Teams
-Tabs are Teams-aware webpages embedded in Microsoft Teams. They are simple HTML <iframe\> tags that point to domains declared in the app manifest and can be added as part of a channel inside a team, group chat, or personal app for an individual user. You can include custom tabs with your app to embed your own web content in Teams or add Teams-specific functionality to your web content. For more information, see [Teams JavaScript client SDK](/javascript/api/overview/msteams-client).
+Tabs are Teams-aware webpages embedded in Microsoft Teams. They are simple HTML `<iframe\>` tags that point to domains declared in the app manifest and can be added as part of a channel inside a team, group chat, or personal app for an individual user. You can include custom tabs with your app to embed your own web content in Teams or add Teams-specific functionality to your web content. For more information, see [Teams JavaScript client SDK](/javascript/api/overview/msteams-client).
> [!IMPORTANT] > Currently, custom tabs are available in Government Community Cloud (GCC), GCC-High, and Department of Defense (DOD).
There are two types of tabs available in Teams, personal and channel or group. [
You can [create a content page](~/tabs/how-to/create-tab-pages/content-page.md) as part of a personal tab, channel or group tab, or task module. You can [create a configuration page](~/tabs/how-to/create-tab-pages/configuration-page.md) that enables users to configure Microsoft Teams app and use it to configure a channel or group chat tab, a messaging extension, or an Office 365 Connector. You can permit users to reconfigure your tab after installation and [create a tab removal page](~/tabs/how-to/create-tab-pages/removal-page.md) for your application. When you build a Teams app that includes a tab, you must test how your [tab functions on both the Android and iOS Teams clients](~/tabs/design/tabs-mobile.md). Your tab must [get context](~/tabs/how-to/access-teams-context.md) through basic information, locale and theme information, and `entityId` or `subEntityId` that identifies what is in the tab.
-You can build tabs with Adaptive Cards and centralize all Teams app capabilities by eliminating the need for a different backend for your bots and tabs. [Stage View](~/tabs/tabs-link-unfurling.md) is a new UI component that allows you to render the content opened in full screen in Teams and pinned as a tab. The existing [link unfurling](~/tabs/tabs-link-unfurling.md) service is updated, so that it is used to turn URLs into a tab using an Adaptive Card and Chat Services. You can [create conversational tabs](~/tabs/how-to/conversational-tabs.md) using conversational sub-entities that allow users to have conversations about sub-entities in your tab, such as specific task, patient, and sales opportunity, instead of discussing the entire tab. You can make changes to [tab margins](~/resources/removing-tab-margins.md) to enhance the developer's experience when building apps. You can drag the tab and place it in the desired position to interchange the tab positions within your personal apps and channel or group chats.
+You can build tabs with Adaptive Cards and centralize all Teams app capabilities by eliminating the need for a different backend for your bots and tabs. [Stage View](~/tabs/tabs-link-unfurling.md) is a new UI component that allows you to render the content opened in full screen in Teams and pinned as a tab. The existing [link unfurling](~/tabs/tabs-link-unfurling.md) service is updated, so that it is used to turn URLs into a tab using an Adaptive Card and Chat Services. You can [create conversational tabs](~/tabs/how-to/conversational-tabs.md) using conversational sub-entities that allow users to have conversations about sub-entities in your tab, such as specific task, patient, and sales opportunity, instead of discussing the entire tab. You can make changes to [tab margins](~/resources/removing-tab-margins.md) to enhance the developer's experience when building apps. You can drag the tab and place it in the desired position to interchange the tab positions within your personal apps and channel or group chats.
> [!NOTE] > **Posts** and **Files** can't be moved from their positions.
For channel or group tabs, you can also create an additional configuration page.
You can have multiple channels or group tabs, and up to 16 personal tabs per app.
-### Tools you can use to build tabs
+### Tools to build tabs
+ * [Teams Toolkit for Microsoft Visual Studio Code](../toolkit/visual-studio-code-overview.md) * [Teams Toolkit for Visual Studio](../toolkit/visual-studio-overview.md)
platform Overview https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Overview.md
The following image depicts the Universal Actions for Adaptive Cards for both Te
# [Mobile](#tab/mobile) # [Desktop](#tab/desktop)
platform Cards Format https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/cards-format.md
Cards support formatting in the text property only, not in the title or subtitle
Formatting support differs between card types. Rendering of the card can differ slightly between the desktop and the mobile Microsoft Teams clients, as well as Teams in the desktop browser.
-You can include an inline image with any Teams card. Images can be formatted as `.png`, `.jpg`, or `.gif` files and must not exceed 1024 ×1024 px or 1 MB. Animated GIF is not supported. For more information, see [types of cards](./cards-reference.md#inline-card-images).
+You can include an inline image with any Teams card. Supported image formats are .png, .jpg, or .gif formats. Keep the dimensions within 1024 x 1024 px and file size less than 1 MB. Animated .gif images are not supported. For more information, see [types of cards](./cards-reference.md#inline-card-images).
You can format Adaptive Cards and Office 365 Connector cards with Markdown that include certain supported styles.
platform Design Teams Task Modules https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/task-modules/design-teams-task-modules.md
Task modules are a great place to surface forms with sequential user inputs and
#### Desktop ### Sign in
platform Use CICD Template https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/use-CICD-template.md
Last updated 11/29/2021
TeamsFx helps to automate your development workflow while building Teams application. The document provides tools and templates for you to get started with setting up CI or CD pipelines with GitHub, Azure Devops and Jenkins.
-|Tools and Templates|Description|
+|Tools and Templates|Description|
||| |[teamsfx-cli-action](https://github.com/OfficeDev/teamsfx-cli-action)|GitHub Action that integrates with TeamsFx CLI.| |[github-ci-template.yml](https://github.com/OfficeDev/TeamsFx/blob/main/docs/cicd_insider/github-ci-template.yml) and [github-cd-template.yml](https://github.com/OfficeDev/TeamsFx/blob/main/docs/cicd_insider/github-cd-template.yml)| GitHub CI or CD templates for Teams app. |
TeamsFx helps to automate your development workflow while building Teams applica
Perform the following steps to adapt the workflow for your project:
-1. Change the CI flow.
+1. Change the CI flow.
1. Use npm build script, or customize the way you build the project in automation code. 1. Use npm test script which returns zero for success, and change the test commands.
The following table lists all the secrets you need to create environment in GitH
1. Select **Settings**. 1. Go to **Environments** section. 1. Select **New environment**.
-1. Enter a name for your environment. The default environment name provided in the template is `test_environment`.
+1. Enter a name for your environment. The default environment name provided in the template is `test_environment`.
1. Select **Configure environment**. 1. Select **Add Secret**.
Perform the following steps to create Pipeline variables in Azure DevOps:
||| |`AZURE_SERVICE_PRINCIPAL_NAME`|The service principal name of Azure used to provision resources.| |`AZURE_SERVICE_PRINCIPAL_PASSWORD`|The password of Azure service principal.|
-|`AZURE_SUBSCRIPTION_ID`|To identify the subscription in which the resources will be provisioned.|
+|`AZURE_SUBSCRIPTION_ID`|To identify the subscription in which the resources are provisioned.|
|`AZURE_TENANT_ID`|To identify the tenant in which the subscription resides.| |`M365_ACCOUNT_NAME`|The Microsoft 365 account for creating and publishing the Teams App.| |`M365_ACCOUNT_PASSWORD`|The password of the Microsoft 365 account.|
-|`M365_TENANT_ID`|To identify the tenant in which the Teams App will be created/published. This value is optional unless you have a multi-tenant account and you want to use another tenant. Read more on [how to find your Microsoft 365 tenant ID](/azure/active-directory/fundamentals/active-directory-how-to-find-tenant).|
+|`M365_TENANT_ID`|To identify the tenant in which the Teams App is created or published. This value is optional unless you have a multi-tenant account and you want to use another tenant. Read more on [how to find your Microsoft 365 tenant ID](/azure/active-directory/fundamentals/active-directory-how-to-find-tenant).|
## CI or CD pipeline templates in Jenkins To add these templates to your repository, you require the versions of [jenkins-ci-template.Jenkinsfile](https://github.com/OfficeDev/TeamsFx/blob/main/docs/cicd_insider/jenkins-ci-template.Jenkinsfile) and [jenkins-cd-template.Jenkinsfile](https://github.com/OfficeDev/TeamsFx/blob/main/docs/cicd_insider/jenkins-cd-template.Jenkinsfile) to be located in your repository by branch.
-Also, you need to create CI or CD pipelines in Jenkins which point to the specific **Jenkinsfile** correspondingly.
+Also, you need to create CI or CD pipelines in Jenkins which point to the specific `Jenkinsfile` correspondingly.
Follow the steps to check how to connect Jenkins with different SCM platforms:
The following are some of the changes you can make to adapt your project:
Perform the following steps to customize the CD pipeline:
-1. Rename the template file to **Jenkinsfile**, and place it under the target branch, for example, the **main** branch.
-1. Change the CD flow. We default to use the triggers of **pollSCM** when a new change is pushed into the **main** branch.
+1. Rename the template file to `Jenkinsfile`, and place it in the target branch, for example, the `main` branch.
+1. Change the CD flow. We default to use the triggers of `pollSCM` when a new change is pushed into the `main` branch.
1. Create Jenkins [pipeline credentials](https://www.jenkins.io/doc/book/using/using-credentials/) to hold Azure service principal and Microsoft 365 account login credentials. 1. Change the build scripts if necessary. 1. Remove the test scripts if you don't have tests.
The scripts are based on a cross-platform TeamsFx command line tool [TeamsFx-CLI
> [!NOTE] > * To enable `@microsoft/teamsfx-cli` running in CI mode, turn on `CI_ENABLED` by `export CI_ENABLED=true`. In CI mode, `@microsoft/teamsfx-cli` is friendly for CI or CD.
-> * To enable `@microsoft/teamsfx-cli` running in non-interactive mode, set a global config with command: `teamsfx config set -g interactive false`. In non-interactive mode, `@microsoft/teamsfx-cli` will not ask questions for inputs interactively.
+> * To enable `@microsoft/teamsfx-cli` running in the non-interactive mode, set a global config with command: `teamsfx config set -g interactive false`. In the non-interactive mode, `@microsoft/teamsfx-cli` does not prompt for inputs.
-Ensure to set Azure and Microsoft365 credentials in your environment variables safely. For example if you are using GitHub as your source code repository. For more information, see [Github Secrets](https://docs.github.com/en/actions/reference/encrypted-secrets).
+Ensure to set Azure and Microsoft 365 credentials in your environment variables safely. For example if you are using GitHub as your source code repository. For more information, see [Github Secrets](https://docs.github.com/en/actions/reference/encrypted-secrets).
## Create Azure service principals To provision and deploy resources targeting Azure inside CI/CD, you must create an Azure service principal for use. Perform the following steps to create Azure service principals:+ 1. Register an Microsoft Azure Active Directory (Azure AD) application in single tenant.
-2. Assign a role to your Azure AD application to access your Azure subscription, and `Contributor` role is recommended.
+2. Assign a role to your Azure AD application to access your Azure subscription, and `Contributor` role is recommended.
3. Create a new Azure AD application secret. > [!TIP] > Save your tenant id, application id(AZURE_SERVICE_PRINCIPAL_NAME), and the secret(AZURE_SERVICE_PRINCIPAL_PASSWORD) for future use.
-For more information, see [Azure service principals guidelines](/azure/active-directory/develop/howto-create-service-principal-portal). The following are the three ways to create service principal:
+For more information, see [Azure service principals guidelines](/azure/active-directory/develop/howto-create-service-principal-portal). The following are the three ways to create service principal:
+ * [Microsoft Azure portal](/azure/active-directory/develop/howto-create-service-principal-portal) * [Windows PowerShell](/azure/active-directory/develop/howto-authenticate-service-principal-powershell) * [Microsoft Azure CLI](/cli/azure/create-an-azure-service-principal-azure-cli) ## Publish Teams app using Teams Developer Portal+ If there's any changes related to Teams app's manifest file, you may want to publish the Teams app again to update the manifest. To publish Teams app manually, you may leverage [Developer Portal for Teams](https://dev.teams.microsoft.com/home). Perform the following steps to publish your app:+ 1. Sign in to [Developer portal for Teams](https://dev.teams.microsoft.com) using the corresponding account. 2. Import your app package in zip by selecting `App -> Import app -> Replace`. 3. Select the target app in app list.
platform Add Incoming Webhook https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/webhooks-and-connectors/how-to/add-incoming-webhook.md
Title: Create an Incoming Webhook
-description: describes how to add Incoming Webhook to Teams app and post external requests to Teams with incoming webhooks
+description: Add Incoming Webhook to Teams app and post any external requests to Teams using it
keywords: teams tabs outgoing webhook ms.localizationpriority: high
-# Create Incoming Webhook
+# Create an Incoming Webhook
-Incoming Webhook allows any external apps to share content in Teams channels. These webhooks are used as tracking and notifying tools. They provide a unique URL, to which you send a JSON payload with a message in card format. Cards are user interface containers that include content and actions related to a single topic. Teams use cards within the following capabilities:
+An Incoming Webhook lets external applications to share content in Microsoft Teams channels. The webhooks are used as tools to track and notify. The webhooks provide a unique URL, to send a JSON payload with a message in card format. Cards are user interface containers that include content and actions related to a single topic. You can use cards in the following capabilities:
* Bots * Messaging extensions * Connectors
-## Key features of Incoming Webhook
+## Key features of an Incoming Webhook
-The following table provides the features and description of Incoming Webhook:
+The following table provides the features and description of an Incoming Webhook:
| Features | Description |
-| - | -- |
-|Adaptive Cards using an Incoming Webhook|Adaptive Cards can be sent through Incoming Webhooks. For more information, see [Send Adaptive Cards using Incoming Webhooks](../../webhooks-and-connectors/how-to/connectors-using.md#send-adaptive-cards-using-an-incoming-webhook).|
+| -- | -- |
+|Adaptive Cards using an Incoming Webhook | Adaptive Cards can be sent through Incoming Webhooks. For more information, see [Send Adaptive Cards using Incoming Webhooks](../../webhooks-and-connectors/how-to/connectors-using.md#send-adaptive-cards-using-an-incoming-webhook).|
|Actionable messaging support|Actionable message cards are supported in all Office 365 groups including Teams. If you send messages through cards, you must use the actionable message card format. For more information, see [legacy actionable message card reference](/outlook/actionable-messages/message-card-reference) and [message card playground](https://messagecardplayground.azurewebsites.net).| |Independent HTTPS messaging support|Cards provide information clearly and consistently. Any tool or framework that can send HTTPS POST requests can send messages to Teams through an Incoming Webhook.| |Markdown support|All text fields in actionable messaging cards support basic Markdown. Do not use HTML markup in your cards. HTML is ignored and treated as plain text.| |Scoped configuration|Incoming Webhook is scoped and configured at the channel level.| |Secure resource definitions|Messages are formatted as JSON payloads. This declarative messaging structure prevents the insertion of malicious code.|
+<! TBD: A note should be short and eye-catching. No need to put a list item inside a Note or any admonition for that matter. Re-write the below list item.
+>
+ > [!NOTE]
-> * Teams bots, messaging extensions, Incoming Webhook, and the Bot Framework support Adaptive Cards. Adaptive Cards is an open cross card platform framework that can be used in all platforms such as Windows, Android, iOS, and so on. Currently, [Teams connectors](../../webhooks-and-connectors/how-to/connectors-creating.md) don't support Adaptive Cards. However, it is possible to create a [flow](https://flow.microsoft.com/blog/microsoft-flow-in-microsoft-teams/) that posts Adaptive Cards to a Teams channel.
+> * Teams bots, messaging extensions, Incoming Webhook, and the Bot Framework support Adaptive Cards. Adaptive Cards is an open cross card platform framework that is used in all platforms such as Windows, Android, iOS, and so on. Currently, [Teams connectors](../../webhooks-and-connectors/how-to/connectors-creating.md) don't support Adaptive Cards. However, it is possible to create a [flow](https://flow.microsoft.com/blog/microsoft-flow-in-microsoft-teams/) that posts Adaptive Cards to a Teams channel.
> * For more information on cards and webhooks, see [Adaptive cards and Incoming Webhooks](~/task-modules-and-cards/what-are-cards.md#adaptive-cards-and-incoming-webhooks).
-## Create Incoming Webhook
+## Create an Incoming Webhook
-**To add an Incoming Webhook to a Teams channel**
+To add an Incoming Webhook to a Teams channel, follow these steps:
-1. Go to the channel where you want to add the webhook and select &#8226;&#8226;&#8226; **More options** from the top navigation bar.
+1. Open the channel in which you want to add the webhook and select &#8226;&#8226;&#8226; **More options** from the top navigation bar.
1. Select **Connectors** from the dropdown menu: ![Select Connector](~/assets/images/connectors.png) 1. Search for **Incoming Webhook** and select **Add**.
-1. Select **Configure**, provide a name, and upload an image for your webhook if required:
+1. Select **Configure**, provide a name, and upload an image for your webhook if necessary:
![Configure button](~/assets/images/configure.png)
-1. The dialog window presents a unique URL that maps to the channel. Copy and save the webhook URL, to send information to Microsoft Teams and select **Done**:
+1. Copy and save the unique webhook URL present in the dialog window. The URL maps to the channel and you can use it to send information to Teams. Select **Done**.
![Unique URL](~/assets/images/url.png)
You can create and send actionable messages through Incoming Webhook or Office 3
> [!NOTE] > In Teams, select **Settings** > **Member permissions** > **Allow members to create, update, and remove connectors**, so that any team member can add, modify, or delete a connector.
-## Remove Incoming Webhook
+## Remove an Incoming Webhook
-**To remove an Incoming Webhook from a Teams channel**
+To remove an Incoming Webhook from a Teams channel, follow these steps:
-1. Go to the channel.
-1. Select &#8226;&#8226;&#8226; **More options** from the top navigation bar.
+1. Open the channel and select &#8226;&#8226;&#8226; **More options** from the top navigation bar.
1. Select **Connectors** from the dropdown menu.
-1. On the left, under **Manage**, select **Configured**.
+1. Select **Configured** under **Manage**.
1. Select the **<*1*> Configured** to see a list of your current connectors: ![Configured webhook](~/assets/images/configured.png)
-1. Select **Manage** next to the connector that you want to remove:
+1. Select **Manage** for the connector that you want to remove:
![Manage webhook](~/assets/images/manage.png)
-1. Select **Remove**:
-
- ![Remove webhook](~/assets/images/remove.png)
-
- The **Remove Configuration** dialog box appears:
+1. Select **Remove** to view the **Remove Configuration** dialog box.
![Remove Configuration](~/assets/images/removeconfiguration.png)
-1. Complete the dialog box fields and checkboxes and select **Remove**:
+1. Complete the dialog box fields and checkboxes and select **Remove**.
![Final Remove](~/assets/images/finalremove.png)
- The webhook is removed from the Teams channel.
- ## See also * [Create an Outgoing Webhook](~/webhooks-and-connectors/how-to/add-outgoing-webhook.md)
platform Add Outgoing Webhook https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/webhooks-and-connectors/how-to/add-outgoing-webhook.md
keywords: teams tabs outgoing webhook actionable message verify webhook
The Outgoing Webhook acts as a bot and search for messages in channels using **@mention**. It sends notifications to external web services and responds with rich messages, which include cards and images. It helps to skip the process of creating bots through the [Microsoft Bot Framework](https://dev.botframework.com/).
+<! TBD: Edit this article.
+* Admonitions/alerts may be overused in this article. Check once.
+* An important alert at the end of this table does not make sense. Also, it has a code snippet inside it.
+* Some screenshots like teamschannel.png may be redundant. Check once.
+* Some headings use title case. We use sentence case for titles.
+* Check for markdownlint errors.
+* Try using &nbsp; to add spaces in codeblocks for indentation and remove the hard tabs.
+* Table with just a row is not really needed. Provide the content without tabulating it.
+>
+ ## Key features of Outgoing Webhook The following table provides the features and description of Outgoing Webhooks:
The following table provides the features and description of Outgoing Webhooks:
Create Outgoing Webhooks and add custom bots to Teams.
-**To create an Outgoing Webhook**
+To create an Outgoing Webhook, follow these steps:
1. Select **Teams** from the left pane. The **Teams** page appears:
The following scenario provides the details to add an Outgoing Webhook:
* Example: You have a line of business app that tracks all CRUD (create, read, update, and delete) operations. These operations are made to the employee records by Teams channel HR users across an Office 365 tenancy. # [URL JSON payload](#tab/urljsonpayload)+ **Create a URL on your app's server to accept and process a POST request with a JSON payload** Your service receives messages in a standard Azure bot service messaging schema. The Bot Framework connector is a RESTful service that empowers to process the interchange of JSON formatted messages through HTTPS protocols as documented in the [Azure Bot Service API](/bot-framework/rest-api/bot-framework-rest-connector-api-reference). Alternatively, you can follow the Microsoft Bot Framework SDK to process and parse messages. For more information, see [overview of Azure Bot Service](/azure/bot-service/bot-service-overview-introduction).
Your service receives messages in a standard Azure bot service messaging schema.
Outgoing Webhooks are scoped to the `team` level and are visible to all the team members. Users need to **\@mention** the name of the Outgoing Webhook to invoke it in the channel. # [Verify HMAC token](#tab/verifyhmactoken)+ **Create a method to verify the Outgoing Webhook HMAC token** Using example of inbound message and ID: "contoso" of SigningKeyDictionary of {"contoso", "vqF0En+Z0ucuRTM/01o2GuhMH3hKKk/N2bOmlM31zaA=" }.
To ensure that your service is receiving calls only from actual Teams clients, T
Your code must always validate the HMAC signature included in the request as follows:
-* Generate the HMAC token from the request body of the message. There are standard libraries to do this on most platform, such as [Crypto](https://nodejs.org/api/crypto.html#crypto_crypto) for Node.js and [Teams webhook sample](https://github.com/OfficeDev/microsoft-teams-sample-outgoing-webhook/blob/23eb61da5a18634d51c5247944843da9abed01b6/WebhookSampleBot/Models/AuthProvider.cs) for C\#). Microsoft Teams uses standard SHA256 HMAC cryptography. You must convert the body to a byte array in UTF8.
+* Generate the HMAC token from the request body of the message. There are standard libraries to do this on most platform, such as [Crypto](https://nodejs.org/api/crypto.html#crypto_crypto) for Node.js and [Teams webhook sample](https://github.com/OfficeDev/microsoft-teams-sample-outgoing-webhook/blob/23eb61da5a18634d51c5247944843da9abed01b6/WebhookSampleBot/Models/AuthProvider.cs) for C\#. Microsoft Teams uses standard SHA256 HMAC cryptography. You must convert the body to a byte array in UTF8.
* Compute the hash from the byte array of the security token provided by Teams when you registered the Outgoing Webhook in the Teams client. See [create an Outgoing Webhook](#create-outgoing-webhook). * Convert the hash to a string using UTF-8 encoding. * Compare the string value of the generated hash with the value provided in the HTTP request. # [Method to respond](#tab/methodtorespond)+ **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 orig
"text": "This is a reply!" } ```+ > [!NOTE]
-> * You can send Adaptive Card, Hero card, and text messages as attachment with Outgoing Webhook.
+> * You can send Adaptive Card, Hero card, and text messages as attachment with an Outgoing Webhook.
> * Cards support formatting. For more information, see [format cards with markdown](~/task-modules-and-cards/cards/cards-format.md?tabs=adaptive-md%2Cconnector-html#format-cards-with-markdown).
-Following codes are examples of an Adaptive Card response:
+The following codes are examples of an Adaptive Card response:
# [C#/.NET](#tab/dotnet)
var responseMsg = JSON.stringify({
} ```
-* * *
+ ## Code sample |**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 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)|
## See also+ * [Create an Incoming Webhook](~/webhooks-and-connectors/how-to/add-incoming-webhook.md) * [Create an Office 365 Connector](~/webhooks-and-connectors/how-to/connectors-creating.md) * [Create and send messages](~/webhooks-and-connectors/how-to/connectors-using.md)
platform Connectors Creating https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/webhooks-and-connectors/how-to/connectors-creating.md
The connector is available in the section &#9679;&#9679;&#9679; > **More options
## Distribute webhook and connector
-1. [Set up an Incoming Webhook](~/webhooks-and-connectors/how-to/add-incoming-webhook.md?branch=pr-en-us-3076#create-incoming-webhook) directly for your team.
+1. [Set up an Incoming Webhook](~/webhooks-and-connectors/how-to/add-incoming-webhook.md?branch=pr-en-us-3076#create-an-incoming-webhook) directly for your team.
1. Add a [configuration page](~/webhooks-and-connectors/how-to/connectors-creating.md?branch=pr-en-us-3076#integrate-the-configuration-experience) and [publish your Incoming Webhook](~/webhooks-and-connectors/how-to/connectors-creating.md?branch=pr-en-us-3076#publish-connectors-for-the-organization) in a Office 365 Connector. 1. Package and publish your connector as part of your [AppSource](~/concepts/deploy-and-publish/office-store-guidance.md) submission.
platform Connectors Using https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/webhooks-and-connectors/how-to/connectors-using.md
The actionable messages include six visible buttons on the card. Each button is
The connector cards support the following actions: -- `ActionCard`: Presents one or more input types and associated actions.-- `HttpPOST`: Sends POST request to a URL.-- `OpenUri`: Opens URI in a separate browser or app, optionally targets different URIs based on operating systems.
+* `ActionCard`: Presents one or more input types and associated actions.
+* `HttpPOST`: Sends POST request to a URL.
+* `OpenUri`: Opens URI in a separate browser or app, optionally targets different URIs based on operating systems.
The `ActionCard` action supports three input types: -- `TextInput`: A single line or multiline text field with an optional length limit.-- `DateInput`: A date selector with an optional time selector.-- `MultichoiceInput`: An enumerated list of choices offering either a single selection or multiple selections.
+* `TextInput`: A single line or multiline text field with an optional length limit.
+* `DateInput`: A date selector with an optional time selector.
+* `MultichoiceInput`: An enumerated list of choices offering either a single selection or multiple selections.
`MultichoiceInput` supports a `style` property that controls whether the list initially appears fully expanded. The default value of `style` depends on the value of `isMultiSelect` as follows:
The `ActionCard` action supports three input types:
| `false` or not specified | `compact` | | `true` | `expanded` |
-To display the multiselect list in the compact style, you must specify both `"isMultiSelect": true` and `"style": true`.
+To display the multiple-selection list in the compact style, specify `"isMultiSelect": true` and `"style": true`.
For more information on connector card actions, see [Actions](/outlook/actionable-messages/card-reference#actions).
This message provides the following card in the channel:
# [cURL](#tab/cURL)
-**To post a message in the webhook with cURL**
+To post a message in the webhook with cURL, follow these steps:
-1. Install cURL using: https://curl.haxx.se/.
+1. Install cURL from [cURL website](https://curl.haxx.se/).
1. From the command line, enter the following cURL command:
This message provides the following card in the channel:
Prerequisite: Installation of PowerShell and familiarization with its basic usage.
-**To post a message to the webhook with PowerShell**
+To post a message to the webhook with PowerShell, follow these steps:
1. From the PowerShell prompt, enter the following command:
This message provides the following card in the channel:
> * All native Adaptive Card schema elements, except `Action.Submit`, are fully supported. > * The supported actions are [**Action.OpenURL**](https://adaptivecards.io/explorer/Action.OpenUrl.html), [**Action.ShowCard**](https://adaptivecards.io/explorer/Action.ShowCard.html), and [**Action.ToggleVisibility**](https://adaptivecards.io/explorer/Action.ToggleVisibility.html).
-**To send Adaptive Cards through an Incoming Webhook**
+To send Adaptive Cards through an Incoming Webhook, follow these steps:
1. [Setup a custom webhook](~/webhooks-and-connectors/how-to/add-incoming-webhook.md) in Teams. 1. Create Adaptive Card JSON file using the following code: