Destination SDK で作成される宛先のテンプレート仕様
宛先サーバー設定のテンプレート仕様部分を使用して、宛先に送信される HTTP リクエストの書式設定方法を設定します。
テンプレート仕様では、XDM スキーマとプラットフォームがサポートする形式の間でのプロファイル属性フィールドの変換方法を定義できます。
テンプレート仕様は、リアルタイム(ストリーミング)宛先用の宛先サーバー設定の一部です。
このコンポーネントがDestination SDKで作成された統合にどの程度適合するかを理解するには、configuration options ドキュメントの図を参照するか、Destination SDKを使用してストリーミング宛先を設定する方法に関するガイドを参照してください。
/authoring/destination-servers エンドポイントを介して宛先用のテンプレート仕様を設定できます。 このページに表示されるコンポーネントを設定できる、詳細な API 呼び出しの例については、以下の API リファレンスページを参照してください。
サポートされる統合タイプ supported-integration-types
このページで説明される機能をサポートする統合のタイプについて詳しくは、以下の表を参照してください。
テンプレート仕様の設定 configure-template-spec
アドビは Jinja と類似したテンプレート言語を使用して、XDM スキーマのフィールドを宛先でサポートされる形式に変換します。
変換について詳しくは、以下のリンクを参照してください。
以下の 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"
}
}
httpMethodGET、PUT、POST、DELETE、PATCH。templatingStrategyPEBBLE_V1.を使用します。valueテンプレートの書き方について詳しくは、 テンプレートの使用に関する節を参照してください。
文字のエスケープについて詳しくは、RFC JSON標準のセクション 7を参照してください。
単純な変換の例については、 プロファイル属性の変換を参照してください。
contentTypeapplication/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を使用して複数のサンプルプロファイルに対してテストし、宛先サーバー設定に追加する前に、テンプレートが正しくレンダリングされることを確認します。
リクエストヘッダーの設定 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"
}
}
]
}
headerAuthorization、Content-Type、カスタムヘッダーなど)。value.templatingStrategyPEBBLE_V1を使用します。 静的値にはNONEを使用します。value.value{{customerData.integrationId}}、{{authData.clientId}}、{{ (authData.username + ':' + authData.password) | base64encode }}など、顧客データまたは認証データフィールドを参照するPebble式をサポートしています。一部のパートナーAPIでは、標準のAuthorization ヘッダーではなく、顧客が提供する認証資格情報の値が入力されたカスタムヘッダーが必要です。 上記のAmazon-Advertising-API-ClientId ヘッダーは、このパターンの例です。ヘッダー値はauthData フィールドから直接取得されます。
valueは、templatingStrategyおよびvalue フィールドを持つオブジェクトの代わりにフラット文字列です。 例については、 オーディエンスメタデータ管理を参照してください。カスタム Base64 エンコード ヘッダーを必要とする基本認証を使用する宛先については、基本認証ヘッダーのカスタマイズ を参照してください。
次の手順 next-steps
この記事を読むことで、テンプレート仕様とは何か、およびどのように設定できるかについて、理解を深めることができました。
その他の宛先サーバーコンポーネントについて詳しくは、以下の記事を参照してください。