Externa datakällor concept_t2s_kqt_52b
Med externa datakällor kan du definiera en anslutning till tredjepartssystem, till exempel om du använder ett bokningssystem för hotell för att kontrollera om personen har registrerat ett rum. I motsats till den inbyggda Adobe Experience Platform-datakällan kan du skapa så många externa datakällor du behöver.
REST API:er som använder POST eller GET och returnerar JSON stöds. API-nyckel, grundläggande och anpassade autentiseringslägen stöds.
Låt oss ta ett exempel på en API-tjänst för väder som jag vill använda för att anpassa kundens beteenden efter väderdata i realtid.
Här är två exempel på API-anropet:
- https://api.adobeweather.org/weather?city=London,uk&appid=1234
- https://api.adobeweather.org/weather?lat=35&lon=139&appid=1234
Anropet består av en huvud-URL (https://api.adobeweather.org/weather), två parameteruppsättningar (“city” för staden och"lat/long" för latitud och longitud) och API-nyckeln (appid).
Här följer de viktigaste stegen för att skapa och konfigurera en ny extern datakälla:
-
Klicka på Create data source i listan över datakällor för att skapa en ny extern datakälla.
Då öppnas konfigurationsfönstret för datakällan till höger på skärmen.
-
Ange ett namn för datakällan.
note NOTE Använd inte blanksteg eller specialtecken. Använd inte fler än 30 tecken. -
Lägg till en beskrivning till datakällan. Det här steget är valfritt.
-
Lägg till den externa tjänstens URL. I vårt exempel: https://api.adobeweather.org/weather.
note caution CAUTION Vi rekommenderar starkt att du använder HTTPS av säkerhetsskäl. Observera också att vi inte tillåter användning av Adobe-adresser som inte är allmänt tillgängliga och användning av IP-adresser. -
Konfigurera autentiseringen beroende på den externa tjänstkonfigurationen: No authentication, Basic, Custom eller API key. Mer information om det anpassade autentiseringsläget finns i det här avsnittet. I vårt exempel väljer vi:
- Type: API-nyckel
- Value: “1234” (det här är värdet för vår API-nyckel)
- Name: “appid” (det här är API-nyckelparameternamnet)
- Location: Frågeparameter (API-nyckeln finns i URL:en)
-
Lägg till en ny fältgrupp för varje API-parameteruppsättning genom att klicka på Add a New Field Group. Använd inte blanksteg eller specialtecken i fältgruppsnamnet. I vårt exempel måste vi skapa två fältgrupper, en för varje parameteruppsättning (city och long/lat).
För parameteruppsättningen"long/lat" skapar vi en fältgrupp med följande information:
- Used in: visar antalet resor som använder en fältgrupp. Du kan klicka på ikonen View journeys för att visa listan över resor som använder den här fältgruppen.
- Method: välj metoden POST eller GET. I det här fallet väljer vi GET-metoden.
- Response Payload: klicka inuti fältet Payload och klistra in ett exempel på nyttolasten som returnerades av anropet. Vi använde till exempel en nyttolast som finns på en API-webbplats för väder. Kontrollera att fälttyperna är korrekta. Varje gång API anropas hämtas alla fält som ingår i nyttolastexemplet. Observera att du kan klicka på Paste a new payload om du vill ändra den nyttolast som har skickats.
- Dynamic Values: ange de olika parametrarna avgränsade med koma, “long,lat” i vårt exempel. Eftersom parametervärdena är beroende av körningskontexten, definieras de i resorna. Se den här sidan.
- Sent Payload: det här fältet visas inte i vårt exempel. Det är bara tillgängligt om du väljer metoden POST. Klistra in nyttolasten som ska skickas till tredjepartssystemet.
Om ett GET-anrop kräver parametrar anger du parametrarna i fältet Dynamic Values och de läggs till automatiskt i slutet av anropet. Vid ett POST-samtal måste du:
-
lista de parametrar som ska skickas vid anropet i fältet Dynamic Values (i exemplet nedan: “identifier”).
-
ange dem också med exakt samma syntax i texten för den skickade nyttolasten. Om du vill göra det måste du lägga till: “param”: “name of your parameter” (i exemplet nedan: “identifier”). Följ syntaxen nedan:
code language-none {"id":{"param":"identifier"}}
Klicka på Save.
Datakällan är nu konfigurerad och klar att användas i dina resor, till exempel under dina förhållanden eller för att anpassa ett e-postmeddelande. Om temperaturen är över 30°C kan du välja att skicka ett visst meddelande.
Anpassat autentiseringsläge section_wjp_nl5_nhb
Det här autentiseringsläget används för komplex autentisering, som ofta används för att anropa API-omslutningsprotokoll som OAuth2, för att hämta en åtkomsttoken som ska injiceras i den faktiska HTTP-begäran för åtgärden.
När du konfigurerar den anpassade autentiseringen kan du klicka på knappen nedan för att kontrollera om den anpassade autentiseringsnyttolasten är korrekt konfigurerad.
Om testet lyckas blir knappen grön.
Med den här autentiseringen är körningen av åtgärden en tvåstegsprocess:
- Anropa slutpunkten för att generera åtkomsttoken.
- Anropa REST API genom att mata in åtkomsttoken på rätt sätt.
Autentiseringen består av två delar.
Definitionen av den slutpunkt som ska anropas för att generera åtkomsttoken:
-
slutpunkt: URL som ska användas för att generera slutpunkten
-
HTTP-begäran på slutpunkten (GET eller POST)
-
rubriker: nyckel/värde-par som ska matas in som rubriker i detta anrop om det behövs
-
body: beskriver brödtexten för anropet om metoden är POST. Vi stöder en begränsad brödstruktur, som definieras i bodyParams (nyckel/värde-par). bodyType beskriver format och kodning för brödtexten i anropet:
- ‘form’: innebär att innehållstypen blir application/x-www-form-urlencoded (charset UTF-8) och nyckel/värde-paren serialiseras som: key1=value1&key2=value2&…
- json: det innebär att innehållstypen blir application/json (charset UTF-8) och nyckelvärdepar kommer att serialiseras som ett json-objekt som är: { “key1”: “value1”, “key2”: “value2”, …}
Definitionen av hur åtkomsttoken måste matas in i åtgärdens HTTP-begäran:
-
permissionType: definierar hur den genererade åtkomsttoken måste matas in i HTTP-anropet för åtgärden. Möjliga värden är:
- Bearer: anger att åtkomsttoken måste injiceras i auktoriseringshuvudet, till exempel: Auktorisering: Bearer <åtkomsttoken>
- header: anger att åtkomsttoken måste matas in som ett huvud, det rubriknamn som definieras av egenskapen tokenTarget. Om till exempel tokenTarget är myHeader kommer åtkomsttoken att matas in som en rubrik som: myHeader: <åtkomsttoken>
- queryParam: anger att åtkomsttoken måste matas in som queryParam, frågeparameternamnet som definieras av egenskapen tokenTarget. Om till exempel tokenTarget är myQueryParam blir URL:en för åtgärdsanropet: <url>?myQueryParam=<åtkomsttoken>
-
tokenInResponse: anger hur åtkomsttoken ska extraheras från autentiseringsanropet. Den här egenskapen kan vara:
- ‘response’: anger att HTTP-svaret är åtkomsttoken
- en väljare i en json (förutsatt att svaret är en json, stöder vi inte andra format som XML). Den här väljarens format är json://<sökväg till åtkomsttokenegenskapen>. Om anropets svar till exempel är: { "access token": “theToken”, “timestamp”: 12323445656 }, blir tokenInResponse: json: //access_token_
Autentiseringsformatet är:
{
"type": "customAuthorization",
"authorizationType": "<value in 'bearer', 'header' or 'queryParam'>",
(optional, mandatory if authorizationType is 'header' or 'queryParam') "tokenTarget": "<name of the header or queryParam if the authorizationType is 'header' or 'queryParam'>",
"endpoint": "<URL of the authentication endpoint>",
"method": "<HTTP method to call the authentication endpoint, in 'GET' or 'POST'>",
(optional) "headers": {
"<header name>": "<header value>",
...
},
(optional, mandatory if method is 'POST') "body": {
"bodyType": "<'form'or 'json'>,
"bodyParams": {
"param1": value1,
...
}
},
"tokenInResponse": "<'response' or json selector in format 'json://<field path to access token>'"
}
Du kan ändra cachevaraktigheten för token för en anpassad autentiseringsdatakälla. Nedan visas ett exempel på en anpassad autentiseringsnyttolast. Cachevaraktigheten definieras i parametern “cacheDuration”. Den anger kvarhållningstiden för den genererade token i cachen. Enheten kan vara millisekunder, sekunder, minuter, timmar, dagar, månader, år.
"authentication": {
"type":"customAuthorization",
"authorizationType":"Bearer",
"endpoint":"http://localhost:${port}/epsilon/oauth2/access_token",
"method":"POST",
"headers": {
"Authorization":"Basic EncodeBase64(${epsilonClientId}:${epsilonClientSecret})"
},
"body": {
"bodyType":"form",
"bodyParams": {
"scope":"cn mail givenname uid employeeNumber",
"grant_type":"password",
"username":"${epsilonUserName}",
"password":"${epsilonUserPassword}"
}
},
"tokenInResponse":"json://access_token",
"cacheDuration":
{ "duration":5, "timeUnit":"seconds" }
}