Een aangepaste integratie maken om uw personeelsbeheersysteem te synchroniseren met Shifts
Overzicht
Integreer Shifts, de planningsbeheer-app in Microsoft Teams, met uw systeem voor personeelsbeheer (WFM). Met deze integratie kunnen uw frontlinemedewerkers hun planningen rechtstreeks in Shifts bekijken en beheren.
In dit artikel wordt uitgelegd hoe u een connector maakt met behulp van de Microsoft Graph API om deze integratie te vergemakkelijken.
U kunt uw integratie instellen voor een gegevenssynchronisatie in één richting of een gegevenssynchronisatie in twee richtingen.
Eenrichtingssynchronisatie (WFM systeem naar Shifts): in deze installatie worden planningsgegevens in uw WFM-systeem gesynchroniseerd met Shifts. De connector leest de gegevens in uw WFM systeem en schrijft deze naar Shifts. Wijzigingen die door gebruikers in Shifts zijn aangebracht, worden echter niet doorgevoerd in uw WFM systeem.
Synchronisatie in twee richtingen (WFM systeem en Shifts): met deze instelling kunt u een synchronisatie in twee richtingen uitvoeren. Planningsgegevens in uw WFM systeem worden gesynchroniseerd met Shifts en eventuele wijzigingen die door gebruikers in Shifts zijn aangebracht, worden terug gesynchroniseerd met uw WFM systeem. De connector valideert en keurt de wijzigingen die gebruikers aanbrengen in Shifts goed volgens bedrijfsregels die worden afgedwongen door uw WFM systeem voordat de wijzigingen naar Shifts worden geschreven.
Opmerking
Als u UKG Pro WFM, Blue Yonder WFM of Reflexis WFM gebruikt, kunt u ook een beheerde connector gebruiken om Shifts te integreren met uw WFM systeem. Zie Shifts-connectors voor meer informatie.
Terminologie die in dit artikel wordt gebruikt
Term | Beschrijving |
---|---|
connector | Een app die planningsgegevens synchroniseert tussen uw WFM-systeem en Shifts. |
personeelsintegratie | Een entiteit die de versleutelingsmethode voor communicatie, de callback-URL voor uw connector en de Shifts-entiteiten definieert die moeten worden gesynchroniseerd. |
Voordat u begint
Vereisten
- Bepaal welke gegevens u wilt synchroniseren op basis van de behoeften van uw bedrijf.
- Inzicht in de verificatie- en autorisatieconcepten in de Microsoft identity platform. Zie Basisbeginselen van verificatie en autorisatie.
- Beheer rollen vereist:
- Ten minste een cloudtoepassingsbeheerder om een app te registreren in de Microsoft Entra-beheercentrum
- Globale beheerder om de integratie van het personeel te registreren
Raak vertrouwd met het integratieproces
Hier volgt een overzicht van de integratiestappen. Bekijk deze informatie om inzicht te krijgen in het algehele proces, inclusief wie elke stap uitvoert.
Stap | Synchronisatie in één richting | Synchronisatie in twee richtingen | Wie voert deze stap uit |
---|---|---|---|
1 | Uw connector maken:
|
Uw connector maken:
|
Developer |
2 | Een app registreren in de Microsoft Entra-beheercentrum | Een app registreren in de Microsoft Entra-beheercentrum | Een account dat ten minste een cloudtoepassingsbeheerder is |
3 | Teams en planningen maken voor synchronisatie | Teams en planningen maken voor synchronisatie | Ontwikkelaar of Teams-beheerder |
4 | Registreer en schakel de integratie van het personeel in: | Registreer en schakel de integratie van het personeel in: | Stap 4a: Globale beheerder Stap 4b: Ontwikkelaar |
Stap 1: uw connector maken
Voer de volgende stappen uit om uw connector te maken:
- Stap 1a: wijzigingen in Shifts synchroniseren met uw WFM systeem
- Stap 1b: gegevens van uw WFM-systeem synchroniseren met Shifts
Stap 1a: wijzigingen in Shifts synchroniseren met uw WFM systeem
Als u uw connector wilt instellen voor het ontvangen en verwerken van aanvragen van Shifts, moet u de volgende eindpunten implementeren:
Uw basis-URL en eindpunt-URL's bepalen
De basis-URL (webhook) is {url}/v{apiVersion}
, waarbij URL en apiVersion de eigenschappen zijn die u instelt in het workforceIntegration-object wanneer u de personeelsintegratie registreert.
De relatieve paden van de eindpunt-URL's zijn als volgt:
- /verbinden:
/connect
- /update:
/teams/{teamid}/update
- /lezen:
/teams/{teamid}/read
Als url bijvoorbeeld is https://contosoconnector.com/wfi
en apiVersion is 1
:
- De basis-URL is
https://contosoconnector/com/wfi/v1
. - Het eindpunt /connect is
https://contosoconnector/wfi/v1/connect
. - Het /update-eindpunt is
https://contosoconnector/wfi/v1/teams/{teamid}/update
. - Het /read-eindpunt is
https://contosoconnector/wfi/v1/teams/{teamid}/read
.
Versleuteling
Alle aanvragen worden versleuteld met AES-256-CBC-HMAC-SHA256. U geeft de gedeelde geheime sleutel op wanneer u de integratie van het personeel registreert. Antwoorden die naar Shifts worden teruggestuurd, mogen niet worden versleuteld.
Eindpunten
POST /connect
Shifts roept dit eindpunt aan om de verbinding te testen wanneer u de integratie van het personeel registreert. Een geslaagd antwoord wordt alleen geretourneerd als dit eindpunt een HTTP-antwoord 200 OK
retourneert.
Voorbeeld
Verzoek
ConnectRequest
{
"tenantId": "a1s2s355-a2s3-j7h6-f4d3-k2h9j4mqpz",
"userId": "4fbc12d7-1234-56ef-8a90-bc123d45678f"
}
Antwoord
HTTP retourneren 200 OK
POST /teams/{teamid}/update
Shifts roept dit eindpunt aan om goedkeuring te krijgen wanneer een wijziging wordt aangebracht in een Shifts-entiteit in een planning die is ingeschakeld voor de integratie van het personeel. Als dit eindpunt de aanvraag goedkeurt, wordt de wijziging opgeslagen in Shifts.
Aangezien uw WFM systeem het systeem van record is, moet de connector eerst proberen de wijziging aan te brengen in het WFM systeem wanneer de connector een aanvraag voor dit eindpunt ontvangt. Als de wijziging is geslaagd, retourneert u geslaagd. Anders retourneert u een fout.
Shifts roept dit eindpunt aan voor elke wijziging (inclusief wijzigingen die zijn geïnitieerd vanuit het connector-/WFM-systeem). Als de connector een update naar Shifts heeft verzonden met behulp van Graph API en de X-MS-WFMPassthrough: workforceIntegratonId
header heeft toegevoegd, heeft de aanvraag die naar dit eindpunt komt dezelfde header, zodat u deze aanvragen op de juiste manier kunt identificeren en afhandelen. Retourneer bijvoorbeeld succes zonder dezelfde wijziging aan te brengen in het WFM-systeem als deze redundant zou zijn en ertoe kan leiden dat de connector vastloopt in een oneindige lus.
In het volgende diagram ziet u de gegevensstroom.
Opmerking
Zie WfiRequest in de sectie Eindpuntverwijzing van dit artikel voor meer informatie over aanvraag- en antwoordmodellen.
Antwoordcode retourneren
Elk antwoord van de integratie, inclusief een fout, moet een HTTP-antwoordcode 200 OK
hebben. De hoofdtekst van het antwoord moet de status en het foutbericht hebben die de juiste foutstatus van de sub-aanroep aangeven. Elk antwoord van de integratie anders dan 200 OK
wordt behandeld als een fout en geretourneerd naar de aanroeper (client of Microsoft Graph).
Als u een synchronisatie in één richting wilt instellen, maakt u Shifts alleen-lezen
Voor een synchronisatie in één richting moet u Shifts alleen-lezen maken, zodat gebruikers geen wijzigingen kunnen aanbrengen in Shifts. Als u Shifts alleen-lezen wilt maken, retourneert u een foutreactie voor alle aanvragen van Shifts.
Als u bijvoorbeeld wilt voorkomen dat gebruikers wijzigingen aanbrengen in shifts in de planning, moet dit eindpunt een foutreactie retourneren wanneer het een aanvraag met betrekking tot een shift
entiteit ontvangt.
Voorbeeld
Verzoek
WfiRequestContainer
In het volgende voorbeeld ziet u een aanvraag van Shifts waarin wordt gevraagd of een dienst, waarvan de id SHFT_12345678-1234-1234-1234-123467890ab en de eigenschappen heeft die in hoofdtekst worden vermeld, kan worden opgeslagen in Shifts. Deze aanvraag is geactiveerd wanneer een gebruiker een shift maakt in Shifts.
{
"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"
}
}
]
}
Antwoord
WfiResponse
Geslaagd: HTTP retourneren 200 OK
In dit voorbeeld ziet u het antwoord dat wordt geretourneerd als het eindpunt de aanvraag heeft goedgekeurd. In dit scenario wordt de dienst opgeslagen in Shifts en kan de gebruiker de dienst in de planning zien.
{
"responses": [
{
"id": "SHFT_12345678-1234-1234-1234-1234567890ab",
"status": 200,
"body": {
"eTag": "3f4e5d6c-7a8b-9c0d-1e2f-3g4h5i6j7k8l",
"error": null,
"data": null
}
}
]
}
Fout: HTTP retourneren 200 OK
In dit voorbeeld ziet u het antwoord dat is geretourneerd als het eindpunt de aanvraag heeft geweigerd. In dit scenario ontvangt de gebruiker het foutbericht 'Kan de dienst niet toevoegen' in Shifts.
{
"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
Dit eindpunt verwerkt aanvragen van Shifts om in aanmerking komende verlofredenen of in aanmerking komende diensten voor wisselaanvragen voor een gebruiker op te halen.
Opmerking
Vanaf oktober 2024 wordt dit eindpunt alleen ondersteund in de bètaversie van de Microsoft Graph API. U moet ook waarden opgeven voor de eigenschap eligibilityFilteringEnabledEntities wanneer u de personeelsintegratie registreert.
In het volgende diagram ziet u de gegevensstroom.
Antwoordcode retourneren
Elk antwoord van de integratie, inclusief een fout, moet een HTTP-antwoordcode 200 OK
hebben. De hoofdtekst van het antwoord moet de status en het foutbericht bevatten die de juiste foutstatus van de sub-aanroep aangeven. Elk antwoord van de integratie anders dan 200 OK
wordt behandeld als een fout en geretourneerd naar de aanroeper (client of Microsoft Graph).
Voorbeeld: TimeOffReason
Verzoek
In het volgende voorbeeld ziet u een aanvraag van Shifts waarin wordt gevraagd voor welke verlofredenen een gebruiker (gebruikers-id aa162a04-bec6-4b81-ba99-96caa7b2b24d) in aanmerking komt. Deze aanvraag is geactiveerd wanneer de gebruiker verlof aanvraagt in Shifts.
{
"requests": [
{
"id": "aa162a04-bec6-4b81-ba99-96caa7b2b24d",
"method": "GET",
"url": "/users/aa162a04-bec6-4b81-ba99-96caa7b2b24d/timeOffReasons?requestType=TimeOffReason"
}
]
}
Antwoord
Geslaagd: HTTP retourneren 200 OK
In het volgende antwoord ziet u dat de in aanmerking komende reden-id's voor verlof voor de gebruiker 'TOR_29f4a110-ae53-458b-83d6-00c910fe2fbc' en 'TOR_8c0e8d07-ac1a-48dc-b3af-7bc71a62ff7d' zijn. In dit scenario ziet de gebruiker de bijbehorende verlofredenen om uit te kiezen in Shifts.
{
"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
}
}
]
}
Fout: HTTP retourneren 200 OK
In dit voorbeeld wordt een foutbericht geretourneerd omdat de connector het WFM-systeem niet kan bereiken om verlofredenen voor de gebruiker op te halen.
{
"responses": [
{
"id": "aa162a04-bec6-4b81-ba99-96caa7b2b24d",
"status": 503,
"body": {
"data": null,
"error": {
"code": "503",
"message": "Could not reach WFM"
}
}
}
]
}
Voorbeeld: SwapRequest
Verzoek
In het volgende voorbeeld ziet u een aanvraag van Shifts waarin wordt gevraagd welke diensten in aanmerking komen voor een wissel met de dienst met de id SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029 tussen 2024-1 01T04:00:00.0000000Z en 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"
}
]
}
Antwoord
Geslaagd: HTTP retourneren 200 OK
Het volgende antwoord laat zien dat de dienst kan worden verwisseld met de dienst waarvan de id SHFT_98e96e23-966b-43be-b90d-4697037b67af is.
{
"responses": [
{
"id": "SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029",
"status": 200,
"body": {
"data": ["SHFT_98e96e23-966b-43be-b90d-4697037b67af"],
"error": null,
}
}
]
}
Fout: HTTP retourneren 200 OK
In dit voorbeeld wordt een foutbericht geretourneerd omdat de connector het WFM-systeem niet kan bereiken om in aanmerking komende diensten op te halen voor een wisselaanvraag voor de gebruiker.
{
"responses": [
{
"id": "SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029",
"status": 503,
"body": {
"data": null,
"error": {
"code": "503",
"message": "could not reach WFM"
}
}
}
]
}
Stap 1b: gegevens van uw WFM-systeem synchroniseren met Shifts
Gebruik Shifts-API's in Microsoft Graph om planningsgegevens uit uw WFM systeem te lezen en de gegevens naar Shifts te schrijven.
Als u bijvoorbeeld een dienst wilt toevoegen aan Shifts, gebruikt u de DIENST-API maken .
Zie de Microsoft Graph API v1.0-verwijzing voor Shifts-API's, die worden vermeld onder Shift-beheer.
Opmerking
De MS-APP-ACTS-AS
header is vereist voor aanvragen en moet de id (GUID) bevatten van de gebruiker waarvoor uw app handelt. U wordt aangeraden de gebruikers-id van een teameigenaar te gebruiken bij het bijwerken van de planning.
In het volgende diagram ziet u de gegevensstroom.
Eerste synchronisatie
Voor de eerste synchronisatie moet de connector gegevens in uw WFM-systeem lezen en de gegevens naar Shifts schrijven. We raden u aan om twee weken aan toekomstige gegevens te synchroniseren.
Na de eerste synchronisatie
Na de eerste synchronisatie kunt u het volgende doen:
Shifts synchroon bijwerken met wijzigingen in uw WFM systeem: verzend een update naar Shifts voor elke wijziging die in uw WFM systeem is aangebracht.
Asynchroon shifts bijwerken met wijzigingen in uw WFM systeem: voer een periodieke synchronisatie uit door alle wijzigingen die in uw WFM systeem zijn opgetreden binnen een bepaald tijdsbestek (bijvoorbeeld 10 minuten) naar Shifts te schrijven.
Alle schrijfbewerkingen naar Shifts, inclusief schrijfbewerkingen die door de connector zijn gestart, activeren een aanroep naar het /update-eindpunt van de connector. U wordt aangeraden de
X-MS-WFMPassthrough: workforceIntegratonId
header op te nemen voor alle schrijfoproepen, zodat de connector deze op de juiste manier kan identificeren en afhandelen. Als uw WFM systeem bijvoorbeeld de wijziging heeft geïnitieerd, keurt u deze goed zonder een update toe te passen op uw WFM systeem.Opmerking
Als u uw connector instelt voor een tweerichtingssynchronisatie van gegevens tussen uw WFM-systeem en Shifts, sluit u wijzigingen uit die zijn geïnitieerd vanuit Shifts in de periodieke synchronisatie. Deze wijzigingen zijn al geschreven in Shifts.
Stap 2: een app registreren in de Microsoft Entra-beheercentrum
Volg deze stappen om een app voor uw connector te registreren in de Microsoft identity platform, machtigingen voor de app te configureren voor toegang tot Microsoft Graph en een toegangstoken op te halen.
Meld u aan bij de Microsoft Entra-beheercentrum als ten minste een cloudtoepassingsbeheerder.
Registreer uw app. Zie Een toepassing registreren bij de Microsoft identity platform voor stappen.
Wijs de toepassingsmachtigingenSchedule.ReadWrite.All toe aan de app voor alleen-app-toegang en haal een toegangstoken op.
Zie Toegang krijgen zonder gebruiker voor stapsgewijze instructies.
Het toegangstoken controleert of uw app is gemachtigd om Microsoft Graph aan te roepen met behulp van een eigen identiteit met behulp van de machtiging Schedule.ReadWrite.All . Deze moet worden opgenomen in de autorisatieheader van aanvragen.
Stap 3: teams en planningen voor synchronisatie maken
Stel de teams in Teams in die u wilt synchroniseren. U kunt bestaande teams gebruiken of nieuwe teams maken.
Stel teams in Teams in om te corresponderen met de teams en locaties in uw WFM systeem. Zorg ervoor dat u de volgende personen aan elk team toevoegt:
- Frontlinemanagers als teameigenaren. Zorg ervoor dat u de gebruiker in de
MS-APP-ACTS-AS
header toevoegt als teameigenaar van elk team. - Frontlijnmedewerkers als teamleden.
- Frontlinemanagers als teameigenaren. Zorg ervoor dat u de gebruiker in de
Maak een planning in Shifts voor elk team. Zie Planning maken of vervangen voor meer informatie.
Voeg planningsgroepen toe aan de planning van elk team. Planningsgroepen worden gebruikt om werknemers te groepeert op basis van gemeenschappelijke kenmerken binnen een team. Planningsgroepen kunnen bijvoorbeeld afdelingen of taaktypen zijn. Zie schedulingGroup-resourcetype voor meer informatie.
Werknemers toevoegen aan elke planningsgroep. Zie SchedulingGroup vervangen voor meer informatie.
Opmerking
U kunt ook het Teams-beheercentrum gebruiken om uw teams in te stellen en Shifts in de teams te implementeren. Hier vindt u meer informatie:
Stap 4: De integratie van het personeel registreren en inschakelen
Een personeelsintegratie definieert de versleutelingsinstellingen voor communicatie tussen Shifts en de connector, de URL voor callbacks van Shifts en de typen entiteiten die moeten worden gesynchroniseerd.
Voer de volgende stappen uit om de integratie van het personeel te registreren en in te schakelen:
- Stap 4a: De integratie van het personeel registreren
- Stap 4b: De integratie van het personeel voor uw teamplanningen inschakelen
Stap 4a: De integratie van het personeelsbestand in uw tenant registreren
U moet een globale beheerder zijn om deze stap uit te voeren.
Gebruik de Create workforceIntegration-API om uw personeelsintegratie in uw tenant te registreren.
Hier volgt een voorbeeld van een aanvraag.
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”,
}
Zie de volgende tabel voor meer informatie. Zie workforceIntegration-resourcetype voor meer informatie.
Eigenschap | Meer informatie |
---|---|
apiVersion | API-versie voor de callback-URL. Uw basis-URL bestaat uit de eigenschap URL en deze eigenschap. |
versleuteling | Stel protocol in op sharedSecret . De geheime waarde moet precies 64 tekens bevatten. Gebruik het geheim om de versleutelde JSON-nettoladingen te ontsleutelen die vanuit Shifts naar het eindpunt van uw connector worden verzonden. De nettolading wordt versleuteld met AES-256-CBC-HMAC-SHA256. Uw app moet dit geheim veilig behouden. Bijvoorbeeld in een sleutelkluis. |
ondersteunde entiteiten | Geef de Shifts-entiteiten op die de connector moet ondersteunen voor synchronisatie. Shifts roept het /update-eindpunt van uw connector aan wanneer een van deze entiteiten wordt gewijzigd, zodat u de wijziging kunt goedkeuren of weigeren. Zie workforceIntegration-resourcetype voor de lijst met mogelijke waarden Notitie Deze lijst is een suggestiebare opsomming. U moet de Prefer: include-unknown-enum-members aanvraagheader gebruiken om alle waarden op te halen. |
eligibilityFilteringEnabled Entiteiten |
Opmerking: vanaf oktober 2024 wordt dit eindpunt alleen ondersteund in de bètaversie van de Microsoft Graph API. Geef de Shifts-entiteiten op die u wilt verbinden voor het filteren van geschiktheid. Mogelijke waarden zijn:
Prefer: include-unknown-enum-members aanvraagheader gebruiken om alle waarden op te halen. |
url | De URL voor personeelsintegratie voor callbacks vanuit Shifts. Uw basis-URL bestaat uit deze eigenschap en de eigenschap apiVerson . |
Stap 4b: De integratie van het personeel voor uw teamplanningen inschakelen
Schakel de integratie van uw personeel in volgens de planningen die u wilt beheren. Gebruik hiervoor de PLANNING-API maken of vervangen om de planning voor uw teams te maken of bij te werken.
Hier volgt een voorbeeld van een aanvraag.
POST https://graph.microsoft.com/v1.0/teams/{teamId}/schedule
{
enabled: true,
timezone: “America/New_York”,
workforceIntegrationIds: [ “workforceIntegrationId”]
}
- Geef de workforceIntegrationId op die is gegenereerd toen u de personeelsintegratie registreerde.
- U kunt maximaal één personeelsintegratie volgens een schema inschakelen. Als u meer dan één workforceIntegrationId in de aanvraag opneemt, wordt de eerste gebruikt.
Problemen oplossen
Connector
Wanneer de connector reageert op een aanvraag van Shifts, wat gebeurt er dan als deze een andere antwoordcode dan 200 retourneert? Maakt het verschil als er een andere status dan 200 wordt geretourneerd in de hoofdtekst van het antwoord?
Er is een verschil tussen deze twee scenario's.
- Als de connector een andere antwoordcode dan 200 retourneert, probeert Shifts de eindpunten /read en /update meerdere keren opnieuw te proberen. Uiteindelijk geeft Shifts de tekst 'Er is iets misgegaan. Het instellen van de integratie van het personeel in uw team heeft gereageerd met ongeldige gegevens.' foutbericht.
- Als de connector een andere status dan 200 retourneert in de antwoordtekst, geeft Shifts de tekst 'Er is iets misgegaan. De wijziging kan niet worden voltooid, wordt het foutbericht weergegeven en het opnieuw proberen van de eindpunten wordt gestopt.
Wat gebeurt er als de connector ongeldige gegevens retourneert in de hoofdtekst van het antwoord?
Shifts probeert de eindpunten /read en /update meerdere keren opnieuw uit te voeren. Uiteindelijk geeft Shifts de tekst 'Er is iets misgegaan. De werknemersintegratie die is ingesteld voor uw team, heeft gereageerd met ongeldige gegevens.' foutbericht.
Hoe kan ik bepalen of de aanvraag oorspronkelijk is gedaan in Shifts of in het WFM-systeem om een oneindige lus te voorkomen?
Voeg de X-MS-WFMPassthrough: workforceIntegratonId
header toe aan alle schrijf- en update-aanroepen om de wijzigingen te identificeren/negeren die door de connector worden geactiveerd. Deze header wordt gebruikt om aan te geven dat de aanvraag wordt gedaan vanwege een voorgaande aanroep die is gedaan door de connector om te Graph API gegevens van uw WFM systeem te synchroniseren met Shifts.
Registratie van personeelsintegratie
Ik heb de integratie van het personeel geregistreerd en 'eligibilityFilteringEnabledEntities' opgegeven, waaronder 'SwapRequest, OfferShiftRequest en TimeOffReason', maar in de antwoordtekst wordt de lijst 'eligibilityFilteringEnabledEntities' niet weergegeven.
Geschiktheidsfiltering wordt momenteel ondersteund via het https://graph.microsoft.com/beta
eindpunt, niet via het https://graph.microsoft.com/v1
eindpunt.
Ik heb de integratie van het personeel geregistreerd en 'ondersteunde entiteiten' toegevoegd, maar ik ontvang een 400 ongeldige aanvraag en een 'Ongeldige nettolading: aangevraagde waarde 'shift, ....' is niet gevonden.
Zorg ervoor dat elke Shifts-entiteit in de hoofdtekst van de supportedEntities
lijstaanvraag begint met een hoofdletter. Bijvoorbeeld "supportedEntities":"Shift,SwapRequest,OpenShift"
.
Ik heb de integratie van het personeel geregistreerd en de eindpunten /connect, /update en /read geïmplementeerd, maar de webhook werkt niet.
Zorg ervoor dat uw personeelsintegratie is ingeschakeld voor uw teamplanning. Controleer ook of de eigenschappen url en apiVersion juist zijn.
Eindpuntreferentie
Verzoek
ConnectRequest
Eigenschap | Type | Beschrijving |
---|---|---|
tenantId | Tekenreeks | Id van de tenant voor de integratie van het personeel |
userId | Tekenreeks | Id van de gebruiker voor de integratie van het personeel |
{
"tenantId": "string",
"userId": "string"
}
WfiRequestContainer
Eigenschap | Type | Beschrijving |
---|---|---|
Verzoeken | WfiRequest-verzameling | Lijst met WfiRequests |
{
"requests": [
{
"id": "string",
"method": "string",
"url": "string",
"headers": {
"X-MS-Transaction-ID": "string",
"X-MS-Expires": "string (DateTime)"
},
"body": "ShiftsEntity"
}
]
}
Aantal elementen in een aanvraag:
- In de meeste gevallen heeft een aanvraag één element.
- Sommige aanvragen, zoals goedkeuringen voor wisseldienstaanvragen, hebben vijf elementen: één PUT-wisselaanvraag, twee DELETE-diensten (bestaande diensten) en twee POST-diensten (nieuwe diensten).
WfiRequest
Eigenschap | Type | Beschrijving |
---|---|---|
in | Tekenreeks | Id van de entiteit |
methode | Tekenreeks | De methode die is aangeroepen voor het item. Bijvoorbeeld POST , PUT , GET , DELETE . |
url | Tekenreeks | Geeft het type entiteit en bewerkingsdetails aan. |
Headers | WfiRequestHeader | Headers |
lichaam | ShiftsEntity | Hoofdtekst van de entiteit met betrekking tot de aanvraag. |
Voor POST /teams/{teamId}/update
Eigenschap | Type | Beschrijving |
---|---|---|
in | Tekenreeks | Id van de entiteit |
methode | Tekenreeks |
POST om een entiteit te maken, PUT om een entiteit bij te werken, DELETE om een entiteit te verwijderen. |
url | Tekenreeks | De indeling is /{EntityType}/{EntityId} . Mogelijke waarden voor {EntityType} zijn shifts , swapRequests , timeoffReasons , openshifts , openshiftrequests , offershiftrequests timesoff , , . timeOffRequests Bijvoorbeeld /shifts/SHFT_12345678-1234-1234-1234-1234567890ab . |
rubriek | WfiRequestHeader | Header |
lichaam | ShiftsEntity | Moet overeenkomen {EntityType} in de eigenschap URL . Gebruik een van shift, swapShiftsChangeRequest, timeOffReason, openshift, openShiftChangeRequest, offerShiftRequests, timeOff, timeOffRequest. Bijvoorbeeld /shifts/SHFT_12345678-1234-1234-1234-1234567890ab . |
Voor POST /teams/{teamsId}/read
Eigenschap | Type | Beschrijving |
---|---|---|
in | Tekenreeks | Id van de entiteit |
methode | Tekenreeks | Is altijd GET . |
url | Tekenreeks |
|
rubriek | WfiRequestHeader | Header |
lichaam | ShiftsEntity | Is altijd null . |
WfiRequestHeader
Eigenschap | Type | Beschrijving |
---|---|---|
X-MS-Transaction-ID | Tekenreeks | Transactie-id |
X-MS-verloopt | Tekenreeks (Datum/tijd) | Vervaldatum van transactie datum/tijd |
X-MS-WFMPassthrough: workforceIntegratonId
wordt niet opgenomen in WfiRequestHeader. Deze moet worden geëxtraheerd uit de HttpRequest.
Antwoord
WfiResponseContainer
Eigenschap | Type | Beschrijving |
---|---|---|
Reacties | WfiResponse-verzameling | Lijst met WfiResponses |
{
"responses": [
{
"id": "string",
"status": "string",
"body": {
"eTag": "string",
"error": {
"code": "string",
"message": "string"
},
"data": ["string1", "string2"]
}
}
]
}
WfiResponse
Eigenschap | Type | Beschrijving |
---|---|---|
in | Tekenreeks | Id van de entiteit |
status | Tekenreeks | Resultaat van de bewerking |
lichaam | WfiResponseBody | WfiResponseBody |
WfiResponseBody
Eigenschap | Type | Beschrijving |
---|---|---|
eTag | Tekenreeks | eTag |
fout | WfiResponseError | Details over de fout |
gegevens | Tekenreeks | De aangevraagde gegevens (voor leesaanvragen) |
WfiResponseError
Eigenschap | Type | Beschrijving |
---|---|---|
code | Tekenreeks | Foutcode |
bericht | Tekenreeks | Foutbericht |