Destination SDK で作成される宛先のテンプレート仕様

宛先サーバー設定のテンプレート仕様部分を使用して、宛先に送信される HTTP リクエストの書式設定方法を設定します。

テンプレート仕様では、XDM スキーマとプラットフォームがサポートする形式の間でのプロファイル属性フィールドの変換方法を定義できます。

テンプレート仕様は、リアルタイム(ストリーミング)宛先用の宛先サーバー設定の一部です。

このコンポーネントがDestination SDKで作成された統合にどの程度適合するかを理解するには、configuration options ドキュメントの図を参照するか、Destination SDKを使用してストリーミング宛先を設定する方法に関するガイドを参照してください。

/authoring/destination-servers エンドポイントを介して宛先用のテンプレート仕様を設定できます。 このページに表示されるコンポーネントを設定できる、詳細な API 呼び出しの例については、以下の API リファレンスページを参照してください。

IMPORTANT
Destination SDK でサポートされているすべてのパラメーター名および値は、大文字と小文字が区別​されます。 大文字と小文字の区別エラーを回避するには、ドキュメントに示すように、パラメーター名と値を正確に使用します。

サポートされる統合タイプ supported-integration-types

このページで説明される機能をサポートする統合のタイプについて詳しくは、以下の表を参照してください。

統合タイプ
機能のサポート
リアルタイム(ストリーミング)統合
○
ファイルベースの(バッチ)統合
×

テンプレート仕様の設定 configure-template-spec

アドビは Jinja と類似したテンプレート言語を使用して、XDM スキーマのフィールドを宛先でサポートされる形式に変換します。

ハイライト表示されたテンプレート設定

変換について詳しくは、以下のリンクを参照してください。

TIP
アドビでは、メッセージ変換テンプレートの作成とテストに役立つ開発者ツールを提供しています。

以下の HTTP リクエストテンプレートの例と各パラメーターの説明を参照してください。

{
   "httpTemplate":{
      "httpMethod":"POST",
      "requestBody":{
         "templatingStrategy":"PEBBLE_V1",
         "value":"{ \"attributes\": [ {% for ns in [\"external_id\", \"yourdestination_id\"] %} {% if input.profile.identityMap[ns] is not empty and first_namespace_encountered %} , {% endif %} {% set first_namespace_encountered = true %} {% for identity in input.profile.identityMap[ns]%} { \"{{ ns }}\": \"{{ identity.id }}\" {% if hasSegments(input.profile.segmentMembership) %} , \"AEPSegments\": { \"add\": [ {% for namespace in input.profile.segmentMembership %} {% for segment in input.profile.segmentMembership[namespace.key] %} {% if (segment.value.status == \"realized\" or segment.value.status == \"existing\") and destination.namespaceSegmentAliases[namespace.key][segment.key] is defined %} {% if added_segment_found %} , {% endif %} {% set added_segment_found = true %} \"{{ destination.namespaceSegmentAliases[namespace.key][segment.key] }}\" {% endif %} {% endfor %} {% endfor %} ], \"remove\": [ {% for namespace in input.profile.segmentMembership %} {% for segment in input.profile.segmentMembership[namespace.key] %} {% if segment.value.status == \"exited\" and destination.namespaceSegmentAliases[namespace.key][segment.key] is defined %} {% if removed_segment_found %} , {% endif %} {% set removed_segment_found = true %} \"{{ destination.namespaceSegmentAliases[namespace.key][segment.key] }}\" {% endif %} {% endfor %} {% endfor %} ] } {% set removed_segment_found = false %} {% set added_segment_found = false %} {% endif %} {% if input.profile.attributes is not empty %} , {% endif %} {% for attribute in input.profile.attributes %} \"{{ attribute.key }}\": {% if attribute.value is empty %} null {% else %} \"{{ attribute.value.value }}\" {% endif %} {% if not loop.last%} , {% endif %} {% endfor %} } {% if not loop.last %} , {% endif %} {% endfor %} {% endfor %} ] }"
      },
      "contentType":"application/json"
   }
}
パラメーター
タイプ
説明
httpMethod
文字列
必須。 Adobeがサーバーへの呼び出しで使用するメソッド。 サポートされるメソッド:GET、PUT、POST、DELETE、PATCH。
templatingStrategy
文字列
必須。 PEBBLE_V1.を使用します。
value
文字列
必須。 この文字列は、Experience Platformから送信されたHTTP リクエストを、宛先が期待するフォーマットにフォーマットする、文字エスケープされたテンプレートのバージョンです。
テンプレートの書き方について詳しくは、​ テンプレートの使用に関する節を参照してください。
文字のエスケープについて詳しくは、RFC JSON標準のセクション 7を参照してください。
単純な変換の例については、​ プロファイル属性の変換を参照してください。
contentType
文字列
必須。 サーバーが受け入れるコンテンツタイプ。 変換テンプレートが生成する出力のタイプに応じて、これは、サポートされる任意の HTTP アプリケーションコンテンツタイプになります。 ほとんどの場合、この値は、application/json に設定する必要があります。

外部オーディエンスをサポートするためのテンプレートの変換 template-converter-tool

古いテンプレートは、ups名前空間からのオーディエンスメンバーシップのみを読み取ります。 これらのテンプレートを更新して、segmentMembershipのすべての名前空間を繰り返し処理し、外部オーディエンス ​のメンバーシップも読み取れるようにします。

外部オーディエンスをサポートするように宛先を設定する方法について詳しくは、外部オーディエンスのサポートの設定を参照してください。

テンプレート変換 ツールを使用すると、既存のテンプレートを自動的に変換できます。 このツールは、ups名前空間のみを読み取るテンプレートを、外部オーディエンスを含むsegmentMembershipのすべての名前空間を繰り返すテンプレートに書き換えます。

テンプレートコンバーターツールのダウンロード

このツールには、Java Runtime Environment (JRE) 11以降が必要です。 次の2つのモードをサポートしています。

  • コマンドラインインターフェイス(CLI)モード:端末からツールを実行し、既存のテンプレートをパラメーターとして渡します。

    code language-shell
    java -jar templates-converter-cli.jar "your-existing-template-string"
    

    ツールは、変換されたテンプレートを端末に印刷します。

  • ユーザーインターフェイス (UI) モード:グラフィカル インターフェイスでツールを実行します。 このモードでは、ダウンロードしたアーカイブに含まれているJavaFX SDKが必要です。

    code language-shell
    java --module-path="./javafx-sdk-17.0.7/lib" --add-modules=javafx.controls,javafx.fxml -jar templates-converter-ui.jar
    

テンプレートを変換したら、​ レンダーテンプレート APIを使用して複数のサンプルプロファイルに対してテストし、宛先サーバー設定に追加する前に、テンプレートが正しくレンダリングされることを確認します。

IMPORTANT
テンプレートコンバーターツールは、テンプレートの構文のみを書き換えます。 変換されたテンプレートのビジネスロジックは検証されません。 本番環境で使用する前に、変換したテンプレートを必ずテストしてください。

リクエストヘッダーの設定 headers

リクエスト本文に加えて、Experience Platformが宛先に対して行う呼び出しにカスタム HTTP ヘッダーを追加できます。 各ヘッダーエントリは、宛先サーバー内の他のテンプレート化されたフィールドと同じtemplatingStrategyおよびvalue フィールドを使用します。

"httpTemplate": {
  "httpMethod": "POST",
  "headers": [
    {
      "header": "Authorization",
      "value": {
        "templatingStrategy": "PEBBLE_V1",
        "value": "Basic {{ (authData.username + ':' + authData.password) | base64encode }}"
      }
    },
    {
      "header": "x-integration",
      "value": {
        "templatingStrategy": "PEBBLE_V1",
        "value": "{{customerData.integrationId}}"
      }
    },
    {
      "header": "Amazon-Advertising-API-ClientId",
      "value": {
        "templatingStrategy": "PEBBLE_V1",
        "value": "{{authData.clientId}}"
      }
    },
    {
      "header": "Accept",
      "value": {
        "templatingStrategy": "NONE",
        "value": "application/json"
      }
    }
  ]
}
パラメーター
タイプ
説明
header
文字列
必須。 ヘッダー名(Authorization、Content-Type、カスタムヘッダーなど)。
value.templatingStrategy
文字列
必須。 ヘッダー値が動的な場合、またはPebble式を使用する場合は、PEBBLE_V1を使用します。 静的値にはNONEを使用します。
value.value
文字列
必須。 ヘッダーの値。 {{customerData.integrationId}}、{{authData.clientId}}、{{ (authData.username + ':' + authData.password) | base64encode }}など、顧客データまたは認証データフィールドを参照するPebble式をサポートしています。

一部のパートナーAPIでは、標準のAuthorization ヘッダーではなく、顧客が提供する認証資格情報の値が入力されたカスタムヘッダーが必要です。 上記のAmazon-Advertising-API-ClientId ヘッダーは、このパターンの例です。ヘッダー値はauthData フィールドから直接取得されます。

NOTE
この構造は、宛先サーバーのヘッダーにのみ適用されます。 オーディエンスのメタデータテンプレートヘッダーは、よりシンプルなフォームを使用します。ここでは、valueは、templatingStrategyおよびvalue フィールドを持つオブジェクトの代わりにフラット文字列です。 例については、​ オーディエンスメタデータ管理を参照してください。

カスタム Base64 エンコード ヘッダーを必要とする基本認証を使用する宛先については、基本認証ヘッダーのカスタマイズ ​を参照してください。

次の手順 next-steps

この記事を読むことで、テンプレート仕様とは何か、およびどのように設定できるかについて、理解を深めることができました。

その他の宛先サーバーコンポーネントについて詳しくは、以下の記事を参照してください。

recommendation-more-help
experience-platform-help-destinations