Git Product home page Git Product logo

microsoft-teams-apps-classroom-dropin's Introduction

page_type products description urlFragment
sample
Power Apps
Power Automate
SharePoint
Power Apps solution that enables system leaders to drop-in to the class and observe how teachers and students are doing. They can also use this app to add any substitute teacher for short duration.
microsoft-teams-apps-classroom-dropin

Classroom Drop-in App Template

Documentation Deployment guide Architecture

As learning has moved online, system leaders have a hard time monitoring what’s going on in the virtual classroom. They need a way to drop-in and observe how teachers and students are doing. Also, there is a need to provide temporary access to substitute teachers.

In Classroom Drop-in, system leaders can find classrooms and add themselves to it with a specified drop-in period. This will add them to corresponding team or class. They can also assign others (substitute teachers, evaluators etc.) to a class for a short period, as needed.

DropInWelcome

SelectSchool

DropInSetting

DropInChatNotification

While the app comes with several innovative features, we hope it is easy for you to extend, enhance and adapt it for your needs since this is built using our low-code Power Platform. The app has several configuration settings that can be leveraged to customize the solution without any code changes.

Here are a few key features:

  • Admin/Teacher/User can create drop-In with the help of "New drop-in" tab and extend/delete drop-ins with the help of "My active drop-in" tab.
  • Classroom Drop-in app provides ability to search schools and teams or classes to drop in.
  • For every drop-in, app sends notification to admin as well dropped-in user.
  • Admin or System Leader can drop-in self or someone else.
  • After specified time of drop-in, the access will get revoked from assigned user and the user will get notification for the same.

Legal notice

This app template is provided under the MIT License terms. In addition to these terms, by using this app template you agree to the following:

  • You, not Microsoft, will license the use of your app to users or organization.
  • This app template is not intended to substitute your own regulatory due diligence or make you or your app compliant with respect to any applicable regulations, including but not limited to privacy, healthcare, employment, or financial regulations.
  • You are responsible for complying with all applicable privacy and security regulations including those related to use, collection and handling of any personal data by your app. This includes complying with all internal privacy and security policies of your organization if your app is developed to be sideloaded internally within your organization. Where applicable, you may be responsible for data related incidents or data subject requests for data collected through your app.
  • Any trademarks or registered trademarks of Microsoft in the United States and/or other countries and logos included in this repository are the property of Microsoft, and the license for this project does not grant you rights to use any Microsoft names, logos or trademarks outside of this repository. Microsoft’s general trademark guidelines can be found here.
  • If the app template enables access to any Microsoft Internet-based services (e.g., Office365), use of those services will be subject to the separately-provided terms of use. In such cases, Microsoft may collect telemetry data related to app template usage and operation. Use and handling of telemetry data will be performed in accordance with such terms of use.
  • Use of this template does not guarantee acceptance of your app to the Teams app store. To make this app available in the Teams app store, you will have to comply with the submission and validation process, and all associated requirements such as including your own privacy statement and terms of use for your app.

Getting started

Begin with the Solution overview to read about what the app does and how it works. When you're ready to try out Classroom Drop-in, or to use it in your own organization, follow the steps in the Deployment guide.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com. When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

microsoft-teams-apps-classroom-dropin's People

Contributors

microsoft-github-operations[bot] avatar microsoftopensource avatar surbhijainmsft avatar v-smahaj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

microsoft-teams-apps-classroom-dropin's Issues

SDS integration?

In the presentation it was mentioned that the documentation would be updated by the end of last week to include SDS integration. It's still not here. Any ETA?

GettingTeamName&IdFlow should pull SDS data

The documentation mentions that we have to manually add the teacher and school name to each class. With over 16,000 classes that can change daily, there is no way that users are going to be able to manage that. How about pulling the information that is already in SDS for the school, teacher and Team name?

Powershell Code revision

The original code uses Get-Team to get the ID and then runs it again to get the name, which is not required.
I have also worked on the code to find the first owner that is a member of the group to populate the Teacher column, and populate the School column from AD.
We use the Office field in AD as the School name for Outlook address book purposes.
I'm using Connect-MicrosoftTeams, Connect-MsolService, and Connect-AzureAD for other powershell commands.

I've also combined the 2 scripts into one, and added an extra check whether the TeamID already exists, that should probably be forced as unique field in the list?

`
$SiteUrl = "https://[domain]/sites/ClassroomDropIn"
$ListName = "Teams"
$CSVPath = "c:\temp\TeamsData.csv"

Connect-MicrosoftTeams
Connect-MsolService
Connect-AzureAD

$AllTeamsInOrg = Get-Team | Select GroupID,DisplayName
#$AllTeamsInOrg

$TeamList = @()

foreach ($Item in $AllTeamsInOrg)
{
$OwnerEmail = (Get-AzureADGroupOwner -ObjectId $Item.GroupId | where {$.UserType -eq 'Member'})[0].UserPrincipalName # UserPrincipalName should be the email address and will avoid errors with duplicate DisplayNames
$School = Get-MsolUser -UserPrincipalName $OwnerEmail | select -ExpandProperty Office # Populate the office field in AD so School can be assigned
$SchoolID = (Get-PnPListItem -List Schools | where {$
["Title"] -eq $School}).ID # Get the ID number of the School from the Schools list
$This = "" | select-Object TeamName, TeamObjectID, TeamOwner, TeamSchool # $This will contain the details for each Team found and then add to an array to create the csv
$This.TeamName = $Item.DisplayName
$This.TeamObjectID = $Item.GroupID
$This.TeamOwner = $OwnerEmail
$This.TeamSchool = $SchoolID
$TeamList += $This
}

$TeamList | export-csv $CSVPath -NoTypeInformation

#=================================================

Connect-PnPOnline $SiteUrl

$CSVData = Import-CsV -Path $CSVPath
ForEach ($Row in $CSVData)
{
if ((Get-PnPListItem -List $Listname | where {$_["TeamID"] -eq $($Row.TeamObjectID)}) -eq $null) # check if a Team already exists with this GroupID
{
Add-PnPListItem -List $ListName -Values @{
"Title" = $($Row.TeamName);
"TeamID" = $($Row.TeamObjectID);
"Teacher" = $($Row.TeamOwner);
"School" = $($Row.TeamSchool);
};
}
}

`

Drop in cancel

Hi, we're having trouble with cancelling drop ins, in our flows we get a 403 Forbidden error. Insufficient privileges to complete the operation.
{
"error": {
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
"innerError": {
"date": "2021-06-01T00:34:15",
"request-id": "removed for security",
"client-request-id": "removed for security"
}
}
}
No problems with adding or extending, I notice in the flow for Drop-In Cancel, it is trying to target the O365 group and in the Drop-In flow once the timer has been reached it is target the Team URL to remove the user. Is this right?
Drop-In Cancel Flow:
https://graph.microsoft.com/v1.0/groups/@{outputs('Get_item')?['body/TeamID']}/owners/@{outputs('Get_user_profile_(V2)')?['body/id']}/$ref
Drop In Flow
https://graph.microsoft.com/v1.0/teams/@{variables('TeamID')}/members/@{body('Parse_results_of_adding_Owner_3')?['id']}

Power App Import error

Hi
When attempting to import the power-app in step 4 i get the error:
The request failed with error: '{"error":{"code":"MalformedFlowAssetFlowDefinition","message":"The flow definition for asset 'c1839949-7c7a-4e71-b9e1-22a77c2babb5' could not be deserialized."}}'. The tracking Id is '9379fa2a-e04d-49d8-8386-4e1d1c311452'.

Do you know what this means?
I have followed the instructions by replacing SharePoint URL and GUID in the definition.json file then dragging it back into the zip fle.

[Action Needed] This repo is inactive

This GitHub repository has been identified as a candidate for archival

This repository has had no activity for more than 2 years. Long periods of inactivity present security and code hygiene risks. Archiving will not prevent users from viewing or forking the code. A banner will appear on the repository alerting users that the repository is archived.

Please see https://aka.ms/sunsetting-faq to learn more about this process.

Action

✍️

❗**If this repository is still actively maintained, please simply close this issue. Closing an issue on a repository is considered activity and the repository will not be archived.🔒

If you take no action, this repository is still inactive 30 days from today it will be automatically archived..

Need more help? 🖐️

Drop in Flow error

Getting and message 'The dynamic operation request to API 'sharepointonline' operation 'GetTable' failed with status code 'Unauthorized'. This may indicate invalid input parameters. Error response: { "error_description": "Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown." }'.

This is when I go into Power Apps and go to Import. Thanks.

SDS

Hi,
Would Classroom DropIn work with my school.
We use SDS.

Thanks

Run the SharePoint List deployment flow

Hi, we have a quick question were are stuck validating the flow it never goes from running to succeed. We get this error message but we do not know how to fix it. If any could help it would be great. Thanks in advance,
Captura111

Drop in flow issue

Flow save failed with code 'WorkflowOperationParametersExtraParameter' and message 'The API operation does not contain a definition for parameter 'item/IsOwner'.'. For some reason I can't get this worked out. I am pretty sure it has to do with the "Log' list permission settings" the second part of this step calls for "Add your logged-in user that is performing the setup to the 'Permissions' list, and set IsAdmin to True. More users can be added at a later time. In 'Permissions' list ,'Title' field is not used but requires information. It can be bogus text for all this solution cares." However on my end I have no option to set IsAdmin to True I just set to full control
image

No data returned from Schools Form

I have added an entry into the SharePoint schools list but no data is returned in PowerApps select a school, search school - no errors either.
powerapps Capture

Setting up the importdatasflow

Hi when setting up the importdatasflow I cent the following error:

Flow save failed with code 'MultipleErrorsOccurred' and message 'The dynamic operation request to API 'excelonlinebusiness' operation 'GetTable' failed with status code 'NotFound'. This may indicate invalid input parameters. Error response: { "status": 404, "message": "Item not found\r\nclientRequestId: c271a8e8-a5e9-4913-b9f5-e4a309acd4de\r\nserviceRequestId: a492fc7a-7c1a-4795-b844-977a1336bf0e", "error": { "message": "Item not found" }, "source": "excelonline-uks.logic-ase-uksouth.p.azurewebsites.net" };The dynamic operation request to API 'excelonlinebusiness' operation 'GetTable' failed with status code 'NotFound'. This may indicate invalid input parameters. Error response: { "status": 404, "message": "Item not found\r\nclientRequestId: c271a8e8-a5e9-4913-b9f5-e4a309acd4de", "error": { "message": "Item not found" }, "source": "excelonline-uks.logic-ase-uksouth.p.azurewebsites.net" }'.

Gary

GettingTeamName&IdFlow only pulls 100 teams

The flow GettingTeamName&IdFlow only pulls 100 teams. My district has over 16,000. While I could run the flow 160 times, it only pulls the same 100 out causing mass duplication.

ClassroomDrop-in.zip App Upload

Hi,

I am trying to upload the zip toe create the app in Power Apps and after connecting it to the correct resources I get the following error? The following image gives details on the error. I have the lists inside of the SharePoint site setup.

Capture

Unable to update definitions

Step 4 requires the editing of the definitions file in the flows folder. I have created this updated definitions and have not extracted the information from the zip. When attempting the method of drag and dropping the new definitions to the zip I get the error file not found no read permissions. Any ideas on what I am doing wrong?

Powershell Script - Step 9 - Recommendation

Hello,

In Step 9 of the Deployment guide, you have a Powershell script to get all the teams in a tenant and a foreach loop to go through them all, but as part of that for each loop, you are getting the entire list again, just to try to find the one you are looking for.

If you are running this in a tenant with 1,000 teams active, then it is going to pull the entire list of a 1,000 Teams, 1,000 times which is very wasteful, and if left this way, could take a while to complete

Your Code (ForEach loop):

Foreach ($Team in $AllTeamsInOrg) { $TeamGUID = $Team.ToString() $TeamName = (Get-Team | ?{$_.GroupID -eq $Team}).DisplayName $TeamList = $TeamList + [PSCustomObject]@{TeamName = $TeamName; TeamObjectID = $TeamGUID} }

Instead you can change it to the following.
Foreach ($Team in $AllTeamsInOrg) { $TeamGUID = $Team.ToString() $TeamName = (Get-Team -GroupId $TeamGUID).DisplayName $TeamList = $TeamList + [PSCustomObject]@{TeamName = $TeamName; TeamObjectID = $TeamGUID} }

All I have done here is change the $TeamName variable to instead search via GUID instead of pulling all the teams just to find the 1 it is looking for, with us already having that from the variable above it.

Step 8: Adding data to 'Schools' & 'Timeslot' list

Error when importing "ImportingDataflows"
Flow save failed with code 'MultipleErrorsOccurred' and message 'The dynamic operation request to API 'excelonlinebusiness' operation 'GetTable' failed with status code 'NotFound'. This may indicate invalid input parameters. Error response: { "status": 404, "message": "Item not found\r\nclientRequestId: 5b45bab8-d62e-4ff6-b107-8d8a5b259430\r\nserviceRequestId: 0b3f920f-dd11-4195-b98d-f755c4e3d784", "error": { "message": "Item not found" }, "source": "excelonline-ase.azconn-ase.p.azurewebsites.net" };The dynamic operation request to API 'excelonlinebusiness' operation 'GetTable' failed with status code 'NotFound'. This may indicate invalid input parameters. Error response: { "status": 404, "message": "Item not found\r\nclientRequestId: 5b45bab8-d62e-4ff6-b107-8d8a5b259430", "error": { "message": "Item not found" }, "source": "excelonline-ase.azconn-ase.p.azurewebsites.net" }'.

Issue with Data Flow

I'm getting an error message on Step 4 - Import the App - I get this error message on the Data Flow:
Flow save failed with code 'DynamicOperationRequestClientFailure' and message 'The dynamic operation request to API 'sharepointonline' operation 'GetTable' failed with status code 'NotFound'. This may indicate invalid input parameters. Error response: { "status": 404, "message": "List not found\r\nclientRequestId: d5622a97-5e53-497a-8b20-2686b59afb1e\r\nserviceRequestId: d5622a97-5e53-497a-8b20-2686b59afb1e" }'.

Any ideas what we're doing wrong please?

Flow for Drop checks for email address

Hi,

I am having a problem with the flows when trying to book a slot. Our pupils don't have email access and when running the flow to schedule a Drop-In it checks for existing membership. However as the pupils don't have email addresses the flow fails... any way around this?

Thanks

scheduled drop-in doesn't show

Hi,... we manage to deploy the app but list of scheduled drop-ins are not showing.

Screenshot 2021-04-20 at 11 39 13 AM

Screenshot 2021-04-20 at 11 45 49 AM

Would you be able to direct us where might be the issue.

Synchronising with School Data Sync

Hello,

I recently watched a webinar that stated the Classroom Drop-in application can use the team list that School Data Sync creates. Can you point me in the direction for the information on this please.

Thank you,

Paul

SharePoint list result size is limited to 500 items when using the API in PowerApps.

SharePoint Lists have a maximum return size of 500 results using the API, this means I only see 500 Teams and so can only select Teams listed in the first 500 results. Generally, schools who need this PowerApp have large amounts of Teams so the 500 limit isn'y usable.

Is there a way to use a Flow to return the list of Teams from the SharePoint list? That would get around the 500 limit.

Incorrect Instructions?

When following Step 4 I open the definitions.json file from the "ImportingDatasFlow.zip\Microsoft.Flow\flows\202bc30c-4b52-4a30-83c3-f26cf792b32b" and do a search for both “8af07276-8e0b-4b02-9809-20b2f7afb5a3” & "8deff760-4871-486c-a5fd-571cdc53eba3” but there are no matches so I can't replace them with the GUID's from my school and timeslot.

Inside the json file is also a tennant id? does this need updating or am I missing something?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.