从at.js 1.x 到at.js 2.x
Adobe Target 中最新版本的 at.js 提供了丰富的功能集,使您的企业能够在下一代客户端技术上实现个性化。这个新版本着重升级了 at.js 以与单页应用程序 (SPA) 进行良性的交互。
以下是使用at.js 2.在早期版本中不可用的 x:
- 能够在页面加载时缓存所有选件,将多次服务器调用减少至一次服务器调用。
- 由于选件是通过缓存立即显示的,不存在传统服务器调用引入的任何时间延迟,因此极大地提升了最终用户在您网站上的体验。
- 通过简单的单行代码和一次性开发人员设置,您的营销人员能够通过SPA上的VEC创建和运行A/B Test和Experience Targeting (XT)活动。
at.js 2.x 系统图
下图可帮助您了解at.js 2.带视图的 x 以及它如何增强SPA集成。 要更好地了解at.js 2.x,请参阅单页应用程序实施。
(单击图像可展开至全宽。)
at.js 库会同步加载,并隐藏文档正文。
也可以选择预先隐藏页面上实施的代码段,以异步方式加载at.js。
配置文件脚本在执行后进入配置文件存储区。存储区向受众库请求符合条件的受众(例如,从Adobe Analytics、Audience Manager等共享的受众)。
客户属性会以批量过程发送到配置文件存储区。
目标内容会发送回页面,其中可能包含其他个性化的配置文件值。
当前页面上的目标内容会在默认内容不发生闪烁的情况下尽快显示。
视图中作为SPA用户操作结果显示的目标内容会缓存在浏览器中,因此当通过triggerView()触发视图时,可以立即应用它而无需额外的服务器调用。
目标数据通过SDID匹配到Analytics数据,并且已处理到Analytics报表存储中。
然后,便可以在Analytics和Target中通过Analytics for Target (A4T)报表查看Analytics数据。
现在,无论在 SPA 上的什么位置实施 triggerView(),都会从缓存中检索查看次数和操作,并在没有服务器调用的情况下显示给用户。triggerView() 还会向 Target 后端发出通知请求,以增加和记录展示次数计数。
(单击图像可展开至全宽。)
triggerView() 以渲染视图并应用操作来修改可视化元素。部署 at.js 2.x
部署 at.js 2.通过Adobe Experience Platform扩展中的标记 x。
已弃用的 at.js 函数
at.js 2.x。
您可以在下面找到已弃用的函数及其对应的等效函数。有关函数的完整列表,请参阅 at.js 函数。
mboxDefault标记的元素。 因此,客户必须在网站上手动或通过标签管理器容纳预隐藏逻辑。mboxCreate(mbox,params)
描述:
可使用 mboxDefault 类名称执行请求并将选件应用到最近的 DIV。
示例:
<div class="mboxDefault">
default content to replace by offer
</div>
<script>
mboxCreate('mboxName','param1=value1','param2=value2');
</script>
at.js 2.x 等效项
mboxCreate(mbox, params) 的替代函数是 getOffer() 和 applyOffer()。
示例:
<div class="mboxDefault">
default content to replace by offer
</div>
<script>
var el = document.currentScript.previousElementSibling;
adobe.target.getOffer({
mbox: "mboxName",
params: {
param1: "value1",
param2: "value2"
},
success: function(offer) {
adobe.target.applyOffer({
mbox: "mboxName",
selector: el,
offer: offer
});
},
error: function(error) {
console.error(error);
el.style.visibility = "visible";
}
});
</script>
mboxDefine() 和 mboxUpdate()
描述:
创建元素和 mbox 名称之间的内部映射,但不执行请求。与 mboxUpdate() 结合使用,后者执行请求并将选件应用于 mboxDefine() 中 nodeId 标识的元素。也可以用来更新由 mboxCreate 发起的 mbox。
示例:
<div id="someId" class="mboxDefault"></div>
<script>
mboxDefine('someId','mboxName','param1=value1','param2=value2');
mboxUpdate('mboxName','param3=value3','param4=value4');
</script>
at.js 2.x 等效项:
mboxDefine() 和 mboxUpdate 的替代项是 getOffer() 和 applyOffer(),applyOffer() 中会使用选择器选项。此方法允许您使用任何 CSS 选择器将选件映射到元素,而不仅仅映射到具有 ID 的元素。
示例:
<div id="someId" class="mboxDefault">
default content to replace by offer
</div>
<script>
adobe.target.getOffer({
mbox: "mboxName",
params: {
param1: "value1",
param2: "value2",
param3: "value3",
param4: "value4"
},
success: function(offer) {
adobe.target.applyOffer({
mbox: "mboxName",
selector: "#someId",
offer: offer
});
},
error: function(error) {
console.error(error);
var el = document.getElementById("someId");
el.style.visibility = "visible";
}
});
</script>
adobe.target.registerExtension()
描述:
可提供用于注册特定扩展的标准方法。
此函数不再受支持,不应使用。
at.js 2中已弃用、新增和支持的函数的摘要。x
已弃用?
(将显示默认内容)
getOffer()getOffers()applyOffer()applyOffers()triggerView()trackEvent()mboxCreate()mboxDefine()
mboxUpdate()
targetGlobalSettings()Data ProviderstargetPageParams()targetPageParamsAll()registerExtension()At.js Custom Events限制和标注
请注意以下限制和标注:
转化跟踪
使用 mboxCreate() 进行转化跟踪的客户必须使用 trackEvent() 或 getOffer()。
选件交付
未使用 getOffer() 或 applyOffer() 替换 mboxCreate() 的客户可能无法交付选件。
是否可以在某些页面上使用 at.js 2.x,而在其他页面上使用 at.js 1.x 在其他页面上?
可以,系统会使用不同版本和库保留各个页面中的访客配置文件。Cookie 格式是相同的。
at.js 2.x
at.js 2.x 使用新的API,我们称之为“交付API”。 为了调试at.js是否正确调用Target边缘服务器,您可以将浏览器开发人员工具的“网络”选项卡过滤到“交付”、“tt.omtrdc.net”或您的客户端代码。 您还会注意到 Target 发送的是 JSON 有效负载而不是键值对。
不再使用Target全局Mbox
在 at.js 2.x,您不会再在网络调用中看到“target-global-mbox”。 我们已在发送到Target服务器的JSON有效负载中将"target-global-mbox"语法替换为"execute > pageLoad",如下所示:
{
"id": {
// ...
},
"context": {
"channel": "web",
// ...
},
"execute": {
"pageLoad": {}
}
}
本质上讲,我们引入全局 mbox 概念是为了告知 Target 在页面加载时是否要检索选件和内容。因此,我们在最新版本中更加明确了此概念。
at.js 中的全局 mbox 名称是否无关紧要?
客户可以通过 Target > Administration > Implementation > Edit at.js Settings 指定全局mbox名称。 Target 边缘服务器使用此设置来将 execute > pageLoad 转换为 Target UI 中显示的全局 mbox 名称。这允许客户继续使用服务器端 API、基于表单的编辑器、配置文件脚本,并使用全局 mbox 名称创建受众。我们强烈建议您还确保在 Administration > Visual Experience Composer 页面上配置相同的全局mbox名称,以防仍有使用at.js 1.x,如下图所示。
和
是否需要为at.js 2.x 的 SPA 中),会出现什么情况?
在大多数情况下需要。此设置会告知at.js 2.x 以在页面加载时向Target边缘服务器触发请求。 由于全局 mbox 被转换为 execute > pageLoad,因此如果要在页面加载时触发请求,则应该启用此设置。
即使未从at.js 2.x 的 SPA 中),会出现什么情况?
会,因为系统会在如 target-global-mbox 的 Target 后端处理 execute > pageLoad。
如果将我的基于表单的活动定位到 target-global-mbox,那么这些活动是否会继续工作?
会,因为和 target-global-mbox 一样,系统会在 Target 边缘服务器上处理 execute > pageLoad。
受支持和不受支持的at.js 2.x 设置
at.js 2.x中的跨域跟踪支持
跨域跟踪可拼合跨不同域的访客。因为必须为每个域创建新 Cookie,所以当访客在不同域之间导航时很难进行跟踪。要实现跨域跟踪,Target 会使用第三方 Cookie 来跟踪跨域访客。这允许您创建跨越siteA.com和siteB.com的Target活动,并且访客在独特域之间导航时保持相同的体验。 此功能与Target的第三方和第一方Cookie行为相关联。
在Target中,第三方Cookie存储在<CLIENTCODE>.tt.omtrdc.net中。 第一方 Cookie 存储在 clientdomain.com 中。第一个请求会返回尝试设置名为 mboxSession 和 mboxPC 的第三方 Cookie 的 HTTP 响应标头,而会使用额外的参数 (mboxXDomainCheck=true) 发送回重定向请求。如果浏览器接受第三方 Cookie,则该重定向请求将包含这些 Cookie,并且会返回体验。这个工作流程是可行的,因为我们使用的是 HTTP GET 方法。
但是,在at.js 2.x,未使用HTTPGET。 POST而是通过at.js 2.x 以将JSON有效负载发送到Target个Edge服务器。 使用HTTPPOST意味着用于检查浏览器是否支持第三方Cookie的重定向请求将中断。 这是因为 HTTP GET 请求是幂等事务,而 HTTP POST 是非幂等事务,不能任意重复。因此,不再对 at.js 2.不支持开箱即用的 x(2.10之前)。 只有 at.js 1.x 对跨域跟踪功能提供开箱即用支持。
要对at.js v2.10或更高版本使用跨域跟踪,您可以执行以下任一操作:
-
将ECID库v4.3.0+与at.js 2.x。ECID 库可以管理用于跨域识别访客的永久 ID。安装 ECID 库 v4.3.0+ 和 at.js 2.x 之后,您将能够创建跨越独特域的活动并跟踪用户。需要注意的是,此功能仅在会话过期后才能正常工作。
-
如果您使用的是at.js v2.10或更高版本,则无需安装ECID库,而是可以在 Administration > Implementation 的Target UI中启用跨域设置。 (或者,您可以在at.js代码中将 crossDomain 选项设置为 enabled。)
对at.js v2的版本使用跨域跟踪。x 在2.10之前,您可以实施以上选项#1(安装ECID库)。
支持自动创建全局 Mbox
此设置会告知at.js 2.x 在页面加载时向Target边缘服务器触发请求。 由于全局 mbox 已转换为 execute > pageLoad,并且这由 Target 边缘服务器来解释,所以如果客户想要在页面加载时触发请求,则应该打开此设置。
支持全局 Mbox 名称
客户可以通过 Target > Administration > Implementation > Edit 指定全局mbox名称。 Target 边缘服务器使用此设置来将 execute > pageLoad 转换为输入的全局 mbox 名称。这允许客户继续使用服务器端 API、基于表单的编辑器、配置文件脚本,并创建针对全局 mbox 的受众。
以下 at.js 自定义事件是否适用于 triggerView(),还是仅适用于 applyOffer() 或 applyOffers()?
adobe.target.event.CONTENT_RENDERING_FAILEDadobe.target.event.CONTENT_RENDERING_SUCCEEDEDadobe.target.event.CONTENT_RENDERING_NO_OFFERSadobe.target.event.CONTENT_RENDERING_REDIRECT
是,at.js 自定义事件也适用于 triggerView()。
它说当我使用&;lbrace;"page" : "true"&;rbrace;调用triggerView()时,它将向Target后端发送通知并增加展示次数。 它是否还会导致系统执行配置文件脚本?
当对 Target 后端进行预取调用时,将会执行配置文件脚本。此后,受影响的配置文件数据将被加密并传递回客户端。在调用使用 {"page": "true"} 的 triggerView() 后,将会发送通知以及加密的配置文件数据。之后,Target 后端将解密配置文件数据并将其存储到数据库中。
我们是否需要在调用 triggerView() 之前添加预隐藏代码以避免闪烁?
不需要,在调用 triggerView() 之前,您不需要添加预隐藏代码。at.js 2.x 会在显示和应用视图之前管理预隐藏和闪烁逻辑。
哪个at.js 1.at.js 2.x 不支持用于创建受众的参数。x 的 SPA 中),会出现什么情况?
以下at.js 1.x参数是使用at.js 2.**x 中的 Target 流程 - 页面加载请求:
- browserHeight
- browserWidth
- browserTimeOffset
- screenHeight
- screenWidth
- screenOrientation
- colorDepth
- devicePixelRatio
- vst.*参数(见下文)
at.js 2.x 不支持使用 vst.*参数
at.js 1.x 能够使用vst。* mbox参数以创建受众。 这是at.js 1.x 已将mbox参数发送到Target后端。 迁移到at.js 2.x,您无法再使用这些参数创建受众,因为at.js 2.x 发送mbox参数的方式不同。
at.js 兼容性
以下表格介绍了 at.js. 2.x 与不同活动类型、集成、功能和at.js函数的兼容性。
活动类型
Page Load Event时)。 将修改添加到特定视图时,仅支持A/B Test、Auto-Allocate和Experience Targeting (XT)活动。集成
功能
除以下各项外,其他所有方法均受支持
mboxCreate()
mboxUpdate()
mboxDefine()
将显示默认内容。
查询字符串参数
?mboxDisable?mboxDisable?mboxTrace?mboxSession?mboxOverride.browserIp响应令牌
at.js 2.x(与 at.js 1.x 一样)使用自定义事件 at-request-succeeded 来显示响应令牌。有关使用 at-request-succeeded 自定义事件的代码示例,请参阅响应令牌。
at.js 1.x 参数到at.js 2.x 有效负载映射
本节概述了 at.js 1.x 和 at.js 2 中的“隐藏主体”和“显示主体”调用。x。
在深入研究参数映射之前,这些库版本当前使用的端点已发生更改:
- at.js 1.x -
http://<client code>.tt.omtrdc.net/m2/<client code>/mbox/json - at.js 2.x -
http://<client code>.tt.omtrdc.net/rest/v1/delivery
另一个重要区别是:
- at.js 1.x - 客户端代码是路径的一部分
- at.js 2.x — 客户端代码将作为查询字符串参数发送,例如:
http://<client code>.tt.omtrdc.net/rest/v1/delivery?client=democlient
以下部分列出了每个 at.js 1.x 参数、其描述以及相应的2。x JSON有效负载(如果适用):
at_property
(at.js 1.x 参数)
用于企业用户权限。
{
....
"property": {
"token": "1213213123122313121"
}
....
}
mboxHost
(at.js 1.x 参数)
运行Target库的页面的域。
at.js 2.x JSON有效负载:
{
"context": {
"browser": {
"host": "test.com"
}
}
}
webGLRenderer
(at.js 1.x 参数)
浏览器的 WEB GL 渲染器功能。我们的设备检测机制使用此参数来确定访客的设备是桌面设备、iPhone、Android 设备,还是其他设备。
at.js 2.x JSON有效负载:
{
"context": {
"browser": {
"webGLRenderer": "AMD Radeon Pro 560X OpenGL Engine"
}
}
}
mboxURL
(at.js 1.x 参数)
页面 URL。
at.js 2.x JSON有效负载:
{
"context": {
"address": {
"url": "http://test.com"
}
}
}
mboxReferrer
(at.js 1.x 参数)
页面反向链接。
at.js 2.x JSON有效负载:
{
"context": {
"address": {
"referringUrl": "http://google.com"
}
}
}
mbox(名称)等于全局 mbox
(at.js 1.x 参数)
交付 API 不再具有全局 mbox 概念。在 JSON 有效负载中,您必须使用 execute > pageLoad。
at.js 2.x JSON有效负载:
{
"execute": {
"pageLoad": {
"parameters": ....
"profileParameters": ...
.....
}
}
}
mbox(名称)不 等于全局 mbox
(at.js 1.x 参数)
要使用 mbox 名称,请将其传递到 execute > mboxes。mbox 需要索引和名称。
at.js 2.x JSON有效负载:
{
"execute": {
"mboxes": [{
"index": 0,
"name": "some-mbox",
"parameters": ....
"profileParameters": ...
.....
}]
}
}
mboxId
(at.js 1.x 参数)
已不再使用。
mboxCount
(at.js 1.x 参数)
已不再使用。
mboxRid
(at.js 1.x 参数)
下游系统用来帮助进行调试的请求 ID。
at.js 2.x JSON有效负载:
{
"requestId": "2412234442342"
....
}
mboxTime
(at.js 1.x 参数)
已不再使用。
mboxSession
(at.js 1.x 参数)
会话 ID 作为查询字符串参数 (sessionId) 发送到交付 API 端点。
mboxPC
(at.js 1.x 参数)
TNT ID 被传递到 id > tntId。
at.js 2.x JSON有效负载:
{
"id": {
"tntId": "ca5ddd7e33504c58b70d45d0368bcc70.21_3"
}
....
}
mboxMCGVID
(at.js 1.x 参数)
Marketing Cloud 访客 ID 被传递到 id > marketingCloudVisitorId。
at.js 2.x JSON有效负载:
{
"id": {
"marketingCloudVisitorId": "797110122341429343505"
}
....
}
vst.aaaa.id 和 vst.aaaa.authState
(at.js 1.x 参数)
客户 ID 应被传递到 id > customerIds。
at.js 2.x JSON有效负载:
{
"id": {
"customerIds": [{
"id": "1232131",
"integrationCode": "aaaa",
"authenticatedState": "....."
}]
}
....
}
mbox3rdPartyId
(at.js 1.x 参数)
用于链接不同Target ID的客户第三方ID。
at.js 2.x JSON有效负载:
{
"id": {
"thirdPartyId": "1232312323123"
}
....
}
mboxMCSDID
(at.js 1.x 参数)
SDID,也称为补充数据 ID。应被传递到 experienceCloud > analytics > supplementalDataId。
at.js 2.x JSON有效负载:
{
"experienceCloud": {
"analytics": {
"supplementalDataId": "1212321132123131"
}
}
....
}
vst.trk
(at.js 1.x 参数)
Analytics跟踪服务器。 应被传递到 experienceCloud > analytics > trackingServer。
at.js 2.x JSON有效负载:
{
"experienceCloud": {
"analytics": {
"trackingServer": "analytics.test.com"
}
}
....
}
vst.trks
(at.js 1.x 参数)
Analytics 跟踪服务器的安全性。应被传递到 experienceCloud > analytics > trackingServerSecure。
at.js 2.x JSON有效负载:
{
"experienceCloud": {
"analytics": {
"trackingServerSecure": "secure-analytics.test.com"
}
}
....
}
mboxMCGLH
(at.js 1.x 参数)
Audience Manager 位置提示。应被传递到 experienceCloud > audienceManager > locationHint。
at.js 2.x JSON有效负载:
{
"experienceCloud": {
"audienceManager": {
"locationHint": 9
}
}
....
}
mboxAAMB
(at.js 1.x 参数)
Audience Manager Blob。应被传递到 experienceCloud > audienceManager > blob。
at.js 2.x JSON有效负载:
{
"experienceCloud": {
"audienceManager": {
"blob": "2142342343242342"
}
}
....
}
mboxVersion
(at.js 1.x 参数)
版本将通过 version 参数作为查询字符串参数发送。
培训视频:at.js 2.x 架构图
at.js 2.x 增强了AdobeTarget对SPA的支持并与其他Experience Cloud解决方案集成。 该视频介绍了如何将所有内容结合到一起。
请参阅了解at.js 2.x 工作以了解更多信息。