回應 Token

回應Token可讓您自動輸出 Adobe Target 至您品牌的網頁。 此資訊可包含有關活動、選件、體驗、使用者設定檔、地理資訊等詳細資訊。 這些詳細資料提供額外的回應資料,可與內部或第三方工具共用,或用於偵錯。

回應Token可讓您選擇要使用的變數(在索引鍵值配對中),然後啟用這些變數作為的一部分傳送 Target 回應。 您使用開關來啟用變數,且變數會與 Target 回應,這可以在網路呼叫中驗證。 回應Token也適用於 預覽 模式。

外掛程式和回應Token的主要差異在於,外掛程式會將JavaScript傳送至傳送時執行的頁面。 然而,回應Token會傳送物件,然後可以使用事件接聽程式讀取該物件並據以採取行動。 回應Token方法比較安全,而且在開發和維護第三方整合時較輕鬆。

NOTE
回應Token附隨於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 的客戶,建議採用回應 Token,而不要使用外掛程式。mbox.js (現已棄用)中有部分外掛程式所依賴的內部方法,但at.js中卻沒有,雖然可以傳送這些外掛程式,但卻會失敗。

使用回應Token section_A9E141DDCBA84308926E68D05FD2AC62

  1. 確保您使用Platform Web SDK 2.6.0版(或更新版本)或at.js版本1.1 (或更新版本)。

    如需詳細資訊:

    • Platform Web SDK:請參閱 安裝SDKPlatform Web SDK總覽 指南。
    • at.js:請參閱 下載at.js.
  2. 在 Target,按一下 管理 > 回應Token.

    response_tokens-new圖片

  3. 啟用所需的回應Token,例如 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 如果訪客從「控制」流量中收到體驗,則傳回0;如果訪客從「已鎖定目標」流量分佈中收到體驗,則傳回1。
    experience.trafficAllocationType 傳回「控制」或「已鎖定目標」。

    使用者設定檔屬性和客戶屬性也顯示在清單中。

    note note
    NOTE
    含特殊字元的參數不會顯示在清單中。僅支援英數字元和底線。
  4. (條件式)若要使用設定檔引數作為回應Token,但引數尚未透過 Target 要求,因此尚未載入至 Target UI,您可以使用 新增回應Token 按鈕以將設定檔新增到UI。

    按一下 新增回應Token,提供權杖名稱,然後按一下 啟動.

    response_token_create圖片

  5. 建立活動。

接聽回應並讀取回應Token

您用來監聽的程式 Target 回應和讀取回應Token會因您是否有任何 Platform Web SDK 或at.js實作。

Adobe Experience Platform Web SDK標誌 Platform Web SDK 使用Handle物件類別 platform-web-sdk

使用Handle物件類別,其中包含要監聽的中繼資料物件與資料物件 Target 回應並讀取回應Token。

以下回應範例新增 Platform Web SDK 自訂事件處理常式直接連線到「HTML」頁面(此表格說明程式碼中使用的物件):

物件
資訊
型別 — Personalization.decision
是否由 Target 或Offer decisioning提供者。
DecisionProvider - TGT
TGT-Target. Target 為頁面提供回應Token中繼資料和值。
中繼
傳遞至頁面的中繼資料。
資料
傳遞給頁面的中繼資料值。
<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 自訂事件接聽 回應並讀取回應 Token。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>

回應Token FAQ section_3DD5F32C668246289CDF9B4CDE1F536D

需要什麼角色才能啟動或停用回應 Token?

回應Token只有具備下列條件的使用者才能啟用或停用 Target 管理員 角色。

如果我正在執行會發生什麼事 Platform Web SDK 2.6.0 (或較舊版本)?

您無權存取回應Token。

如果我執行at.js 1.0 (或較舊版本),會發生什麼事?

您會看到回應Token,但at.js無法使用。

Target Classic我可以同時使用 外掛程式和回應 Token 嗎?

外掛程式和回應Token可並行使用;不過,外掛程式未來將停止使用。

回應Token是否透過 Target 回應或僅透過 Target 傳遞活動的回應?

回應Token僅透過 Target 傳遞活動的回應。

我的 Target Classic 外掛程式內含JavaScript。 如何使用回應 Token 來複寫其功能?

移轉至回應Token時,此型別的JavaScript必須保留在程式碼基底或標籤管理解決方案中。 您可以使用以下專案觸發此程式碼 Platform Web SDK 或 at.js 自訂事件並將回應Token值傳遞至JavaScript函式。

我的設定檔/客戶屬性參數為何沒有顯示在回應 Token 清單中?

Target 通常每15分鐘重新整理引數一次。 此重新整理取決於使用者動作,而且只有在您檢視回應Token頁面時,才會重新整理資料。 如果您的引數未顯示在回應Token清單中, Target 尚未重新整理資料。

此外,如果您的引數包含非英數字元或底線以外的任何符號,則引數不會出現在清單中。 目前僅支援英數和底線字元。

如果回應Token使用已刪除的設定檔指令碼或設定檔引數,仍會傳遞內容嗎?

回應 Token 會從使用者設定檔中擷取資訊,然後傳送該資訊。如果您刪除設定檔指令碼或參數,這不代表該資訊已從使用者設定檔中移除。使用者設定檔仍然具有與設定檔指令碼對應的資料。 回應Token會繼續傳遞內容。 對於沒有將該資訊儲存在其設定檔中的使用者,或新訪客,該Token不會傳遞,因為資料不存在於其設定檔中。

Target 不會自動關閉Token。 如果您刪除設定檔指令碼,且不想再傳送 Token,則必須自行關閉 Token。

我已重新命名設定檔指令碼,但為何使用該指令碼的 Token 仍以舊名稱處於使用中狀態?

如上所述,回應 Token 會處理使用者已儲存的設定檔資訊。即使您重新命名了個人資料指令碼,造訪過您網站的使用者仍會將舊的個人資料指令碼值儲存在其個人資料中。 代號會繼續挑選已儲存在使用者設定檔中的舊值。 如果您現在想要以新名稱來傳送內容,則必須關閉先前的 Token,並開啟新的 Token。

如果我的屬性已變更,何時會從清單中移除這些屬性?

Target 會定期重新整理屬性。任何未切換的屬性都會在下次重新整理時移除。 不過,如果您有已切換且已移除的屬性,該指令碼不會從屬性清單中移除,直到您將其切換為關閉為止。 例如,您移除用來做為Token的設定檔指令碼。 Target只有在刪除或重新命名已關閉的屬性時, 才會從清單中移除這些屬性。

傳送資料給Google Analytics

以下小節說明如何傳送 Target 資料到Google Analytics4。 回應Token傳送的資料也可傳送至其他第三方整合。

AEP徽章 透過Platform Web SDK傳送資料給Google Analytics

若要傳送Google Analytics,可透過Platform Web SDK 2.6.0版(或更新版本)在HTML頁面中新增下列程式碼。

NOTE
請確定回應Token金鑰值組位於 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>

除錯

以下小節提供除錯回應Token的相關資訊:

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 訓練影片:回應Token和at.js自訂事件 section_3AA0A6C8DBD94A528337A2525E3E05D5

以下影片說明如何使用回應Token和at.js自訂事件來共用設定檔資訊,從 Target 至協力廠商系統。

NOTE
Target 管理選單 UI (之前稱為設定) 已經過重新設計,可提供改良的效能、縮短發佈新功能所需的維護時間,並改善整個產品的使用者體驗。 下列影片中的資訊是正確的;不過,選項的位置稍有不同。
影片提及 option.nameoption.id,已取代為 offer.nameoffer.id,依序輸入。
recommendation-more-help
3d9ad939-5908-4b30-aac1-a4ad253cd654