Jaa


Rajoita Microsoft Teamsin käyttöoikeuksia, kun etulinjan työntekijät ovat poissa työvuorosta

Yleiskatsaus

Työaika on ominaisuus, jonka avulla järjestelmänvalvojat voivat rajoittaa Microsoft Teamsin käyttöä android- ja iOS-mobiililaitteiden vuorotyöntekijöille. Nämä ohjausobjektit on suunniteltu tuo oman laitteen (BYOD) tai yrityksen omistamien laitteiden skenaarioihin etulinjan työntekijöille. Lue lisätietoja etulinjan laiteskenaarioita.

Tämän ominaisuuden avulla voit estää Teamsin käytön tai näyttää varoitusviestin, kun vuorossa olevat etulinjan työntekijät avaavat Teamsin. Harkitse työajan käyttöönottoa etulinjan työvoimalle, jos:

  • Olet huolissasi siitä, että etulinjan työntekijät pyytävät palkkaa työajan ulkopuolella, jos he käyttävät työsovelluksia.
  • Paikalliset lait ja määräykset edellyttävät, että rajoitat työsovellusten käyttöä, kun työntekijät ovat poissa vuorosta.

Miten se toimii?

Kun etulinjan työntekijä kirjautuu vuoroonsa ja avaa Teamsin, sovellus tarkistaa, onko työntekijä vuorossa vai poissa vuorosta.

  • Jos työntekijä on vuorossa, hän voi käyttää Teamsia.
  • Jos työntekijä on poissa työvuorosta Teamsin ollessa avoinna, työntekijä näkee lohko- tai varoitusnäytön.
    • Jos olet määrittänyt lohkonäytön, työntekijä ei voi käyttää Teamsia, ennen kuin hän kirjautua sisään vuoroonsa.
    • Jos olet määrittänyt varoitusnäytön, työntekijä voi hylätä sen ja valita, käytetäänkö Teamsia oman harkintansa mukaan.
  • Jos työntekijä käyttää Teamsia ulos kirjautuessaan ulos, työntekijä näkee sovellukselle lohko- tai varoitusnäytön uloskuittauksen jälkeen.

Näyttökuva estä käyttö -näytöstä ja varoitusnäytöstä.

Työajan lisäksi suosittelemme, että määrität myös hiljaisen ajan, jotta Teamsin ilmoitukset vaimennetaan automaattisesti, kun työntekijät ovat poissa työvuorosta.

Määritä työaika

Ota työaika käyttöön etulinjassa noudattamalla näitä ohjeita.

Sovellusten suojauskäytäntöjen määrittäminen Androidille ja iOS:lle

Microsoft Intune sovellusten suojauskäytäntöjen avulla voit määrittää työajan, joka estää Tai varoittaa Teamsin käyttöä Android- ja iOS-laitteissa. Lisätietoja käytäntöasetuksista on seuraavissa tiedoissa:

Työvoimanhallintajärjestelmän (WFM) yhdistäminen workingTimeSchedule-ohjelmointirajapintaan

Luo sovellus

  1. Luo sovellus Microsoft Entra workingTimeSchedule Graph -ohjelmointirajapinnalle.

    Kun rekisteröit sovelluksesi, varmista, että valitset Tilit vain tässä organisaatiohakemistossa (Yksittäinen vuokraaja) -vaihtoehdon, jotta vain vuokraajasi käyttäjät voivat käyttää sovellusta. Lisätietoja on artikkelissa Sovelluksen rekisteröiminen Microsoftin käyttäjätietoympäristö.

  2. Lisää piilotetun sovelluksen käyttöoikeus Graph-ohjelmointirajapinnan kutsumiseen vaaditulla käyttöalueella, Schedule-WorkingTime.ReadWrite.All.

    1. Kirjaudu sisään sovellukseesi Azure-portaali.

    2. Siirry Luettelotiedosto-välilehteen . Näkyviin tulee JSON, joka sisältää sovelluksesi täydellisen määrityksen.

    3. Lisää requiredResourceAccess ominaisuus luettelotiedoston loppuun.

      Tämä ominaisuus määrittää käyttöoikeudet, joihin sovelluksesi edellyttää käyttöoikeuksia. Toisin sanoen se sisältää kaikki ohjelmointirajapinnat, joita sovelluksesi voi kutsua. Jos tämä ominaisuus on jo luettelossa, ohjelmointirajapinnallesi on jo myönnetty joitakin käyttöoikeuksia.

    4. requiredResourceAccess Lisää matriisin sisällä objekti, jonka tunnus 00000003-0000-0000-0000-c000-0000000000000000 on , jotta voit määrittää Graph-sovelluksen käyttöoikeudet.

      Jos matriisissasi on jo objekti, jolla on sama tunnus requiredResourceAccess , sinun tarvitsee lisätä matriisiin vain seuraavat resourceAccess :

      • Objekti, jolla on uuden piilotetun käyttöoikeuden tunnus, 0b21c159-dbf4-4dbb-a6f6-490e412c716e.
      • Käyttöoikeuden tyyppi. Tässä tapauksessa. Role

      Tässä on esimerkki siitä, miltä luettelon loppu voisi näyttää:

      {
        ...
        "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. Tallenna muutokset.

Tämän vaiheen suorittaminen edellyttää, että olet vuokraajan järjestelmänvalvoja.

  1. Siirry selaimessa osoitteeseen https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={ClientAppId}& response_type=code&scope=https://graph.microsoft.com/.default.
  2. Korvaa ClientAppId URL-osoitteessa sovellustunnuksesi.
  3. Valitse suostumusvalintaikkunassa Hyväksy , jos haluat myöntää vuokraajan laajuisen järjestelmänvalvojan suostumuksen sovelluksen uudelle piilotetulle käyttöoikeudelle.

Kutsu Graphia sovelluksesta

Näin voit kutsua Graphin päätepisteitä sovelluksesta käyttämällä esimerkkikoodia C#:ssä.

  1. Luo uusi konsoliprojekti .NET 6:n tai .NET 7 SDK:n avulla.

  2. Asenna NuGet-paketti Microsoft.Identity.Client .

  3. Avaa program.cs tiedosto ja kopioi ja liitä siihen seuraava esimerkkikoodi:

        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. Muuta koodissa seuraavaa:

    • tenantId: Korvaa vuokraajatunnuksellasi.
    • clientId: Korvaa sovelluksesi tunnuksella.
    • clientSecret: Sinun on lisättävä asiakassalaisuus sovelluksesi todennusosioon . Voit myös käyttää suojausvarmennetta ja muuttaa koodia vastaavasti.
    • userId: Korvaa käyttäjällä, jolle haluat ottaa käyttöön inWorkingTime- tai outOfWorkingTime-käytännön.

Hiljaisen ajan määrittäminen

Tämä vaihe on valinnainen, mutta sitä suositellaan.

Määritä Intune hiljaisen ajan käytännöt, jotta voit automaattisesti vaimentaa Teams-ilmoitukset etulinjan työntekijöille työajan ulkopuolella. Lue lisätietoja hiljaisen ajan käytäntöjen luomisesta.

Usein kysytyt kysymykset

Onko minun käytettävä Teamsin Shifts-sovellusta, jotta voin hyödyntää tätä ominaisuutta?

Ei, tämä ominaisuus käyttää WFM kellon sisään- ja ulos-signaalia.

Voinko käyttää työaikaa, jos käytössä ei ole sisään- tai uloskellojärjestelmää?

Ei. Tämän ominaisuuden käyttäminen edellyttää sisään- ja ulostulosignaalia.