Rendu des offres HTML sans sélecteurs
Utilisez ce modèle lorsque vos propositions incluent du contenu HTML, mais que vous devez indiquer où l’appliquer (sélecteur) et comment l’appliquer (type d’action). Pour ce faire, appelez applyPropositions avec un objet metadata indexé par la portée. Les valeurs actionType prises en charge sont setHtml, replaceHtml et appendHtml.
1. Gestion du scintillement (facultatif)
Si vous masquez le contenu lors du rendu, vous êtes responsable de sa révélation une fois le rendu terminé. Voir Gérer le scintillement pour plus d’informations.
2. Propositions de requête pour les portées que vous avez l’intention de rendre
alloy("sendEvent", {
personalization: {
decisionScopes: ["discount", "salutation"]
},
xdm: { }
}).then(({ propositions = [] }) => {
// Render in the next step
});
Voir personalization.decisionScopes pour plus d’informations.
3. Rendu des offres avec des métadonnées applyPropositions
alloy("sendEvent", {
personalization: {
decisionScopes: ["discount", "salutation"]
},
xdm: { }
}).then(({ propositions = [] }) => {
return alloy("applyPropositions", {
propositions,
metadata: {
salutation: {
selector: "#salutation",
actionType: "setHtml"
},
discount: {
selector: "#daily-special",
actionType: "replaceHtml"
}
}
}).then(({ propositions: renderedPropositions = [] }) => {
return { renderedPropositions };
});
});
4. Enregistrer les événements d’affichage pour les propositions rendues
Les événements d’affichage ne sont pas automatiquement envoyés lors de l’appel de applyPropositions. Une fois le rendu terminé, utilisez un appel sendEvent qui référence les propositions rendues :
function toDisplayPayload(propositions) {
return propositions.map((p) => ({
id: p.id,
scope: p.scope,
scopeDetails: p.scopeDetails
}));
}
alloy("sendEvent", {
personalization: {
decisionScopes: ["discount", "salutation"]
},
xdm: { }
}).then(({ propositions = [] }) => {
return alloy("applyPropositions", {
propositions,
metadata: {
salutation: { selector: "#salutation", actionType: "setHtml" },
discount: { selector: "#daily-special", actionType: "replaceHtml" }
}
}).then(({ propositions: renderedPropositions = [] }) => {
return alloy("sendEvent", {
xdm: {
_experience: {
decisioning: {
propositions: toDisplayPayload(renderedPropositions),
propositionEventType: { display: 1 }
}
}
}
});
});
});
Voir Gérer les événements d’affichage pour plus d’informations.
sendEvent inférieure.5. Rendu
Si votre implémentation nécessite un nouveau rendu ultérieurement (par exemple dans les applications monopages), appelez-applyPropositions de nouveau avec les mêmes propositions et métadonnées :
alloy("applyPropositions", {
propositions,
metadata: {
discount: { selector: "#daily-special", actionType: "replaceHtml" }
}
});
Si vous devez enregistrer un événement d’affichage pour ce nouveau rendu, voir Gérer les événements d’affichage.