Show Menu
主题×

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

此函数允许您通过传递多个 mbox 来检索多个选件。此外,还可以针对活跃活动中的所有视图检索多个选件。
此函数已在 at.js 2.x 中引入。但此函数不适用于 at.js 版本 1. x
键值
类型
必需?
描述
consumerId
字符串
如果未提供,则默认值为客户端的全局 mbox。可使用此键值生成用于 A4T 集成的补充数据 ID。此键值是每个访客的唯一字符串。
request
对象
请参阅下文的“请求”表。
timeout
数值
请求超时。如果未指定,将使用默认的 at.js 超时值。

请求

有关以下 列出的所有字段的可接受类型 ,请查阅交付API文档。
字段名称
必需?
限制
描述
request > id
需要使用 tntId thirdPartyId marketingCloudVisitorId 中的一个。
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
允许的字符: '-, ._\/=:;&!@#$%^&*()_+|?~[]{}'
mbox 的名称。
request > execute > mboxes > mbox > index
不为 null
唯一值
>= 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: [{}]
    }
  }
});

调用 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。