Delen via


Toegang tot Microsoft Teams beperken wanneer frontlijnmedewerkers buiten dienst zijn

Overzicht

Werktijd is een functie waarmee beheerders de toegang tot Microsoft Teams kunnen beperken voor ploegenwerkers op mobiele Android- en iOS-apparaten. Deze besturingselementen zijn ontworpen voor BYOD-scenario's (Bring-Your-Own-Device) of speciale apparaatscenario's in bedrijfseigendom voor frontlinemedewerkers. Meer informatie over scenario's voor frontlineapparaten.

Met deze functie kunt u de toegang tot Teams blokkeren of een waarschuwingsbericht weergeven wanneer frontlijnmedewerkers die buiten dienst zijn Teams openen. Overweeg werktijd in te schakelen voor uw frontlijnmedewerkers als:

  • U maakt zich zorgen over frontlijnmedewerkers die buiten werkuren om loon vragen als ze toegang krijgen tot werk-apps.
  • Lokale wet- en regelgeving vereist dat u de toegang tot werk-apps beperkt wanneer werknemers buiten dienst zijn.

Hoe het werkt

Wanneer een frontlijnmedewerker in zijn of haar dienst inklokt en Teams opent, controleert de app of de werknemer in of uit dienst is.

  • Als de werknemer in dienst is, heeft deze toegang tot Teams.
  • Als de werkrol buiten dienst is wanneer Teams is geopend, ziet de werknemer een blok- of waarschuwingsscherm.
    • Als u een blokkeringsscherm hebt geconfigureerd, heeft de werknemer geen toegang tot Teams totdat deze zich heeft ingeklokt bij de dienst.
    • Als u een waarschuwingsscherm hebt geconfigureerd, kan de werknemer dit naar eigen goeddunken sluiten en kiezen of Teams moet worden gebruikt.
  • Als een werknemer Teams gebruikt tijdens het uitklokken, ziet de werknemer een blokkerings- of waarschuwingsscherm voor de app nadat deze is uitgeklokt.

Schermopname van het scherm Toegang blokkeren en het waarschuwingsscherm.

Naast werktijd wordt u aangeraden ook stiltetijd in te stellen om Teams-meldingen automatisch te dempen wanneer werknemers buiten dienst zijn.

Werktijd instellen

Volg deze stappen om werktijd in te schakelen voor uw frontlijn.

App-beveiligingsbeleid configureren voor Android en iOS

Gebruik Microsoft Intune app-beveiligingsbeleid om werktijd te configureren om de toegang tot Teams op Android- en iOS-apparaten te blokkeren of te waarschuwen. Zie voor meer informatie over beleidsinstellingen:

Uw personeelsbeheersysteem (WFM) verbinden met de workingTimeSchedule-API

Een toepassing maken

  1. Maak een toepassing in Microsoft Entra voor de Graph API workingTimeSchedule.

    Wanneer u uw toepassing registreert, moet u ervoor zorgen dat u de optie Accounts in deze organisatiemap alleen (één tenant) kiest, zodat alleen gebruikers in uw tenant de toepassing kunnen gebruiken. Zie Een toepassing registreren bij de Microsoft identity platform voor meer informatie.

  2. Voeg de verborgen toepassingsmachtiging toe voor het aanroepen van de Graph API met behulp van het vereiste bereik, Schedule-WorkingTime.ReadWrite.All.

    1. Meld u aan bij uw toepassing in de Azure Portal.

    2. Ga naar het tabblad Manifest . U ziet een JSON die de volledige definitie van uw toepassing bevat.

    3. Voeg aan het einde van het manifest de requiredResourceAccess eigenschap toe.

      Deze eigenschap geeft de set machtigingen op waartoe uw toepassing toegang nodig heeft. Met andere woorden, het bevat alle API's die uw toepassing kan aanroepen. Als deze eigenschap al aanwezig is in het manifest, heeft uw API er al enkele machtigingen aan verleend.

    4. Voeg in de requiredResourceAccess matrix een object toe met een id van 00000003-0000-0000-0000-c000-0000000000000000 om machtigingen van de Graph-toepassing op te geven.

      Als u al een object met dezelfde id in uw requiredResourceAccess matrix hebt, hoeft u alleen het volgende toe te voegen in de resourceAccess matrix:

      • Een object met de id van de nieuwe verborgen machtiging, 0b21c159-dbf4-4dbb-a6f6-490e412c716e.
      • Het type machtiging. In dit geval, Role.

      Hier volgt een voorbeeld van hoe het einde van het manifest eruit kan zien:

      {
        ...
        "preAuthorizedApplications": [],
        "publisherDomain": "microsoft.onmicrosoft.com",
        "replyUrlsWithType": [
          {
            "url": "https://localhost:44321/signin-oidc",
            "type": "Web"
          },
          {
            "url": "https://localhost:44321/",
            "type": "Web"
          }
        ],
        "requiredResourceAccess": [
          {
            "resourceAppId": "00000003-0000-0000-c000-000000000000",
            "resourceAccess": [
              {
                "id": "0b21c159-dbf4-4dbb-a6f6-490e412c716e",
                "type": "Role"
              }
            ]
          }
        ],
        "samlMetadataUrl": null,
        "signInUrl": null,
        "signInAudience": "AzureADMyOrg",
        "tags": [],
        "tokenEncryptionKeyId": null
      }
      
    5. Sla de wijzigingen op.

U moet een tenantbeheerder zijn om deze stap uit te voeren.

  1. Ga in uw browser naar https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={ClientAppId}& response_type=code&scope=https://graph.microsoft.com/.default.
  2. Vervang in de URL door ClientAppId uw app-id.
  3. Kies in het dialoogvenster Toestemming de optie Accepteren om tenantbrede beheerderstoestemming te verlenen voor de nieuwe verborgen machtiging voor de toepassing.

Graph aanroepen vanuit de toepassing

U kunt als volgt Graph-eindpunten aanroepen vanuit de toepassing met behulp van voorbeeldcode in C#.

  1. Maak een nieuw consoleproject met behulp van .NET 6 of .NET 7 SDK.

  2. Installeer het Microsoft.Identity.Client NuGet-pakket.

  3. Open het program.cs-bestand en kopieer en plak de volgende voorbeeldcode erin:

        using System.Text;
      using Microsoft.Identity.Client;
      var userId = "928bf23a-81e8-47c9-ad54-2c0206248afe";
      var path = Path.Combine(Path.GetTempPath(),
      "workingTimeTokenGenerator.txt");
    
      string? accessToken;
      if (!File.Exists(path) || (DateTime.UtcNow - new
      FileInfo(path).LastWriteTimeUtc).TotalMinutes > 59)
      {
        var clientId = "00001111-aaaa-2222-bbbb-3333cccc4444";
        var clientSecret = "Aa1Bb~2Cc3.-Dd4Ee5Ff6Gg7Hh8Ii9_Jj0Kk1Ll2";
        var tenantId = "cad3e174-69d3-4707-abd2-f527f45c367a";
        var scopes = new string[] { "00000003-0000-0000-c000-000000000000/.default" };
    
        var app = ConfidentialClientApplicationBuilder.Create(clientId)
          .WithClientSecret(clientSecret)
          .Build();
    
        var result = await app.AcquireTokenForClient(scopes)
          .WithAuthority(AzureCloudInstance.AzurePublic, tenantId)
          .ExecuteAsync();
    
        accessToken = result.AccessToken;
        File.WriteAllText(path, accessToken);
      }
      else
      {
        accessToken = File.ReadAllText(path);
      }
    
      int number;
    
      while (true)
      {
        Console.WriteLine("Press 1 for startWorkingTime, 2 for endWorkingTime.");
        var choice = Console.ReadLine();
        if (!Int32.TryParse(choice, out number) || !new[] { 1, 2}.Contains(number))
        {
          Console.WriteLine("Out-of-range election.");
          continue;
        }
    
        break;
      }
    
      Console.WriteLine("Performing request...");
      var httpClient = new HttpClient();
      var message = new HttpRequestMessage
      {
        Method = HttpMethod.Post,
        RequestUri = new
      Uri($"https://graph.microsoft.com/beta/users/{userId}/solutions/schedule/{(number == 1 ? "startWorkingTime" : "endWorkingTime")}")
      };
      message.Headers.Add("Authorization", $"Bearer {accessToken}");
      message.Content = new StringContent("", Encoding.UTF8,
      "application/json");
      var response = await httpClient.SendAsync(message);
      if (!response.IsSuccessStatusCode)
      {
        string? content = null;
        try
        {
          content = await response.Content?.ReadAsStringAsync();
        }
        catch
        {
        }
    
        Console.WriteLine($"Graph returned a non success status code: 
      {response.StatusCode}. Reason phrase: {response.ReasonPhrase}." +
          (content is null ? "Unable to get the response body." :
      $"Content: {content}"));
      }
      else
      {
        Console.WriteLine($"Graph returned a success status code: 
      {response.StatusCode}.");
      }
    
      Console.WriteLine("Press any key to exit.");
      _ = Console.ReadKey();
    
  4. Wijzig het volgende in de code:

    • tenantId: Vervang door uw tenant-id.
    • clientId: Vervang door de id van uw toepassing.
    • clientSecret: U moet een clientgeheim toevoegen in de verificatiesectie van uw toepassing. U kunt er ook voor kiezen om een beveiligingscertificaat te gebruiken en de code dienovereenkomstig te wijzigen.
    • userId: Vervang door de gebruiker waarop u het beleid inWorkingTime of outOfWorkingTime wilt toepassen.

Stiltetijd instellen

Deze stap is optioneel, maar wordt aanbevolen.

Configureer beleid voor stiltetijd in Intune om Teams-meldingen automatisch te dempen voor frontlijnmedewerkers tijdens vrije uren. Meer informatie over het maken van beleidsregels voor stiltetijd.

Veelgestelde vragen

Moet ik de Shifts-app in Teams gebruiken om van deze functie te profiteren?

Nee, deze functie is afhankelijk van het klok-in-/uitsignaal van uw WFM.

Kan ik werktijd gebruiken als ik geen in-/uitkloksysteem heb?

Nee, er is een klok-in-/uit-signaal vereist om deze functie te kunnen gebruiken.