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"
      }
    }
  }
});
NOTE
Gli eventi di visualizzazione automatica dipendono dal rendering gestito da SDK. Se esegui manualmente il rendering del contenuto (anche utilizzando 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.

  1. Nella chiamata sendEvent iniziale (spesso nella parte superiore della pagina), richiedere ed eseguire il rendering del contenuto, ma eliminare gli eventi di visualizzazione automatica impostando renderDecisions su true e personalization.sendDisplayEvent su false:

    code language-js
    alloy("sendEvent", {
      renderDecisions: true,
      personalization: { sendDisplayEvent: false },
      xdm: {
        web: {
          webPageDetails: {
             name: "home"
          }
        }
      }
    });
    
  2. In seguito (spesso nella parte inferiore della pagina), chiama sendEvent con un payload XDM che include eventi di visualizzazione per le proposte di cui è stato eseguito il rendering dopo la richiesta precedente impostando personalization.includeRenderedPropositions su true:

    code language-js
    alloy("sendEvent", {
      personalization: { includeRenderedPropositions: true },
      xdm: {
        // Add any additional page load telemetry you want to send here
        web: {
          webPageDetails: {
            name: "home"
          }
        }
      }
    });
    
NOTE
Quando si utilizza 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.propositions contenente le proposte sottoposte a rendering' id, scope e scopeDetails
  • _experience.decisioning.propositionEventType.display impostato su 1

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 applyPropositions o 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 discopeDetails: inclusione di scopeDetails dall'oggetto proposition durante l'invio di eventi di visualizzazione.
recommendation-more-help
1ae86b30-e55e-49c1-ab11-9d0356a5f3e1