Tworzenie niestandardowej integracji w celu synchronizacji systemu zarządzania pracownikami z usługą Shifts
Omówienie
Zintegruj rozwiązanie Shifts, aplikację do zarządzania harmonogramem w usłudze Microsoft Teams, z systemem zarządzania pracownikami (WFM). Ta integracja umożliwia pracownikom pierwszej linii wyświetlanie harmonogramów i zarządzanie nimi bezpośrednio w ramach usługi Shifts.
W tym artykule przedstawiono sposób tworzenia łącznika przy użyciu interfejs Graph API firmy Microsoft w celu ułatwienia tej integracji.
Integrację można skonfigurować na potrzeby jednokierunkowej synchronizacji danych lub dwukierunkowej synchronizacji danych.
Synchronizacja jednokierunkowa (WFM system do przesunięć): w tej konfiguracji dane harmonogramu w systemie WFM są synchronizowane z usługą Shifts. Łącznik odczytuje dane w systemie WFM i zapisuje je w usłudze Shifts. Jednak wszelkie zmiany wprowadzone w zmianach przez użytkowników nie zostaną ponownie odzwierciedlone w systemie WFM.
Synchronizacja dwukierunkowa (system WFM i zmiany): ta konfiguracja umożliwia synchronizację dwukierunkową. Dane harmonogramu w systemie WFM są synchronizowane z zmianami, a wszelkie zmiany wprowadzone w zmianach przez użytkowników są synchronizowane z systemem WFM. Łącznik weryfikuje i zatwierdza zmiany wprowadzone przez użytkowników w usłudze Shifts zgodnie z regułami biznesowymi wymuszonymi przez system WFM przed zapisaniem zmian w usłudze Shifts.
Uwaga
Jeśli używasz WFM UKG Pro, Blue Yonder WFM lub Reflexis WFM, możesz również użyć zarządzanego łącznika do integracji usługi Shifts z systemem WFM. Aby dowiedzieć się więcej, zobacz Shifts connectors (Łączniki shifts).
Terminologia używana w tym artykule
Okres | Opis |
---|---|
złącze | Aplikacja, która synchronizuje dane harmonogramu między systemem WFM i zmianami. |
integracja pracowników | Jednostka definiująca metodę szyfrowania komunikacji, adres URL wywołania zwrotnego łącznika i jednostki Shifts do zsynchronizowania. |
Przed rozpoczęciem
Wymagania wstępne
- Określ, jakie dane chcesz zsynchronizować zgodnie z potrzebami biznesowymi.
- Omówienie pojęć dotyczących uwierzytelniania i autoryzacji w Platforma tożsamości Microsoft. Zobacz Podstawy uwierzytelniania i autoryzacji.
- wymagane role Administracja:
- Co najmniej administrator aplikacji w chmurze, aby zarejestrować aplikację w centrum administracyjne Microsoft Entra
- Administrator globalny do rejestrowania integracji pracowników
Zapoznaj się z procesem integracji
Oto omówienie kroków integracji. Przejrzyj te informacje, aby zrozumieć ogólny proces, w tym o tym, kto wykonuje każdy krok.
Krok 1. Tworzenie łącznika
Aby utworzyć łącznik, wykonaj następujące kroki:
- Krok 1a. Synchronizowanie zmian wprowadzonych w systemie WFM
- Krok 1b. Synchronizowanie danych z systemu WFM do zmian
Krok 1a. Synchronizowanie zmian wprowadzonych w systemie WFM
Aby skonfigurować łącznik do odbierania i przetwarzania żądań z usługi Shifts, należy zaimplementować następujące punkty końcowe:
Określanie podstawowego adresu URL i adresów URL punktu końcowego
Podstawowy adres URL (element webhook) to {url}/v{apiVersion}
, gdzie adres URL i apiVersion są właściwościami ustawionymi w obiekcie workforceIntegration podczas rejestrowania integracji pracowników.
Ścieżki względne adresów URL punktu końcowego są następujące:
- /połączyć:
/connect
- /aktualizacja:
/teams/{teamid}/update
- /czytać:
/teams/{teamid}/read
Jeśli na przykład adres URL to https://contosoconnector.com/wfi
, a wartość apiVersion to 1
:
- Podstawowy adres URL to
https://contosoconnector/com/wfi/v1
. - Punkt końcowy /connect to
https://contosoconnector/wfi/v1/connect
. - Punkt końcowy /update to
https://contosoconnector/wfi/v1/teams/{teamid}/update
. - Punkt końcowy /read to
https://contosoconnector/wfi/v1/teams/{teamid}/read
.
Szyfrowanie
Wszystkie żądania są szyfrowane przy użyciu AES-256-CBC-HMAC-SHA256. Wspólny klucz tajny należy określić podczas rejestrowania integracji pracowników. Odpowiedzi wysyłane z powrotem do usługi Shifts nie powinny być szyfrowane.
Punkty końcowe
POST /connect
Funkcja Shifts wywołuje ten punkt końcowy, aby przetestować połączenie podczas rejestrowania integracji pracowników. Odpowiedź powodzenie jest zwracana tylko wtedy, gdy ten punkt końcowy zwraca odpowiedź HTTP 200 OK
.
Przykład
Prosić
ConnectRequest
{
"tenantId": "a1s2s355-a2s3-j7h6-f4d3-k2h9j4mqpz",
"userId": "4fbc12d7-1234-56ef-8a90-bc123d45678f"
}
Odpowiedź
Zwracanie protokołu HTTP 200 OK
POST /teams/{teamid}/update
Funkcja Shifts wywołuje ten punkt końcowy w celu uzyskania zatwierdzenia po wprowadzeniu zmiany w jednostce Shifts zgodnie z harmonogramem , który jest włączony dla integracji pracowników. Jeśli ten punkt końcowy zatwierdzi żądanie, zmiana zostanie zapisana w obszarze Zmiany.
Ponieważ system WFM jest systemem rekordów, łącznik odbiera żądanie do tego punktu końcowego, powinien najpierw podjąć próbę wprowadzenia zmiany w systemie WFM. Jeśli zmiana zakończy się pomyślnie, zwróć powodzenie. W przeciwnym razie zwraca błąd.
Funkcja Shifts wywołuje ten punkt końcowy dla każdej zmiany (w tym zmian zainicjowanych z systemu łącznika/WFM). Jeśli łącznik wysłał aktualizację do usługi Shifts przy użyciu interfejs Graph API i dodał X-MS-WFMPassthrough: workforceIntegratonId
nagłówek, żądanie przychodzące do tego punktu końcowego będzie miało ten sam nagłówek, co pozwala odpowiednio identyfikować i obsługiwać te żądania. Na przykład powrót powodzenie bez wprowadzania tej samej zmiany w systemie WFM, jak byłoby nadmiarowe i może spowodować, że łącznik utknie w nieskończonej pętli.
Na poniższym diagramie przedstawiono przepływ danych.
Uwaga
Aby uzyskać więcej informacji na temat modeli żądań i odpowiedzi, zobacz WfiRequest w sekcji dokumentacji punktu końcowego w tym artykule.
Zwracanie kodu odpowiedzi
Każda odpowiedź z integracji, w tym błąd, musi mieć kod 200 OK
odpowiedzi HTTP . Treść odpowiedzi musi mieć stan i komunikat o błędzie, który odzwierciedla odpowiedni stan błędu wywołania podrzędnego. Każda odpowiedź z integracji innej niż 200 OK
jest traktowana jako błąd i zwracana do obiektu wywołującego (klienta lub programu Microsoft Graph).
Jeśli chcesz skonfigurować synchronizację jednokierunkową, ustaw opcję Shifts tylko do odczytu
W przypadku synchronizacji jednokierunkowej należy wprowadzić zmiany tylko do odczytu, aby użytkownicy nie mogli wprowadzać zmian w zmianach. Aby przesunięcia były tylko do odczytu, zwróć odpowiedź na błąd dla wszystkich żądań z usługi Shifts.
Aby na przykład zablokować użytkownikom możliwość wprowadzania zmian w harmonogramie, ten punkt końcowy musi zwrócić odpowiedź na błąd za każdym razem, gdy otrzyma żądanie dotyczące shift
jednostki.
Przykład
Prosić
WfiRequestContainer
W poniższym przykładzie przedstawiono żądanie z usługi Shifts z pytaniem, czy przesunięcie, którego identyfikator to SHFT_12345678-1234-1234-12334-1234567890ab i ma właściwości wymienione w treści, można zapisać w usłudze Shifts. To żądanie zostało wyzwolone, gdy użytkownik utworzy zmianę w usłudze 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"
}
}
]
}
Odpowiedź
WfiResponse
Powodzenie: zwracanie protokołu HTTP 200 OK
W tym przykładzie przedstawiono odpowiedź zwróconą, jeśli punkt końcowy zatwierdził żądanie. W tym scenariuszu zmiana jest zapisywana w obszarze Zmiany, a użytkownik może zobaczyć zmianę w harmonogramie.
{
"responses": [
{
"id": "SHFT_12345678-1234-1234-1234-1234567890ab",
"status": 200,
"body": {
"eTag": "3f4e5d6c-7a8b-9c0d-1e2f-3g4h5i6j7k8l",
"error": null,
"data": null
}
}
]
}
Błąd: zwracany protokół HTTP 200 OK
W tym przykładzie przedstawiono odpowiedź zwróconą, jeśli punkt końcowy odrzucił żądanie. W tym scenariuszu użytkownik otrzymuje komunikat o błędzie "Nie można dodać zmiany" w obszarze Zmiany.
{
"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
Ten punkt końcowy obsługuje żądania ze zmian w celu pobrania kwalifikujących się przyczyn limitu czasu lub kwalifikujących się zmian dla żądań zamiany dla użytkownika.
Uwaga
Od października 2024 r. ten punkt końcowy jest obsługiwany tylko w wersji beta programu Microsoft interfejs Graph API. Należy również określić wartości właściwości eligibilityFilteringEnabledEntities podczas rejestrowania integracji pracowników.
Na poniższym diagramie przedstawiono przepływ danych.
Zwracanie kodu odpowiedzi
Każda odpowiedź z integracji, w tym błąd, musi mieć kod 200 OK
odpowiedzi HTTP . Treść odpowiedzi musi zawierać stan i komunikat o błędzie, który odzwierciedla odpowiedni stan błędu wywołania podrzędnego. Każda odpowiedź z integracji innej niż 200 OK
jest traktowana jako błąd i zwracana do obiektu wywołującego (klienta lub programu Microsoft Graph).
Przykład: TimeOffReason
Prosić
W poniższym przykładzie przedstawiono żądanie z usługi Shifts z pytaniem, do którego czasu wolnego jest uprawniony użytkownik (identyfikator użytkownika aa162a04-bec6-4b81-ba99-96caa7b2b24d). To żądanie zostało wyzwolone, gdy użytkownik zażąda czasu wolnego w funkcji Shifts.
{
"requests": [
{
"id": "aa162a04-bec6-4b81-ba99-96caa7b2b24d",
"method": "GET",
"url": "/users/aa162a04-bec6-4b81-ba99-96caa7b2b24d/timeOffReasons?requestType=TimeOffReason"
}
]
}
Odpowiedź
Powodzenie: zwracanie protokołu HTTP 200 OK
Poniższa odpowiedź pokazuje, że identyfikatory przyczyny kwalifikującego się czasu wolnego dla użytkownika to "TOR_29f4a110-ae53-458b-83d6-00c910fe2fbc" i "TOR_8c0e8d07-ac1a-48dc-b3af-7bc71a62ff7d". W tym scenariuszu użytkownik widzi odpowiednie przyczyny limitu czasu do wyboru w obszarze 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
}
}
]
}
Błąd: zwracany protokół HTTP 200 OK
W tym przykładzie zwracana jest odpowiedź o błędzie, ponieważ łącznik nie może nawiązać połączenia z systemem WFM w celu pobrania przyczyny wolnego czasu dla użytkownika.
{
"responses": [
{
"id": "aa162a04-bec6-4b81-ba99-96caa7b2b24d",
"status": 503,
"body": {
"data": null,
"error": {
"code": "503",
"message": "Could not reach WFM"
}
}
}
]
}
Przykład: SwapRequest
Prosić
W poniższym przykładzie przedstawiono żądanie z usługi Shifts z pytaniem, które zmiany kwalifikują się do zamiany ze zmianą o identyfikatorze SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029 w latach 2024-2024 10-01T04:00:00.000000Z i 2024-11-01T03:59:59.999000Z.
{
"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"
}
]
}
Odpowiedź
Powodzenie: zwracanie protokołu HTTP 200 OK
Poniższa odpowiedź pokazuje, że zmianę można zamienić na zmianę, której identyfikator to 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,
}
}
]
}
Błąd: zwracany protokół HTTP 200 OK
W tym przykładzie zwracana jest odpowiedź o błędzie, ponieważ łącznik nie może nawiązać połączenia z systemem WFM w celu pobrania kwalifikujących się zmian dla żądania zamiany dla użytkownika.
{
"responses": [
{
"id": "SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029",
"status": 503,
"body": {
"data": null,
"error": {
"code": "503",
"message": "could not reach WFM"
}
}
}
]
}
Krok 1b. Synchronizowanie danych z systemu WFM do zmian
Użyj interfejsów API shifts w programie Microsoft Graph, aby odczytywać dane harmonogramu z systemu WFM i zapisywać dane w usłudze Shifts.
Aby na przykład dodać zmianę do funkcji Shifts, użyj interfejsu API tworzenia przesunięcia .
Zobacz dokumentację usługi Microsoft interfejs Graph API w wersji 1.0 dla interfejsów API usługi Shifts, które są wymienione w obszarze Zarządzanie zmianami.
Uwaga
Nagłówek MS-APP-ACTS-AS
jest wymagany w żądaniach i musi zawierać identyfikator (GUID) użytkownika działającego w imieniu aplikacji. Zalecamy użycie identyfikatora użytkownika właściciela zespołu podczas aktualizowania harmonogramu.
Na poniższym diagramie przedstawiono przepływ danych.
Synchronizacja początkowa
W przypadku pierwszej synchronizacji łącznik powinien odczytywać dane w systemie WFM i zapisywać dane w usłudze Shifts. Zalecamy zsynchronizowanie dwóch tygodni przyszłych danych.
Po początkowej synchronizacji
Po pierwszej synchronizacji możesz wybrać następujące opcje:
Synchronicznie aktualizuj zmiany ze zmianami w systemie WFM: wyślij aktualizację do usługi Shifts dla każdej zmiany wprowadzonej w systemie WFM.
Asynchronicznie zaktualizuj zmiany w systemie WFM: wykonaj okresową synchronizację, zapisując wszystkie zmiany, które wystąpiły w systemie WFM w określonym przedziale czasu (na przykład 10 minut) na zmiany.
Wszystkie operacje zapisu w usłudze Shifts, w tym operacje zapisu zainicjowane przez łącznik, wyzwalają wywołanie /update punktu końcowego łącznika. Zalecamy uwzględnienie nagłówka
X-MS-WFMPassthrough: workforceIntegratonId
do wszystkich wywołań zapisu, aby łącznik mógł je odpowiednio zidentyfikować i obsłużyć. Jeśli na przykład system WFM zainicjował zmianę, zatwierdź ją bez stosowania aktualizacji do systemu WFM.Uwaga
Jeśli konfigurujesz łącznik na potrzeby dwukierunkowej synchronizacji danych między systemem WFM i zmianami, wyklucz zmiany inicjowane z funkcji Shift w ramach synchronizacji okresowej. Te zmiany są już napisane w obszarze Shifts.
Krok 2. Rejestrowanie aplikacji w centrum administracyjne Microsoft Entra
Wykonaj następujące kroki, aby zarejestrować aplikację dla łącznika w Platforma tożsamości Microsoft, skonfigurować uprawnienia aplikacji do uzyskiwania dostępu do programu Microsoft Graph i uzyskać token dostępu.
Zaloguj się do centrum administracyjne Microsoft Entra co najmniej jako administrator aplikacji w chmurze.
Zarejestruj swoją aplikację. Aby uzyskać instrukcje, zobacz Rejestrowanie aplikacji przy użyciu Platforma tożsamości Microsoft.
Przypisz uprawnienia aplikacjiSchedule.ReadWrite.All do aplikacji w celu uzyskania dostępu tylko do aplikacji i uzyskania tokenu dostępu.
Aby uzyskać szczegółowe wskazówki, zobacz Uzyskiwanie dostępu bez użytkownika.
Token dostępu sprawdza, czy aplikacja jest autoryzowana do wywoływania programu Microsoft Graph przy użyciu własnej tożsamości przy użyciu uprawnienia Schedule.ReadWrite.All . Musi zostać uwzględniony w nagłówku autoryzacji żądań.
Krok 3. Tworzenie zespołów i harmonogramów synchronizacji
Skonfiguruj zespoły w usłudze Teams, które chcesz zsynchronizować. Możesz użyć istniejących zespołów lub utworzyć nowe zespoły.
Skonfiguruj zespoły w usłudze Teams, aby odpowiadać zespołom i lokalizacjom w systemie WFM. Upewnij się, że do każdego zespołu zostały dodane następujące osoby:
- Menedżerowie linii frontu jako właściciele zespołów. Upewnij się, że dodasz użytkownika w nagłówku
MS-APP-ACTS-AS
jako właściciela zespołu każdego odpowiedniego zespołu. - Pracownicy pierwszej linii jako członkowie zespołu.
- Menedżerowie linii frontu jako właściciele zespołów. Upewnij się, że dodasz użytkownika w nagłówku
Utwórz harmonogram w obszarze Zmiany dla każdego zespołu. Aby dowiedzieć się więcej, zobacz Tworzenie lub zastępowanie harmonogramu.
Dodaj grupy harmonogramów do harmonogramu dla każdego zespołu. Grupy harmonogramów służą do grupowania pracowników na podstawie typowych cech w zespole. Na przykład grupy harmonogramów mogą być działami lub typami zadań. Aby dowiedzieć się więcej, zobacz schedulingGroup resource type (Typ zasobu schedulingGroup).
Dodaj pracowników do każdej grupy harmonogramów. Aby dowiedzieć się więcej, zobacz Zastępowanie grupy planowania.
Uwaga
Możesz również użyć centrum administracyjnego usługi Teams, aby skonfigurować swoje zespoły i wdrożyć zmiany w zespołach. Aby dowiedzieć się więcej, zobacz:
Krok 4. Rejestrowanie i włączanie integracji pracowników
Integracja pracowników definiuje ustawienia szyfrowania komunikacji między funkcjami Shifts i łącznikiem, adres URL wywołań zwrotnych z usługi Shifts oraz typy jednostek do zsynchronizowania.
Aby zarejestrować i włączyć integrację pracowników, wykonaj następujące kroki:
- Krok 4a. Rejestrowanie integracji pracowników
- Krok 4b. Włączanie integracji pracowników dla harmonogramów zespołu
Krok 4a. Rejestrowanie integracji pracowników w dzierżawie
Aby wykonać ten krok, musisz być administratorem globalnym.
Użyj interfejsu API Tworzenia pracownikówIntegration , aby zarejestrować integrację pracowników w dzierżawie.
Oto przykład żądania.
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”,
}
Aby uzyskać szczegółowe informacje, zobacz poniższą tabelę. Aby dowiedzieć się więcej, zobacz workforceIntegration resource type (Typ zasobu workforceIntegration).
Własność | Więcej informacji |
---|---|
apiVersion | Wersja interfejsu API dla adresu URL wywołania zwrotnego. Podstawowy adres URL składa się z właściwości url i tej właściwości. |
szyfrowanie | Ustaw protokół na sharedSecret wartość . Wartość wpisu tajnego musi zawierać dokładnie 64 znaki. Użyj wpisu tajnego, aby odszyfrować zaszyfrowane ładunki JSON wysyłane do punktu końcowego łącznika z usługi Shifts. Ładunek jest szyfrowany przy użyciu AES-256-CBC-HMAC-SHA256. Aplikacja powinna bezpiecznie utrwalić ten wpis tajny. Na przykład w magazynie kluczy. |
supportedEntities | Określ jednostki Shifts, które mają być obsługiwane przez łącznik na potrzeby synchronizacji. Funkcja Shifts wywołuje punkt końcowy /update łącznika, gdy dowolna z tych jednostek zmieni się, aby można było zatwierdzić lub odrzucić zmianę. Aby uzyskać listę możliwych wartości, zobacz workforceIntegration resource type (Typ zasobu workforceIntegration) Nuta Ta lista jest rozwijanym wyliczeniem. Aby uzyskać wszystkie wartości, Prefer: include-unknown-enum-members należy użyć nagłówka żądania. |
eligibilityFilteringEnabledEntities |
Uwaga: od października 2024 r. ten punkt końcowy jest obsługiwany tylko w wersji beta programu Microsoft interfejs Graph API. Określ jednostki shifts, które chcesz połączyć, aby obsługiwać filtrowanie uprawnień. Możliwe wartości to:
Prefer: include-unknown-enum-members należy użyć nagłówka żądania. |
adres URL | Adres URL integracji pracowników dla wywołań zwrotnych z usługi Shifts. Podstawowy adres URL składa się z tej właściwości i właściwości apiVerson. |
Krok 4b. Włączanie integracji pracowników dla harmonogramów zespołu
Włącz integrację pracowników zgodnie z harmonogramami, które chcesz zarządzać. W tym celu użyj interfejsu API tworzenia lub zastępowania harmonogramu , aby utworzyć lub zaktualizować harmonogram dla zespołów.
Oto przykład żądania.
POST https://graph.microsoft.com/v1.0/teams/{teamId}/schedule
{
enabled: true,
timezone: “America/New_York”,
workforceIntegrationIds: [ “workforceIntegrationId”]
}
- Określ workforceIntegrationId, który został wygenerowany podczas rejestrowania integracji pracowników.
- Można włączyć maksymalnie jedną integrację pracowników w harmonogramie. Jeśli uwzględnisz w żądaniu więcej niż jednego pracownikaIntegrationId, zostanie użyty pierwszy z nich.
Rozwiązywanie problemów
Złącze
Jeśli łącznik odpowiada na żądanie z usługi Shifts, co się stanie, jeśli zwróci kod odpowiedzi inny niż 200? Czy ma to znaczenie, jeśli zwraca stan inny niż 200 w treści odpowiedzi?
Istnieje różnica między tymi dwoma scenariuszami.
- Jeśli łącznik zwraca kod odpowiedzi inny niż 200, shifts próbuje ponowić próbę /read i /update punktów końcowych wiele razy. Ostatecznie shifts wyświetla komunikat "Coś poszło nie tak. Konfiguracja integracji pracowników w zespole odpowiedziała nieprawidłowymi danymi". Komunikat o błędzie.
- Jeśli łącznik zwraca stan inny niż 200 w treści odpowiedzi, funkcja Shifts wyświetli komunikat "Wystąpił problem. Niestety, nie można ukończyć zmiany", komunikat o błędzie i przestaje ponawiać próby punktów końcowych.
Co się stanie, jeśli łącznik zwróci nieprawidłowe dane w treści odpowiedzi?
Shifts próbuje ponowić próbę /read i /update punktów końcowych wiele razy. Ostatecznie shifts wyświetla komunikat "Coś poszło nie tak. Integracja pracowników skonfigurowana w twoim zespole odpowiedziała nieprawidłowymi danymi" — komunikat o błędzie.
Jak mogę określić, czy żądanie zostało pierwotnie wykonane w systemie Shifts, czy w systemie WFM, aby zapobiec nieskończonej pętli?
Dodaj nagłówek X-MS-WFMPassthrough: workforceIntegratonId
do wszystkich wywołań zapisu i aktualizacji, aby zidentyfikować/zignorować zmiany wyzwalane przez łącznik. Ten nagłówek służy do wskazywania, że żądanie zostało wykonane z powodu poprzedniego wywołania, które zostało wykonane przez łącznik w celu interfejs Graph API synchronizowania danych z systemu WFM z funkcją Shifts.
Rejestracja integracji pracowników
Zarejestrowano integrację pracowników i określono "eligibilityFilteringEnabledEntities", w tym "SwapRequest, OfferShiftRequest i TimeOffReason", ale treść odpowiedzi nie pokazuje listy "eligibilityFilteringEnabledEntities".
Filtrowanie uprawnień jest obecnie obsługiwane za pośrednictwem https://graph.microsoft.com/beta
punktu końcowego, a https://graph.microsoft.com/v1
nie punktu końcowego.
Zarejestrowano integrację pracowników i dodano "supportedEntities", ale otrzymano odpowiedź 400 Nieprawidłowe żądanie i "Nieprawidłowy ładunek: Żądana wartość 'shift, ....' nie odnaleziono".
Upewnij się, że każda jednostka Shifts w supportedEntities
treści żądania listy zaczyna się wielką literą. Na przykład "supportedEntities":"Shift,SwapRequest,OpenShift"
.
Zarejestrowano integrację pracowników i zaimplementowano punkty końcowe /connect, /update i /read, ale element webhook nie działa.
Upewnij się, że integracja pracowników jest włączona dla harmonogramu zespołu. Ponadto sprawdź, czy właściwości url i apiVersion są poprawne.
Dokumentacja punktu końcowego
Prosić
ConnectRequest
Własność | Wpisać | Opis |
---|---|---|
tenantId | Ciąg | Identyfikator dzierżawy na potrzeby integracji pracowników |
userId | Ciąg | Identyfikator użytkownika na potrzeby integracji pracowników |
{
"tenantId": "string",
"userId": "string"
}
WfiRequestContainer
Własność | Wpisać | Opis |
---|---|---|
Żądania | Kolekcja WfiRequest | Lista WfiRequests |
{
"requests": [
{
"id": "string",
"method": "string",
"url": "string",
"headers": {
"X-MS-Transaction-ID": "string",
"X-MS-Expires": "string (DateTime)"
},
"body": "ShiftsEntity"
}
]
}
Liczba elementów żądania:
- W większości przypadków żądanie ma jeden element.
- Niektóre żądania, takie jak zamiana zatwierdzeń żądań zmiany, mają pięć elementów: jedno żądanie zamiany PUT, dwie zmiany DELETE (istniejące zmiany) i dwie zmiany POST (nowe zmiany).
WfiRequest
Własność | Wpisać | Opis |
---|---|---|
id | Ciąg | Identyfikator jednostki |
metoda | Ciąg | Metoda wywoływana w elemencie. Na przykład , POST , PUT , GET , DELETE . |
adres URL | Ciąg | Wskazuje typ jednostki i szczegóły operacji. |
Nagłówki | WfiRequestHeader | Nagłówki |
ciało | ShiftsEntity | Treść jednostki powiązanej z żądaniem. |
Dla POST /teams/{teamId}/update
Własność | Wpisać | Opis |
---|---|---|
id | Ciąg | Identyfikator jednostki |
metoda | Ciąg |
POST aby utworzyć jednostkę, PUT zaktualizować jednostkę, DELETE usunąć jednostkę. |
adres URL | Ciąg | Format to /{EntityType}/{EntityId} . Możliwe wartości dla to , , , , , openshiftrequests , offershiftrequests , timesoff , . timeOffRequests openshifts timeoffReasons swapRequests shifts {EntityType} Na przykład /shifts/SHFT_12345678-1234-1234-1234-1234567890ab . |
nagłówek | WfiRequestHeader | Nagłówek |
ciało | ShiftsEntity | Musi być zgodna {EntityType} z właściwością adresu URL . Użyj jednej z opcji shift, swapShiftsChangeRequest, timeOffReason, openshift, openShiftChangeRequest, offerShiftRequests, timeOff, timeOffRequest. Na przykład /shifts/SHFT_12345678-1234-1234-1234-1234567890ab . |
W przypadku postu /teams/{teamsId}/read
Własność | Wpisać | Opis |
---|---|---|
id | Ciąg | Identyfikator jednostki |
metoda | Ciąg | Jest zawsze GET . |
adres URL | Ciąg |
|
nagłówek | WfiRequestHeader | Nagłówek |
ciało | ShiftsEntity | Jest zawsze null . |
WfiRequestHeader
Własność | Wpisać | Opis |
---|---|---|
X-MS-Transaction-ID | Ciąg | Identyfikator transakcji |
X-MS-Expires | Ciąg (DateTime) | Data/godzina wygaśnięcia transakcji |
X-MS-WFMPassthrough: workforceIntegratonId
nie zostanie uwzględniony w WfiRequestHeader. Powinien zostać wyodrębniony z protokołu HttpRequest.
Odpowiedź
WfiResponseContainer
Własność | Wpisać | Opis |
---|---|---|
Odpowiedzi | Kolekcja WfiResponse | Lista WfiResponses |
{
"responses": [
{
"id": "string",
"status": "string",
"body": {
"eTag": "string",
"error": {
"code": "string",
"message": "string"
},
"data": ["string1", "string2"]
}
}
]
}
WfiResponse
Własność | Wpisać | Opis |
---|---|---|
id | Ciąg | Identyfikator jednostki |
stan | Ciąg | Wynik operacji |
ciało | WfiResponseBody | WfiResponseBody |
WfiResponseBody
Własność | Wpisać | Opis |
---|---|---|
eTag | Ciąg | eTag |
błąd | WfiResponseError | Szczegóły dotyczące błędu |
dane | Ciąg | Żądane dane (dla żądań odczytu) |
WfiResponseError
Własność | Wpisać | Opis |
---|---|---|
kod | Ciąg | Kod błędu |
wiadomości | Ciąg | Komunikat o błędzie |