Updates from: 01/01/2021 04:08:57
Service Microsoft Docs article Related commit history on GitHub Change details
platform https://docs.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/create-apps-for-teams-meetings https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/apps-in-teams-meetings/create-apps-for-teams-meetings.md
@@ -43,56 +43,72 @@ Please refer to our [Get context for your Teams tab](../tabs/how-to/access-teams
> * Do not cache participant roles since the meeting organizer can change a role at any point in time. > > * Teams does not currently support large distribution lists or roster sizes of more than 350 participants for the `GetParticipant` API.
->
-> * Support for the Bot Framework SDK is coming soon.
+#### Query parameters
-#### Request
+|Value|Type|Required|Description|
+|---|---|----|---|
+|**meetingId**| string | Yes | The meeting identifier is available through Bot Invoke and Teams Client SDK.|
+|**participantId**| string | Yes | The participantId is the user ID. It is available in Tab SSO, Bot Invoke, and Teams Client SDK. It is highly recommended to get a participantId from the Tab SSO. |
+|**tenantId**| string | Yes | The tenantId is required for the tenant users. It is available in Tab SSO, Bot Invoke, and Teams Client SDK. It is highly recommended to get a tenantId from the Tab SSO. |
-```http
-GET /v3/meetings/{meetingId}/participants/{participantId}?tenantId={tenantId}
-```
+#### Example
-*See* the [Bot Framework API reference](/azure/bot-service/rest-api/bot-framework-rest-connector-api-reference?view=azure-bot-service-4.0&preserve-view=true).
+# [C#/.NET](#tab/dotnet)
-<!-- markdownlint-disable MD025 -->
+```csharp
+protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
+{
+ TeamsMeetingParticipant participant = GetMeetingParticipantAsync(turnContext, "yourMeetingId", "yourParticipantId", "yourTenantId");
+ TeamsChannelAccount member = participant.User;
+ MeetingParticipantInfo meetingInfo = participant.Meeting;
+ ConversationAccount conversation = participant.Conversation;
-**C# example**
+ await turnContext.SendActivityAsync(MessageFactory.Text($"The participant role is: {meetingInfo.Role}"), cancellationToken);
+}
-```csharp
- // Get role for the user who sent a message to your bot
- var senderRole = await TeamsInfo.GetMeetingParticipantAsync(turnContext);
```
-* * *
-<!-- markdownlint-disable MD001 -->
+# [JavaScript](#tab/javascript)
-#### Query parameters
+```typescript
+
+export class MyBot extends TeamsActivityHandler {
+ constructor() {
+ super();
+ this.onMessage(async (context, next) => {
+ TeamsMeetingParticipant participant = GetMeetingParticipantAsync(turnContext, "yourMeetingId", "yourParticipantId", "yourTenantId");
+ let member = participant.user;
+ let meetingInfo = participant.meeting;
+ let conversation = participant.conversation;
+
+ await context.sendActivity(`The participant role is: '${meetingInfo.role}'`);
+ await next();
+ });
+ }
+}
-|Value|Type|Required|Description|
-|---|---|----|---|
-|**meetingId**| string | Yes | The meeting identifier is available via Bot Invoke and Teams Client SDK.|
-|**participantId**| string | Yes | This field is the User ID and it is available in Tab SSO, Bot Invoke, and Teams Client SDK. Tab SSO is highly recommended|
-|**tenantId**| string | Yes | This required for tenant users. It is available in Tab SSO, Bot Invoke, and Teams Client SDK. Tab SSO is highly recommended|
+```
-#### Response Payload
-<!-- markdownlint-disable MD036 -->
+# [JSON](#tab/json)
-**role** under "meeting" can be *Organizer*, *Presenter*, or *Attendee*.
+```http
+GET /v3/meetings/{meetingId}/participants/{participantId}?tenantId={tenantId}
+```
-**Example 1**
+The response body is:
```json { "user":{ "id":"29:1JKiJGPAX9TTxtGxhVo0wLx_zwzo-gG8Z-X03306vBwi9p-xMTEbDXsT6KH7-0kkTS8cD-2zkrsoV6f5WJ6_aYw",
- "aadObjectId":"6aebbad0-e5a5-424a-834a-20fb051f3c1a",
- "name":"Allan Deyoung",
- "givenName":"Allan",
- "surname":"Deyoung",
- "email":"Allan.Deyoung@microsoft.com",
- "userPrincipalName":"Allan.Deyoung@microsoft.com",
- "tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47",
+ "aadObjectId":"e236c4bf-88b1-4f3a-b1d7-8891dfc332b5",
+ "name":"Bob Young",
+ "givenName":"Bob",
+ "surname":"Young",
+ "email":"Bob.young@microsoft.com",
+ "userPrincipalName":"Bob.young@microsoft.com",
+ "tenantId":"2fe477ab-0efc-4dfd-bde2-484374e2c373",
"userRole":"user" }, "meeting":{
@@ -106,61 +122,40 @@ GET /v3/meetings/{meetingId}/participants/{participantId}?tenantId={tenantId}
} ```
+* * *
+ #### Response codes
-**403**: The app is not allowed to get participant information. This will be the most common error response and is triggered when the app is not installed in the meeting such as when it is disabled by tenant admin or blocked during live site migration.
-**200**: Participant information successfully retrieved.
-**401**: Invalid token.
-**404**: Participant cannot be found.
-**500**: The meeting is either expired (more than 60 days since the meeting ended) or the participant does not have permissions based on their role.
+* **403**: The app is not allowed to get participant information. This is the most common error response and is triggered if the app is not installed in the meeting. For example, if the app is disabled by tenant admin or blocked during live site migration.
+* **200**: Participant information successfully retrieved.
+* **401**: Invalid token.
+* **404**: Participant cannot be found.
+* **500**: The meeting has either expired (more than 60 days since the meeting ended) or the participant does not have permissions based on their role.
+ **Coming Soon**
-**404**: the meeting has either expired or participant cannot be found.
+* **404**: The meeting has either expired or participant cannot be found.
+
-<!-- markdownlint-disable MD024 -->
### NotificationSignal API > [!NOTE] > When an in-meeting dialog is invoked, the same content will also be presented as a chat message.
-#### Request
-
-```http
-POST /v3/conversations/{conversationId}/activities
-```
- #### Query parameters |Value|Type|Required|Description| |---|---|----|---| |**conversationId**| string | Yes | The conversation identifier is available as part of bot invoke |
-#### Request payload
+#### Example
> [!NOTE] >
-> * In the requested payload below, the `completionBotId` parameter of the `externalResourceUrl`is an optional. It is the `Bot ID` that is declared in the manifest. The bot will receive a result object.
+The `completionBotId` parameter of the `externalResourceUrl` is optional in the requested payload example. `Bot ID` is declared in the manifest and the bot receives a result object.
> * The externalResourceUrl width and height parameters must be in pixels. Refer to the [design guidelines](design/designing-apps-in-meetings.md) to ensure the dimensions are within the allowed limits.
-> * The URL is the page loaded as an `<iframe>` inside the in-meeting dialog. The URL's domain must be in the app's `validDomains` array in your app manifest.
--
-# [JSON](#tab/json)
-
-```json
-{
- "type": "message",
- "text": "John Phillips assigned you a weekly todo",
- "summary": "Don't forget to meet with Marketing next week",
- "channelData": {
- "notification": {
- "alertInMeeting": true,
- "externalResourceUrl": "https://teams.microsoft.com/l/bubble/APP_ID?url=<url>&height=<height>&width=<width>&title=<title>&completionBotId=BOT_APP_ID"
- }
- },
- "replyToId": "1493070356924"
-}
-```
+> * The URL is the page loaded as an `<iframe>` in the in-meeting dialog. The domain must be in the app's `validDomains` array in your app manifest.
# [C#/.NET](#tab/dotnet)
@@ -192,17 +187,36 @@ replyActivity.channelData = {
await context.sendActivity(replyActivity); ```
-* * *
+# [JSON](#tab/json)
+
+```http
+POST /v3/conversations/{conversationId}/activities
+
+{
+ "type": "message",
+ "text": "John Phillips assigned you a weekly todo",
+ "summary": "Don't forget to meet with Marketing next week",
+ "channelData": {
+ "notification": {
+ "alertInMeeting": true,
+ "externalResourceUrl": "https://teams.microsoft.com/l/bubble/APP_ID?url=<url>&height=<height>&width=<width>&title=<title>&completionBotId=BOT_APP_ID"
+ }
+ },
+ "replyToId": "1493070356924"
+}
+```
-> [!IMPORTANT]
-> The URL in the content bubble (taskInfo URL) must be included in the [valid domains](../resources/schema/manifest-schema.md#validdomains) list included in the Teams app manifest.
+* * *
#### Response Codes
-**201**: activity with signal is successfully sent
-**401**: invalid token
-**403**: the app is not allowed to send the signal. In this case, the payload should contain more detail error message. There can be many reasons: app disabled by tenant admin, blocked during live site mitigation, etc.
-**404**: meeting chat doesn't exist
+* **201**: activity with signal is successfully sent
+* **401**: invalid token
+* **201**: Activity with signal is successfully sent.
+* **401**: Invalid token.
+* **403**: The app is unable to send the signal. This can happen due to various reasons such as the tenant admin disables the app, the app is blocked during live site migration, and so on. In this case, the payload contains a detailed error message.
+* **404**: Meeting chat doesn't exist.
+
## Enable your app for Teams meetings
@@ -211,9 +225,10 @@ await context.sendActivity(replyActivity);
The meetings app capabilities are declared in your app manifest via the **configurableTabs** -> **scopes** and **context** arrays. *Scope* defines to whom and *context* defines where your app will be available. > [!NOTE]
-> * Please use [Developer Preview manifest schema](../resources/schema/manifest-schema-dev-preview.md) to try this in your app manifest.
+> Please use [Developer Preview manifest schema](../resources/schema/manifest-schema-dev-preview.md) to try this in your app manifest.
```json+ "configurableTabs": [ { "configurationUrl": "https://contoso.com/teamstab/configure",
platform https://docs.microsoft.com/en-us/microsoftteams/platform/samples/app-templates https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/samples/app-templates.md
@@ -20,7 +20,7 @@ App templates are production-ready apps for Microsoft Teams that are community d
* **Customizable and extensible:** While all app templates are ready to deploy as they are, we provide the entire code base and deployment scripts so that you can easily customize or extend them to fit your unique needs. * **Detailed documentation & support:** All app templates are accompanied by end-to-end documentation on solution architecture, deployment, and configuration steps. The repositories are monitored as well, so please report any issues you encounter by raising an Issue on GitHub.
-## Ask Away &#9734;
+## Ask Away
Ask Away is a [Microsoft Teams bot](../bots/what-are-bots.md) that enables users to conduct Q&A (Question and Answer) sessions within Teams. Using the Ask Away bot, team members can submit and up-vote questions shared by colleagues allowing Q&A hosts to easily gather top-of-mind questions within a channel or chat. The bot can be used to conduct a real-time Q&A session in a Teams meeting and allows attendees to submit questions live via chat.
@@ -65,7 +65,7 @@ Book-a-room is a [Microsoft Teams bot](../bots/what-are-bots.md) that lets users
![Book-a-room demo](../assets/images/book-a-room.png)
-## Building Access &#9734;
+## Building Access
Building Access is a Microsoft [Power Platform](https://powerapps.microsoft.com/blog/now-in-preview-customize-teams-with-built-in-power-platform-capabilities/)-based app that supports the administration of building occupancy thresholds and social distancing norms by enabling facilities directors to manage, track, and report employee on-site presence. The app, built using Microsoft [Power Apps](/powerapps/powerapps-overview), and [Power Automate](/power-automate/getting-started), deeply integrates with Microsoft Teams and enables organizations to determine building readiness, establish eligibility criteria for on-site access, and gather insights for future planning.
@@ -88,7 +88,7 @@ The app provides an easy interface for all the team members to personally add an
[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-celebrations-app)
-## Checklist &#9734;
+## Checklist
Checklist is a custom Microsoft Teams [messaging extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to collaborate with your team by creating a shared checklist in a chat or channel. The app is supported across all Teams platform clients ΓÇö desktop, browser, iOS, and Android ΓÇö and is ready for deployment as part of your Microsoft 365 subscription.
@@ -100,6 +100,14 @@ Checklist is a custom Microsoft Teams [messaging extension](../messaging-extensi
:::column-end::: :::row-end:::
+## Classroom Drop-in &#9734;
+
+Classroom Drop-in is a Microsoft [Power Platform](https://powerapps.microsoft.com/blog/now-in-preview-customize-teams-with-built-in-power-platform-capabilities/)-based app that enables system leaders to find class teams (virtual classrooms) and add themselves or others to these class teams for a specified drop-in period, as needed. The app built using Microsoft [Power Apps](/powerapps/powerapps-overview) and [Power Automate](/power-automate/getting-started), deeply integrates with Microsoft Teams to ensure educational institutes can optimize their operations in a hybrid learning environment by providing access to relevant stakeholders for class teams per business requirements.
+
+[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-classroom-dropin)
+
+![Classroom drop-in request](../assets/images/classroom-drop-in-request.png)
+ ## Company Communicator The Company Communicator app enables corporate teams to create and send messages intended for multiple teams or large number of employees over chat allowing organization to reach employees right where they collaborate. Utilize this template for multiple scenarios such as new initiative announcements, employee onboarding, modern learning and development or organization-wide broadcasts.
@@ -112,7 +120,7 @@ It provides a foundation to build custom targeted communication capabilities suc
![jCompany Communicator compose box view](../assets/images/CompanyCommunicatorCompose.png)
-## Contact Group Lookup &#9734;
+## Contact Group Lookup
The Contact Group Lookup app provides a convenient and useful approach to creating, accessing, and managing your organization's contact groups (formerly known as distribution lists or communication groups). Users can quickly view and chat with group members, view member status, and create a group chat with selected members in the contact group, all within the Teams environment.
@@ -147,7 +155,26 @@ This app also enables easy sharing of images/GIFs/stickers across teams without
![Stickers app](../assets/images/stickers.png)
-## E-Prescriptions &#9734;
+## Employee Ideas &#9734;
+
+The Employee Ideas app is the PowerApps version of the Azure based Great Ideas app template. The app enables the Teams users to set up and configure an idea campaign. An idea campaign is a category for grouping ideas around common themes.
+
+Teams users can also perform following activities:
+* Configure a standard submission form that employees need to submit for each idea.
+* Review and manage the ideas and list of campaigns.
+* Modify and delete campaigns.
+* Review leader boards of ideas.
+* Vote for and share prioritized ideas.
+* Submit ideas for a campaign.
+* View other team member's idea.
+* Vote on most liked ideas.
+* Review the performance of their ideas compared with others within a campaign.
+
+[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-employeeideas)
+
+![Manage campaign view](../assets/images/employee-ideas-manage-campaigns.png)
+
+## E-Prescriptions
E-Prescriptions is a [Power Apps](/powerapps/maker/canvas-apps/embed-teams-app)-based app that enhances telemedicine and virtual care by automating the process of issuing e-prescriptions to patients. Medical professionals can quickly review appointments, generate e-prescriptions, and send emails with e-prescription attachments to patients directly within the Teams platform.
@@ -164,7 +191,7 @@ E-Prescriptions is a [Power Apps](/powerapps/maker/canvas-apps/embed-teams-app)-
:::column-end::: :::row-end:::
-## Employee Training &#9734;
+## Employee Training
Employee training is a Microsoft Teams app that enables organizers to easily publish, track, and promote learning and training events for your organization. With the app, event planners can send reminders and notifications to event registrants and employees can indicate interest in upcoming events, stay updated on current events, and share event details with colleagues via the Teams messaging extension.
@@ -206,7 +233,7 @@ Conversational Q&A bots are an easy way to provide answers to frequently asked q
> > &#x2714; Configure an answer with additional details to display as an [adaptive card](../task-modules-and-cards/cards/cards-reference.md#adaptive-card). >
-[**Get it on GitHub**](https://github.com/OfficeDev/microsoft-teams-apps-faqplusv2)
+[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-faqplusv2)
![FAQ Plus gif](../assets/images/FAQPlusEndUser.gif)
@@ -321,7 +348,30 @@ Incident Reporter is a [Microsoft Teams bot](../bots/what-are-bots.md) that opt
:::column-end::: :::row-end:::
-## New Employee Onboarding &#9734;
+## Inspection &#9734;
+
+ Inspection is a Microsoft Teams app that enables front line workers to inspect anything from locations to assets and equipments. For example, a retail store, manufacturing plant, or vehicles and machines. There are two apps in this solution, each intended for different types of users.
+
+The app empowers the front line workers to inspect an asset or area, to manage quality of products and services, or maintain safety at workplace. It facilitates communication between team members to address issues found during inspection. The app provides simple reports for managers to expedite issue resolution and highlight trends.
+
+[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-inspection)
+
+ ![Inspection overview](../assets/images/inspection-app.png)
++
+## Issue Reporting &#9734;
+
+The Issue Reporting app empowers the employees and managers to raise and manage issues. It consists of two apps, Issue reporting app for reporting issues and Manage Issues app for managing issues.
+
+The team managers use the Manage Issues app to configure the app experience, including the channel in which Microsoft Teams messages and Planner tasks are created by the app. Managers also use the app to create template forms to collect details when a user reports an issue. For example, review, edit, or delete issue template forms. The app can also be used to review team issues, report on issue history, and efficiently manage issue resolution.
+
+The employees use the Issue reporting app to log issues and details required to resolve them. The app is also used to modify and resolve existing issues and get a high-level view of individual or team issues.
+
+[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-issuereporting)
+
+![Issue reporting team view](../assets/images/issue-reporting-team-view.png)
+
+## 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 can be 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.
@@ -357,7 +407,7 @@ Open Badges is a Microsoft Teams app that enables individuals to earn digital le
:::column-end::: :::row-end:::
-## Poll &#9734;
+## Poll
Poll is a custom Microsoft Teams [messaging extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to quickly create and send polls in a chat or a channel to gather team opinions and preferences. The app is supported across all Teams platform clients ΓÇö desktop, browser, iOS, and Android ΓÇö and is ready for deployment as part of your Microsoft 365 subscription.
@@ -377,7 +427,22 @@ Quick Responses is a Microsoft Teams app that delivers a robust solution for eff
![Sample view of responses](../assets/images/quick-responses.png)
-## Reflect &#9734;
+## Rapid Assist &#9734;
+
+Rapid Assist is a Microsoft [Power Platform](https://powerapps.microsoft.com/blog/now-in-preview-customize-teams-with-built-in-power-platform-capabilities/) based app that allows customer facing associates to rapidly connect with the experts to get quick answers, search for information, follow up open requests, and allow experts to receive notifications to quickly get on a call to help answer questions. The app built using Microsoft [Power Apps](/powerapps/powerapps-overview) and [Power Automate](/power-automate/getting-started), deeply integrates with Microsoft Teams to enable organizations to easily connect frontline workers with corporate liaisons to resolve customer queries and deliver a great customer experience.
+
+[Get it on GitHub](https://github.com/OfficeDev/microsoft-teams-apps-rapid-assist)
+
+:::row:::
+ :::column span="":::
+ ![End user request interface](../assets/images/EndUserHome.png)
+ :::column-end:::
+ :::column span="":::
+ ![Expert request view](../assets/images/ExpertViewRequests.png)
+ :::column-end:::
+:::row-end:::
+
+## Reflect
Reflect is a custom Microsoft Teams [messaging extension](../messaging-extensions/what-are-messaging-extensions.md) app that provides a safe and inclusive resource for your team members to share the state of their emotional well-being with colleagues and/or group leaders directly within Teams. The app is available in channel, group, meeting, and 1:1 chats and the check-in response can be set to public, private-to-sender, or fully anonymous.
@@ -456,7 +521,7 @@ Scrums for Group Chat is a supportive scrum assistant that enables group chat me
![Scrums for Group Chat demo](https://raw.githubusercontent.com/wiki/OfficeDev/microsoft-teams-app-scrumstatus/images/StartScrum.jpg)
-## Share Now &#9734;
+## Share Now
The Share Now app promotes the positive exchange of information between colleagues by enabling your users to easily share content within the Teams environment. Users engage the app to share items of interest with team members, discover new shared content, set preferences, and bookmark favorites for later reading.
@@ -482,7 +547,7 @@ Staff Check-ins is a [Power Apps](/powerapps/powerapps-overview)-based app that
![Create check-in view](../assets/images/staff-check-ins-create.png)
-## Survey &#9734;
+## Survey
Survey is a custom Microsoft Teams [messaging extension](../messaging-extensions/what-are-messaging-extensions.md) app that enables you to create a survey in a chat or a channel to gather data and gain actionable insight. The app is supported across all Teams platform clients ΓÇö desktop, browser, iOS, and Android ΓÇö and is ready for deployment as part of your Microsoft 365 subscription.
@@ -494,7 +559,7 @@ Survey is a custom Microsoft Teams [messaging extension](../messaging-extensions
:::column-end::: :::row-end:::
-## Visitor Management &#9734;
+## Visitor Management
The Visitor Management app enables your organization and employees to easily and efficiently manage the on-site visitor process, directly from Microsoft Teams. The app enables employees to create visitor requests, centrally track a request status through the visitor dashboard, and receive real-time notifications when a visitor arrives.
@@ -511,7 +576,7 @@ The Visitor Management app enables your organization and employees to easily and
:::column-end::: :::row-end:::
-## Workplace Awards &#9734;
+## 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 (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.