事件类型

本页介绍Adobe Experience Platform Web SDK标记扩展提供的Adobe Experience Platform事件类型。 这些规则用于生成规则,不应与XDM🔗中的eventType字段混淆。

发送事件结束

通常,您的资产将具有一个或多个使用Send event操作将事件发送到Adobe Experience Platform边缘网络的规则。 每次将事件发送到边缘网络时,都会向浏览器返回一个包含有用数据的响应。 如果没有Send event complete事件类型,您将无权访问返回的数据。

要访问返回的数据,请创建单独的规则,然后向规则中添加Send event complete事件。 每次由于Send event操作而从服务器收到成功响应时,都会触发此规则。

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

用于处理从边缘网络返回的数据的规则可能如下所示:

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

手动渲染个性化内容

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

var propositions = event.propositions;

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

对于第一种情景,假定您尚未选中Render decisions复选框,并且在Send event操作中未提供任何负责发送事件的决策范围。

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的可视化体验编辑器中创建的任何内容)。 要检索符合自动渲染条件的任何个性化内容​,请使用Send event操作中的Decision scopes字段提供决策范围,以请求内容。 范围是一个字符串,用于标识要从服务器检索的特定主张。

Send event操作如下所示:

img.png

在本例中,如果在与salutationdiscount范围匹配的服务器上找到命题,则会返回这些命题并将其包含在propositions阵列中。 请注意,符合自动渲染条件的主题将继续包含在propositions数组中,无论您如何在Send event操作中配置Render decisions或Decision scopes字段。 在本例中,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返回的个性化内容包括响应令牌,这些令牌提供了有关活动、选件、体验、用户配置文件、地理信息等的详细信息。 这些详细信息可以与第三方工具共享或用于调试。 可以在Adobe Target用户界面中配置响应令牌。

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

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

在此页面上