targetGlobalSettings()

您可以使用 targetGlobalSettings() 覆盖 at.js 库中的设置,而不是在 Target Standard/Premium UI 中或通过使用 REST API 来配置设置。

设置

您可以覆盖以下设置:

bodyHiddenStyle

  • 类型:字符串

  • 默认值:body

  • 描述:仅在最小 globalMboxAutocreate === true 化闪烁的可能性时使用。

    有关更多信息,请参阅 at.js 如何管理闪烁

bodyHidingEnabled

  • 类型:布尔值
  • 默认值:true
  • 描述:用于在用于传送在 target-global-mbox Visual Experience Composer(也称为可视优惠)中创建的优惠时控制闪烁。

clientCode

  • 类型:字符串
  • 默认值:通过UI设置的值。
  • 描述:表示客户端代码。

cookieDomain

  • 类型:字符串
  • 默认值:如果可能,请设置到顶级域。
  • 描述:表示保存Cookie时使用的域。

crossDomain

  • 类型:字符串
  • 默认值:通过UI设置的值。
  • 描述:指示是否启用跨域跟踪。允许的值有:已禁用、已启用或仅x-only。

cspScriptNonce

cspStyleNonce

dataProviders

  • 类型:请参 阅下 面的数据提供者。
  • 默认值:请参 阅下 面的数据提供者。
  • 描述:请参 阅下 面的数据提供者。

decisioningMethod

  • 类型:字符串
  • 默认值:服务器端
  • 其他值:设备上,混合
  • 描述:请参阅下面的决策方法。

决策方法

在设备上决策时,目标引入了一个名为决策方法的新设置,该设置指示at.js如何提供您的体验。 decisioningMethod有三个值:仅限服务器端、仅限设备上和混合。 当decisioningMethodtargetGlobalSettings()中设置时,它充当所有Target决策的默认决策方法。

仅服务器端:

仅在服 务器端是默认的决策方法,当在您的Web属性上实施和部署at.js 2.5+时即已设置。

使用仅服务器端作为默认配置意味着所有决策都在Target边缘网络上做出,这涉及阻塞服务器调用。 此方法可以引入增量延迟,但也提供了显着的优势,例如使您能够应用目标的机器学习功能,这些功能包括RecommendationsAutomated Personalization(AP)和自动目标活动。

此外,使用目标的用户用户档案增强您的个性化体验,这种体验会跨会话和渠道保留下来,为您的业务提供强大的成果。

最后,仅服务器端允许您使用Adobe Experience Cloud并微调可通过Audience Manager和Adobe Analytics区段针对的受众。

仅限设备:

仅限设 备的决策方法是必须在at.js 2.5+中设置的决策方法,当设备决策只能用于整个网页。

设备上决策可以以超快的速度提供您的体验和个性化活动,因为决策来自缓存的规则伪像,其中包含符合设备上决策资格的所有活动。

要进一步了解哪些活动有资格进行设备上决策,请参阅支持的功能部分。

仅当需要从Target进行决策的所有页面中的性能都非常关键时,才应使用此决策方法。 此外,请记住,当选择此决策方法时,不符合设备上决策条件的Target活动将不会交付或执行。 at.js库2.5+配置为仅查找缓存的规则对象以作出决策。

混合:

在必 须同时执行设备上决策和需要对Adobe Target Edge网络进行网络调用的活动时,混合在at.js 2.5+中必须设置的决策方法。

当您同时管理设备上决策活动和服务器端活动时,在考虑如何在页面上部署和配置Target时,可能会有些复杂和乏味。 Target将混合作为决策方法,它知道何时必须对需要服务器端执行的活动进行服务器调用到Adobe Target Edge网络,以及何时仅执行设备上决策。

JSON规则对象包含元数据,用于通知at.jsmbox是运行服务器端活动还是设备上决策活动。 此决策方法可确保您打算快速交付的活动通过设备上决策完成,对于需要更强大的ML驱动个性化的活动,这些活动通过Adobe Target Edge网络完成。

defaultContentHiddenStyle

  • 类型:字符串
  • 默认值:可见性:隐藏
  • 描述:仅用于包装使用类名为“mboxDefault”的DIV并通过、或隐藏默认内 mboxCreate()mboxUpdate()执行 mboxDefine() 的mbox。

defaultContentVisibleStyle

  • 类型:字符串
  • 默认值:可见性:可见
  • 描述:仅用于包装使用类名为“mboxDefault”的DIV并通过、或显示所应 mboxCreate()用的 mboxUpdate()优惠( mboxDefine() 如果有或默认内容)的mbox。

deviceIdLifetime

  • 类型:数字
  • 默认值:63244800000 ms = 2年
  • 描述:Cookie中持 deviceId 续的时间。
注意

deviceIdLifetime设置在at.js版本2.3.1或更高版本中可覆盖。

已启用

  • 类型:布尔值

  • 默认值:true

  • 描述:启用后,将自 Target 动执行检索体验的请求和呈现体验的DOM操作。此外,可通过getOffer(s) / applyOffer(s)手动执行Target调用。

    禁用Target请求时,不会自动或手动执行。

globalMboxAutoCreate

  • 类型:数字
  • 默认值:通过UI设置的值。
  • 描述:指示是否应触发全局mbox请求。

imsOrgId

  • 类型:Sting
  • 默认值:true
  • 描述:表示IMS组织ID。

optoutEnabled

  • 类型:布尔值
  • 默认值:假
  • 描述:指示目标是否应调用访客 API函 isOptedOut() 数。这是启动设备图形的一部分。

overrideMboxEdgeServer

  • 类型:布尔值

  • 默认值:true(以at.js版本1.6.2开头)

  • 描述:指示我们是否应 <clientCode>.tt.omtrdc.net 使用 mboxedge<clusterNumber>.tt.omtrdc.net 域。

    如果此值为 true,mboxedge<clusterNumber>.tt.omtrdc.net 域将被保存到 Cookie 中. 当使用at.js 1.8.2和at.js 2.3.1之前的at.js版本时,当前无法使用CNAME。如果这是您的问题,请考虑将at.js🔗更新为较新的受支持版本。

overrideMboxEdgeServerTimeout

  • 类型:数字
  • 默认值:1860000 => 31分钟
  • 描述:指示包含该值的Cookie生 mboxedge<clusterNumber>.tt.omtrdc.net 存期。

pageLoadEnabled

  • 类型:布尔值
  • 默认值:true
  • 描述:启用后,将自动检索页面加载时必须返回的体验。

secureOnly

  • 类型:布尔值
  • 默认值:假
  • 描述:指示at.js应仅使用HTTPS,还是允许基于页面协议在HTTP和HTTPS之间切换。

selectorsPollingTimeout

  • 类型:数字

  • 默认值:5000毫秒= 5秒

  • 描述:在at.js 0.9.6中,引 Target 入了可通过覆盖的新设置 targetGlobalSettings

    selectorsPollingTimeout设置表示客户端愿意等待多长时间,等待选择器标识的所有元素显示在页面上。

    通过可视化体验编辑器 (VEC) 创建的活动具有包含选择器的选件。

serverDomain

  • 类型:字符串
  • 默认值:通过UI设置的值。
  • 描述:表示目标边缘服务器。

serverState

  • 类型:请参 阅下 面的混合个性化。
  • 默认值:请参 阅下 面的混合个性化。
  • 描述:请参 阅下 面的混合个性化。

timeout

  • 类型:数字
  • 默认值:通过UI设置的值。
  • 描述:表示边 Target 缘请求超时。

viewsEnabled

  • 类型:布尔值
  • 默认值:true
  • 描述:启用后,将自动检索页面加载时必须返回的视图。at.js 2中支持视图。x

visitorApiTimeout

  • 类型:数字
  • 默认值:2000毫秒= 2秒
  • 描述:表示 访客 API请求超时。

使用情况

可以在加载at.js之前或在​管理 > 实施 > 编辑at.js设置 > 代码设置 > 库标头​中定义此函数。

“库标头”字段允许您输入自由格式的 JavaScript。自定义代码应与以下示例类似:

window.targetGlobalSettings = {  
   timeout: 200, // using custom timeout  
   visitorApiTimeout: 500, // using custom API timeout  
   enabled: document.location.href.indexOf('https://www.adobe.com') >= 0 // enabled ONLY on adobe.com  
};

数据提供程序

通过此设置,客户可以从第三方数据提供程序收集数据,例如 Demandbase、BlueKai 和自定义服务,并将这些数据作为全局 mbox 请求中的 mbox 参数传递给 Target。支持通过异步和同步请求从多个提供程序收集数据。使用这种方法可以轻松管理默认页面内容的闪烁,同时包含每个提供程序的独立超时时间以限制对页面性能的影响

注意

数据提供程序需要使用 at.js 1.3 或更高版本。

以下视频包含更多信息:

视频 描述
在 Adobe Target 中使用数据提供程序 数据提供程序是一项功能,允许您轻松地将数据从第三方传递到 Target。第三方可以是气象服务、DMP,甚至是您自己的 Web 服务。然后,您可以使用这些数据来构建受众、定位内容并丰富访客配置文件。
在 Adobe Target 中实施数据提供程序 有关如何使用 Adobe Target 的 dataProviders 功能从第三方数据提供程序中检索数据,并将该数据传递到 Target 请求的实施详细信息和示例。

window.targetGlobalSettings.dataProviders 设置是一个数据提供程序数组。

每个数据提供程序具有以下结构:

键值 类型 描述
name 字符串 提供程序的名称。
version 字符串 提供程序版本。此键值将用于提供程序的版本演变。
超时 数值 如果这是网络请求,则表示提供程序超时。此键值是可选的。
provider 函数 包含提供程序数据提取逻辑的函数。
该函数有一个必需的参数:callback。callback 参数是一个函数,只有在成功获取数据或发生错误时才应调用该函数。
callback 应有两个参数:
  • error:指示是否发生错误。如果一切正常,则应将此参数设置为空。
  • params:一个 JSON 对象,表示将在 Target 请求中发送的参数。

以下示例显示数据提供程序使用同步执行的位置:

var syncDataProvider = { 
  name: "simpleDataProvider", 
  version: "1.0.0", 
  provider: function(callback) { 
    callback(null, {t1: 1}); 
  } 
}; 
  
window.targetGlobalSettings = { 
  dataProviders: [ 
    syncDataProvider 
  ] 
};

在 at.js 处理 window.targetGlobalSettings.dataProviders 之后,Target 请求将包含一个新参数:t1=1

如果您要添加到 Target 请求的参数是从第三方服务(如 Bluekai、Demandbase 等)获取的,则参考以下示例:

var blueKaiDataProvider = { 
   name: "blueKai", 
   version: "1.0.0", 
   provider: function(callback) { 
      // simulating network request 
     setTimeout(function() { 
       callback(null, {t1: 1, t2: 2, t3: 3}); 
     }, 1000); 
   } 
} 
  
window.targetGlobalSettings = { 
   dataProviders: [ 
      blueKaiDataProvider 
   ] 
};

在 at.js 处理 window.targetGlobalSettings.dataProviders 之后,Target 请求将包含其他参数:t1=1t2=2t3=3

以下示例使用数据提供程序收集气候 API 数据,并将其作为参数发送到 Target 请求中。Target 请求将具有其他参数,例如 countryweatherCondition

var weatherProvider = { 
      name: "weather-api", 
      version: "1.0.0", 
      timeout: 2000, 
      provider: function(callback) { 
        var API_KEY = "caa84fc6f5dc77b6372d2570458b8699"; 
        var lat = 44.426767399999996; 
        var lon = 26.1025384; 
        var url = "//api.openweathermap.org/data/2.5/weather?lang=en"; 
        var data = { 
          lat: lat, 
          lon: lon, 
          appId: API_KEY 
        } 
 
        $.ajax({ 
          type: "GET", 
                url: url, 
          dataType: "json", 
          data: data, 
          success: function(data) { 
            console.log("Weather data", data); 
            callback(null, { 
              country: data.sys.country, 
              weatherCondition: data.weather[0].main 
            }); 
          }, 
          error: function(err) { 
            console.log("Error", err); 
            callback(err); 
          } 
        });         
      } 
    }; 
 
    window.targetGlobalSettings = { 
      dataProviders: [weatherProvider] 
    };

使用 dataProviders 设置时请考虑以下事项:

  • 如果数据提供程序异步添加到 window.targetGlobalSettings.dataProviders,则将并行执行。访客 API 请求将与添加到 window.targetGlobalSettings.dataProviders 的函数并行执行,以将等待时间最小化。
  • at.js 不会尝试缓存数据。如果数据提供程序仅提取一次数据,则应确保数据已缓存,并且在调用提供程序函数时为第二次调用提供缓存的数据。

内容安全策略

at.js 2.3.0+支持在应用已交付的目标优惠时,在附加到页面DOM的SCRIPT和STYLE标记上设置“内容安全策略”不可用。

在加载at.js 2.3.0+之前,SCRIPT和STYLE图标应相应地设置在targetGlobalSettings.cspScriptNoncetargetGlobalSettings.cspStyleNonce中。 请参阅以下示例:

...
<head>
 <script nonce="<script_nonce_value>">
window.targetGlobalSettings = {
  cspScriptNonce: "<csp_script_nonce_value>",
  cspStyleNonce: "<csp_style_nonce_value>"
};
 </script>
 <script nonce="<script_nonce_value>" src="at.js"></script>
...
</head>
...

在指定cspScriptNoncecspStyleNonce设置后,at.js 2.3.0+会在应用目标优惠时,将其附加到DOM的所有SCRIPT和STYLE标签上设置为nonce属性。

混合个性化

serverState 是at.js v2.2+中提供的设置,可用于在实施目标的混合集成时优化页面性能。混合集成指的是在客户端使用 at.js 2.2 和更高版本,在服务器端使用交付 API 或 Target SDK,二者相结合以交付体验。serverState 让 at.js 2.2 和更高版本可直接从在服务器端获取并作为所提供的页面的一部分返回客户端的内容应用体验。

先决条件

您必须具有Target的混合集成。

代码示例

为了更好地了解其工作原理,请参阅您在服务器上会使用的以下代码示例。 代码假定您使用目标 Node.js SDK

// First, we fetch the offers via Target Node.js SDK API, as usual
const targetResponse = await targetClient.getOffers(options);
// A successfull response will contain Target Delivery API request and response objects, which we need to set as serverState
const serverState = {
  request: targetResponse.request,
  response: targetResponse.response
};
// Finally, we should set window.targetGlobalSettings.serverState in the returned page, by replacing it in a page template, for example
const PAGE_TEMPLATE = `
<!doctype html>
<html>
<head>
  ...
  <script>
    window.targetGlobalSettings = {
      overrideMboxEdgeServer: true,
      serverState: ${JSON.stringify(serverState, null, " ")}
    };
  </script>
  <script src="at.js"></script>
</head>
...
</html>
`;
// Return PAGE_TEMPLATE to the client ...

视图预取的示例serverState对象JSON如下所示:

{
 "request": {
  "requestId": "076ace1cd3624048bae1ced1f9e0c536",
  "id": {
   "tntId": "08210e2d751a44779b8313e2d2692b96.21_27"
  },
  "context": {
   "channel": "web",
   "timeOffsetInMinutes": 0
  },
  "experienceCloud": {
   "analytics": {
    "logging": "server_side",
    "supplementalDataId": "7D3AA246CC99FD7F-1B3DD2E75595498E"
   }
  },
  "prefetch": {
   "views": [
    {
     "address": {
      "url": "my.testsite.com/"
     }
    }
   ]
  }
 },
 "response": {
  "status": 200,
  "requestId": "076ace1cd3624048bae1ced1f9e0c536",
  "id": {
   "tntId": "08210e2d751a44779b8313e2d2692b96.21_27"
  },
  "client": "testclient",
  "edgeHost": "mboxedge21.tt.omtrdc.net",
  "prefetch": {
   "views": [
    {
     "name": "home",
     "key": "home",
     "options": [
      {
       "type": "actions",
       "content": [
        {
         "type": "setHtml",
         "selector": "#app > DIV.app-container:eq(0) > DIV.page-container:eq(0) > DIV:nth-of-type(2) > SECTION.section:eq(0) > DIV.container:eq(1) > DIV.heading:eq(0) > H1.title:eq(0)",
         "cssSelector": "#app > DIV:nth-of-type(1) > DIV:nth-of-type(1) > DIV:nth-of-type(2) > SECTION:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(1) > H1:nth-of-type(1)",
         "content": "<span style=\"color:#FF0000;\">Latest</span> Products for 2020"
        }
       ],
       "eventToken": "t0FRvoWosOqHmYL5G18QCZNWHtnQtQrJfmRrQugEa2qCnQ9Y9OaLL2gsdrWQTvE54PwSz67rmXWmSnkXpSSS2Q==",
       "responseTokens": {
        "profile.memberlevel": "0",
        "geo.city": "dublin",
        "activity.id": "302740",
        "experience.name": "Experience B",
        "geo.country": "ireland"
       }
      }
     ],
     "state": "J+W1Fq18hxliDDJonTPfV0S+mzxapAO3d14M43EsM9f12A6QaqL+E3XKkRFlmq9U"
    }
   ]
  }
 }
}

在浏览器中加载页面后,at.js会立即应用serverState的所有Target优惠,而不会针对Target边缘触发任何网络调用。 此外,at.js仅预隐藏在获取的内容服务器端中具有Target优惠的DOM元素,因此会积极影响页面加载性能和最终用户体验。

重要说明

使用serverState时,请考虑以下事项:

  • 目前,at.js v2.2仅支持通过serverState为以下对象提供体验:

    • 在页面加载时执行的VEC创建的活动。

    • 预取的视图。

      如果SPA在at.js API中使用Target视图和triggerView(),则at.js v2.2会缓存服务器端预取的所有视图的内容,并在通过triggerView()触发每个视图后立即应用这些内容,同样不会触发对目标的任何其他内容提取调用。

    • 注意:目前,不支持在服务器端检索的mbox serverState

  • 应用serverState 优惠时,at.js会考虑pageLoadEnabledviewsEnabled设置,例如,如果pageLoadEnabled设置为false,则不会应用页面加载优惠。

    要打开这些设置,请在​管理 > 实施 > 编辑 > 启用页面加载​中启用切换。

    启用页面加载设置

  • 如果您正在返回的内容中使用serverState<script>标记,请确保您的HTML内容使用<\/script>而不是</script>。 如果使用</script>,浏览器会将</script>解释为内联SCRIPT的结尾,并可能会中断HTML页。

其他资源

要了解serverState的工作方式,请查看以下资源:

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now