決定ポリシーでのフラグメントの活用 fragments

このページ:​決定ポリシー内で Journey Optimizer コンテンツフラグメントと AEM コンテンツフラグメントを活用します。これにより、チャネルをまたいでコンテンツ決定が提供するコンテンツをパーソナライズおよび最適化できます。

決定項目では、決定ポリシー内でメッセージを作成する際に活用できる 2 つのタイプのフラグメントコンテンツをサポートしています。

Journey Optimizer コンテンツフラグメント ajo-fragments

決定ポリシーに AJO コンテンツフラグメントを含む決定項目が含まれている場合、決定ポリシー内のメッセージを、決定が使用可能なすべてのチャネル(コードベースのエクスペリエンス、メール、プッシュ、SMS、ジャーニー)をまたいで作成する際に、これらのフラグメントを活用できます。

例えば、複数のモバイルデバイスモデルに対して異なるコンテンツを表示するとします。 決定ポリシーで使用している決定項目に、それぞれ異なる電話モデルに関連する指定されたフラグメントを追加します。決定項目にフラグメントを追加する方法の詳細情報

フラグメント参照とプレースメントキーを示す決定項目の「フラグメント」セクション。 {width="70%"}

完了したら、次のいずれかの方法を使用できます。

コードを直接挿入する

以下のコードブロックを決定ポリシーコードにコピー&ペーストするだけです。 variable をフラグメント ID に、placement をフラグメント参照キーに置き換えます。

code language-handlebars
{% let variable =  get(item._experience.decisioning.offeritem.contentReferencesMap, "placement").id %}
{{fragment id = variable required=false}}
詳細な手順に従う
  1. ヘルパー関数」に移動し、コードパネルに Let 関数 {% let variable = expression %} {{variable}} を追加します。ここでフラグメントの変数を宣言できます。

    コードパネルに追加された Let ヘルパー関数を示す決定ポリシーコードエディター。

  2. MapGet 関数 {%= get(map, string) %} を使用して、式を作成します。 マップは、決定項目で参照されるフラグメントです。文字列は、決定項目で​ フラグメント参照キー ​として入力したデバイスモデルに指定できます。

    フラグメントマップとフラグメント参照キーの参照に使用される Map 関数と Get 関数。

  3. また、このデバイスモデル ID を含むコンテキスト属性を使用することもできます。

    デバイスモデル識別子に対して選択されたコンテキスト属性。

  4. フラグメントに選択した変数をフラグメント ID として追加します。

    決定ポリシーコードの決定項目から設定されたフラグメント ID 変数。

フラグメント ID と参照キーは、決定項目の「フラグメント」セクションから選択されます。

WARNING
フラグメントキーが正しくない場合や、フラグメントコンテンツが有効でない場合、レンダリングは失敗し、Edge 呼び出しでエラーが発生することがあります。
フラグメントが一時的に使用できない場合のエラーを回避するには、required=false フラグを使用すると、代わりにフラグメントをスキップできます。一時的に使用できないフラグメントの詳細情報

使用状況とガードレール fragments-guardrails

次のガードレールは、決定項目で使用される AJO コンテンツフラグメント​に特に適用されます。

メールのコンテンツフラグメントと式フラグメントのシミュレート
メール​チャネルの場合、本配信前確認を送信​するか、キャンペーンがアクティブ化された際に、決定項目に関連付けられた式フラグメントが正しく表示されます。ただし、コンテンツをシミュレート​しても、決定項目の式フラグメントは表示されません。
メール内のビジュアルフラグメントと決定項目
決定項目に​ ビジュアルフラグメント ​を割り当てることはできません。このコンテキストでサポートされているのは​ 式フラグメント ​のみです。
決定項目とコンテキスト属性

Journey Optimizer のフラグメントでは、決定項目属性とコンテキスト属性はデフォルトでサポートされていません。 ただし、以下に説明するように、代わりにグローバル変数を使用できます。

例えば、フラグメントで sport 変数を使用するとします。

  1. フラグメント内でこの変数を参照します。例:

    code language-text
    Elevate your practice with new {{sport}} gear!
    
  2. 決定ポリシーブロック内で、Let 関数を使用して変数を定義します。 以下の例では、決定項目属性を使用して sport が定義されています。

    code language-handlebars
    {#each decisionPolicy.13e1d23d-b8a7-4f71-a32e-d833c51361e0.items as |item|}}
    {% let sport = item._cjmstage.value %}
    {{fragment id = get(item._experience.decisioning.offeritem.contentReferencesMap, "placement1").id }}
    {{/each}}
    
決定項目フラグメントコンテンツの検証
  • これらのフラグメントは動的な性質を持つため、キャンペーンで使用する場合、決定項目で参照されるフラグメントでは、キャンペーンコンテンツ作成時のメッセージ検証がスキップされます。

  • フラグメントコンテンツの検証は、フラグメントの作成中と公開中にのみ行われます。

  • JSON タイプの式フラグメントの場合、フラグメントを保存すると、コンテンツが構文的に検証されます。検証エラーはアラートとして表示されます。

実行時に、キャンペーンコンテンツ(決定項目のフラグメントコンテンツを含む)が検証されます。 検証に失敗した場合、キャンペーンはレンダリングされません。

一時的に使用できないフラグメントがスキップされる {#temporary-unavailable-fragments}

ジャーニーまたはキャンペーンが決定項目に添付されたフラグメントを参照する際、更新されたフラグメントが Edge で使用可能になるまでに短い同期遅延が発生する場合があります。

フラグメントが一時的に使用できない場合のエラーを回避するために、フラグメントでは、ジャーニーまたはキャンペーンが失敗する代わりにスキップされるように、デフォルトで required フラグが false に設定されるようになりました。

つまり、Edge でフラグメントが一時的に使用できない場合、フラグメントは無視されます。 フラグメントが使用可能な場合は、通常どおりレンダリングされます。

決定ポリシーが 2 つのオファーとして選定され、それぞれに「20%オフ」や「30%オフ」などのフラグメントが含まれている場合、2 番目のフラグメントが一時的に使用できない状況でも、required=false が設定されていると、システムはジャーニーやキャンペーンを失敗させることなく、使用可能なオファー(20%オフ)を表示し、もう一方のフラグメント(30%オフ)をスキップします。これにより、コンテンツの同期中であっても信頼性が向上します。

NOTE
required フラグを true に設定すると、フラグメントを必須としてマークできます。ただし、フラグメントが一時的に欠落していると、ジャーニーやキャンペーンのレンダリングが失敗する場合があります。

AEM コンテンツフラグメント aem-fragments-decisioning

AVAILABILITY
この機能は、決定をサポートするチャネルで使用できます。

決定ポリシーで AEM コンテンツフラグメントを活用する前に、次の点を確認してください。

パーソナライゼーションエディターでは、ポリシーによって選択された決定項目に関連付けられたすべての AEM コンテンツフラグメントが使用できます。フラグメントキー名ごとに 1 つのフォルダーが表示されます。

➡️ Journey Optimizer 決定を含む AEM コンテンツフラグメントの使用方法をビデオで確認

この例では、決定ポリシーには、参照名を通じて AEM フラグメントが関連付けられている 2 つの決定項目が含まれています。

決定ポリシーでフラグメントキー名ごとに使用可能な AEM コンテンツフラグメントを示すパーソナライゼーションエディター。

  1. 「+」ボタンをクリックして、目的のフラグメントを式に追加します。

    1 つの参照名に、異なるオファー項目をまたいで複数のフラグメントが関連付けられている場合、決定では、決定ポリシーのランキング条件に基づいて、各顧客に配信する最適なフラグメントを判断します。

  2. フラグメントを選択したら、画像 URL やテキストフィールド、その他のコンテンツなどの属性を活用し、決定を使用して、適切なコンテンツを適切な顧客に適切なタイミングで提供できます。

    決定ポリシー式でパーソナライズに使用可能な、選択した AEM コンテンツフラグメント属性。

  3. キャンペーンやジャーニーをアクティブ化する前に、いずれかのシミュレーション方法を使用して、AEM コンテンツフラグメントのフィールド値がどのようにレンダリングされるかをプレビューします。 コンテンツのシミュレートの詳細情報

チャネルをまたいだ AEM コンテンツフラグメントの使用 aem-fragments-channels

決定ポリシーから AEM コンテンツフラグメント属性を挿入する方法は、作業中のチャネルによって異なります。

メール

決定ポリシーを使用して、AEM コンテンツフラグメント属性をメールに挿入するには:

  1. E メールデザイナーでメールのドラフトを開き、右側のパネルの 決定 アイコンをクリックして、決定ポリシーパネルを開きます。

  2. 組み立てた選択戦略を選択し、プレースメント​を指定して、オファーが入力されるメールの領域を定義します。

  3. + アイコンをクリックし、その領域でレンダリングする必要がある AEM コンテンツフラグメント(例:ヒーロー画像 URL フィールド)から特定のフィールドを選択します。

    プレースメント用に AEM コンテンツフラグメントフィールドが選択された E メールデザイナーの決定ポリシーパネル。

  4. 公開前に、「コンテンツをシミュレート」をクリックして結果をプレビューし、最も優先度の高いオファーとそのコンテンツフラグメントがテストプロファイルに対して期待どおりにレンダリングされることを確認します。

コードベースのエクスペリエンス(JSON)

JSON ベースのコードベースのエクスペリエンスを作成する際、次の構造を使用して、決定ポリシーから AEM コンテンツフラグメント属性をレンダリングします。

code language-handlebars
[
{{#each decisionPolicy.YOUR_POLICY_ID.items as |item|}}
{% let frag = get(item._experience.decisioning.offeritem.aemContentReferencesMap, "YOUR_REFERENCE_KEY").id %}
{{fragment id = frag result='YOUR_REFERENCE_KEY' required=false}}
{
  "fieldName": "{{{YOUR_REFERENCE_KEY.fieldName}}}"
},
{{/each}}
]
note
NOTE
AEM コンテンツフラグメントでは、aemContentReferencesMap を使用して、参照キーでフラグメントを検索します。これは、Journey Optimizer コンテンツフラグメントに使用される contentReferencesMap とは異なります。

JSON ペイロードを作成する際は、次の点に注意してください。

  • JSON 配列のブラケット []#each ループの​ 外側 ​に配置します。
  • JSON 文字列内のフィールド値には、特殊文字の HTML エスケープを防ぎ、有効な JSON 出力を確保するために、三重括弧{{{ }}})を使用します。
  • result='YOUR_REFERENCE_KEY' パラメーターは、解決されたフラグメントのコンテンツをその名前で取得するので、YOUR_REFERENCE_KEY.fieldName でそのフィールドを参照できます。

JSON の決定ポリシーからレンダリングされた AEM コンテンツフラグメント属性を示すコードベースのエクスペリエンスエディター。

コードベースのエクスペリエンス(HTML)

HTML ベースのコードベースのエクスペリエンスの場合は、フィールドレンダリングに標準の二重括弧を使用します。

code language-handlebars
{{#each decisionPolicy.YOUR_POLICY_ID.items as |item|}}
{% let frag = get(item._experience.decisioning.offeritem.aemContentReferencesMap, "YOUR_REFERENCE_KEY").id %}
{{fragment id = frag result='YOUR_REFERENCE_KEY' required=false}}
<div>{{YOUR_REFERENCE_KEY.fieldName}}</div>
{{/each}}

AEM コンテンツフラグメントからのアセットの使用 aem-cf-assets

AEM コンテンツフラグメントには、AEM に保存されているアセットを参照する画像フィールドが含まれている場合があります。 Journey Optimizer は、これらのアセットの​ 相対パス ​のみを受信するので、完全な公開 URL を先頭に付加しない限り、画像が読み込まれない場合があります。

NOTE
コンテンツフラグメント内の AEM アセット参照のネイティブ解決はまだサポートされていません。以下のアプローチは、そのサポートが追加されるまで使用できる回避策です。
AEM パブリッシュドメインを先頭に追加
  1. AEM インスタンス URL から、オーサードメイン (例:author-p12345-e67890.adobeaemcloud.com)を特定します。

    パブリッシュドメインの取得に使用されたオーサードメインを示す AEM インスタンス URL。

  2. authorpublish に置き換えて、パブリッシュドメイン(publish-p12345-e67890.adobeaemcloud.com)を取得します。

  3. Journey Optimizer パーソナライゼーションエディターで、コンテンツフラグメントからアセット参照フィールドにドメインを公開する前に追加します。

    コンテンツフラグメントアセット参照フィールドの前に AEM パブリッシュドメインが追加されたパーソナライゼーションエディター。

画像は、配信時に完全な公開 URL に解決されます。

公開 URL をテキストフィールドに保存
  1. コンテンツフラグメントを AEM で開きます。

  2. JSON プレビューに移動し、「参照」セクションを確認して、公開されたアセット URLを見つけます。

    公開されたアセット URLを示す AEM コンテンツフラグメント JSON プレビューの「参照」セクション。

  3. 公開 URL をコピーし、コンテンツフラグメント内の専用のテキストフィールドにペーストします。

    参照されたアセットのコピーされた公開 URL を含む AEM コンテンツフラグメントのテキストフィールド。

  4. Journey Optimizer では、そのテキストフィールドをパーソナライゼーション式の画像ソースとして直接参照します。

    コンテンツフラグメントのテキストフィールドを画像ソースとして参照する Journey Optimizer パーソナライゼーション式。

このアプローチにより、URL の手動での作成が回避され、公開 URL はコンテンツフラグメント自体の中に保持されます。

チュートリアルビデオ video

Adobe Experience Manager コンテンツフラグメントを Journey Optimizer 決定と連携し、コンテンツをパーソナライズおよび最適化する方法について説明します。

recommendation-more-help
journey-optimizer-help