事件类型

本页介绍由Adobe Experience Platform Web SDK标记扩展提供的Adobe Experience Platform事件类型。 这些已用来 生成规则 也不应该混淆 eventType 中的字段 xdm 对象.

发送事件完成

通常,您的资产会有一个或多个使用 发送事件 操作 将事件发送到Adobe Experience Platform Edge Network。 每次将事件发送到Edge Network时,系统都会向浏览器返回包含有用数据的响应。 不使用 发送事件完成 事件类型时,您将无权访问此返回的数据。

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

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

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

以下是如何使用执行某些任务的一些示例 自定义代码 操作。

手动呈现个性化内容

在处理响应数据的规则中的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 scope是使用Adobe Target的基于表单的HTML编辑器构建的体验建议。 假设您的页面上有一个元素,其ID为 daily-special 并希望呈现以下源的内容: discount 中的建议 daily-special 元素。 执行以下操作:

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

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

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

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

var propositions = event.propositions;

如果 event.propositions 存在,它是一个包含个性化建议对象的数组。 请参阅 手动呈现个性化内容 ,以了解有关 result.propositions.

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

  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