[Alpha]{class="badge informative"}

personalization (Server SDK)

Questa pagina descrive personalization nel metodo Server SDK sendEvent. Per il Web SDK, vedere personalization.

L’oggetto personalization di sendEvent richiede decisioni di personalizzazione, denominato anche propositions, da Adobe Target, Adobe Journey Optimizer e Offer Decisioning. Server SDK restituisce le proposte nel risultato di sendEvent, in modo che il server possa utilizzarle o passarle al browser.

const { propositions = [] } = await visitor.sendEvent({
  xdm: {
    eventType: "decisioning.propositionFetch",
    identityMap: {
      Email: [{ id: "visitor@example.com", primary: true }]
    }
  },
  personalization: {
    decisionScopes: ["hero-banner"],
    surfaces: ["web://example.com/home"]
  }
});

Questa opzione è disponibile solo quando l’istanza include il componente Personalization, che createInstance include per impostazione predefinita.

personalization.decisionScopes

La proprietà decisionScopes è un array di stringhe. Ogni elemento identifica una posizione, un contesto o un posizionamento in cui desideri contenuti personalizzati. In Adobe Target, ogni ambito decisionale viene mappato su una mbox. In Adobe Journey Optimizer e Offer Decisioning, ogni ambito decisionale viene mappato su un posizionamento basato su decisioni.

personalization: {
  decisionScopes: ["hero-banner", "cart-offer"]
}

personalization.surfaces

La proprietà surfaces è una matrice di stringhe URI di superficie. Ogni superficie identifica un canale, una pagina o un componente per il quale desideri esperienze basate su codice di Adobe Journey Optimizer, ad esempio web://example.com/home o web://example.com/home#hero.

personalization: {
  surfaces: ["web://example.com/home", "web://example.com/home#hero"]
}

In un browser, il SDK Web richiede automaticamente la superficie per la pagina corrente. Un server non dispone di una pagina corrente, pertanto Server SDK richiede solo le superfici elencate. Analogamente, SDK non richiede automaticamente l’ambito di decisione a livello di pagina richiesto da Web SDK durante il rendering di una pagina.

decisionScopes di primo livello top-level-decision-scopes

È inoltre possibile passare gli ambiti decisionali in un array decisionScopes al livello superiore delle opzioni sendEvent, all’esterno dell’oggetto personalization. SDK combina entrambi gli array e rimuove i duplicati.

await visitor.sendEvent({
  xdm: {
    eventType: "decisioning.propositionFetch",
    identityMap: {
      Email: [{ id: "visitor@example.com", primary: true }]
    }
  },
  decisionScopes: ["hero-banner"]
});

Proposte nel risultato result

Quando si richiede la personalizzazione, il risultato di sendEvent contiene un array propositions. Ogni proposta contiene id, scope, scopeDetails e un array di items. Ogni elemento ha un schema che ne descrive il contenuto, ad esempio HTML, JSON o azioni DOM.

SDK non esegue il rendering delle proposte e non registra che sono state visualizzate. Utilizzali in uno dei seguenti modi:

  • Eseguire il rendering nel browser. Includi le proposte nella pagina restituita dal server, quindi passale al comando Web SDK applyPropositions per eseguirne il rendering. Quindi registra quali proposte sono state visualizzate con un evento di visualizzazione. Consulta Personalizzazione ibrida.
  • Eseguire il rendering sul server. Utilizza il contenuto di ogni elemento per generare la risposta. Quindi registra le proposte visualizzate inviando un evento di visualizzazione:
await visitor.sendEvent({
  xdm: {
    eventType: "decisioning.propositionDisplay",
    identityMap: {
      Email: [{ id: "visitor@example.com", primary: true }]
    },
    _experience: {
      decisioning: {
        propositions: renderedPropositions.map(({ id, scope, scopeDetails }) => ({
          id,
          scope,
          scopeDetails
        })),
        propositionEventType: { display: 1 }
      }
    }
  }
});

Opzioni che non hanno alcun effetto su un server no-effect

SDK accetta le seguenti proprietà in modo che tu possa condividere il codice con un’implementazione del browser, ma le ignora:

  • personalization.sendDisplayEvent
  • personalization.includeRenderedPropositions
  • personalization.defaultPersonalizationEnabled
  • personalization.decisionContext

Anche l’opzione renderDecisions di sendEvent non ha alcun effetto, perché SDK non esegue mai il rendering del contenuto.

recommendation-more-help
experience-platform-help-collection