Types d’événements

Cette page décrit les types d’événements Adobe Experience Platform fournis par l’extension de balise du SDK Web de Adobe Experience Platform. Ils sont utilisés pour créer des règles et ne doivent pas être confondus avec le champ eventType dans XDM.

Envoyer l’événement terminé

En règle générale, votre propriété comporte une ou plusieurs règles à l’aide de l’action Envoyer l’événement pour envoyer des événements à Adobe Experience Platform Edge Network. Chaque fois qu’un événement est envoyé à Edge Network, une réponse est renvoyée au navigateur avec des données utiles. Sans le type d’événement Send event complete , vous n’auriez pas accès à ces données renvoyées.

Pour accéder aux données renvoyées, créez une règle distincte, puis ajoutez un événement Send event complete à la règle. Cette règle est déclenchée chaque fois qu’une réponse réussie est reçue du serveur suite à une action Envoyer l’événement.

Lorsqu’un événement Send event complete déclenche une règle, il fournit les données renvoyées par le serveur qui peuvent s’avérer utiles pour accomplir certaines tâches. En règle générale, vous ajoutez une action Code personnalisé (de l’extension Core) à la même règle que celle qui contient l’événement Envoyer l’événement terminé. Dans l’action Code personnalisé , votre code personnalisé aura accès à une variable nommée event. Cette variable event contiendra les données renvoyées par le serveur.

Votre règle de gestion des données renvoyées par Edge Network peut ressembler à ceci :

Vous trouverez ci-dessous quelques exemples d’exécution de certaines tâches à l’aide de l’action Code personnalisé dans cette règle.

Rendu manuel du contenu personnalisé

Dans l’action Custom Code (Code personnalisé) de la règle pour le traitement des données de réponse, vous pouvez accéder aux propositions de personnalisation renvoyées par le serveur. Pour ce faire, saisissez le code personnalisé suivant :

var propositions = event.propositions;

Si event.propositions existe, il s’agit d’un tableau contenant des objets de proposition de personnalisation. Les propositions incluses dans le tableau sont déterminées, en grande partie, par la manière dont l’événement a été envoyé au serveur.

Pour ce premier scénario, supposons que vous n’ayez pas coché la case Rendu les décisions et que vous n’ayez fourni aucune portée de décision dans l’action Envoyer l’événement responsable de l’envoi de l’événement.

img.png

Dans cet exemple, le tableau propositions contient uniquement les propositions relatives à l’événement qui peuvent faire l’objet d’un rendu automatique.

Le tableau propositions peut ressembler à cet exemple :

[
  {
    "id": "AT:eyJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ9",
    "scope": "__view__",
    "items": [
      {
        "id": "11223344",
        "schema": "https://ns.adobe.com/personalization/dom-action",
        "data": {
          "content": "<h2 style=\"color: yellow\">An HTML proposition.</h2>",
          "selector": "#hero",
          "type": "setHtml"
        },
        "meta": {}
      }
    ],
    "renderAttempted": false
  },
  {
    "id": "AT:PyJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ8",
    "scope": "__view__",
    "items": [
      {
        "id": "11223345",
        "schema": "https://ns.adobe.com/personalization/dom-action",
        "data": {
          "content": "<h2 style=\"color: yellow\">Another HTML proposition.</h2>",
          "selector": "#sidebar",
          "type": "setHtml"
        },
        "meta": {}
      }
    ],
    "renderAttempted": false
  }
]

Lors de l’envoi de l’événement, la case à cocher Rendu des décisions n’était pas cochée. Le SDK n’a donc pas tenté d’afficher automatiquement le contenu. Cependant, le SDK a toujours récupéré automatiquement le contenu éligible au rendu automatique et vous a fourni le rendu manuel si vous le souhaitez. Notez que la propriété renderAttempted de chaque objet de proposition est définie sur false.

Si, à la place, vous aviez coché la case Render Decisions lors de l’envoi de l’événement, le SDK aurait tenté d’afficher toutes les propositions éligibles pour le rendu automatique. Par conséquent, la propriété renderAttempted de chaque objet de proposition est définie sur true. Dans ce cas, il n’est pas nécessaire d’effectuer le rendu manuel de ces propositions.

Jusqu’à présent, vous n’avez examiné que le contenu de personnalisation éligible au rendu automatique (par exemple, tout contenu créé dans le compositeur d’expérience visuelle Adobe Target). Pour récupérer tout contenu de personnalisation non éligible au rendu automatique, demandez le contenu en fournissant les portées de décision à l’aide du champ Portées de décision dans l’action Envoyer l’événement. Une portée est une chaîne qui identifie une proposition particulière que vous souhaitez récupérer du serveur.

L’action Envoyer l’événement se présenterait comme suit :

img.png

Dans cet exemple, si des propositions sont trouvées sur le serveur correspondant à la portée salutation ou discount , elles sont renvoyées et incluses dans le tableau propositions . Gardez à l’esprit que les propositions admissibles au rendu automatique continueront à être incluses dans le tableau propositions, quelle que soit la manière dont vous configurez les décisions de rendu ou les portées de décision dans l’action Envoyer l’événement. Le tableau propositions, dans ce cas, ressemblerait à cet exemple :

[
  {
    "id": "AT:cZJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ2",
    "scope": "salutation",
    "items": [
      {
        "schema": "https://ns.adobe.com/personalization/json-content-item",
        "data": {
          "id": "4433221",
          "content": {
            "salutation": "Welcome, esteemed visitor!"
          }
        },
        "meta": {}
      }
    ],
    "renderAttempted": false
  },
  {
    "id": "AT:FZJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ0",
    "scope": "discount",
    "items": [
      {
        "schema": "https://ns.adobe.com/personalization/html-content-item",
        "data": {
          "id": "4433222",
          "content": "<div>50% off your order!</div>",
          "format": "text/html"
        },
        "meta": {}
      }
    ],
    "renderAttempted": false
  },
  {
    "id": "AT:eyJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ9",
    "scope": "__view__",
    "items": [
      {
        "id": "11223344",
        "schema": "https://ns.adobe.com/personalization/dom-action",
        "data": {
          "content": "<h2 style=\"color: yellow\">An HTML proposition.</h2>",
          "selector": "#hero",
          "type": "setHtml"
        },
        "meta": {}
      }
    ],
    "renderAttempted": false
  },
  {
    "id": "AT:PyJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ8",
    "scope": "__view__",
    "items": [
      {
        "id": "11223345",
        "schema": "https://ns.adobe.com/personalization/dom-action",
        "data": {
          "content": "<h2 style=\"color: yellow\">Another HTML proposition.</h2>",
          "selector": "#sidebar",
          "type": "setHtml"
        },
        "meta": {}
      }
    ],
    "renderAttempted": false
  }
]

À ce stade, vous pouvez générer le contenu des propositions à votre gré. Dans cet exemple, la proposition correspondant à la portée discount est une proposition de HTML créée à l’aide du compositeur d’expérience d’après les formulaires Adobe Target. Supposons que votre page comporte un élément avec l’identifiant daily-special et que vous souhaitiez effectuer le rendu du contenu de la proposition discount vers l’élément daily-special. Procédez comme suit :

  1. Extrayez les propositions de l’objet event.
  2. Parcourez chaque proposition en recherchant la proposition dont le périmètre est discount.
  3. Si vous trouvez une proposition, passez en boucle chaque élément de la proposition, recherchant l’élément qui est le contenu HTML. (Mieux vaut vérifier que supposer.)
  4. Si vous trouvez un élément contenant du contenu de HTML, recherchez l’élément daily-special sur la page et remplacez son HTML par le contenu personnalisé.

Votre code personnalisé dans l’action Code personnalisé peut apparaître comme suit :

var propositions = event.propositions;

var discountProposition;
if (propositions) {
  // Find the discount proposition, if it exists.
  for (var i = 0; i < propositions.length; i++) {
    var proposition = propositions[i]; 
    if (proposition.scope === "discount") {
      discountProposition = proposition;
      break;
    }
  }
}

var discountHtml;
if (discountProposition) {
  // Find the item from proposition that should be rendered.
  // Rather than assuming there a single item that has HTML
  // content, find the first item whose schema indicates
  // it contains HTML content.
  for (var j = 0; j < discountProposition.items.length; j++) {
    var discountPropositionItem = discountProposition.items[i]; 
    if (discountPropositionItem.schema === "https://ns.adobe.com/personalization/html-content-item") {
      discountHtml = discountPropositionItem.data.content;
      break;
    }
  }
}

if (discountHtml) {
  // Discount HTML exists. Time to render it.
  var dailySpecialElement = document.getElementById("daily-special");
  dailySpecialElement.innerHTML = discountHtml;
}

Accès aux jetons de réponse Adobe Target

Le contenu de personnalisation renvoyé par Adobe Target comprend jetons de réponse, qui sont des détails sur l’activité, l’offre, l’expérience, le profil utilisateur, les informations géographiques, etc. Ces détails peuvent être partagés avec des outils tiers ou utilisés pour le débogage. Les jetons de réponse peuvent être configurés dans l’interface utilisateur d’Adobe Target.

Dans l’action Custom Code (Code personnalisé) de la règle pour le traitement des données de réponse, vous pouvez accéder aux propositions de personnalisation renvoyées par le serveur. Pour ce faire, saisissez le code personnalisé suivant :

var propositions = event.propositions;

Si event.propositions existe, il s’agit d’un tableau contenant des objets de proposition de personnalisation. Voir Rendu manuel du contenu personnalisé pour plus d’informations sur le contenu de result.propositions.

Supposons que vous souhaitiez rassembler tous les noms d’activité de toutes les propositions automatiquement générées par le SDK web et les pousser dans un seul tableau. Vous pouvez ensuite envoyer le tableau unique à un tiers. Dans ce cas, écrivez du code personnalisé dans l’action Custom code pour :

  1. Extrayez les propositions de l’objet event.
  2. Passez en revue chaque proposition.
  3. Déterminez si le SDK a rendu la proposition.
  4. Si tel est le cas, passez en boucle chaque élément de la proposition.
  5. Récupérez le nom de l’activité à partir de la propriété meta, qui est un objet contenant des jetons de réponse.
  6. Envoyez le nom de l’activité dans un tableau.
  7. Envoyez les noms des activités à un tiers.
var propositions = event.propositions;
if (propositions) {
  var activityNames = [];
  propositions.forEach(function(proposition) {
    if (proposition.renderAttempted) {
      proposition.items.forEach(function(item) {
        if (item.meta) {
          // item.meta contains the response tokens.
          var activityName = item.meta["activity.name"];
          // Ignore duplicates
          if (activityNames.indexOf(activityName) === -1) {
            activityNames.push(activityName);  
          }
        }
      });
    }
  });
  // Now that activity names are in an array,
  // you can send them to a third party or use
  // them in some other way.
}

Sur cette page