Hybride verpersoonlijking die Web SDK en de Server API van het Netwerk van Edge gebruikt

Overzicht overview

De verpersoonlijking van Hybdrid beschrijft het proces om verpersoonlijkingsinhoud server-kant terug te winnen, die Edge Network Server-APIen renderen op de client, met de Web SDK.

U kunt hybride personalisatie met verpersoonlijkingsoplossingen zoals Adobe Target, Adobe Journey Optimizer, of Offer decisioning gebruiken, het verschil is de inhoud van Server API lading.

Vereisten prerequisites

Controleer of u aan de volgende voorwaarden voldoet voordat u hybride personalisatie gaat implementeren op uw webeigenschappen:

  • U hebt besloten welke personalisatieoplossing u wilt gebruiken. Dit heeft gevolgen voor de inhoud van de Server API lading.
  • U hebt toegang tot een toepassingsserver die u kunt gebruiken om Server API oproepen.
  • U hebt toegang tot de Edge Network Server-API.
  • U hebt de juiste geconfigureerd en stelde SDK van het Web op de pagina's op die u wilt personaliseren.

Stroomdiagram flow-diagram

In het onderstaande stroomdiagram wordt de volgorde beschreven van de stappen die zijn genomen om hybride personalisatie te leveren.

Visueel stroomdiagram dat de orde van de genomen stappen toont om hybride verpersoonlijking te leveren.

  1. Bestaande cookies die eerder door de browser zijn opgeslagen, vooraf ingesteld op kndctr_, worden opgenomen in de browseraanvraag.
  2. De clientwebbrowser vraagt de webpagina op van uw toepassingsserver.
  3. Wanneer de toepassingsserver de paginaaanvraag ontvangt, wordt een POST verzoek aan de Interactieve de gegevensinzamelingspunten van de Server API om personalisatie-inhoud op te halen. De POST verzoek bevat een event en query. De cookies uit de vorige stap, indien beschikbaar, worden opgenomen in de meta>state>entries array.
  4. De server-API retourneert de verpersoonlijkingsinhoud naar uw toepassingsserver.
  5. De toepassingsserver retourneert een HTML-reactie op de clientbrowser die de identiteits- en clustercookies.
  6. Op de clientpagina Web SDK applyResponse wordt aangeroepen, waarbij de koppen en de hoofdtekst van het Server API antwoord van de vorige stap.
  7. De Web SDK geeft Doel weer Visual Experience Composer (VEC) biedt en Journey Optimizer Web Channel-items automatisch aan, omdat de renderDecisions markering is ingesteld op true.
  8. Doel op basis van formulier HTML/JSON aanbiedingen en op code gebaseerde ervaringen van Journey Optimizer worden handmatig toegepast via de applyProposition methode, om de DOM op basis van de personalisatie-inhoud in het voorstel.
  9. Voor formuliergebaseerd doel HTML/JSON weergavegebeurtenissen moeten handmatig worden verzonden om aan te geven wanneer de geretourneerde inhoud is weergegeven. Dit geldt ook voor aanbiedingen en ervaringen op basis van Journey Optimizer-code. Dit gebeurt via de sendEvent gebruiken.

Cookies cookies

Cookies worden gebruikt om de gebruikersidentiteit en clusterinformatie voort te zetten. Wanneer het gebruiken van een hybride implementatie, behandelt de de toepassingsserver van het Web het opslaan en verzenden van deze koekjes tijdens de verzoeklevenscyclus.

Cookie
Doel
Opgeslagen door
Verzonden door
kndctr_AdobeOrg_identity
Bevat identiteitsgegevens van de gebruiker.
Applicatieserver
Applicatieserver
kndctr_AdobeOrg_cluster
Wijst op welke cluster van het Netwerk van de Rand zou moeten worden gebruikt om de verzoeken te vervullen.
Applicatieserver
Applicatieserver

Verzoek om plaatsing request-placement

Server-API-aanvragen zijn vereist om proposities op te halen en een weergavemelding te verzenden. Wanneer u een hybride implementatie gebruikt, doet de toepassingsserver deze aanvragen aan de server-API.

Verzoek
Door
Interactief verzoek om voorstellen terug te winnen
Applicatieserver
Interactief verzoek om weergavemeldingen te verzenden
Applicatieserver

Analytische implicaties analytics

Bij het implementeren van hybride personalisatie moet u speciale aandacht besteden aan het tellen van pagina's in Analytics.

Wanneer u configureren, een gegevensstroom voor Analytics worden gebeurtenissen automatisch doorgestuurd, zodat de paginareeksen worden vastgelegd.

Het voorbeeld van deze implementatie gebruikt twee verschillende gegevensstromen:

  • Een gegevensstroom die voor Analytics wordt gevormd. Deze gegevensstroom wordt gebruikt voor de interactie van SDK van het Web.
  • Een tweede gegevensstroom zonder een configuratie Analytics. Deze gegevensstroom wordt gebruikt voor server API verzoeken. U moet deze gegevensstroom met de zelfde bestemmingsconfiguratie vormen zoals de gegevensstroom die u voor Analytics vormde.

Op deze manier registreert de server-side aanvraag geen Analytics-gebeurtenissen, maar de client-side aanvragen wel. Dit leidt ertoe dat de verzoeken van de Analyse nauwkeurig worden geteld.

Verzoek op de server server-side-request

De voorbeeldaanvraag hieronder illustreert een Server API-aanvraag die uw toepassingsserver kan gebruiken om de personalisatie-inhoud op te halen.

IMPORTANT
In dit voorbeeldverzoek wordt Adobe Target gebruikt als een oplossing voor personalisatie. Uw verzoek kan afhankelijk van uw gekozen personalisatieoplossing variëren.

API-indeling

POST /ee/v2/interact

Verzoek request

curl -X POST "https://edge.adobedc.net/ee/v2/interact?dataStreamId={DATASTREAM_ID}"
-H "Content-Type: text/plain"
-d '{
   "event":{
      "xdm":{
         "web":{
            "webPageDetails":{
               "URL":"http://localhost/"
            },
            "webReferrer":{
               "URL":""
            }
         },
         "identityMap":{
            "FPID":[
               {
                  "id":"xyz",
                  "authenticatedState":"ambiguous",
                  "primary":true
               }
            ]
         },
         "timestamp":"2022-06-23T22:21:00.878Z"
      },
      "data":{

      }
   },
   "query":{
      "identity":{
         "fetch":[
            "ECID"
         ]
      },
      "personalization":{
         "schemas":[
            "https://ns.adobe.com/personalization/default-content-item",
            "https://ns.adobe.com/personalization/html-content-item",
            "https://ns.adobe.com/personalization/json-content-item",
            "https://ns.adobe.com/personalization/redirect-item",
            "https://ns.adobe.com/personalization/dom-action"
         ],
         "decisionScopes":[
            "__view__",
            "sample-json-offer"
         ]
      }
   },
   "meta":{
      "state":{
         "domain":"localhost",
         "cookiesEnabled":true,
         "entries":[
            {
               "key":"kndctr_XXX_AdobeOrg_identity",
               "value":"abc123"
            },
            {
               "key":"kndctr_XXX_AdobeOrg_cluster",
               "value":"or2"
            }
         ]
      }
   }
}'
Parameter
Type
Vereist
Beschrijving
dataStreamId
String
Ja.
Identiteitskaart van de gegevensstroom die u gebruikt om de interactie tot het Netwerk van de Rand over te gaan. Zie de datastreams, overzicht leren hoe u een gegevensstroom kunt configureren.
requestId
String
Nee
Een willekeurige id voor correlerende interne serveraanvragen. Als niets wordt verstrekt, zal het Netwerk van de Rand één produceren en zal het in de reactie terugkeren.

Serverreactie server-response

De voorbeeldreactie hieronder laat zien hoe de API-reactie van de server eruit zou kunnen zien.

{
   "requestId":"5c539bd0-33bf-43b6-a054-2924ac58038b",
   "handle":[
      {
         "payload":[
            {
               "id":"XXX",
               "namespace":{
                  "code":"ECID"
               }
            }
         ],
         "type":"identity:result"
      },
      {
         "payload":[
            {
               "..."
            },
            {
               "..."
            }
         ],
         "type":"personalization:decisions",
         "eventIndex":0
      }
   ]
}

Aanvraag op de client client-request

Op de clientpagina Web SDK applyResponse wordt het bevel geroepen, die in de kopballen en het lichaam van de server-zijreactie overgaan.

   alloy("applyResponse", {
      "renderDecisions": true,
      "responseHeaders": {
         "cache-control": "no-cache, no-store, max-age=0, no-transform, private",
         "connection": "close",
         "content-encoding": "deflate",
         "content-type": "application/json;charset=utf-8",
         "date": "Mon, 11 Jul 2022 19:42:01 GMT",
         "server": "jag",
         "strict-transport-security": "max-age=31536000; includeSubDomains",
         "transfer-encoding": "chunked",
         "vary": "Origin",
         "x-adobe-edge": "OR2;9",
         "x-content-type-options": "nosniff",
         "x-konductor": "22.6.78-BLACKOUTSERVERDOMAINS:7fa23f82",
         "x-rate-limit-remaining": "599",
         "x-request-id": "5c539bd0-33bf-43b6-a054-2924ac58038b",
         "x-xss-protection": "1; mode=block"
      },
      "responseBody": {
         "requestId": "5c539bd0-33bf-43b6-a054-2924ac58038b",
         "handle": [
         {
            "payload": [
               {
               "id": "XXX",
               "namespace": {
                  "code": "ECID"
               }
               }
            ],
            "type": "identity:result"
         },
         {
            "payload": [
               {...},
               {...}
            ],
            "type": "personalization:decisions",
            "eventIndex": 0
         }
         ]
      }
   }
   ).then(applyPersonalization("sample-json-offer"));

Op formulier gebaseerd JSON aanbiedingen worden handmatig toegepast via de applyPersonalization methode, om de DOM op basis van het aanbod voor personalisatie. Voor op formulieren gebaseerde activiteiten moeten weergavegebeurtenissen handmatig worden verzonden om aan te geven wanneer de aanbieding is weergegeven. Dit gebeurt via de sendEvent gebruiken.

function sendDisplayEvent(decision) {
    const { id, scope, scopeDetails = {} } = decision;

    alloy("sendEvent", {
        xdm: {
            eventType: "decisioning.propositionDisplay",
            _experience: {
                decisioning: {
                    propositions: [
                        {
                            id: id,
                            scope: scope,
                            scopeDetails: scopeDetails,
                        },
                    ],
                },
            },
        },
    });
}

Voorbeeldtoepassing sample-app

Om u te helpen experimenteren en meer te leren over dit type van verpersoonlijking, verstrekken wij een steekproeftoepassing die u voor het testen kunt downloaden en gebruiken. U kunt de toepassing vanuit deze GitHub-opslagplaats.

recommendation-more-help
ad108910-6329-42f1-aa1d-5920a2b13636