動的フラグメントを使用 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. コンテンツの準備ができたら、公開​をクリックします。 公開は非同期で、数秒かかる場合があります。 続行する前に、フラグメントのステータスが​ Live ​に変更されていることを確認してください。

  4. フラグメントの詳細ビューまたはフラグメント 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. 各スタイルまたはバリアント (例:style1style2)について、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が有効であり、フラグメントが公開され、必要なすべてのプロファイル属性が存在することを確認します。

Campaign 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