Del via


Opprett en egendefinert integrering for å synkronisere administrasjonssystemet for arbeidsstyrken med Skift

Oversikt

Integrer Skift, planlegg administrasjonsappen i Microsoft Teams, med systemet for administrasjon av arbeidsstyrken (WFM). Med denne integreringen kan arbeidsstyrken i frontlinjen vise og administrere tidsplanene direkte i Skift.

Denne artikkelen veileder deg gjennom hvordan du oppretter en kobling ved hjelp av Microsoft Graph-API-en for å legge til rette for denne integreringen.

Du kan konfigurere integreringen for enten en enveis datasynkronisering eller en toveis datasynkronisering.

  • Enveissynkronisering (WFM system til Skift): I dette oppsettet kan du planlegge at data i WFM-systemet synkroniseres til Skift. Koblingen leser dataene i WFM-systemet og skriver dem til Skift. Eventuelle endringer som er gjort i Skift av brukere, gjenspeiles imidlertid ikke i WFM systemet.

  • Toveis synkronisering (WFM system og skift): Dette oppsettet tillater en toveis synkronisering. Planlegg at data i WFM-systemet synkroniseres til Skift, og eventuelle endringer som gjøres i skift av brukere, synkroniseres tilbake til WFM-systemet. Koblingen validerer og godkjenner endringene brukerne gjør i Skift i henhold til forretningsregler som håndheves av WFM-systemet før endringene skrives til Skift.

Obs!

Hvis du bruker UKG Pro WFM, Blue Yonder WFM eller Reflexis WFM, kan du også bruke en administrert kobling til å integrere Skift med WFM systemet. Hvis du vil ha mer informasjon, kan du se Skift-koblinger.

Terminologi som brukes i denne artikkelen

Begrep Beskrivelse
kobling En app som synkroniserer tidsplandata mellom WFM-systemet og Skift.
integrering av arbeidsstyrken En enhet som definerer krypteringsmetoden for kommunikasjon, tilbakeringingsnettadressen for koblingen og Skift-enhetene som skal synkroniseres.

Før du starter

Forutsetninger

  • Bestem hvilke data du vil synkronisere i henhold til dine forretningsbehov.
  • Forstå godkjennings- og godkjenningskonseptene i Microsofts identitetsplattform. Se grunnleggende om godkjenning og autorisasjon.
  • Admin nødvendige roller:
    • Minst en administrator for skyprogram for å registrere en app i Microsoft Entra administrasjonssenter
    • Global administrator for å registrere integrering av arbeidsstyrken

Bli kjent med integreringsprosessen

Her er en oversikt over integreringstrinnene. Se gjennom denne informasjonen for å få en forståelse av den generelle prosessen, inkludert hvem som utfører hvert trinn.

Trinn Enveissynkronisering Toveis synkronisering Hvem som utfører dette trinnet
1 Opprett koblingen: Opprett koblingen: Developer
2 Registrere en app i Microsoft Entra administrasjonssenter Registrere en app i Microsoft Entra administrasjonssenter En konto som minst er administrator for skyprogram
3 Opprett team og tidsplaner for synkronisering Opprett team og tidsplaner for synkronisering Utvikler- eller Teams-administrator
4 Registrer deg og aktiver integrering av arbeidsstyrken: Registrer deg og aktiver integrering av arbeidsstyrken: Trinn 4a: Global administrator
Trinn 4b: Utvikler

Trinn 1: Opprett koblingen

Gjør følgende for å opprette koblingen:

Trinn 1a: Synkroniser endringer gjort i Skift til WFM-systemet

Hvis du vil konfigurere koblingen til å motta og behandle forespørsler fra Skift, må du implementere følgende endepunkter:

Fastslå url-adressen og URL-adressene for endepunktet

Den grunnleggende URL-adressen (webhook) er {url}/v{apiVersion}, der url og apiVersion er egenskapene du angir i workforceIntegration-objektet når du registrerer integreringen av arbeidsstyrken.

De relative banene til URL-adressene for endepunktet er som følger:

  • /forbinde: /connect
  • /oppdatering: /teams/{teamid}/update
  • /lese: /teams/{teamid}/read

Hvis for eksempel URL-adressen er https://contosoconnector.com/wfi og apiVersion er 1:

  • Den grunnleggende URL-adressen er https://contosoconnector/com/wfi/v1.
  • /connect-endepunktet er https://contosoconnector/wfi/v1/connect.
  • /update-endepunktet er https://contosoconnector/wfi/v1/teams/{teamid}/update.
  • /read-endepunktet er https://contosoconnector/wfi/v1/teams/{teamid}/read.

Kryptering

Alle forespørsler krypteres ved hjelp av AES-256-CBC-HMAC-SHA256. Du angir den delte hemmelige nøkkelen når du registrerer integreringen av arbeidsstyrken. Svar som sendes tilbake til Skift, bør ikke krypteres.

Endepunktene

POST /connect

Skift kaller dette endepunktet for å teste tilkoblingen når du registrerer integreringen av arbeidsstyrken. Et vellykket svar returneres bare hvis dette endepunktet returnerer et HTTP-svar 200 OK .

Eksempel

Anmodning
ConnectRequest

{
   "tenantId": "a1s2s355-a2s3-j7h6-f4d3-k2h9j4mqpz",
   "userId": "4fbc12d7-1234-56ef-8a90-bc123d45678f"
}

Svar
Returner HTTP 200 OK

POST /teams/{teamid}/update

Skift kaller dette endepunktet for å få godkjenning når en endring gjøres i en Shifts-enhet i en tidsplan som er aktivert for integrering av arbeidsstyrken. Hvis dette endepunktet godkjenner forespørselen, lagres endringen i Skift.

Siden WFM systemet er systemet for post, bør den først prøve å gjøre endringen i det WFM systemet når koblingen mottar en forespørsel til dette endepunktet. Hvis endringen er vellykket, returnerer du vellykket. Ellers returneres feil.

Skift kaller dette endepunktet for hver endring (inkludert endringer startet fra koblings-/WFM systemet). Hvis koblingen sendte en oppdatering til Skift ved hjelp av Graph API og la til toppteksten X-MS-WFMPassthrough: workforceIntegratonId , vil forespørselen som kommer til dette endepunktet, ha samme topptekst, som lar deg identifisere og håndtere disse forespørslene på riktig måte. Du kan for eksempel returnere suksess uten å gjøre den samme endringen i det WFM systemet som det ville vært overflødig, og kan føre til at koblingen blir sittende fast i en uendelig løkke.

Diagrammet nedenfor viser flyten av data.

Diagram som viser flyten for oppdateringer fra Skift til WFM-systemet.

Obs!

Hvis du vil ha mer informasjon om forespørsels- og svarmodeller, kan du se WfiRequest i delen referanse for endepunkt i denne artikkelen.

Returner svarkode
Ethvert svar fra integreringen, inkludert en feil, må ha en HTTP-svarkode 200 OK. Svarteksten må ha statusen og feilmeldingen som gjenspeiler riktig feiltilstand for delanrop. Ethvert svar fra integreringen annet enn 200 OK det som behandles som en feil og returneres til anroperen (klient eller Microsoft Graph).

Hvis du vil konfigurere en enveissynkronisering, gjør du Skift skrivebeskyttet

For en enveissynkronisering må du skrivebeskytte Skift slik at brukere ikke kan gjøre endringer i Skift. Hvis du vil gjøre Skift skrivebeskyttet, returnerer du et mislykket svar for alle forespørsler fra Skift.

Hvis du for eksempel vil blokkere brukere fra å gjøre endringer i skift i tidsplanen, må dette endepunktet returnere et feilsvar når det mottar en forespørsel om en shift enhet.

Eksempel

Anmodning
WfiRequestContainer

Følgende eksempel viser en forespørsel fra Skift som spør om et skift, hvis ID er SHFT_12345678-1234-1234-1234-1234567890ab og har egenskapene oppført i brødteksten, kan lagres i Skift. Denne forespørselen ble utløst når en bruker oppretter et skift i Skift.

{
  "requests": [
    {
      "id": "SHFT_12345678-1234-1234-1234-1234567890ab",
      "method": "POST",
      "url": "/shifts/SHFT_12345678-1234-1234-1234-1234567890ab",
      "headers": {
        "X-MS-Transaction-ID": "1",
        "X-MS-Expires": "2024-10-11T21:27:59.0134605Z"
      },
      "body": {
        "draftShift": {
          "activities": [],
          "isActive": true,
          "startDateTime": "2024-10-12T15:00:00.000Z",
          "endDateTime": "2024-10-12T17:00:00.000Z",
          "theme": "Blue"
        },
        "isStagedForDeletion": false,
        "schedulingGroupId": "TAG_a3e0b3f1-4a5c-4c2e-8eeb-5b8c3d1e3f8b",
        "userId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
        "createdDateTime": "2024-10-11T21:27:28.762Z",
        "lastModifiedDateTime": "2024-10-11T21:27:28.762Z",
        "lastModifiedBy": {
          "user": {
            "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "displayName": "Adele Vance"
          }
        },
        "id": "SHFT_12345678-1234-1234-1234-1234567890ab"
      }
    }
  ]
}

Svar
WfiResponse

Vellykket: Returner HTTP 200 OK

Dette eksemplet viser svaret som returneres hvis endepunktet godkjente forespørselen. I dette scenarioet lagres skiftet i Skift, og brukeren kan se skiftet i tidsplanen.

{
  "responses": [
    {
      "id": "SHFT_12345678-1234-1234-1234-1234567890ab",
      "status": 200,
      "body": {
        "eTag": "3f4e5d6c-7a8b-9c0d-1e2f-3g4h5i6j7k8l",
        "error": null,
        "data": null
      }
    }
  ]
}

Feil: Returner HTTP 200 OK

Dette eksemplet viser svaret som returneres hvis endepunktet avviste forespørselen. I dette scenarioet får brukeren feilmeldingen «Kan ikke legge til skiftet» i Skift.

{
    "responses": [
        {
            "id": "SHFT_12345678-1234-1234-1234-1234567890ab",
            "status": 500,
            "body": {
                "error": {
                    "code": "500",
                    "message": “Could not add the shift”
                },
                "data": null
            }
        }
    ]
}
POST /teams/{teamid}/read

Dette endepunktet håndterer forespørsler fra Skift for å hente kvalifiserte årsaker til fri eller kvalifiserte skift for bytteforespørsler for en bruker.

Obs!

Fra og med oktober 2024 støttes dette endepunktet bare i betaversjonen av Microsoft Graph-API-en. Du må også angi verdier for egenskapen eligibilityFilteringEnabledEntities når du registrerer integreringen av arbeidsstyrken.

Diagrammet nedenfor viser flyten av data.

Diagram som viser flyten for forespørsler om kvalifiseringsfiltrering.

Returner svarkode
Ethvert svar fra integreringen, inkludert en feil, må ha en HTTP-svarkode 200 OK. Svarteksten må inneholde statusen og feilmeldingen som gjenspeiler riktig feiltilstand for delanrop. Ethvert svar fra integreringen annet enn 200 OK det som behandles som en feil og returneres til anroperen (klient eller Microsoft Graph).

Eksempel: TimeOffReason

Anmodning

Følgende eksempel viser en forespørsel fra Skift som spør hvilke årsaker til at en bruker (bruker-ID aa162a04-bec6-4b81-ba99-96caa7b2b24d) er kvalifisert for. Denne forespørselen ble utløst når brukeren ber om fri i Skift.

 { 
  "requests": [ 
    { 
      "id": "aa162a04-bec6-4b81-ba99-96caa7b2b24d", 
      "method": "GET", 
      "url": "/users/aa162a04-bec6-4b81-ba99-96caa7b2b24d/timeOffReasons?requestType=TimeOffReason"
    } 
  ] 
}

Svar
Vellykket: Returner HTTP 200 OK

Følgende svar viser at de kvalifiserte fridag-ID-ene for brukeren er «TOR_29f4a110-ae53-458b-83d6-00c910fe2fbc» og «TOR_8c0e8d07-ac1a-48dc-b3af-7bc71a62ff7d». I dette scenarioet ser brukeren de tilsvarende årsakene til fri i Skift.

{
    "responses": [ 
      { 
        "id": "aa162a04-bec6-4b81-ba99-96caa7b2b24d", 
        "status": 200, 
        "body": { 
          "data": [ 
            "TOR_29f4a110-ae53-458b-83d6-00c910fe2fbc", 
            "TOR_8c0e8d07-ac1a-48dc-b3af-7bc71a62ff7d" 
          ], 
          "error": null 
          } 
        }
    ]
}

Feil: Returner HTTP 200 OK

I dette eksemplet returneres et feilsvar fordi koblingen ikke kan nå WFM systemet for å hente årsaker til fri for brukeren.

 {
  "responses": [
    {
      "id": "aa162a04-bec6-4b81-ba99-96caa7b2b24d",
      "status": 503,
      "body": {
        "data": null,
        "error": {
          "code": "503",
          "message": "Could not reach WFM"
        }
      }
    }
  ]
}
Eksempel: SwapRequest

Anmodning

Følgende eksempel viser en forespørsel fra Skift som spør hvilke skift som er kvalifisert for et bytte med skiftet hvis ID er SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029 mellom 2024-10-01T04:00:00.000000Z og 2024-11-01T03:59:59.9990000Z.

{
  "requests": [
    {
      "id": "SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029",
      "method": "GET",
      "url": "/shifts/SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029/requestableShifts?requestType=SwapRequest&startTime=2024-10-01T04:00:00.0000000Z&endTime=2024-11-01T03:59:59.9990000Z"
    }
  ]
}

Svar
Vellykket: Returner HTTP 200 OK

Følgende svar viser at skiftet kan byttes med skiftet hvis ID er SHFT_98e96e23-966b-43be-b90d-4697037b67af.

{ 
  "responses": [ 
    { 
      "id": "SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029", 
      "status": 200, 
      "body": { 
        "data": ["SHFT_98e96e23-966b-43be-b90d-4697037b67af"],
        "error": null, 
      } 
    }
  ]
}

Feil: Returner HTTP 200 OK

I dette eksemplet returneres et feilsvar fordi koblingen ikke kunne nå WFM-systemet for å hente kvalifiserte skift for en bytteforespørsel for brukeren.

{
  "responses": [
    {
      "id": "SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029",
      "status": 503,
      "body": {
        "data": null,
        "error": {
          "code": "503",
          "message": "could not reach WFM"
        }
      }
    }
  ]
}

Trinn 1b: Synkronisere data fra WFM systemet til Skift

Bruk Skift-API-er i Microsoft Graph til å lese tidsplandata fra WFM-systemet og skrive dataene til Skift.

Hvis du for eksempel vil legge til et skift i Skift, bruker du API-en opprett skift .

Se Microsoft Graph API v1.0-referansen for Shifts-API-er, som er oppført under Skift-administrasjon.

Obs!

Toppteksten MS-APP-ACTS-AS kreves i forespørsler og må inneholde ID-en (GUID) til brukeren appen din handler på vegne av. Vi anbefaler at du bruker bruker-ID-en til en teameier når du oppdaterer tidsplanen.

Diagrammet nedenfor viser flyten av data.

Diagram som viser flyten for synkronisering av data fra WFM systemet til Skift.

Første synkronisering

For den første synkroniseringen skal koblingen lese data i WFM-systemet og skrive dataene til Skift. Vi anbefaler at du synkroniserer to uker med fremtidige data.

Etter den første synkroniseringen

Etter den første synkroniseringen kan du velge å:

  • Oppdater skift synkront med endringer i WFM systemet: Send en oppdatering til Skift for hver endring som er gjort i WFM systemet.

  • Oppdater skift med endringer i WFM-systemet asynkront: Utfør en periodisk synkronisering ved å skrive alle endringer som oppstod i WFM-systemet innen en bestemt tidsramme (for eksempel 10 minutter) til Skift.

    Alle skriveoperasjoner til Skift, inkludert skriveoperasjoner initiert av koblingen, utløser et kall til koblingens /update-endepunkt. Vi anbefaler at du inkluderer toppteksten X-MS-WFMPassthrough: workforceIntegratonId i alle skriveanrop, slik at koblingen kan identifisere og håndtere dem på riktig måte. Hvis for eksempel WFM-systemet startet endringen, må du godkjenne den uten å bruke en oppdatering på WFM-systemet.

    Obs!

    Hvis du konfigurerer koblingen for en toveis synkronisering av data mellom WFM-systemet og Skift, utelater du endringer som er startet fra Skift i den periodiske synkroniseringen. Disse endringene er allerede skrevet i Skift.

Trinn 2: Registrere en app i Microsoft Entra administrasjonssenter

Følg disse trinnene for å registrere en app for koblingen i Microsofts identitetsplattform, konfigurere tillatelser for appen for å få tilgang til Microsoft Graph og få et tilgangstoken.

  1. Logg deg på Microsoft Entra administrasjonssenter som minst en administrator for skyprogram.

  2. Registrer appen. Hvis du vil ha en fremgangsmåte, kan du se Registrere et program med Microsofts identitetsplattform.

  3. Tilordne schedule.ReadWrite.All-programtillatelsene til appen for bare apptilgang, og få et tilgangstoken.

    Hvis du vil ha trinnvis veiledning, kan du se Få tilgang uten en bruker.

    Tilgangstokenet bekrefter at appen er autorisert til å ringe Microsoft Graph ved hjelp av sin egen identitet ved hjelp av tillatelsen Schedule.ReadWrite.All . Den må inkluderes i godkjenningshodet for forespørsler.

Trinn 3: Opprett team og tidsplaner for synkronisering

Konfigurer teamene i Teams som du vil synkronisere. Du kan bruke eksisterende team eller opprette nye team.

  1. Konfigurer team i Teams for å samsvare med teamene og plasseringene i WFM systemet. Sørg for at du legger til følgende personer i hvert team:

    • Frontline-ledere som lageiere. Kontroller at du legger til brukeren i toppteksten MS-APP-ACTS-AS som teameier for hvert enkelt team.
    • Frontline arbeidere som teammedlemmer.
  2. Opprett en tidsplan i Skift for hvert team. Hvis du vil ha mer informasjon, kan du se Opprette eller erstatte tidsplanen.

  3. Legg til tidsplangrupper i tidsplanen for hvert team. Tidsplangrupper brukes til å gruppere ansatte basert på vanlige egenskaper i en gruppe. Tidsplangrupper kan for eksempel være avdelinger eller jobbtyper. Hvis du vil ha mer informasjon, kan du se planleggingsgruppens ressurstype.

  4. Legg til ansatte i hver tidsplangruppe. Hvis du vil ha mer informasjon, kan du se Erstatt planleggingsgruppe.

Obs!

Du kan også bruke administrasjonssenteret for Teams til å konfigurere teamene og distribuere skift til teamene. Hvis du vil lære mer, kan du se:

Trinn 4: Registrere og aktivere integrering av arbeidsstyrken

En integrering av arbeidsstyrken definerer krypteringsinnstillingene for kommunikasjon mellom Skift og koblingen, nettadressen for tilbakeringinger fra Skift og enhetstypene som skal synkroniseres.

Følg disse trinnene for å registrere og aktivere integrering av arbeidsstyrken:

Trinn 4a: Registrere integrering av arbeidsstyrken i leieren

Du må være global administrator for å utføre dette trinnet.

Bruk API-en Create workforceIntegration til å registrere integreringen av arbeidsstyrken i leieren.

Her er et eksempel på en forespørsel.

POST https://graph.microsoft.com/v1.0/teamwork/workforceIntegrations/
{ 
  "displayName": "Contoso integration", 
  "apiVersion": 1, 
  "encryption": { 
    "protocol": "sharedSecret", 
    "secret": "secret-value" 
  }, 
  "isActive": true, 
  "url": "https://contosoconnector.com/wfi", 
  "supportedEntities": "Shift,SwapRequest,UserShiftPreferences,Openshift,OpenShiftRequest,OfferShiftRequest”,
}

Se tabellen nedenfor for mer informasjon. Hvis du vil ha mer informasjon, kan du se ressurstypen workforceIntegration.

Eiendom Mer informasjon
apiVersion API-versjon for url-adressen for tilbakeringing. Den grunnleggende URL-adressen består av url-egenskapen og denne egenskapen.
Kryptering Sett protokollen til sharedSecret. Den hemmelige verdien må inneholde nøyaktig 64 tegn.

Bruk hemmeligheten til å dekryptere de krypterte JSON-nyttelastene som sendes til koblingens endepunkt fra Skift. Nyttelasten krypteres ved hjelp av AES-256-CBC-HMAC-SHA256. Appen skal trygt opprettholde denne hemmeligheten. For eksempel i et nøkkelhvelv.
supportedEntities Angi Skift-enhetene du vil at koblingen skal støtte for synkronisering. Skift kaller koblingens /update-endepunkt når noen av disse enhetene endres, slik at du kan godkjenne eller avvise endringen. Hvis du vil se listen over mulige verdier, kan du se ressurstypen workforceIntegration

Notat Denne listen er en opplisting som kan utvikles. Du må bruke Prefer: include-unknown-enum-members forespørselshodet til å hente alle verdiene.
eligibilityFilteringEnabledEntities Obs! Fra og med oktober 2024 støttes dette endepunktet bare i betaversjonen av Microsoft Graph-API-en.

Angi Skift-enhetene du vil koble til, for å støtte filtrering av kvalifisering. Mulige verdier er:
  • none: Tom liste
  • SwapRequests: Skift kaller koblingens /lese-endepunkt for å få en filtrert liste over skift en bruker kan velge mellom for en bytteforespørsel.
  • TimeOffReasons: Skift kaller koblingens /lese-endepunkt for å få en filtrert liste over tidsavbruddsgrunner en bruker kan velge mellom når de ber om fri.
Notat Denne listen er en opplisting som kan utvikles. Du må bruke Prefer: include-unknown-enum-members forespørselshodet til å hente alle verdiene.
url-adresse Nettadressen for integrering av arbeidsstyrken for tilbakeringinger fra Skift. Den grunnleggende URL-adressen består av denne egenskapen og apiVerson-egenskapen .

Trinn 4b: Aktiver integrering av arbeidsstyrken for teamplanene dine

Aktiver integreringen av arbeidsstyrken på tidsplanene du vil administrere. Hvis du vil gjøre dette, kan du bruke API-en opprett eller erstatt tidsplan for å opprette eller oppdatere tidsplanen for teamene dine.

Her er et eksempel på en forespørsel.

POST https://graph.microsoft.com/v1.0/teams/{teamId}/schedule
{
  enabled: true,
  timezone: “America/New_York”,
  workforceIntegrationIds: [ “workforceIntegrationId”]
}
  • Angi workforceIntegrationId som ble generert da du registrerte integreringen av arbeidsstyrken.
  • Du kan aktivere maksimalt én integrering av arbeidsstyrken etter en tidsplan. Hvis du inkluderer mer enn én workforceIntegrationId i forespørselen, brukes den første.

Feilsøking

Kobling

Når koblingen svarer på en forespørsel fra Skift, hva skjer hvis den returnerer en annen svarkode enn 200? Gjør det en forskjell hvis den returnerer en annen status enn 200 i svarteksten?

Det er en forskjell mellom disse to scenariene.

  • Hvis koblingen returnerer en annen svarkode enn 200, prøver Skift å prøve endepunktene /read og /update flere ganger på nytt. Til slutt viser Skift en «Noe gikk galt. Integreringsoppsettet for arbeidsstyrken i teamet ditt har svart med ugyldige data.» Feilmelding.
  • Hvis koblingen returnerer en annen status enn 200 i svarteksten, viser Skift en «Noe gikk galt. Beklager, men endringen kan ikke fullføres», feilmelding og slutter å prøve endepunktene på nytt.

Hva skjer hvis koblingen returnerer ugyldige data i svarteksten?

Skift prøver å prøve endepunktene /read og /update flere ganger på nytt. Til slutt viser Skift en «Noe gikk galt. Integreringen av arbeidsstyrken som er konfigurert i teamet, har svart med ugyldige data.» Feilmelding.

Hvordan identifisere om forespørselen opprinnelig ble gjort i Skift eller i det WFM systemet for å forhindre en uendelig løkke?

Legg til toppteksten i X-MS-WFMPassthrough: workforceIntegratonId alle oppkall og oppdateringer for å identifisere/ignorere endringene som utløses av koblingen. Dette toppteksten brukes til å angi at forespørselen utføres på grunn av et tidligere kall som ble gjort av koblingen til Graph API for å synkronisere data fra WFM-systemet til Skift.

Registrering av integrering av arbeidsstyrken

Jeg registrerte integreringen av arbeidsstyrken og spesifiserte «eligibilityFilteringEnabledEntities», inkludert «SwapRequest, OfferShiftRequest og TimeOffReason», men svarteksten viser ikke listen «eligibilityFilteringEnabledEntities».

Kvalifiseringsfiltrering støttes for øyeblikket gjennom https://graph.microsoft.com/beta endepunktet, ikke https://graph.microsoft.com/v1 endepunktet.

Jeg registrerte integreringen av arbeidsstyrken og la til «supportedEntities», men fikk et svar på 400 Bad Request og en «Invalid payload: Requested value 'shift, ....' ble ikke funnet.» melding

Kontroller at hver Shifts-enhet i brødteksten for listeforespørselen supportedEntities starter med en stor bokstav. For eksempel "supportedEntities":"Shift,SwapRequest,OpenShift".

Jeg registrerte integreringen av arbeidsstyrken og implementerte endepunktene /connect, /update og /read, men webhooken fungerer ikke.

Kontroller at integreringen av arbeidsstyrken er aktivert for teamets tidsplan. Kontroller i tillegg at egenskapene url og apiVersion er riktige.

Endepunktreferanse

Anmodning

ConnectRequest

Eiendom Type: Beskrivelse
tenantId Streng ID for leieren for integrering av arbeidsstyrken
userId Streng ID-en til brukeren for integrering av arbeidsstyrken
{
  "tenantId": "string",
  "userId": "string"
}

WfiRequestContainer

Eiendom Type: Beskrivelse
Forespørsler WfiRequest-samling Liste over WfiRequests
{
  "requests": [
    {
      "id": "string",
      "method": "string",
      "url": "string",
      "headers": {
        "X-MS-Transaction-ID": "string",
        "X-MS-Expires": "string (DateTime)"
      },
      "body": "ShiftsEntity"
    }
  ]
}

Antall elementer i en forespørsel:

  • I de fleste tilfeller har en forespørsel ett element.
  • Noen forespørsler, for eksempel godkjenning av bytteskiftforespørsel, har fem elementer: én PUT-bytteforespørsel, to DELETE-skift (eksisterende skift) og to POST-skift (nye skift).

WfiRequest

Eiendom Type: Beskrivelse
id Streng ID for enheten
metode Streng Metoden startet på elementet. Eksempel: , POST, PUTGET, . DELETE
url-adresse Streng Angir typen enhets- og operasjonsdetaljer.
Topptekst WfiRequestHeader Topptekst
kropp ShiftsEntity Brødtekst for enheten som er relatert til forespørselen.
For POST /teams/{teamId}/update
Eiendom Type: Beskrivelse
id Streng ID for enheten
metode Streng POST for å opprette en enhet, PUT for å oppdatere en enhet, DELETE for å slette en enhet.
url-adresse Streng Formatet er /{EntityType}/{EntityId}. Mulige verdier for {EntityType} er shifts, , timeoffReasonsswapRequests, openshifts, openshiftrequests, offershiftrequests, timesofftimeOffRequests. For eksempel /shifts/SHFT_12345678-1234-1234-1234-1234567890ab.
Topptekst WfiRequestHeader Topptekst
kropp ShiftsEntity Må samsvare {EntityType} i url-egenskapen . Bruk en av skift, swapShiftsChangeRequest, timeOffReason, openshift, openShiftChangeRequest, offerShiftRequests, timeOff, timeOffRequest. For eksempel /shifts/SHFT_12345678-1234-1234-1234-1234567890ab.
For POST /teams/{teamsId}/read
Eiendom Type: Beskrivelse
id Streng ID for enheten
metode Streng Er alltid GET.
url-adresse Streng
  • TimeOffReasons: Formatet er /users/{userId}/timeOffReasons?requestType=TimeOffReason. For eksempel /users/aa162a04-bec6-4b81-ba99-96caa7b2b24d/timeOffReasons?requestType=TimeOffReason.
  • SwapRequest: Formatet er /shifts/{ShiftsId}/requestableShifts?requestType=SwapRequest\u0026startTime={startTime}\u0026endTime={endTime}. For eksempel shifts/SHFT_1132430e-365e-4dc5-b8b0-b800592a81a8/requestableShifts?requestType=SwapRequest\u0026startTime=2024-10-01T07:00:00.0000000Z\u0026endTime=2024-11-01T06:59:59.9990000Z.
Topptekst WfiRequestHeader Topptekst
kropp ShiftsEntity Er alltid null.

WfiRequestHeader

Eiendom Type: Beskrivelse
X-MS-Transaction-ID Streng Transaksjons-ID
X-MS-Utløper Streng (DateTime) Dato/klokkeslett for transaksjonsutløp

X-MS-WFMPassthrough: workforceIntegratonId inkluderes ikke i WfiRequestHeader. Det bør trekkes ut fra HttpRequest.

Svar

WfiResponseContainer

Eiendom Type: Beskrivelse
Svar WfiResponse-samling Liste over WfiResponses
{
  "responses": [
    {
      "id": "string",
      "status": "string",
      "body": {
        "eTag": "string",
        "error": {
          "code": "string",
          "message": "string"
        },
        "data": ["string1", "string2"]
      }
    }
  ]
}

WfiResponse

Eiendom Type: Beskrivelse
id Streng ID for enheten
status Streng Resultatet av operasjonen
kropp WfiResponseBody WfiResponseBody

WfiResponseBody

Eiendom Type: Beskrivelse
eTag Streng eTag
feil WfiResponseError Detaljer om feilen
data Streng De forespurte dataene (for leseforespørsler)

WfiResponseError

Eiendom Type: Beskrivelse
kode Streng Feilkode
melding Streng Feilmelding