事件类型
本页介绍由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
存在,则它是一个包含个性化建议对象的数组。 数组中包括的建议在很大程度上取决于事件发送到服务器的方式。
对于第一个方案,假设您未选中渲染决策复选框,并且未在负责发送事件的发送事件操作中提供任何决策范围。
在此示例中,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可视化体验编辑器中创建的任何内容)。 要检索任何个性化内容 不 适合自动呈现,请使用发送事件操作中的决策范围字段提供决策范围,以请求该内容。 范围是一个字符串,它标识您要从服务器检索的特定建议。
发送事件操作如下所示:
在此示例中,如果在与salutation
或discount
范围匹配的服务器上找到建议,则将返回这些建议并将其包含在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
元素中。 执行以下操作:
- 从
event
对象提取建议。 - 循环遍历每个建议,查找范围为
discount
的建议。 - 如果您找到一个建议,请循环遍历建议中的每个项目,查找包含HTML内容的项目。 (检查总比假设要好。 )
- 如果找到一个包含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操作中将自定义代码写入:
- 从
event
对象提取建议。 - 循环访问每个建议。
- 确定SDK是否呈现建议。
- 如果是,则循环遍历建议中的每个项目。
- 从
meta
属性中检索活动名称,该属性是包含响应令牌的对象。 - 将活动名称推入数组。
- 将活动名称发送给第三方。
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.
}