応答トークンへのアクセス

Adobe Targetから返されるPersonalization コンテンツには、応答トークン ​が含まれます。このトークンには、アクティビティ、オファー、エクスペリエンス、ユーザープロファイル、位置情報などの詳細が含まれます。 これらの詳細は、サードパーティのツールと共有することも、デバッグに使用することもできます。 応答トークンは、Target ユーザーインターフェイスで設定できます。

パーソナライゼーションコンテンツにアクセスするには、イベントの送信時にコールバック機能を提供します。 このコールバックは、SDKがサーバーから正常な応答を受け取った後に呼び出されます。 コールバックにresult オブジェクトが指定されています。このオブジェクトには、返されたパーソナライゼーションコンテンツを含むpropositions プロパティが含まれている場合があります。 以下は、コールバック関数を提供する例です。

alloy("sendEvent", {
    renderDecisions: true,
    xdm: {}
  }).then(function(result) {
    if (result.propositions) {
      // Manually render propositions
    }
  });

この例では、result.propositionsは、存在する場合、イベントに関連するパーソナライゼーション提案を含む配列です。 result.propositions.のコンテンツについて詳しくは、​ パーソナライゼーションコンテンツのレンダリング ​を参照してください

Web SDKによって自動的にレンダリングされたすべての提案からすべてのアクティビティ名を収集し、それらを1つの配列にプッシュするとします。 その後、単一の配列をサードパーティに送信できます。 この場合:

  1. result オブジェクトから提案を抽出します。
  2. 各提案を繰り返します。
  3. SDKが提案をレンダリングしたかどうかを確認します。
  4. その場合は、提案書の各項目を繰り返します。
  5. 応答トークンを含むオブジェクトであるmeta プロパティからアクティビティ名を取得します。
  6. アクティビティ名を配列にプッシュします。
  7. アクティビティ名をサードパーティに送信します。

コードは次のようになります。

alloy("sendEvent", {
    renderDecisions: true,
    xdm: {}
  }).then(function(result) {
    var activityNames = [];
    propositions.forEach(function(proposition) {
      if (proposition.renderAttempted) {
        proposition.items.forEach(function(item) {
          if (item.meta) {
            // item.meta contains the response tokens.
            var activityName = item.meta["activity.name"];
            // Ignore duplicates
            if (activityNames.indexOf(activityName) === -1) {
              activityNames.push(activityName);
            }
          }
        });
      }
    });
    // Now that activity names are in an array,
    // you can send them to a third party or use
    // them in some other way.
  });
recommendation-more-help
target-dev-help-dev