事件类型
本页介绍由Adobe Experience Platform Web Adobe Experience Platform标记扩展提供的SDK事件类型。 它们用于生成规则,不应与eventType对象xdm中的字段混淆。
监控挂接已触发 monitoring-hook-triggered
Adobe Experience Platform Web SDK包括监视挂接,您可以使用这些挂接监视各种系统事件。 这些工具可用于开发您自己的调试工具和捕获Web SDK日志。
有关每个监视挂接事件包含哪些参数的完整详细信息,请参阅Web SDK监视挂接文档。
Web SDK标记扩展支持以下监视挂接:
-
onInstanceCreated:当您成功创建新的Web SDK实例时,将触发此监视挂接事件。
-
onInstanceConfigured:此监视挂接事件在成功解析
configure命令时由Web SDK触发 -
onBeforeCommand:此监视挂接事件在执行任何其他命令之前由Web SDK触发。 可以使用此监视挂接检索特定命令的配置选项。
-
onCommandResolved:此监视挂接事件是在解析命令promise之前触发的。 您可以使用此函数查看命令选项和结果。
-
onCommandRejected:当命令promise被拒绝并且包含有关错误原因的信息时,将触发此监视挂接事件。
-
onBeforeNetworkRequest:此监视挂接事件是在执行网络请求之前触发的。
-
onNetworkResponse:此监视挂接事件在浏览器收到响应时触发。
-
onNetworkError:此监视挂接事件在网络请求失败时触发。
-
onBeforeLog:此监视挂接事件在Web SDK将任何内容记录到控制台之前触发。
-
onContentRendering:此监视挂接事件由
personalization组件触发,可帮助您调试个性化内容的呈现。 此事件可以具有不同的状态:rendering-started:指示Web SDK即将呈现建议。 在Web SDK开始呈现决策范围或视图之前,您可以在data对象中看到将由personalization组件和范围名称呈现的建议。no-offers:表示未收到所请求参数的有效负载。rendering-failed:表示Web SDK无法呈现建议。rendering-succeeded:表示已针对决策范围完成渲染。rendering-redirect:指示Web SDK将执行重定向建议。
-
onContentHiding:在应用或删除预隐藏样式时触发此监视挂接事件。
Send event complete
通常,您的资产将有一个或多个使用Send event操作向Adobe Experience Platform Edge Network发送事件的规则。 每次将事件发送到Edge Network时,系统都会向浏览器返回包含有用数据的响应。 如果没有Send event complete事件类型,您将无法访问此返回的数据。
要访问返回的数据,请创建单独的规则,然后向该规则添加Send event complete事件。 每次通过Send event操作从服务器收到成功响应时都会触发此规则。
当Send event complete事件触发规则时,它会提供从服务器返回的数据,这些数据对于完成某些任务可能很有用。 通常,您会将Custom code操作(来自Core扩展)添加到包含Send event complete事件的同一规则中。 在Custom code操作中,您的自定义代码将有权访问名为event的变量。 此event变量将包含从服务器返回的数据。
用于处理从Edge Network返回的数据的规则可能如下所示:
以下是如何使用此规则中的Custom code操作执行某些任务的一些示例。
手动呈现个性化内容
在处理响应数据的规则中的Custom Code操作中,您可以访问从服务器返回的个性化建议。 为此,您需要键入以下自定义代码:
var propositions = event.propositions;
如果event.propositions存在,则它是一个包含个性化建议对象的数组。 数组中包括的建议在很大程度上取决于事件发送到服务器的方式。
对于第一个方案,假设您未选中Render decisions复选框,并且未在负责发送事件的decision scopes操作中提供任何Send event。
在此示例中,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
}
]
发送事件时,未选中Render decisions复选框,因此SDK不会尝试自动呈现任何内容。 但是,SDK仍会自动检索符合自动渲染条件的内容,并在需要时为您提供该内容以手动渲染。 请注意,每个建议对象的renderAttempted属性均设置为false。
如果您在发送事件时改为选中Render decisions复选框,则SDK会尝试呈现任何符合自动呈现条件的建议。 因此,每个建议对象的renderAttempted属性都将设置为true。 在这种情况下,无需手动呈现这些建议。
到目前为止,您仅查看了符合自动呈现条件的个性化内容(例如,在Adobe Target可视化体验编辑器中创建的任何内容)。 要检索任何个性化内容 不 适合自动呈现,请使用Decision scopes操作中的Send event字段提供决策范围来请求该内容。 范围是一个字符串,它标识您要从服务器检索的特定建议。
Send event操作如下所示:
在此示例中,如果在与salutation或discount范围匹配的服务器上找到建议,则将返回这些建议并将其包含在propositions数组中。 请注意,无论如何在propositions操作中配置Render decisions或Decision scopes字段,符合自动呈现条件的建议将继续包含在Send event数组中。 在这种情况下,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范围匹配的建议是使用HTML的基于表单的体验编辑器构建的Adobe Target建议。 假设您的页面上有一个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.
}
Subscribe ruleset items subscribe-ruleset-items
Subscribe ruleset items事件类型允许您为表面订阅Adobe Journey Optimizer内容卡。 无论何时评估规则集,提供给此命令的回调都会接收一个结果对象,该结果对象具有保存内容卡数据的建议。
此事件类型支持以下可配置的属性:
- Schemas:要订阅内容卡的架构数组。 您可以手动输入架构,也可以通过提供数据元素来输入架构。
- Surfaces:您要订阅内容卡片的表面数组。 可以手动输入曲面,也可以通过提供数据元素来输入曲面。