事件类型

本页介绍由Adobe Experience Platform Web SDK标记扩展提供的Adobe Experience Platform事件类型。 它们用于生成规则,不应与xdm对象中的eventType字段混淆。

发送事件完成

通常,您的属性将有一个或多个使用发送事件操作将事件发送到Adobe Experience PlatformEdge Network的规则。 每次将事件发送到Edge Network时,系统都会向浏览器返回包含有用数据的响应。 如果没有发送事件完成事件类型,您将无法访问此返回的数据。

要访问返回的数据,请创建一个单独的规则,然后向该规则添加一个发送事件结束事件。 每次通过发送事件操作从服务器收到成功响应时,都会触发此规则。

当发送事件完成事件触发规则时,它会提供从服务器返回的数据,这些数据可能有助于完成某些任务。 通常,您将向包含发送事件完成事件的同一规则添加自定义代码操作(来自Core扩展)。 在自定义代码操作中,您的自定义代码将有权访问名为event的变量。 此event变量将包含从服务器返回的数据。

用于处理从Edge Network返回的数据的规则可能如下所示:

以下是如何使用此规则中的Custom code操作执行某些任务的示例。

手动呈现个性化内容

在处理响应数据的规则中的Custom Code操作中,您可以访问从服务器返回的个性化建议。 为此,您需要键入以下自定义代码:

var propositions = event.propositions;

如果event.propositions存在,则它是一个包含个性化建议对象的数组。 数组中包括的建议在很大程度上取决于事件发送到服务器的方式。

对于第一个方案,假设您未选中渲染决策复选框,并且未在负责发送事件的发送事件操作中提供任何决策范围。

img.png

在此示例中,propositions数组仅包含与事件相关的建议,这些建议适用于自动渲染。

propositions数组可能与以下示例类似:

[
  {
    "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
  }
]

发送事件时,未选中渲染决策复选框,因此SDK不会尝试自动渲染任何内容。 但是,SDK仍会自动检索符合自动渲染条件的内容,并在需要时为您提供该内容以手动渲染。 请注意,每个建议对象的renderAttempted属性均设置为false

如果您在发送事件时选中了渲染决策复选框,则SDK会尝试渲染任何符合自动渲染条件的建议。 因此,每个建议对象的renderAttempted属性都将设置为true。 在这种情况下,无需手动呈现这些建议。

到目前为止,您仅查看了符合自动呈现条件的个性化内容(例如,在Adobe Target可视化体验编辑器中创建的任何内容)。 要检索任何个性化内容​ ​适合自动呈现,请使用发送事件操作中的决策范围字段提供决策范围,以请求该内容。 范围是一个字符串,它标识您要从服务器检索的特定建议。

发送事件操作如下所示:

img.png

在此示例中,如果在与salutationdiscount范围匹配的服务器上找到建议,则将返回这些建议并将其包含在propositions数组中。 请注意,符合自动呈现条件的建议将继续包含在propositions数组中,无论您如何在发送事件操作中配置呈现决策或决策范围字段。 在这种情况下,propositions数组将与以下示例类似:

[
  {
    "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
  }
]

此时,您可以根据需要呈现建议内容。 在此示例中,与discount范围匹配的建议是使用Adobe Target的基于表单的HTML编辑器构建的体验建议。 假设您的页面上有一个ID为daily-special的元素,并希望将discount建议中的内容渲染到daily-special元素中。 执行以下操作:

  1. event对象提取建议。
  2. 循环遍历每个建议,查找范围为discount的建议。
  3. 如果您找到一个建议,请循环遍历建议中的每个项目,查找包含HTML内容的项目。 (检查总比假设要好。 )
  4. 如果找到一个包含HTML内容的项目,请在页面上找到daily-special元素,并将其HTML替换为个性化内容。

您在Custom code操作中的自定义代码可能如下所示:

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;
}

访问Adobe Target响应令牌

从Adobe Target返回的Personalization内容包括响应令牌,这些令牌包含有关活动、选件、体验、用户配置文件、地理信息等的详细信息。 这些详细信息可与第三方工具共享或用于调试。 响应令牌可在Adobe Target用户界面中配置。

在处理响应数据的规则中的Custom Code操作中,您可以访问从服务器返回的个性化建议。 为此,请键入以下自定义代码:

var propositions = event.propositions;

如果event.propositions存在,则它是一个包含个性化建议对象的数组。 有关result.propositions内容的更多信息,请参阅手动渲染个性化内容

假设您想从Web SDK自动渲染的所有建议中收集所有活动名称,并将它们推入单个数组中。 然后,您可以将单个阵列发送给第三方。 在这种情况下,请在Custom code操作中将自定义代码写入:

  1. event对象提取建议。
  2. 循环访问每个建议。
  3. 确定SDK是否呈现建议。
  4. 如果是,则循环遍历建议中的每个项目。
  5. meta属性中检索活动名称,该属性是包含响应令牌的对象。
  6. 将活动名称推入数组。
  7. 将活动名称发送给第三方。
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.
}
recommendation-more-help
12b4e4a9-5028-4d88-8ce6-64a580811743