Gestire gli eventi di visualizzazione nel Web SDK
Gli eventi di visualizzazione informano i servizi di personalizzazione o analisi che è stato visualizzato un contenuto personalizzato specifico per l’utente. L'invio di eventi di visualizzazione migliora la precisione della generazione di rapporti aiutando i sistemi a valle a distinguere tra contenuto richiesto e contenuto effettivamente visualizzato.
Invia automaticamente eventi di visualizzazione
Gli eventi di visualizzazione automatica sono in genere l’opzione più semplice. Vengono inviati immediatamente dopo il completamento del rendering dei contenuti idonei da parte di Web SDK dalla risposta sendEvent, in modo da migliorare l'accuratezza del reporting.
Per inviare automaticamente gli eventi di visualizzazione, utilizzare una chiamata sendEvent che imposta renderDecisions su true e imposta personalization.sendDisplayEvent su true (oppure omettere, poiché true è l'impostazione predefinita):
alloy("sendEvent", {
renderDecisions: true,
personalization: { }, // sendDisplayEvent defaults to true
xdm: {
web: {
webPageDetails: {
name: "home"
}
}
}
});
applyPropositions), devi inviare gli eventi di visualizzazione esplicitamente utilizzando sendEvent.Invia eventi di visualizzazione nelle chiamate sendEvent successive
L'inclusione di eventi di visualizzazione in una chiamata sendEvent successiva è utile quando si desidera allegare dati di caricamento pagina aggiuntivi che non sono disponibili quando si richiede la personalizzazione. Viene comunemente utilizzato quando si implementano eventi di pagina superiore e inferiore. Implementare correttamente gli eventi di visualizzazione in questo modo consente di evitare problemi con Percentuale non recapitate in Adobe Analytics.
-
Nella chiamata
sendEventiniziale (spesso nella parte superiore della pagina), richiedere ed eseguire il rendering del contenuto, ma eliminare gli eventi di visualizzazione automatica impostandorenderDecisionssutrueepersonalization.sendDisplayEventsufalse:code language-js alloy("sendEvent", { renderDecisions: true, personalization: { sendDisplayEvent: false }, xdm: { web: { webPageDetails: { name: "home" } } } }); -
In seguito (spesso nella parte inferiore della pagina), chiama
sendEventcon un payload XDM che include eventi di visualizzazione per le proposte di cui è stato eseguito il rendering dopo la richiesta precedente impostandopersonalization.includeRenderedPropositionssutrue: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, vengono incluse solo le proposte di cui è stato eseguito il rendering automatico e la cui visualizzazione è stata eliminata.Inviare eventi di visualizzazione per le proposte sottoposte a rendering manuale
Se esegui il rendering del contenuto manualmente (rendering completamente manuale o utilizzo di applyPropositions), devi inviare gli eventi di visualizzazione in modo esplicito utilizzando il comando sendEvent. Chiama sendEvent con un payload XDM che include le seguenti proprietà:
_experience.decisioning.propositionscontenente le proposte sottoposte a rendering'id,scopeescopeDetails_experience.decisioning.propositionEventType.displayimpostato su1
I due esempi seguenti utilizzano questa funzione helper per generare il payload XDM dell’evento di visualizzazione:
function buildDisplayEventXdm(renderedPropositions) {
return {
eventType: "decisioning.propositionDisplay",
_experience: {
decisioning: {
propositions: renderedPropositions.map(({ id, scope, scopeDetails }) => ({
id,
scope,
scopeDetails
})),
propositionEventType: { display: 1 }
}
}
};
}
Nell'esempio seguente viene utilizzato il rendering manuale con gli eventi di visualizzazione:
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) });
});
Nell'esempio seguente viene utilizzato il comando applyPropositions con eventi di visualizzazione. Catena sendEvent, applyPropositions, quindi un altro sendEvent insieme:
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) });
});
Errori comuni da evitare
- Invia eventi di visualizzazione prima del completamento del rendering: invia eventi di visualizzazione dopo il completamento del rendering automatico, dopo la risoluzione di
applyPropositionso dopo il completamento della logica di rendering manuale. - Invia eventi di visualizzazione per le proposte di cui non è stato eseguito il rendering: includi solo le proposte effettivamente visualizzate dall'utente.
- Eliminazione di
scopeDetails: inclusione discopeDetailsdall'oggetto proposition durante l'invio di eventi di visualizzazione.