adobe.target.getOffers() - at.js 2.x
此函数允许您通过传递多个 mbox 来检索多个选件。此外,还可以针对活跃活动中的所有视图检索多个选件。
consumerId
如果未提供,则默认值为客户端的全局 mbox。可使用此键值生成用于A4T集成的补充数据ID (SDID)。
使用getOffers()
时,每个调用都会生成一个新的SDID。 如果同一页面上有多个mbox请求,并且要保留SDID(以便它与target-global-mbox中的SDID和Adobe Analytics SDID匹配),请使用consumerId
参数。
如果getOffers()
包含三个mbox(分别命名为“mbox1”、“mbox2”和“mbox3”),请在getOffers()
调用中包含consumerId: "mbox1, mbox2, mbox3"
。
decisioningMethod
request
timeout
请求
tntId
、thirdPartyId
或 marketingCloudVisitorId
中的一个。必须在页面上实施以下内容:
- 访客 ID 服务
- Appmeasurement.js
支持以下值:
client_side:指定后,将向调用方返回分析有效负载,该有效负载应该用于通过Data Insertion API发送到Adobe Analytics。
server_side:这是默认值,Target和Analytics后端将使用SDID将调用拼合在一起进行报告。
最大计数50。
名称不为空。
名称长度<=
128。
值长度<=
5000。
名称不应以“profile”开头。
不允许的名称: “orderId”、“orderTotal”、“productPurchasedId”。
request > prefetch > views
profileParameters
最大计数50。
名称不为空。
名称长度<=
128。
值长度<=
5000。
仅接受字符串值。
名称不应以“profile”开头。
request > prefetch > views
product
request > prefetch > views
product -> id
不为空。
最大大小= 128。
request > prefetch > views
product > categoryId
不为空。
最大大小= 128。
request > prefetch > views
order
request > prefetch > views
order > id
request > prefetch > views
order > total
>=
0。request > prefetch > views
order > purchasedProductIds
无空白值。
每个值的最大长度为50。
连接并以逗号分隔。
产品ID总长度<=
250。
最大计数50。
名称不为空。
名称长度<=
128。
值长度<=
5000。
仅接受字符串值。
名称不应以“profile”开头。
不允许的名称: “orderId”、“orderTotal”、“productPurchasedId”。
最大计数50。
名称不为空。
名称长度<=
128。
值长度<=
256。
名称不应以“profile”开头。
仅接受字符串值。
不为空。
最大大小= 128。
不为空。
最大大小= 128。
>=
0.无空白值。
每个值的最大长度为50。
连接并以逗号分隔。
产品ID总长度<=
250。
最大大小= 50。
无null元素。
request > execute > mboxes
mbox
不为空。
无“ — clicked”后缀。
最大大小= 250。
允许的字符: `'-, ./=:;&!@#$%^&*()+
request > execute > mboxes
mbox > index
不为null。
唯一。
>=
0.
request > execute > mboxes
mbox > parameters
最大计数= 50。
名称不为空。
名称长度<=
128。
仅接受字符串值。
值长度<=
5000。
名称不应以“profile”开头。
不允许的名称: “orderId”、“orderTotal”、“productPurchasedId”。
request > execute > mboxes
mbox > profileParameters
最大计数= 50。
名称不为空。
名称长度<=
128。
仅接受字符串值。
值长度<=
256。
名称不应以“profile”开头。
request > execute > mboxes
mbox > product
request > execute > mboxes
mbox > product > id
不为空。
最大大小= 128。
request > execute > mboxes
mbox > product > categoryId
不为空。
最大大小= 128。
request > execute > mboxes
mbox > order
request > execute > mboxes
mbox > order > id
request > execute > mboxes
mbox > order > total
>=
0.request > execute > mboxes
mbox > order > purchasedProductIds
无空白值。
每个值的最大长度= 50。
连接并以逗号分隔。
产品ID总长度<=
250。
为所有视图调用 getOffers()
adobe.target.getOffers({
request: {
prefetch: {
views: [{}]
}
}
});
调用getOffers()以进行设备上决策
adobe.target.getOffers({
decisioningMethod:"on-device",
request: {
execute: {
mboxes: [
{
index: 0,
name: "homepage"
}
]
}
}
});
调用 getOffers() 以使用传递的参数和配置文件参数检索最新的视图
adobe.target.getOffers({
request: {
"prefetch": {
"views": [
{
"parameters": {
"ad": "1"
},
"profileParameters": {
"age": 23
}
}
]
}
}
});
调用 getOffers() 以使用传递的参数和配置文件参数检索 mbox。
adobe.target.getOffers({
request: {
execute: {
mboxes: [
{
index: 0,
name: "first-mbox"
},
{
index: 1,
name: "second-mbox",
parameters: {
a: 1
},
profileParameters: {
b: 2
}
}
]
}
}
});
调用getOffers()以从客户端检索分析有效负载
adobe.target.getOffers({
request: {
experienceCloud: {
analytics: {
logging: "client_side"
}
},
prefetch: {
mboxes: [{
index: 0,
name: "a1-serverside-xt"
}]
}
}
})
.then(console.log)
响应:
{
"prefetch": {
"mboxes": [{
"index": 0,
"name": "a1-serverside-xt",
"options": [{
"content": "<img src=\"http://s7d2.scene7.com/is/image/TargetAdobeTargetMobile/L4242-xt-usa?tm=1490025518668&fit=constrain&hei=491&wid=980&fmt=png-alpha\"/>",
"type": "html",
"eventToken": "n/K05qdH0MxsiyH4gX05/2qipfsIHvVzTQxHolz2IpSCnQ9Y9OaLL2gsdrWQTvE54PwSz67rmXWmSnkXpSSS2Q==",
"responseTokens": {
"profile.memberlevel": "0",
"geo.city": "bucharest",
"activity.id": "167169",
"experience.name": "USA Experience",
"geo.country": "romania"
}
}],
"analytics": {
"payload": {
"pe": "tnt",
"tnta": "167169:0:0|0|100,167169:0:0|2|100,167169:0:0|1|100"
}
}
}]
}
}
然后,可以通过数据插入API将该有效负载转发到Adobe Analytics。
通过getOffers()和applyOffers()从多个mbox获取并渲染数据
at.js 2.x 允许您通过 getOffers()
API 获取多个 mbox。您还可以获取多个 mbox 的数据,然后使用 applyOffers()
在 CSS 选择器标识的不同位置渲染数据。
以下示例展示了实施了 at.js 2.x 的简单 HTML 页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>at.js 2.x, multiple selectors and multiple mboxes</title>
<script src="at.js"></script>
</head>
<body>
<div id="container1">Default content 1</div>
<div id="container2">Default content 2</div>
<div id="container3">Default content 3</div>
</body>
</html>
假设您有三个容器,并且想要通过从 Target 收到的内容对其进行修改。您可以为三个 mbox 构建一个请求,其中每个 mbox 都有一些内容要渲染到相应的容器中。
请求和渲染代码可能类似于以下示例:
adobe.target.getOffers({
request: {
prefetch: {
mboxes: [
{
index: 0,
name: "mbox1"
},
{
index: 1,
name: "mbox2"
},
{
index: 2,
name: "mbox3"
}
]
}
}
})
.then(response => {
// get all mboxes from response
const mboxes = response.prefetch.mboxes;
let count = 1;
mboxes.forEach(el => {
adobe.target.applyOffers({
selector: "#container" + count,
response: {
prefetch: {
mboxes: [el]
}
}
});
count += 1;
});
});
在 request > prefetch > mboxes
部分中,有三个不同的 mbox。如果请求成功完成,您将从 response > prefetch > mboxes
中收到每个 mbox 的响应。获得响应和要用于渲染的位置后,可以调用 applyOffers()
以渲染从 Target 中检索的内容。在本示例中,我们有以下映射:
- mbox1 > CSS 选择器 #container1
- mbox2 > CSS 选择器 #container2
- mbox3 > CSS 选择器 #container3
此示例使用 count 变量来构建 CSS 选择器。在现实场景中,您可以使用 CSS 选择器和 mbox 之间的不同映射。
请注意,此示例使用了 prefetch > mboxes
,但您也可以使用 execute > mboxes
。请确保,如果在 getOffers()
中使用 prefetch,则在 applyOffers()
调用中也应使用 prefetch。
调用getOffers()以执行pageLoad
以下示例说明如何结合使用getOffers()和at.js 2.x
adobe.target.getOffers({
request: {
execute: {
pageLoad: {
parameters: {}
}
}
}
});