動的フラグメントの使用 dynamic-fragments

このページ:​送信時に渡されるプロファイル属性、データセット参照、コンテキストデータに基づいて、Adobe Journey Optimizer で動的フラグメント解決を使用して、実行時にメッセージに挿入される公開済みフラグメントを選択する方法について説明します。

Adobe Journey Optimizer は、実行時の​ 動的フラグメント解決 ​をサポートしています。これにより、送信時に渡されるプロファイル属性、データセット参照、コンテキストデータに基づいて、メッセージに挿入する公開済みフラグメントを選択できます。 その結果、キャンペーンやジャーニーのロジックを複製することなく、高度にパーソナライズされたコンテンツを提供できます。

概要 overview

静的フラグメント​は、デザイン時にメッセージに埋め込まれ、すべての受信者に対して同じフラグメントが使用されます。 動的フラグメント​は、受信者ごとに実行時にフラグメント ID を解決します。つまり、同じキャンペーンやジャーニー内であっても、プロファイルによってまったく異なるコンテンツブロックを受信できます。

動的フラグメント ID は、次の 3 つのソースから取得できます。

  • データセット参照 - 例:スタイルや製品をキーとするレコメンデーションデータセット
  • プロファイル属性 - Adobe Experience Platform に保存されます
  • コンテキストデータ - 送信時の API リクエストで直接渡されます
NOTE
式フラグメント内で datasetLookup ヘルパー関数を使用する機能は、現在、一部のお客様にのみ提供されています。 アクセス権を取得するには、アドビ担当者にお問い合わせください。

前提条件 prerequisites

動的フラグメントを使用する前に、次の前提条件が満たされていることを確認してください。

  • Journey Optimizer でフラグメントを作成および公開するために必要な権限があること。 詳細情報
  • 参照しようとしているフラグメントが​公開済み(ステータス:ライブ)であること。 ドラフトフラグメントは、実行時に解決できません。
  • データセットからフラグメント ID を解決する場合、データセットスキーマにフラグメント ID を格納するフィールドが含まれ、データセットが参照用に有効になっていること。
  • 動的フラグメント自体が参照するすべてのプロファイル属性が、メッセージのエクスポートパスに含まれているか、送信時にプロファイル内で使用可能であること。
CAUTION
動的なフラグメントフローでは、フラグメントに関連する検証はスキップされます。 無効なフラグメント ID は、事前の検証エラーではなく、実行時の配信エラーとして表示されます。 キャンペーンをアクティブ化する前に、参照されているフラグメント ID が有効で、公開されていることを常に確認してください。

手順 1:フラグメントを作成して公開 create-fragment

フラグメントを動的に参照する前に、Journey Optimizer で公開する必要があります。

  1. Journey Optimizer で、コンテンツ管理/フラグメント​に移動します。

  2. 「フラグメントを作成」を選択し、コンテンツを作成します。 フラグメントの作成方法の詳細情報

  3. コンテンツの準備が整ったら、「公開」をクリックします。 公開は非同期で、数秒かかる場合があります。 続行する前に、フラグメントのステータスが​ ライブ ​に変更されていることを確認してください。

  4. フラグメント詳細ビューまたは Fragments API の応答から​フラグメント ID をメモします。 メッセージでこの ID を参照します。

NOTE
GET /fragments API を使用して、公開されているすべてのフラグメント ID をプログラムで取得できます。 詳しくは、Journey Optimizer API ドキュメントを参照してください。

手順 2:動的フラグメント参照を使用してメッセージを作成 author-message

パーソナライゼーションエディターで、次の構文を使用して動的フラグメントのプレースホルダーを挿入します。

{{fragment id=dynamic_fragment_id}}

識別子 dynamic_fragment_id は変数名です。 フラグメント検索を実行する前に、その値を解決する必要があります。 データセット参照式、プロファイル属性、コンテキストデータを使用して解決します。

データセット参照から解決 resolve-from-dataset

フラグメント ID が AEP データセット(例:スタイルからフラグメントへのマッピングテーブル)に格納されている場合は、datasetLookup ヘルパー関数を使用して解決します。

{{
  {datasetLookup datasetId="<your-dataset-id>" key=profile.style attribute="fragmentId"}
}}

{{fragment id=dynamic_fragment_id}}

この例では、データセットに、スタイル値(style1 など)をキーとする行が含まれています。 特定のプロファイルの場合、その参照は対応する fragmentId 列の値を取得して dynamic_fragment_id に割り当て、その値を用いてフラグメントを解決します。

NOTE
式フラグメント内で datasetLookup ヘルパー関数を使用する機能は、現在、一部のお客様にのみ提供されています。 アクセス権を取得するには、アドビ担当者にお問い合わせください。 パーソナライゼーションでのデータセット参照について詳しくは、Adobe Experience Platform データの使用を参照してください。

コンテキストデータから解決 resolve-from-context

フラグメント ID が送信時に API リクエストコンテキストの一部として指定される場合は、context 名前空間を使用して参照します。

{{fragment id=context.audiencePayload.fragmentId}}

パス context.audiencePayload は、CSV オーディエンスファイルから取得されたすべての属性や、API リクエストコンテキスト経由で渡されるすべての属性に対して必須となる接頭辞です。 CSV の列名(例:fragmentId)が接頭辞に続きます。

プロファイル属性から解決 resolve-from-profile

フラグメント ID が Adobe Experience Platform のプロファイル属性として格納されている場合は、直接参照してください。

{{fragment id=profile.mi.fragmentId}}

手順 3:参照アプローチ用にデータセットを設定 configure-dataset

データセット参照アプローチを使用している場合は、フラグメント ID を含めるようにデータセットスキーマとデータを更新します。

  1. レコメンデーションまたはマッピングデータセットに、各行の公開済み AJO フラグメント ID を格納する列(例:fragmentId)を追加します。

  2. 各スタイルまたはバリアント(例:style1、style2)について、fragmentId 列に対応するフラグメント ID を入力します。

  3. データセットが Adobe Experience Platform に取り込まれ、参照用に有効になっていることを確認します。

  4. エクスポート時に空のレンダリングを防ぐために、動的フラグメント内で参照されているすべてのプロファイル属性が、メッセージまたは静的フラグメントにキャプチャされていることを確認します。

データセット構造の例:

列
値の例
style
style1
fragmentId
<fragment-id-1>
style
style2
fragmentId
<fragment-id-2>

手順 4:送信時にコンテキストデータを渡す pass-context-data

コンテキストデータ(例:CSV オーディエンスレコメンデーションファイル)からフラグメント ID を解決する場合は、必要なコンテキスト接頭辞を付与した状態で API リクエストにフラグメント ID を渡します。

キャンペーンの本配信前確認 API を使用する際は、context オブジェクトにフラグメント ID を含めます。

{
  "recipients": [
    {
      "userId": "<profile-email>",
      "namespace": "email"
    }
  ],
  "inChannelData": {
    "channel": "email",
    "emailAddresses": ["<delivery-address>"]
  },
  "context": {
    "audiencePayload": {
      "fragmentId": "<published-fragment-id>",
      "systemSource": "<optional-system-value>"
    }
  }
}

接頭辞 context.audiencePayload は必須です。 このキーの下にネストされた属性は、ライブキャンペーンの実行時に、CSV オーディエンスファイルの列に直接マッピングされます。

手順 5:本配信前確認と検証 proof-validate

キャンペーンをアクティブ化する前に、キャンペーンの本配信前確認 API を使用して、動的フラグメントが正しく解決され、レンダリングされたメールの出力が期待どおりであることを確認します。

  1. POST /campaigns/{id}/proofs エンドポイントを使用して、本配信前確認ジョブをトリガーします。 本配信前確認リクエストでは、context.audiencePayload.fragmentId でテストするフラグメント ID を渡します。

  2. ステータスが Submitted または Failed になるまで、GET /campaigns/{id}/proofs/{proofId} エンドポイントを使用して本配信前確認ジョブのステータスをポーリングします。

  3. 配信されたメールを確認し、正しいフラグメントコンテンツがレンダリングされていることを確認します。

  4. フラグメントコンテンツが欠落しているか誤っている場合は、フラグメント ID が有効であること、フラグメントが公開されていること、必要なすべてのプロファイル属性が含まれていることを確認します。

キャンペーン API について詳しくは、Journey Optimizer API ドキュメントを参照してください。

ガードレールと制限 guardrails

CAUTION
動的フラグメントモデルのフラグメントには、OLAC(オブジェクトレベルのアクセス制御)は適用されません。 キャンペーンおよびオーディエンスのレベルで、アクセス制御の要件が考慮されていることを確認します。

動的フラグメントを使用する際は、次の制限が適用されます。

  • エクスポート時のプロファイル属性のカバレッジ:フラグメントは実行時にプロファイルごとに選択されます。 動的フラグメントで必要とされるプロファイル属性は、事前に把握されていません。 動的フラグメントが、元のメッセージやメッセージ内で参照される静的フラグメントに存在しないプロファイル属性に依存している場合、エクスポートパスにそのフィールドが空としてレンダリングされることがあります。

  • 事前のフラグメント検証なし:このフローでは、フラグメントに関連する検証はスキップされます。 不正確または非公開のフラグメント ID は、UI に表示される検証エラーではなく、実行時の配信エラーとして表示されます。

  • データセットのアプローチに必要なスキーマの変更:ID による参照パスを使用する場合、フラグメント ID を格納して渡すためのデータセットスキーマを更新し、メッセージパイプラインにフィードするための仕組みを構築する必要があります。

  • エクスポート用の属性キャプチャ:エクスポートパスに空としてレンダリングされることを防ぐために、動的フラグメント内で使用されるすべての属性が、メッセージまたは静的フラグメントにキャプチャされていることを確認します。

フラグメントに適用されるその他のガードレールについて詳しくは、この節を参照してください。

エラー処理 error-handling

実行時に動的フラグメントの解決に失敗した場合、影響を受けるプロファイルに対して除外イベントが生成されます。 現在、すべてのフラグメントレンダリングのエラーは、単一のブランケットエラータイプとして分類されています。

フラグメント解決エラーをデバッグするには:

  1. 除外イベントのキャンペーン配信レポートを確認します。
  2. 実行時に渡されたフラグメント ID が、公開されたフラグメントと一致することを確認します。
  3. フラグメントで必要とされるすべてのプロファイル属性が、送信時にプロファイルに存在することを確認します。
  4. キャンペーンをアクティブ化する前に、本配信前確認 API を使用して、特定のフラグメント ID をテストします。
recommendation-more-help
journey-optimizer-help