响应令牌

响应令牌允许您自动输出特定于 Adobe Target 到您品牌的网页。 此信息可以包括有关活动、选件、体验、用户配置文件、地理信息等的详细信息。 这些详细信息提供了额外的响应数据,可用于与内部或第三方工具共享或用于调试。

响应令牌允许您选择要使用的变量(在键值对中),然后启用它们作为的一部分发送 Target 响应。 使用开关启用变量,该变量将发送给 Target 响应,这可以在网络调用中进行验证。 响应令牌也适用于 预览 模式。

插件和响应令牌之间的主要区别在于,插件可将JavaScript交付到在交付时执行的页面。 但是,响应令牌会传递一个对象,然后可以使用事件侦听器读取该对象并对其执行操作。 响应令牌方法更安全,并且允许更轻松地开发和维护第三方集成。

NOTE
at.js版本1.1或更高版本中有响应令牌可用。
Target SDK
建议的操作
Adobe Experience Platform Web SDK
确保您使用的是Platform Web SDK版本2.6.0或更高版本。 有关下载最新版Platform Web SDK的信息,请参阅 安装SDKPlatform Web SDK概述 指南。 有关Platform Web SDK各个版本中新增功能的信息,请参阅 发行说明Platform Web SDK概述 指南。
at.js
确保您使用的是 at.js 版本 1.1 或更高版本。有关下载最新版本at.js的信息,请参阅 下载at.js. For information about new functionality in each version of at.js, see at.js Version Details.
我们鼓励使用 at.js 的客户使用响应令牌而不是插件。某些插件依赖的内部方法在mbox.js中存在(现已弃用),但在at.js中不存在;这些插件虽然可以交付,但却会失败。

使用响应令牌 section_A9E141DDCBA84308926E68D05FD2AC62

  1. 确保您使用的是Platform Web SDK版本2.6.0(或更高版本)或者at.js版本1.1(或更高版本)。

    有关更多信息:

    • 平台Web SDK:请参阅 安装SDKPlatform Web SDK概述 指南。
    • at.js:请参阅 下载at.js.
  2. 在 Target,单击 管理 > 响应令牌.

    response_tokens-new图像

  3. 激活所需的响应令牌,例如 activity.idoffer.id.

    以下参数默认可用:

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 8-row-3 9-row-3 10-row-3 11-row-3 12-row-3 13-row-3
    类型 参数 注释
    内置配置文件 profile.activeActivities 返回该访客符合条件的 activityIds 数组。它会随着符合条件的用户数量的增加而递增。例如,在包含两个页面的 Target 请求交付两个不同的活动,第二个请求包含这两个活动。
    profile.isFirstSession 返回“true”或“false”。
    profile.isNewSession 返回“true”或“false”。
    profile.daysSinceLastVisit 返回自该访客上次访问后已过的天数。
    profile.tntId 返回访客的 tntID
    profile.marketingCloudVisitorId 返回访客的 Experience Cloud 访客 ID。
    profile.thirdPartyId 返回访客的第三方 ID。
    profile.categoryAffinity 返回访客最喜欢的类别。
    profile.categoryAffinities 将该访客排名前 5 的类别的数组作为字符串返回。
    活动 activity.name
    activity.id
    experience.name
    experience.id
    offer.name
    offer.id
    当前活动的详细信息。
    请注意,选件参数的值在体验级别进行评估。
    地域 geo.country
    geo.state
    geo.city
    geo.zip
    geo.dma
    geo.domainName
    geo.ispName
    geo.connectionSpeed
    geo.mobileCarrier
    请参阅地域以了解在活动中使用地域定位的详细信息。
    流量分配方法
    (适用于 自动定位 和 Automated Personalization 仅限活动。)
    experience.trafficAllocationId 如果访客因处于“control”流量中而获得体验,则返回0;如果访客从“targeted”流量分配获得体验,则返回1。
    experience.trafficAllocationType 返回“control”或“targeted”。

    用户配置文件属性和客户属性也会显示在列表中。

    note note
    NOTE
    包含特殊字符的参数不会显示在列表中。只支持字母数字字符和下划线。
  4. (视情况而定)使用配置文件参数作为响应令牌,但参数尚未通过 Target 请求,因此未加载到 Target UI,您可以使用 添加响应令牌 按钮以将配置文件添加到UI。

    单击 添加响应令牌,提供令牌名称,然后单击 激活.

    response_token_创建图像

  5. 创建一个活动。

侦听响应并读取响应令牌

您用来侦听的进程 Target 根据您是否拥有 Platform Web SDK 或at.js实施。

Adobe Experience Platform Web SDK徽章 Platform Web SDK 使用Handle对象类 platform-web-sdk

使用Handle对象类,该类具有要侦听的元数据对象和数据对象 Target 响应并读取响应令牌。

以下响应示例添加了 Platform Web SDK 直接访问“HTML”页的自定义事件处理程序(该表说明了代码中使用的对象):

对象
信息
类型 — Personalization.decision
该决定是否由 Target 或Offer decisioning提供商。
DecisionProvider - TGT
TGT-Target. Target 为页面提供响应令牌元数据和值。
Meta
传递到页面的元数据。
数据
传递到页面的元数据的值。
<html>

<head>
 ...
 <script src="alloy.js"></script>
 <script>
  {
   "requestId": "4d0a7cfd-952c-408c-b3b8-438edc38250a",
   "handle": [{
    "type": "personalization:decisions",
    "payload": [{
     "id": "....",
     "scope": "__view__",
     "scopeDetails": {
      "decisionProvider": "TGT",
      "activity": {
       "id": "..."
      },
      "experience": {
       "id": "...."
      }
     },
     "items": [{
      "id": "123",
      "schema": "https://ns.adobe.com/personalization/dom-action",
      "meta": {
       "activity.id": "...",
       "activity.name": "...",
       "profile.foo": "...",
       "profile.bar": "..."
      },
      "data": {
       "id": "123",
       "type": "setHtml",
       "selector": "#foo",
       "prehidingSelector": "#foo",
       "content": "<div>Hello world</div>"
      }
     }]
    }]
   }]
  }
  });
 </script>
</head>

<body>
 ...
</body>

</html>

at.js徽章 at.js使用自定义事件

使用 at.js 自定义事件来监听 响应并读取响应令牌。Target

以下代码示例可将一个 at.js 自定义事件处理程序直接添加到 HTML 页面:

<html>
  <head>
    ....
    <script src="at.js"></script>
    <script>
      document.addEventListener(adobe.target.event.REQUEST_SUCCEEDED, function(e) {
        console.log("Request succeeded", e.detail);
      });
    </script>
  <head>
  <body>
  ...
  </body>
</html>

响应令牌常见问题解答 section_3DD5F32C668246289CDF9B4CDE1F536D

激活或停用响应令牌需要使用哪个角色?

响应令牌只能由具有以下特性的用户激活或停用: Target 管理员 角色。

如果我跑了怎么办 Platform Web SDK 2.6.0(或更低版本)?

您无权访问响应令牌。

如果我运行的是at.js 1.0(或更早版本),会发生什么情况?

您可以看到响应令牌,但at.js不能使用它们。

Target Classic我是否可以同时使用 插件和响应令牌?

插件和响应令牌可并行使用;但是,未来将弃用插件。

响应令牌是否通过所有传递 Target 响应或仅通过 Target 响应投放活动?

响应令牌仅通过以下方式交付 Target 提交活动的响应。

我的 Target Classic 插件包含JavaScript。 如何使用响应令牌复制其功能?

迁移到响应令牌时,必须将此类型的JavaScript保留在代码库或标签管理解决方案中。 您可以通过以下方式触发此代码 Platform Web SDK 或 at.js 自定义事件并将响应令牌值传递给您的JavaScript函数。

为什么我的配置文件/客户属性参数不会显示在响应令牌列表中?

Target 通常每15分钟刷新一次参数。 此刷新取决于用户操作,仅当查看响应令牌页面时才刷新数据。 如果您的参数未显示在响应令牌列表中, Target 尚未刷新数据。

此外,如果参数包含非字母数字字符或下划线以外的任何符号,则该参数不会出现在列表中。 目前,仅支持字母数字和下划线字符。

如果响应令牌使用已删除的配置文件脚本或配置文件参数,它是否仍会交付内容?

响应令牌从用户配置文件中提取信息,然后交付该信息。如果删除配置文件脚本或参数,并不意味着该信息已从用户配置文件中删除。用户配置文件仍然具有与配置文件脚本对应的数据。 响应令牌将继续交付内容。 对于未在配置文件中保存该信息的用户或者新访客,不会交付该令牌,因为数据不存在于其配置文件中。

Target 不会自动关闭令牌。 如果您要删除配置文件脚本并且不再希望交付该令牌,则必须自行关闭该令牌。

我重命名了我的配置文件脚本,但为什么使用该脚本的令牌仍使用旧名称?

如上所述,响应令牌处理的是为用户保存的配置文件信息。即使您重命名了配置文件脚本,但访问过您网站的用户会在其配置文件中保存旧的配置文件脚本值。 令牌会继续选取已保存在用户配置文件中的旧值。 如果您现在想要以新名称交付内容,则必须关闭以前的令牌,然后打开新令牌。

如果我的属性已更改,何时会将其从列表中移除?

Target 会定期刷新属性。任何未切换的属性将在下次刷新时删除。 但是,如果您具有已打开并已删除的属性,则在将其关闭之前,不会将该脚本从属性列表中删除。 例如,您删除了用作令牌的配置文件脚本。 Target如果删除或重命名属性, 只会从列表中删除已关闭的属性。

向Google Analytics发送数据

以下各节介绍如何发送 Target 数据到Google Analytics4. 由响应令牌发送的数据也可以发送到其他第三方集成。

AEP徽章 通过Platform Web SDK向Google Analytics发送数据

通过在HTML页面中添加以下代码,可以通过Platform Web SDK版本2.6.0(或更高版本)发送Google Analytics数据。

NOTE
确保响应令牌密钥值对位于 alloy("sendEvent" 对象。
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>
<script type="text/javascript">
    alloy("sendEvent", {


    })
    .then(({ renderedPropositions, nonRenderedPropositions }) => {
        // concatenate all the propositions
        const propositions = [...renderedPropositions, ...nonRenderedPropositions];
        // extractResponseTokens() extract the meta from item -> meta
        const tokens = extractResponseTokens(propositions);
        const activityNames = [];
        const experienceNames = [];
        const uniqueTokens = distinct(tokens);


        uniqueTokens.forEach(token => {
            activityNames.push(token["activity.name"]);
            experienceNames.push(token["experience.name"]);
        });

        gtag('config', 'TAG_ID');
        gtag('event', 'action_name', {'eventCategory': 'target',
            'eventAction': experienceNames, 'eventLabel': activityNames
        });
    });
</script>

at.js徽章 通过at.js向Google Analytics发送数据 section_04AA830826D94D4EBEC741B7C4F86156

通过在 HTML 页面中添加以下代码,即可通过 at.js 向 Google Analytics 发送数据:

<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>

<script type="text/javascript">
    document.addEventListener(adobe.target.event.REQUEST_SUCCEEDED, function(e) {
        var tokens = e.detail.responseTokens;

        if (isEmpty(tokens)) {
            return;
        }

        var activityNames = [];
        var experienceNames = [];
        var uniqueTokens = distinct(tokens);

        uniqueTokens.forEach(function(token) {
            activityNames.push(token["activity.name"]);
            experienceNames.push(token["experience.name"]);
        });

        gtag('config', 'TAG_ID');
        gtag('event', 'action_name', {'eventCategory': 'target',
            'eventAction': experienceNames, 'eventLabel': activityNames
        });
    });

    function isEmpty(val) {
        return (val === undefined || val == null || val.length <= 0) ? true : false;
    }

    function key(obj) {
        return Object.keys(obj)
        .map(function(k) { return k + "" + obj[k]; })
        .join("");
    }

    function distinct(arr) {
        var result = arr.reduce(function(acc, e) {
            acc[key(e)] = e;
            return acc;
        }, {});

        return Object.keys(result)
        .map(function(k) { return result[k]; });
    }
</script>

调试

以下部分提供了有关调试响应令牌的信息:

at.js徽章 Google Analytics和调试

以下代码允许您使用Google Analytics进行调试:

<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>

<script type="text/javascript">
    document.addEventListener(adobe.target.event.REQUEST_SUCCEEDED, function(e) {
      var tokens = e.detail.responseTokens;

      if (isEmpty(tokens)) {
        return;
      }

      var activityNames = [];
      var experienceNames = [];
      var uniqueTokens = distinct(tokens);

      uniqueTokens.forEach(function(token) {
        activityNames.push(token["activity.name"]);
        experienceNames.push(token["experience.name"]);
      });

      gtag('config', 'TAG_ID');
      gtag('event', 'action_name', {'eventCategory': 'target',
          'eventAction': experienceNames, 'eventLabel': activityNames
      });
    });

    function isEmpty(val) {
      return (val === undefined || val == null || val.length <= 0) ? true : false;
    }

    function key(obj) {
       return Object.keys(obj)
      .map(function(k) { return k + "" + obj[k]; })
      .join("");
    }

    function distinct(arr) {
      var result = arr.reduce(function(acc, e) {
        acc[key(e)] = e;
        return acc;
      }, {});

      return Object.keys(result)
      .map(function(k) { return result[k]; });
    }
</script>

使用ttMeta插件的等效插件进行调试

通过向 HTML 页面添加以下代码,可以创建与 ttMeta 插件等效的调试工具:

<script type="text/javascript" >
  document.addEventListener(adobe.target.event.REQUEST_SUCCEEDED, function (e) {
    window.ttMETA= typeof(window.ttMETA)!="undefined" ? window.ttMETA : [];

    var tokens=e.detail.responseTokens;

    if (isEmpty(tokens)) {
      return;
    }

    var uniqueTokens = distinct(tokens);

    uniqueTokens.forEach(function(token) {
      window.ttMETA.push({
        'CampaignName': token["activity.name"],
        'CampaignId' : token["activity.id"],
        'RecipeName': token["experience.name"],
        'RecipeId': token["experience.id"],
        'OfferId': token["offer.id"],
        'OfferName': token["offer.name"],
        'MboxName': e.detail.mbox});
      console.log(ttMETA);
    });
  });

  function isEmpty(val){
    return (val === undefined || val == null || val.length <= 0) ? true : false;
  }

  function key(obj) {
     return Object.keys(obj)
    .map(function(k) { return k + "" + obj[k]; })
    .join("");
  }

  function distinct(arr) {
    var result = arr.reduce(function(acc, e) {
      acc[key(e)] = e;
      return acc;
    }, {});

    return Object.keys(result)
    .map(function(k) { return result[k]; });
  }
</script>

at.js 培训视频:响应令牌和at.js自定义事件 section_3AA0A6C8DBD94A528337A2525E3E05D5

以下视频介绍如何使用响应令牌和at.js自定义事件从共享配置文件信息 Target 到第三方系统。

NOTE
Target管理 菜单 UI(以前的设置)经过重新设计,以提供更好的性能、减少发布新功能时所需的维护时间并改善整个产品的用户体验。以下视频中的信息正确;但是,选项的位置略有不同。
视频提及 option.nameoption.id,已替换为 offer.nameoffer.id、ID名称和ID名称等。
recommendation-more-help
3d9ad939-5908-4b30-aac1-a4ad253cd654