adobe.target.getOffers() - at.js 2.x

此函数允许您通过传递多个 mbox 来检索多个选件。此外,还可以针对活跃活动中的所有视图检索多个选件。

注意

此函数已在 at.js 2.x 中引入。但此函数不适用于 at.js 版本 1.x

键值 类型 必需? 描述
consumerId 字符串 如果未提供,则默认值为客户端的全局 mbox。此键值用于生成用于A4T集成的补充数据ID(SDID)。
使用时, getOffers()每个调用都会生成一个新的SDID。如果在同一页面上有多个mbox请求,并且想要保留SDID(以便它与target-global-mbox和Adobe Analytics SDID中的SDID匹配),请使用consumerId参数。
getOffers() 果包含三个mbox(名为“mbox1”、“mbox2”和“mbox3”),则包括: consumerId: "mbox1, mbox2, mbox3" 中的 getOffers() 问题。
decisioningMethod 字符串 “服务器端”、“设备上”、“混合”
request 对象 请参阅下文的“请求”表。
timeout 数值 请求超时. 如果未指定,将使用默认的 at.js 超时值。

请求

注意

有关下面列出的所有字段可接受类型的信息,请参阅交付API文档

字段名称 必需? 限制 描述
request > id 需要使用 tntIdthirdPartyIdmarketingCloudVisitorId 中的一个。
request > id > thirdPartyId 最大大小 = 128.
Request > experienceCloud
Request > experienceCloud > analytics Adobe Analytics 集成
Request > experienceCloud > analytics > logging 必须在页面上实施以下内容:
  • 访客 ID 服务
  • Appmeasurement.js
支持以下值:
client_side:指定后,将向调用方返回分析有效负载,该有效负载应该用于通过数据插入 API 发送到 Adobe Analytics。
server_side:这是默认值,Target 和 Analytics 后端会使用 SDID 将调用拼合在一起进行报告。
request > prefetch
request > prefetch > views 最大计数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。
传递用于检索活跃活动中相关视图的产品 ID。
request > prefetch > views > product > categoryId 不为空。
最大大小= 128。
传递用于检索活跃活动中相关视图的产品类别 ID。
request > prefetch > views > order
request > prefetch > views > order > id 最大长度 = 250. 传递用于检索活跃活动中相关视图的订单 ID。
request > prefetch > views > order > total 总额 >= 0. 传递用于检索活跃活动中相关视图的订单总额。
request > prefetch > views > order > purchasedProductIds 无空值。
每个值的最大长度为50。
用逗号连接和分隔。
产品ID总长度<= 250。
传递用于检索活跃活动中相关视图的已购买产品 ID。
request > execute
request > execute > pageLoad
request > execute > pageLoad > parameters 最大计数50.
名称不为空。
名称长度<= 128.
值长度<= 5000。
仅接受字符串值。
名称不应以“profile”开头。
不允许的名称:"orderId"、"orderTotal"、"productPurchasedId"。
页面加载时使用指定的参数检索选件。
request > execute > pageLoad > profileParameters 最大计数50.
名称不为空。
名称长度<= 128.
值长度<=256.
名称不应以“profile”开头。
仅接受字符串值。
页面加载时使用指定的配置文件参数检索选件。
request > execute > pageLoad > product
request > execute > pageLoad > product -> id 不为空。
最大大小= 128。
页面加载时使用指定的产品 ID 检索选件。
request > execute > pageLoad > product > categoryId 不为空。
最大大小= 128。
页面加载时使用指定的产品类别 ID 检索选件。
request > execute > pageLoad > order
request > execute > pageLoad > order > id 最大长度 = 250. 页面加载时使用指定的订单 ID 检索选件。
request > execute > pageLoad > order > total >= 0. 页面加载时使用指定的订单总额检索选件。
request > execute > pageLoad > order > purchasedProductIds 无空值。
每个值的最大长度为50。
用逗号连接和分隔。
产品ID总长度<= 250。
页面加载时使用指定的已购产品 ID 检索选件。
request > execute > mboxes 最大大小= 50.
无null元素。
request > execute > mboxes > mbox 不为空。
无“ — clicked”后缀。
最大大小= 250。
允许的字符:`'-, ./=:;&!@#$%^&*()+
?~[]{}'`
request > execute > mboxes > mbox > index 不为空。
唯一。
>= 0。
请注意,index 并不表示 mbox 的处理顺序。与具有多个区域 mbox 的网页相同,无法指定这些 mbox 的处理顺序。
request > execute > mboxes > mbox > parameters 最大计数= 50。
名称不为空。
名称长度<= 128。
仅接受字符串值。
值长 <= 度5000。
名称不应以“profile”开头。
不允许的名称:"orderId"、"orderTotal"、"productPurchasedId"。
使用指定的参数针对给定 mbox 检索选件。
request > execute > mboxes > mbox > profileParameters 最大计数= 50。
名称不为空。
名称长度<= 128。
仅接受字符串值。
值长 <=度256。
名称不应以“profile”开头。
使用指定的配置文件参数检索给定 mbox 的选件。
request > execute > mboxes > mbox > product
request > execute > mboxes > mbox > product > id 不为空。
最大大小= 128。
使用指定的产品 ID 检索给定 mbox 的选件。
request > execute > mboxes > mbox > product > categoryId 不为空。
最大大小= 128。
使用指定的产品类别 ID 检索给定 mbox 的选件。
request > execute > mboxes > mbox > order
request > execute > mboxes > mbox > order > id 最大长度 = 250. 使用指定的订单 ID 检索给定 mbox 的选件。
request > execute > mboxes > mbox > order > total >= 0. 使用指定的订单总额检索给定 mbox 的选件。
request > execute > mboxes > mbox > order > purchasedProductIds 无空值。
每个值的最大长度= 50。
用逗号连接和分隔。
产品ID总长度<= 250。
使用指定的订单已购产品 ID 检索给定 mbox 的选件。

为所有视图调用getOffers()

adobe.target.getOffers({
    request: {
      prefetch: {
        views: [{}]
    }
  }
});

getCallOffers()进行设备决策

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

以下示例向您展示了如何在at.js 2.x

adobe.target.getOffers({
    request: {
        execute: {
            pageLoad: {
                parameters: {}
            }
        }
    }
});

在此页面上