创建标记规则
了解如何使用标记规则将事件与XDM对象一起发送到Adobe Experience PlatformEdge Network。 标记规则是事件、条件和操作的组合,用于告知标记属性执行一些操作。 在Platform Web SDK中,规则用于将包含正确数据的事件发送到PlatformEdge Network。
学习目标
在本课程结束时,您能够:
- 使用命名惯例来管理标记中的规则
- 使用“更新变量”和“发送事件”操作,发送包含XDM字段的事件
- 跨多个规则栈叠多组XDM字段
- 将单个或整个数组数据元素映射到XDM对象
- 将标记规则Publish到开发库
先决条件
您熟悉数据收集标记和Luma演示网站,并完成了本教程中以前的课程:
命名约定
要管理标记中的规则,建议遵循标准命名约定。 本教程使用由五部分组成的命名约定:
- [位置] - [事件] - [目的] - [订单]
其中;
- location 是触发规则的网站上的一个或多个页面
- event 是规则的触发器
- purpose 是规则执行的主要操作
- order 是规则相对于其他规则应触发的顺序
创建标记规则
在标记中,规则用于在各种条件下执行操作(触发调用)。 Platform Web SDK标记扩展包含本课程中使用的两个操作:
- 更新变量 将数据元素映射到XDM对象中的属性
- 发送事件 将XDM对象发送到Experience PlatformEdge Network
在本课程的其余部分中,我们将:
-
使用 更新变量 操作创建规则以定义XDM字段的“全局配置”。
-
使用 更新变量 操作创建其他规则,这些规则将覆盖我们的“全局配置”,并在某些条件下(例如,在产品页面上添加产品详细信息)提供其他XDM字段。
-
使用 Send Event 操作创建另一个规则,该操作会将完整的XDM对象发送到Adobe Experience PlatformEdge Network。
所有这些规则将使用“顺序”选项正确排序。
此视频概述了此过程:
全局配置字段
要为全局XDM字段创建标记规则:
-
打开您在本教程中使用的标记属性
-
在左侧导航中转到 规则
-
选择 创建新规则 按钮
-
将规则命名为
all pages - library loaded - set global variables - 1
-
在 事件 部分中,选择 添加
-
使用 核心扩展 并选择 Library Loaded (Page Top) 作为 事件类型
-
选择 高级 下拉菜单并输入
1
作为 顺序note note NOTE 订单编号越低,执行的时间就越早。 因此,我们给予“全球配置”一个较低的订单编号。 -
选择 Keep Changes 以返回主规则屏幕
-
在 操作 部分中,选择 添加
-
作为 扩展,请选择 Adobe Experience Platform Web SDK
-
作为 操作类型,请选择 更新变量
-
作为 数据元素,选择您在创建数据元素课程中创建的
xdm.variable.content
现在,将您的数据元素映射到XDM对象使用的架构。 您可以映射到单个属性或整个对象。 在本例中,您将映射到各个属性:
-
找到eventType字段并将其选定
-
输入值
web.webpagedetails.pageViews
note tip TIP 要了解在 eventType
字段中要填充哪些值,您必须转到架构页面并选择eventType
字段以在右边栏上查看建议值。 如果需要,您还可以输入新值。
架构页面上的 -
接下来,在架构中找到
identityMap
对象并将其选定 -
映射到
identityMap.loginID
数据元素note tip TIP 如果数据元素为空,则XDM字段将不会包含在网络请求中。 因此,当用户未经身份验证并且 identityMap.loginID
数据元素为null时,将不会发送identityMap
对象。 这就是为什么我们可以在我们的“全球配置”中定义它。 -
向下滚动直到到达
web
对象 -
选择以将其打开
-
将以下数据元素映射到相应的
web
XDM变量web.webPageDetials.name
至%page.pageInfo.pageName%
web.webPageDetials.server
至%page.pageInfo.server%
web.webPageDetials.siteSection
至%page.pageInfo.hierarchie1%
-
将
web.webPageDetials.pageViews.value
设置为1
note tip TIP 虽然Adobe Analytics不需要将设置为 web.webpagedetails.pageViews
的eventType
和web.webPageDetails.pageViews.value
来处理作为页面查看的信标,但使用标准方式为其他下游应用程序指示页面查看很有用。 -
选择 保留更改,然后在下一个屏幕中选择 保存 规则以完成创建规则
产品页面字段
现在,在将XDM对象发送到平台Edge Network之前,开始在其他顺序规则中使用 更新变量 以扩充该对象。
首先在Luma的产品详细信息页面上跟踪产品查看:
-
选择 添加规则
-
将其命名为
ecommerce - library loaded - set product details variables - 20
-
选择“事件”下的
-
在 扩展 下,选择 核心
-
在 Event Type 下,选择 Library Loaded (Page Top)
-
选择以打开 高级选项,键入
20
。 此顺序值确保规则在 之后运行all pages - library loaded - set global variables - 1
,该规则设置全局配置。 -
选择 保留更改
-
在 条件 下,选择 添加
-
将 逻辑类型 保留为 常规
-
将 扩展 保留为 核心
-
选择 条件类型 作为不含查询字符串 的 路径
-
在右侧,启用 正则表达式 切换开关
-
在 路径下,等于 设置
/products/
。 对于Luma演示站点,它确保规则仅在产品页面上触发 -
选择 保留更改
-
在 操作 下,选择 添加
-
选择 Adobe Experience Platform Web SDK 扩展
-
选择 操作类型 作为 更新变量
-
选择
xdm.variable.content
作为 数据元素 -
向下滚动到
commerce
对象 -
打开 productViews 对象并将 值 设置为
1
note tip TIP 在XDM中设置commerce.productViews.value=1会自动映射到Analytics中的 prodView
事件 -
向下滚动到
eventType
并将其设置为commerce.productViews
note note NOTE 由于此规则的顺序较高,因此它将覆盖“全局配置”规则中设置的 eventType
。eventType
只能包含一个值,我们建议使用最有价值的事件来设置它。 -
向下滚动到并选择
productListItems
数组 -
选择 提供单个项目
-
选择 添加项
note caution CAUTION productListItems
是array
数据类型,因此它期望数据作为元素集合进入。 由于Luma演示站点的数据层结构,并且由于一次只能在Luma站点上查看一个产品,因此需要单独添加项目。 在您自己的网站上实施时,根据数据层结构,您可能能够提供整个阵列。 -
选择以打开 项目1
-
将
productListItems.item1.SKU
映射到%product.productInfo.sku%
-
选择 保留更改
-
选择 保存 以保存规则
购物车字段
您可以将整个数组映射到XDM对象,前提是数组与XDM架构的格式匹配。 您创建的自定义代码数据元素cart.productInfo
将通过Luma上的digitalData.cart.cartEntries
数据层对象进行循环,并将其转换为XDM架构的productListItems
对象的所需格式。
要说明此问题,请参阅Luma站点数据层(左)与转换后的数据元素(右)的以下比较:
比较数据元素与productListItems
结构(提示,它应该匹配)。
price
和qty
)将重新格式化为数据元素中的数字。 这些格式要求对于Platform中的数据完整性非常重要,可以在配置架构步骤中确定。 在示例中,数量 使用 整数 数据类型。![XDM架构数据类型](./media_1825e439c524cdcb457e5dfa02d67e14e58a9bdba.png?width=750&format=png&optimize=medium)
现在,让我们将数组映射到XDM对象:
-
创建名为
ecommerce - library loaded - set shopping cart variables - 20
的新规则 -
选择“事件”下的
-
在 扩展 下,选择 核心
-
在 Event Type 下,选择 Library Loaded (Page Top)
-
选择以打开 高级选项,键入
20
-
选择 保留更改
-
在 条件 下,选择 添加
-
将 逻辑类型 保留为 常规
-
将 扩展 保留为 核心
-
选择 条件类型 作为不含查询字符串 的 路径
-
在右侧,不 启用 正则表达式 切换开关
-
在 路径下,等于 设置
/content/luma/us/en/user/cart.html
。 对于Luma演示站点,它确保规则仅在购物车页面上触发 -
选择 保留更改
-
在 操作 下,选择 添加
-
选择 Adobe Experience Platform Web SDK 扩展
-
选择 操作类型 作为 更新变量
-
选择
xdm.variable.content
作为 数据元素 -
向下滚动到
commerce
对象并选择以将其打开。 -
打开 productListViews 对象并将 值 设置为
1
note tip TIP 在XDM中设置commerce.productListViews.value=1会自动映射到Analytics中的 scView
事件 -
选择
eventType
并设置为commerce.productListViews
-
向下滚动到并选择 productListItems 数组
-
选择 提供整个数组
-
映射到
cart.productInfo
数据元素 -
选择 保留更改
-
选择 保存 以保存规则
按照相同的模式为结账和购买创建其他两个规则,但存在以下差异:
规则名称: ecommerce - library loaded - set checkout variables - 20
-
条件: /content/luma/us/en/user/checkout.html
-
将
eventType
设置为commerce.checkouts
-
将
commerce.checkout.value
设置为1
note tip TIP 这等同于在Analytics中设置 scCheckout
事件
规则名称: ecommerce - library loaded - set purchase variables - 20
-
条件: /content/luma/us/en/user/checkout/order/thank-you.html
-
将
eventType
设置为commerce.purchases
-
将
commerce.purchases.value
设置为1
note tip TIP 这等同于在Analytics中设置 purchase
事件 -
将
commerce.order.purchaseID
设置为cart.orderId
数据元素 -
将
commerce.order.currencyCode
设置为硬编码值USD
note tip TIP 这等同于Analytics中的设置 s.purchaseID
和s.currencyCode
变量 -
向下滚动到并选择 productListItems 数组
-
选择 提供整个数组
-
映射到
cart.productInfo.purchase
数据元素 -
选择 保留更改
-
选择 保存
完成后,您应该会看到创建了以下规则。
发送事件规则
现在您已设置变量,可以创建规则以使用 发送事件 操作将完整的XDM对象发送到PlatformEdge Network。
-
在右侧,选择 添加规则 以创建另一个规则
-
将规则命名为
all pages - library loaded - send event - 50
-
在 事件 部分中,选择 添加
-
使用 核心扩展 并选择
Library Loaded (Page Top)
作为 事件类型 -
选择 高级 下拉菜单并在 顺序 中输入
50
。 这将确保此规则在您配置的所有其他规则(这些规则将1
或20
作为其顺序)之后触发。 -
选择 Keep Changes 以返回主规则屏幕
-
在 操作 部分中,选择 添加
-
作为 扩展,请选择 Adobe Experience Platform Web SDK
-
作为 操作类型,选择 发送事件
-
作为 XDM,选择在上一课程中创建的
xdm.variable.content
数据元素 -
选择 Keep Changes 以返回主规则屏幕
-
选择 保存 以保存规则
Publish库中的规则
接下来,将规则发布到开发环境,以便您可以验证它是否有效。
要创建库,请执行以下操作:
-
在左侧导航中转到 发布流
-
选择 添加库
-
对于 Name,输入
Luma Web SDK Tutorial
-
对于 环境,请选择
Development
-
选择 添加所有更改的资源
note note NOTE 您应会看到在前面的课程中创建的所有标记组件。 核心扩展包含所有Web标记属性所需的基本JavaScript。 -
选择 保存并生成以进行开发
库可能需要几分钟才能构建,完成后,库名称左侧会显示一个绿色圆点:
如您在发布流屏幕上所见,发布流程还有许多其他内容,这不在本教程的涵盖范围内。 本教程仅在开发环境中使用单个库。
现在,您可以使用Adobe Experience Platform Debugger来验证请求中的数据。