Cette page décrit les personalization de la méthode sendEvent de Server SDK. Pour le Web SDK, voir personalization.
L’objet personalization de sendEvent demande des décisions de personnalisation, également appelées propositions, à Adobe Target, Adobe Journey Optimizer et Offer Decisioning. Le SDK du serveur renvoie les propositions sous la forme de sendEvent, de sorte que votre serveur puisse les utiliser ou les transmettre au navigateur.
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"]
}
});
Cette option est disponible uniquement lorsque l’instance inclut le composant Personalization, qui inclut createInstance par défaut.
personalization.decisionScopes
La propriété decisionScopes est un tableau de chaînes. Chaque élément identifie un emplacement, un contexte ou un emplacement où vous souhaitez du contenu personnalisé. Dans Adobe Target, chaque portée de décision est mappée à une mbox. Dans Adobe Journey Optimizer et Offer Decisioning, chaque portée de décision est mappée à un emplacement basé sur une décision.
personalization: {
decisionScopes: ["hero-banner", "cart-offer"]
}
personalization.surfaces
La propriété surfaces est un tableau de chaînes URI de surface. Chaque surface identifie un canal, une page ou un composant pour lequel vous souhaitez des expériences basées sur du code Adobe Journey Optimizer, telles que des web://example.com/home ou des web://example.com/home#hero.
personalization: {
surfaces: ["web://example.com/home", "web://example.com/home#hero"]
}
Dans un navigateur, le Web SDK demande automatiquement la surface de la page active. Un serveur n’a pas de page active. Par conséquent, le SDK du serveur ne demande que les surfaces que vous répertoriez. De même, le SDK ne demande pas automatiquement la portée de décision à l’échelle de la page que le SDK Web demande lorsqu’il effectue le rendu d’une page.
decisionScopes de niveau supérieur top-level-decision-scopes
Vous pouvez également transmettre des portées de décision dans un tableau decisionScopes au niveau supérieur des options de sendEvent, en dehors de l’objet personalization. Le SDK combine les deux tableaux et supprime les doublons.
await visitor.sendEvent({
xdm: {
eventType: "decisioning.propositionFetch",
identityMap: {
Email: [{ id: "visitor@example.com", primary: true }]
}
},
decisionScopes: ["hero-banner"]
});
Propositions dans le résultat result
Lorsque vous demandez une personnalisation, le résultat de sendEvent contient un tableau propositions. Chaque proposition contient un id, un scope, un scopeDetails et un tableau de items. Chaque élément possède un schema qui décrit son contenu, tel que les actions HTML, JSON ou DOM.
Le SDK n’effectue pas le rendu des propositions, et n’enregistre pas qu’elles ont été affichées. Utilisez-les de l’une des manières suivantes :
- Effectuez leur rendu dans le navigateur. Incluez les propositions dans la page que votre serveur renvoie, puis transmettez-les à la commande Web SDK
applyPropositionspour en effectuer le rendu. Enregistrez ensuite les propositions affichées avec un événement d’affichage. Voir Personnalisation hybride. - Effectuez leur rendu sur le serveur. Utilisez le contenu de chaque élément pour créer votre réponse. Enregistrez ensuite les propositions que vous avez affichées en envoyant un événement d’affichage :
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 }
}
}
}
});
Options sans effet sur un serveur no-effect
Le SDK accepte les propriétés suivantes afin que vous puissiez partager du code avec une implémentation de navigateur, mais les ignore :
personalization.sendDisplayEventpersonalization.includeRenderedPropositionspersonalization.defaultPersonalizationEnabledpersonalization.decisionContext
L’option renderDecisions de sendEvent n’a également aucun effet, car le SDK ne rend jamais le contenu.