Sdílet prostřednictvím


Vytvoření vlastní integrace pro synchronizaci systému správy pracovních sil se službami Shifts

Přehled

Integrujte směny, aplikaci pro správu plánů v Microsoft Teams, se systémem správy pracovních sil (WFM). Tato integrace umožňuje vašim pracovníkům v první linii zobrazovat a spravovat plány přímo v rámci směn.

Tento článek vás provede postupem vytvoření konektoru pomocí microsoftu Graph API pro usnadnění této integrace.

Integraci můžete nastavit buď pro jednosměrnou synchronizaci dat, nebo pro obousměrnou synchronizaci dat.

  • Jednosměrná synchronizace (WFM systém na směny): V tomto nastavení se plánová data ve vašem WFM systému synchronizují se službou Shifts. Konektor přečte data ve vašem WFM systému a zapíše je do služby Shifts. Změny provedené uživateli ve směnách se ale ve vašem WFM systému neprojeví.

  • Obousměrná synchronizace (WFM systém a Směny): Toto nastavení umožňuje obousměrnou synchronizaci. Data plánu ve vašem WFM systému se synchronizují se službami Shifts a všechny změny provedené uživateli ve Směnách se synchronizují zpět do vašeho WFM systému. Konektor ověří a schválí změny, které uživatelé ve Směnách dělají podle obchodních pravidel vynucovaných systémem WFM předtím, než se změny zapíšou do Směn.

Poznámka

Pokud používáte UKG Pro WFM, Blue Yonder WFM nebo Reflexis WFM, můžete také použít spravovaný konektor k integraci Shifts se systémem WFM. Další informace najdete v tématu Konektory Směny.

Terminologie použitá v tomto článku

Termín Popis
konektor Aplikace, která synchronizuje data plánu mezi WFM systémem a službami Shifts.
integrace pracovních sil Entita, která definuje metodu šifrování pro komunikaci, adresu URL zpětného volání vašeho konektoru a entity Shifts, které se mají synchronizovat.

Než začnete

Požadavky

  • Určete, jaká data chcete synchronizovat podle potřeb vaší firmy.
  • Seznamte se s koncepty ověřování a autorizace v Microsoft identity platform. Viz Základy ověřování a autorizace.
  • Správa požadované role:
    • Alespoň správce cloudových aplikací pro registraci aplikace v Centrum pro správu Microsoft Entra
    • Globální správce pro registraci integrace pracovních sil

Seznámení s procesem integrace

Tady je přehled kroků integrace. Projděte si tyto informace, abyste získali přehled o celém procesu, včetně toho, kdo jednotlivé kroky provádí.

Krok Jednosměrná synchronizace Obousměrná synchronizace Kdo provádí tento krok
1 Vytvoření konektoru: Vytvoření konektoru: Developer
2 Registrace aplikace v Centrum pro správu Microsoft Entra Registrace aplikace v Centrum pro správu Microsoft Entra Účet, který je alespoň správcem cloudových aplikací
3 Vytvoření týmů a plánů pro synchronizaci Vytvoření týmů a plánů pro synchronizaci Vývojář nebo správce Teams
4 Registrace a povolení integrace pracovních sil: Registrace a povolení integrace pracovních sil: Krok 4a: Globální správce
Krok 4b: Vývojář

Krok 1: Vytvoření konektoru

Pokud chcete vytvořit konektor, proveďte následující kroky:

Krok 1a: Synchronizace změn provedených ve směnách do systému WFM

Pokud chcete konektor nastavit tak, aby přijímal a zpracovával požadavky ze směn, musíte implementovat následující koncové body:

Určení základní adresy URL a adres URL koncových bodů

Základní adresa URL (webhook) je {url}/v{apiVersion}, kde url a apiVersion jsou vlastnosti, které nastavíte v objektu workforceIntegration při registraci integrace pracovních sil.

Relativní cesty adres URL koncových bodů jsou následující:

  • /spojit: /connect
  • /aktualizace: /teams/{teamid}/update
  • /číst: /teams/{teamid}/read

Pokud je například adresa URL a apiVersion je 1https://contosoconnector.com/wfi :

  • Základní adresa URL je https://contosoconnector/com/wfi/v1.
  • Koncový bod /connect je https://contosoconnector/wfi/v1/connect.
  • Koncový bod /update je https://contosoconnector/wfi/v1/teams/{teamid}/update.
  • Koncový bod /read je https://contosoconnector/wfi/v1/teams/{teamid}/read.

Šifrování

Všechny požadavky jsou šifrované pomocí AES-256-CBC-HMAC-SHA256. Sdílený tajný klíč zadáte při registraci integrace pracovníků. Odpovědi odeslané zpět na směny by neměly být šifrovány.

Koncové body

POST /connect

Služba Směny volá tento koncový bod k otestování připojení při registraci integrace pracovníků. Úspěšná odpověď se vrátí jenom v případě, že tento koncový bod vrátí odpověď HTTP 200 OK .

Příklad

Prosba
ConnectRequest

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

Odpověď
Vrácení protokolu HTTP 200 OK

POST /teams/{teamid}/update

Služba Směny volá tento koncový bod, aby získala schválení při změně entity Směny v plánu , který je povolený pro integraci pracovníků. Pokud tento koncový bod žádost schválí, změna se uloží do směn.

Vzhledem k tomu, že váš systém WFM je systémem záznamů, měl by se konektor po přijetí požadavku na tento koncový bod nejprve pokusit provést změnu v systému WFM. Pokud je změna úspěšná, vraťte úspěch. V opačném případě se vrácení nezdařilo.

Služba Shift volá tento koncový bod pro každou změnu (včetně změn zahájených z konektoru nebo systému WFM). Pokud konektor odeslal aktualizaci směn pomocí Graph API a přidal hlavičkuX-MS-WFMPassthrough: workforceIntegratonId, požadavek přicházející do tohoto koncového bodu bude mít stejnou hlavičku, která vám umožní tyto požadavky správně identifikovat a zpracovat. Například vrátit úspěch bez provedení stejné změny v systému WFM, který by byl redundantní a mohl by způsobit, že se konektor zablokuje v nekonečné smyčce.

Následující diagram znázorňuje tok dat.

Diagram znázorňující tok aktualizací ze směn do systému WFM

Poznámka

Další informace o modelech požadavků a odpovědí najdete v části WfiRequest v části Reference ke koncovému bodu tohoto článku.

Kód odpovědi pro vrácení
Každá odpověď z integrace, včetně chyby, musí mít kód 200 OKodpovědi HTTP . Tělo odpovědi musí obsahovat stav a chybovou zprávu, která odráží odpovídající chybový stav dílčího volání. Jakákoli jiná odpověď z integrace se 200 OK považuje za chybu a vrátí se volajícímu (klientovi nebo Microsoft Graphu).

Pokud chcete nastavit jednosměrnou synchronizaci, nastavte Směny jen pro čtení.

U jednosměrné synchronizace je nutné nastavit Směny jen pro čtení, aby uživatelé nemohli provádět změny ve Směnách. Pokud chcete, aby byly směny jen pro čtení, vraťte chybovou odpověď pro všechny požadavky ze služby Shifts.

Pokud například chcete uživatelům zabránit v provádění změn v plánu, musí tento koncový bod vrátit chybovou odpověď pokaždé, když obdrží požadavek týkající se shift entity.

Příklad

Prosba
WfiRequestContainer

Následující příklad ukazuje požadavek ze služby Shifts, který se dotazuje, zda směna, jejíž ID je SHFT_12345678-1234-1234-1234-1234567890ab a má vlastnosti uvedené v textu, lze uložit do Shifts. Tato žádost se aktivovala, když uživatel vytvoří směnu ve směnách.

{
  "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"
      }
    }
  ]
}

Odpověď
WfiResponse

Úspěch: Vrácení protokolu HTTP 200 OK

Tento příklad ukazuje odpověď vrácenou v případě, že koncový bod žádost schválil. V tomto scénáři je směna uložena ve směnách a uživatel může vidět posun v plánu.

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

Selhání: Vrácení protokolu HTTP 200 OK

Tento příklad ukazuje odpověď vrácenou v případě, že koncový bod požadavek zamítl. V tomto scénáři se uživateli zobrazí chybová zpráva "Nelze přidat směnu" ve Směnách.

{
    "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

Tento koncový bod zpracovává žádosti ze směn za účelem načtení oprávněných důvodů volna nebo opravňujících směn pro žádosti o prohození pro uživatele.

Poznámka

Od října 2024 se tento koncový bod podporuje jenom v beta verzi microsoftu Graph API. Při registraci integrace pracovních sil musíte také zadat hodnoty vlastnosti eligibilityFilteringEnabledEntities.

Následující diagram znázorňuje tok dat.

Diagram znázorňující tok požadavků na filtrování způsobilosti

Kód odpovědi pro vrácení
Každá odpověď z integrace, včetně chyby, musí mít kód 200 OKodpovědi HTTP . Text odpovědi musí obsahovat stav a chybovou zprávu, která odráží příslušný chybový stav dílčího volání. Jakákoli jiná odpověď z integrace se 200 OK považuje za chybu a vrátí se volajícímu (klientovi nebo Microsoft Graphu).

Příklad: TimeOffReason

Prosba

Následující příklad ukazuje žádost ze směn, která se ptá, z jakých důvodů má uživatel (ID uživatele aa162a04-bec6-4b81-ba99-96caa7b2b24d) nárok. Tato žádost se aktivovala, když uživatel požádá o volno ve směnách.

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

Odpověď
Úspěch: Vrácení protokolu HTTP 200 OK

Následující odpověď ukazuje, že ID důvodu volna pro uživatele jsou "TOR_29f4a110-ae53-458b-83d6-00c910fe2fbc" a "TOR_8c0e8d07-ac1a-48dc-b3af-7bc71a62ff7d". V tomto scénáři se uživateli zobrazí odpovídající důvody časového volna, ze které si má vybrat ve Směnách.

{
    "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 
          } 
        }
    ]
}

Selhání: Vrácení protokolu HTTP 200 OK

V tomto příkladu se vrátí chybová odpověď, protože konektor se nemohl spojit s WFM systémem, aby načetl důvody pro vypršení časového limitu pro uživatele.

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

Prosba

Následující příklad ukazuje požadavek ze směn, který se ptá, které směny jsou způsobilé pro prohození s směnou, jejíž ID je SHFT_5e2b51ac-dc47-4a66-83ea-1bbbf81ac029 mezi 2024--. 10-01T04:00:00.000000Z a 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"
    }
  ]
}

Odpověď
Úspěch: Vrácení protokolu HTTP 200 OK

Následující odpověď ukazuje, že směnu lze prohodit se směnou, jejíž ID je 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, 
      } 
    }
  ]
}

Selhání: Vrácení protokolu HTTP 200 OK

V tomto příkladu se vrátí chybová odpověď, protože konektor se nemohl spojit se systémem WFM, aby načetl způsobilé směny pro žádost o prohození pro uživatele.

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

Krok 1b: Synchronizace dat ze systému WFM se službami Shifts

Pomocí rozhraní SHIFTs API v Microsoft Graphu můžete číst data plánu ze systému WFM a zapisovat je do služby Shifts.

Pokud například chcete přidat směnu do směn, použijte rozhraní API pro vytvoření směny .

Projděte si referenční informace k Microsoft Graph API v1.0 pro rozhraní API služby Shifts, která jsou uvedená v části Správa směn.

Poznámka

Hlavička MS-APP-ACTS-AS je povinná v požadavcích a musí obsahovat ID (GUID) uživatele, kterého vaše aplikace jedná jménem. Při aktualizaci plánu doporučujeme použít ID uživatele vlastníka týmu.

Následující diagram znázorňuje tok dat.

Diagram znázorňující tok synchronizace dat ze systému WFM do směn

Počáteční synchronizace

Při první synchronizaci by konektor měl číst data ve vašem systému WFM a zapisovat je do služby Shifts. Doporučujeme synchronizovat budoucí data za dva týdny.

Po počáteční synchronizaci

Po první synchronizaci můžete:

  • Synchronně aktualizovat Směny se změnami v systému WFM: Odešlete do služby Shifts aktualizaci pro každou změnu provedenou v systému WFM.

  • Asynchronně aktualizovat směny se změnami v systému WFM: Proveďte pravidelnou synchronizaci zápisem všech změn, ke kterým došlo v WFM systému během určitého časového rámce (například 10 minut), do směn.

    Všechny operace zápisu do služby Shift, včetně operací zápisu iniciovaných konektorem, aktivují volání koncového bodu /update konektoru. Doporučujeme zahrnout hlavičku X-MS-WFMPassthrough: workforceIntegratonId do všech volání zápisu, aby je konektor mohl správně identifikovat a zpracovat. Pokud například změnu inicioval váš WFM systém, schvalte ji bez použití aktualizace systému WFM.

    Poznámka

    Pokud nastavujete konektor pro obousměrnou synchronizaci dat mezi WFM systémem a službami Shifts, vylučte v pravidelné synchronizaci změny iniciované ze služby Shifts. Tyto změny už jsou napsané ve Směnách.

Krok 2: Registrace aplikace v Centrum pro správu Microsoft Entra

Pomocí těchto kroků zaregistrujte aplikaci pro váš konektor v Microsoft identity platform, nakonfigurujte oprávnění pro aplikaci pro přístup k Microsoft Graphu a získejte přístupový token.

  1. Přihlaste se k Centrum pro správu Microsoft Entra alespoň jako správce cloudových aplikací.

  2. Zaregistrujte aplikaci. Postup najdete v tématu Registrace aplikace pomocí Microsoft identity platform.

  3. Přiřaďte aplikaci oprávněníaplikace Schedule.ReadWrite.All pro přístup jenom k aplikaci a získejte přístupový token.

    Podrobné pokyny najdete v tématu Získání přístupu bez uživatele.

    Přístupový token ověřuje, že vaše aplikace má oprávnění volat Microsoft Graph pomocí vlastní identity pomocí oprávnění Schedule.ReadWrite.All . Musí být součástí autorizační hlavičky požadavků.

Krok 3: Vytvoření týmů a plánů pro synchronizaci

Nastavte týmy v Teams, které chcete synchronizovat. Můžete použít existující týmy nebo vytvořit nové týmy.

  1. Nastavte v Teams týmy tak, aby odpovídaly týmům a místům ve vašem WFM systému. Ujistěte se, že do každého týmu přidáte následující osoby:

    • Vedoucí pracovníci jako vlastníci týmů. Nezapomeňte uživatele přidat do hlavičky MS-APP-ACTS-AS jako vlastníka týmu každého příslušného týmu.
    • Pracovníci v první linii jako členové týmu.
  2. Vytvořte plán ve Směnách pro každý tým. Další informace najdete v tématu Vytvoření nebo nahrazení plánu.

  3. Přidejte do plánu v každém týmu skupiny plánů. Skupiny plánů se používají k seskupování zaměstnanců na základě společných charakteristik v rámci týmu. Skupiny plánů můžou být například oddělení nebo typy úloh. Další informace najdete v tématu typ prostředku schedulingGroup.

  4. Přidejte zaměstnance do každé skupiny plánů. Další informace najdete v tématu Nahrazení skupiny plánování.

Poznámka

Můžete také použít Centrum pro správu Teams k nastavení týmů a nasazení Směn do týmů. Více k tomu najdete tady:

Krok 4: Registrace a povolení integrace pracovníků

Integrace pracovníků definuje nastavení šifrování pro komunikaci mezi směnami a konektorem, adresu URL pro zpětná volání ze směn a typy entit, které se mají synchronizovat.

Pokud chcete zaregistrovat a povolit integraci pracovníků, proveďte následující kroky:

Krok 4a: Registrace integrace pracovních sil ve vašem tenantovi

Abyste mohli tento krok provést, musíte být globálním správcem.

Pomocí rozhraní CREATE WORKFORCEINTEGRATION API zaregistrujte integraci pracovníků ve vašem tenantovi.

Tady je příklad požadavku.

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”,
}

Podrobnosti najdete v následující tabulce. Další informace najdete v tématu pracovní sílaTyp prostředku integrace.

Vlastnost Další informace
apiVersion Verze rozhraní API pro adresu URL zpětného volání Základní adresa URL se skládá z vlastnosti url a této vlastnosti.
šifrování Nastavte protokol na sharedSecret. Hodnota tajného kódu musí být přesně 64 znaků.

Pomocí tajného kódu dešifrujte šifrované datové části JSON, které se ze Směn odesílají do koncového bodu konektoru. Datová část je šifrovaná pomocí AES-256-CBC-HMAC-SHA256. Aplikace by měla tento tajný kód bezpečně zachovat. Například v trezoru klíčů.
podporovanéenty Zadejte entity Shifts, které má konektor podporovat pro synchronizaci. Služba Shift zavolá koncový bod /update vašeho konektoru, když se některá z těchto entit změní, abyste mohli změnu schválit nebo odmítnout. Seznam možných hodnot najdete v tématu pracovní sílaTyp prostředku integrace.

Poznámka Tento seznam je povolený výčet. K získání všech hodnot musíte použít Prefer: include-unknown-enum-members hlavičku požadavku.
eligibilityFilteringEnabledEntities Poznámka: Od října 2024 je tento koncový bod podporován pouze v beta verzi microsoftu Graph API.

Zadejte entity Směny, které chcete připojit k podpoře filtrování způsobilosti. Možné hodnoty jsou:
  • none: Prázdný seznam
  • SwapRequests: Směny zavolá koncový bod /read vašeho konektoru, aby získal filtrovaný seznam směn, ze které si uživatel může vybrat pro žádost o výměnu.
  • TimeOffReasons: Směny volá koncový bod /read vašeho konektoru, aby získal filtrovaný seznam důvodů časového volna, ze které si uživatel může vybrat, když požádá o volno.
Poznámka Tento seznam je povolený výčet. K získání všech hodnot musíte použít Prefer: include-unknown-enum-members hlavičku požadavku.
adresa URL Adresa URL integrace pracovníků pro zpětná volání ze směn Základní adresa URL se skládá z této vlastnosti a vlastnosti apiVerson .

Krok 4b: Povolení integrace pracovních sil pro týmové plány

Povolte integraci pracovníků podle plánů, které chcete spravovat. Uděláte to tak, že pomocí rozhraní API pro vytvoření nebo nahrazení plánu vytvoříte nebo aktualizujete plán pro vaše týmy.

Tady je příklad požadavku.

POST https://graph.microsoft.com/v1.0/teams/{teamId}/schedule
{
  enabled: true,
  timezone: “America/New_York”,
  workforceIntegrationIds: [ “workforceIntegrationId”]
}
  • Zadejte workforceIntegrationId, které se vygenerovalo při registraci integrace pracovních sil.
  • Podle plánu můžete povolit maximálně jednu integraci pracovníků. Pokud do žádosti zahrnete více pracovních silIntegrationId, použije se první z nich.

Řešení problémů

Konektor

Co se stane, když konektor odpoví na požadavek ze služby Shifts, když vrátí jiný kód odpovědi než 200? Je rozdíl, když v textu odpovědi vrátí jiný stav než 200?

Mezi těmito dvěma scénáři je rozdíl.

  • Pokud konektor vrátí jiný kód odpovědi než 200, služba Shifts se pokusí opakovat koncové body /read a /update několikrát. Nakonec funkce Shifts zobrazí zprávu "Něco se nepovedlo. Nastavení integrace pracovních sil ve vašem týmu odpovědělo neplatnými daty." Chybová zpráva.
  • Pokud konektor vrátí v textu odpovědi jiný stav než 200, zobrazí funkce Shifts zprávu "Něco se nepovedlo. Je nám líto, ale vaši změnu se nepodařilo dokončit," zobrazí se chybová zpráva a přestane se opakovat pokus o koncové body.

Co se stane, když konektor vrátí neplatná data v textu odpovědi?

Aplikace Shift se pokusí opakovat koncové body /read a /update několikrát. Nakonec funkce Shifts zobrazí zprávu "Něco se nepovedlo. Integrace pracovních sil nastavená ve vašem týmu odpověděla neplatnými daty." Chybová zpráva.

Návody zjistit, jestli byl požadavek původně proveden ve směnách nebo v systému WFM, aby se zabránilo nekonečné smyčce?

Přidejte hlavičku X-MS-WFMPassthrough: workforceIntegratonId ke všem voláním zápisu a aktualizace, abyste identifikovali nebo ignorovali změny aktivované konektorem. Tato hlavička označuje, že požadavek byl proveden na základě předchozího volání, které konektor provedl za účelem Graph API synchronizace dat ze systému WFM do služby Shifts.

Registrace integrace pracovních sil

Zaregistroval(a) jsem integraci pracovních sil a zadal(a) jsem "eligibilityFilteringEnabledEntities", včetně SwapRequest, OfferShiftRequest a TimeOffReason, ale tělo odpovědi nezobrazuje seznam eligibilityFilteringEnabledEntities.

Filtrování způsobilosti se v současné době podporuje prostřednictvím koncového https://graph.microsoft.com/beta bodu, nikoli koncového https://graph.microsoft.com/v1 bodu.

Zaregistroval(a) jsem integraci pracovních sil a přidal(a) jsem "supportedEntities", ale obdržel(a) jsem odpověď 400 Chybný požadavek a neplatnou datovou část: Požadovaná hodnota shift, ..... nebyla nalezena." zpráva

Ujistěte se, že každá entita Shifts v supportedEntities textu žádosti seznamu začíná velkým písmenem. Například: "supportedEntities":"Shift,SwapRequest,OpenShift".

Zaregistroval(a) jsem integraci pracovníků a implementoval(a) jsem koncové body /connect, /update a /read, ale webhook nefunguje.

Ujistěte se, že je pro týmový plán povolená integrace pracovních sil. Dále zkontrolujte správnost vlastností url a apiVersion .

Referenční informace ke koncovým bodům

Prosba

ConnectRequest

Vlastnost Typ Popis
id tenanta String ID tenanta pro integraci pracovních sil
userId String ID uživatele pro integraci pracovních sil
{
  "tenantId": "string",
  "userId": "string"
}

WfiRequestContainer

Vlastnost Typ Popis
požaduje Kolekce WfiRequest Seznam dotazů WfiRequests
{
  "requests": [
    {
      "id": "string",
      "method": "string",
      "url": "string",
      "headers": {
        "X-MS-Transaction-ID": "string",
        "X-MS-Expires": "string (DateTime)"
      },
      "body": "ShiftsEntity"
    }
  ]
}

Počet prvků v požadavku:

  • Ve většině případů má požadavek jeden prvek.
  • Některé žádosti, například schválení žádostí o odhození směn, mají pět prvků: jedna žádost o výměnu PUT, dvě směny DELETE (stávající směny) a dvě směny POST (nové směny).

WfiRequest

Vlastnost Typ Popis
id String ID entity
metoda String Metoda vyvolaná u položky. Například POST, PUT, , GET, . DELETE
adresa URL String Označuje typ entity a podrobnosti operace.
hlavičky WfiRequestHeader Hlavičky
tělo ShiftsEntity Tělo entity související s požadavkem
Pro POST /teams/{teamId}/update
Vlastnost Typ Popis
id String ID entity
metoda String POST pokud chcete vytvořit entitu, PUT aktualizovat entitu, DELETE odstranit entitu.
adresa URL String Formát je /{EntityType}/{EntityId}. Možné hodnoty pro {EntityType} jsou shifts, swapRequests, timeoffReasons, openshifts, openshiftrequests, offershiftrequests, , timesoff, . timeOffRequests Například: /shifts/SHFT_12345678-1234-1234-1234-1234567890ab.
záhlaví WfiRequestHeader Záhlaví
tělo ShiftsEntity Musí se shodovat {EntityType} ve vlastnosti adresy URL . Použijte jednu z možností shift, swapShiftsChangeRequest, timeOffReason, openshift, openShiftChangeRequest, offerShiftRequests, timeOff, timeOffRequest. Například: /shifts/SHFT_12345678-1234-1234-1234-1234567890ab.
Pro POST /teams/{teamsId}/read
Vlastnost Typ Popis
id String ID entity
metoda String Je vždy GET.
adresa URL String
  • Časové důvody: Formát je /users/{userId}/timeOffReasons?requestType=TimeOffReason. Například: /users/aa162a04-bec6-4b81-ba99-96caa7b2b24d/timeOffReasons?requestType=TimeOffReason.
  • SwapRequest: Formát je /shifts/{ShiftsId}/requestableShifts?requestType=SwapRequest\u0026startTime={startTime}\u0026endTime={endTime}. Například: shifts/SHFT_1132430e-365e-4dc5-b8b0-b800592a81a8/requestableShifts?requestType=SwapRequest\u0026startTime=2024-10-01T07:00:00.0000000Z\u0026endTime=2024-11-01T06:59:59.9990000Z.
záhlaví WfiRequestHeader Záhlaví
tělo ShiftsEntity Je vždy null.

WfiRequestHeader

Vlastnost Typ Popis
X-MS-Transaction-ID String ID transakce
X-MS-Expirs Řetězec (DateTime) Datum a čas vypršení platnosti transakce

X-MS-WFMPassthrough: workforceIntegratonId nebude součástí WfiRequestHeader. Měl by se extrahovat z httpRequest.

Odpověď

WfiResponseContainer

Vlastnost Typ Popis
odpovědi Kolekce WfiResponse Seznam WfiResponses
{
  "responses": [
    {
      "id": "string",
      "status": "string",
      "body": {
        "eTag": "string",
        "error": {
          "code": "string",
          "message": "string"
        },
        "data": ["string1", "string2"]
      }
    }
  ]
}

WfiResponse

Vlastnost Typ Popis
id String ID entity
stav String Výsledek operace
tělo WfiResponseBody WfiResponseBody

WfiResponseBody

Vlastnost Typ Popis
Značka eTag String Značka eTag
chyba WfiResponseError Podrobnosti o chybě
data String Požadovaná data (pro žádosti o čtení)

WfiResponseError

Vlastnost Typ Popis
kód String Kód chyby
Zpráva String Zpráva o chybě