Verwalten von Anzeigeereignissen in der Web-SDK
Anzeigeereignisse teilen Personalisierungs- oder Analytics-Services mit, dass dem Benutzer ein bestimmter Teil des personalisierten Inhalts angezeigt wurde. Das Senden von Anzeigeereignissen verbessert die Genauigkeit des Reportings, indem nachgelagerte Systeme dabei helfen, zwischen (angeforderten und tatsächlich Inhalten unterscheiden.
Anzeigeereignisse automatisch senden
Automatische Anzeigeereignisse sind in der Regel die einfachste Option. Sie werden sofort gesendet, nachdem Web SDK das Rendern der zulässigen Inhalte aus der sendEvent abgeschlossen hat, was die Berichtsgenauigkeit verbessern kann.
Um Anzeigeereignisse automatisch zu senden, verwenden Sie einen sendEvent-Aufruf, der renderDecisions auf true setzt und personalization.sendDisplayEvent auf true setzt (oder auslässt, da true der Standard ist):
alloy("sendEvent", {
renderDecisions: true,
personalization: { }, // sendDisplayEvent defaults to true
xdm: {
web: {
webPageDetails: {
name: "home"
}
}
}
});
applyPropositions), müssen Sie Anzeigeereignisse explizit mithilfe von sendEvent senden.Senden von Anzeigeereignissen in nachfolgenden sendEvent
Die Einbeziehung von Anzeigeereignissen in einen späteren sendEvent ist nützlich, wenn Sie zusätzliche Seitenladedaten anhängen möchten, die bei der Anforderung von Personalisierung nicht verfügbar sind. Er wird häufig bei der Implementierung von Top- und Bottom-Page-Ereignissen verwendet. Wenn Sie Anzeigeereignisse auf diese Weise korrekt implementieren, vermeiden Sie Probleme mit Absprungrate in Adobe Analytics.
-
Fordern Sie beim ersten
sendEvent-Aufruf (häufig oben auf der Seite) Inhalte an und rendern Sie sie, unterdrücken Sie jedoch automatische Anzeigeereignisse, indem SierenderDecisionsauftrueundpersonalization.sendDisplayEventauffalsesetzen:code language-js alloy("sendEvent", { renderDecisions: true, personalization: { sendDisplayEvent: false }, xdm: { web: { webPageDetails: { name: "home" } } } }); -
Rufen Sie später (häufig unten auf der Seite)
sendEventmit einer XDM-Payload auf, die Anzeigeereignisse für Vorschläge enthält, die seit der vorherigen Anfrage gerendert wurden, indem Siepersonalization.includeRenderedPropositionsauftruesetzen:code language-js alloy("sendEvent", { personalization: { includeRenderedPropositions: true }, xdm: { // Add any additional page load telemetry you want to send here web: { webPageDetails: { name: "home" } } } });
includeRenderedPropositions werden nur automatisch gerenderte Vorschläge einbezogen, die die Anzeige unterdrückt hatten.Senden von Anzeigeereignissen für manuell gerenderte Vorschläge
Wenn Sie Inhalte selbst rendern (entweder vollständig manuelles Rendern oder applyPropositions), müssen Sie Anzeigeereignisse explizit mit dem Befehl sendEvent senden. Rufen Sie sendEvent mit einer XDM-Payload auf, die die folgenden Eigenschaften enthält:
_experience.decisioning.propositionsmit denid,scopeundscopeDetailsder gerenderten Vorschläge_experience.decisioning.propositionEventType.displayfestgelegt auf1
Die folgenden beiden Beispiele verwenden diese Hilfsfunktion zum Erstellen der XDM-Payload für das Anzeigeereignis:
function buildDisplayEventXdm(renderedPropositions) {
return {
eventType: "decisioning.propositionDisplay",
_experience: {
decisioning: {
propositions: renderedPropositions.map(({ id, scope, scopeDetails }) => ({
id,
scope,
scopeDetails
})),
propositionEventType: { display: 1 }
}
}
};
}
Im folgenden Beispiel wird das manuelle Rendering mit Anzeigeereignissen verwendet:
function renderExample(propositions) {
// Your custom logic here. Return ONLY the propositions that were actually rendered.
// For example: return [propositions[0]];
return [];
}
alloy("sendEvent", {
personalization: { decisionScopes: ["discount"] },
xdm: { }
}).then(({ propositions = [] }) => {
const renderedPropositions = renderExample(propositions);
if (!renderedPropositions.length) { return; }
return alloy("sendEvent", { xdm: buildDisplayEventXdm(renderedPropositions) });
});
Im folgenden Beispiel wird der Befehl applyPropositions mit Anzeigeereignissen verwendet. Er verkettet sendEvent, applyPropositions und dann eine weitere sendEvent:
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 = [] }) => {
if (!renderedPropositions.length) { return; }
return alloy("sendEvent", { xdm: buildDisplayEventXdm(renderedPropositions) });
});
Häufige zu vermeidende Fehler
- Anzeigeereignisse senden, bevor das Rendern abgeschlossen ist: Senden Sie Anzeigeereignisse, nachdem das automatische Rendern abgeschlossen ist, nachdem
applyPropositionsaufgelöst wurde oder nachdem die manuelle Rendering-Logik abgeschlossen ist. - Senden von Anzeigeereignissen für Vorschläge, die Sie nicht gerendert haben: Schließen Sie nur Vorschläge ein, die der Benutzerin bzw. dem Benutzer tatsächlich angezeigt wurden.
scopeDetails: Beim Senden von AnzeigeereignissenscopeDetailsaus dem Vorschlagsobjekt einfügen.