推奨商品パイプライン
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
推奨商品は、SXA Storefront で 2 つの方法でサポートされています。メール キャンペーンの一部として、またはストア フロント サイトでレンダリングできます (Commerce 検索結果のレンダリングと検索スコープを使用して)。どちらの場合も、GetRecommendedProducts
パイプラインが使用されます。
GetRecommendedProducts
パイプラインが実行されると、結果の商品 ID のリストを使用して、カタログ アイテムと商品詳細を取得することで商品カードをレンダリングし、対応するレンダリングモデルを作成します。パイプラインへの入力は、GetRecommendedProductsArgs
型の引数オブジェクトです。パイプラインを実行した結果は、商品アイテム ID のリストであり、パイプライン引数オブジェクトの RecommendedProductsIdList
プロパティに格納されます。
次の図は、3 つのシナリオで推奨商品がどのように決定されるかを示しています。
-
商品を推奨するメールがマーケティング オートメーション キャンペーンから、またはリスト マネージャーのセグメンテーション ルールを使用して送信される場合、注文 ID が商品の推奨を決定するために使用されます。EXM クエリ パラメータに注文 ID がないときには、最後の注文 ID が ProductsQuery プロパティまたは Commerce インタラクション キャッシュから取得されます。
-
商品を推奨する一括メール キャンペーンが送信されるとき。この場合、最後の注文 ID が ProductsQuery プロパティまたは Commerce インタラクション キャッシュから取得されます。
-
検索スコープを使用して、ライブ ストアフロント サイトに推奨商品を表示するとき。この場合、推奨商品は検索スコープの結果から取得されます。
ScopeId
は、Commerce 検索結果レンダリングと関連する検索スコープをレンダリングする場合にのみ、パイプライン引数に渡されます。
推奨商品の評価時にパイプライン プロセッサーの 1 つが成功するとすぐに、残りのプロセッサーは無視されます。

GetRecommendedProducts パイプライン
デフォルトでは、GetRecommendedProducts
パイプラインは、次の表に示すように、4 つのプロセッサーを含みます。これらはリストされた順序で実行されます。最初のプロセッサーの条件が満たされると、プロセッサーは商品アイテム ID を取得し、RecommendedProductsIdList
プロパティと Success
プロパティを、これ以上の処理が不要であることを示すように設定します。
各プロセッサーは、実行を開始する前に、RecommendedProductsIdList
プロパティがすでに設定されているかどうかを確認します。設定されていた場合は、それ以上の処理をスキップして、次のプロセッサーに順に移動します。つまり、明示的な注文 ID が引数として渡された場合は、それが優先されます。また、明示的な注文 ID が存在せず、クエリが指定されて結果が返された場合、それ以上の処理は行われません。フォールバックとして、メール キャンペーンで推奨商品レンダリングを使用するときには、コンタクトの CommerceInteractionsCache
ファセットから現在の顧客の最後に発注された注文が検索されます。それ以外の場合、Commerce 検索結果レンダリングを使用するときには、フォールバックは ScopeId を使用することです。
プロセッサー |
説明 |
---|---|
|
Email Experience Manager (EXM) キャンペーン クエリ文字列 (言い換えると、キャンペーンのカスタム値) の OrderId を使用して、推奨商品プロバイダーから商品リストを取得します。 |
|
レンダリング データ ソース アイテムの [商品クエリ] フィールドに行き、検索マネージャーを使用してインデックスに対するクエリを実行し、アイテムのリストを取得します。 |
|
コンタクトの前回の注文 ID を取得して、推奨商品プロバイダーに渡します。 |
|
フォールバック スコープ ID を取得し、スコープに対して定義されたクエリを実行して、推奨する商品を決定します。 |
推奨商品のメール メッセージでは、パイプラインの実行結果として商品 ID のリストがないか、空のリストであった場合、商品推奨レンダリングは代わりに HTML マークアップの一部として「[CXA-DoNotSend]」を出力し、メール メッセージを送信しないことを通知します。推奨を含まないメール メッセージの送信を回避するために、CheckForCommerceFlag
プロセッサーは「[CXA-DoNotSend]」テキストを確認して、このテキストがあった場合、EXM SendEmail
パイプラインを破棄して、メール メッセージが送信されないようにします。
一般に、EXM がメール メッセージの送信を停止する洗練された方法がないため、EXM が処理しなければならないレンダリングにロジックを挿入するのは避けてください。ベスト プラクティスでは、レンダリングで使用されるデータは、EXM がメール メッセージの本文をレンダリングする前に取得する必要があります。自動化されたメール キャンペーンがマーケティング オートメーション キャンペーンからトリガーされると、マーケティング オートメーション アクション Commerce メールがデータを取得し、EXM がメール メッセージ本文をレンダリングする前にカスタム値として渡します。通常のメール キャンペーンを使用して推奨商品のメール メッセージを送信するときには、推奨商品のレンダリングが処理されるときにカスタム値が取得されます。
GetRecommendedProductsPipelineArgs 引数
レンダリング リポジトリには、GetRecommendedProductsPipelineArgs メソッドが含まれています。これは、レンダリング データ ソース、カスタム パラメーター (注文 ID)、およびクエリ文字列パラメーターを使用してパイプライン引数のプロパティを設定するために呼び出されます。結果のオブジェクトはパイプラインに渡されます。
パイプライン引数タイプには、以下のプロパティが含まれています。
プロパティ |
説明 |
---|---|
|
結果としての推奨商品 ID のリストを格納します。最初は値が含まれていません。 |
|
インデックスから商品アイテムを取得できるクエリを格納します。 |
|
|
|
プロバイダーが使用するフィールド名を渡します。 デフォルトのプロバイダー実装では、商品アイテムの関係フィールドを使用して、推奨商品を選択します。デフォルトでは、RelatedSellableItemToSellableItem 関係フィールドを使用します。別の関係フィールドをレンダリング パラメーターで設定して、パイプラインに渡すことができます。 |
|
推奨商品リストが正常に計算されたかどうかを示します。プロセッサーが商品 ID のリストを取得すると、値を True に設定します。 |
|
推奨商品リストが存在し、空でないかどうかを示します。 |
推奨商品の決定方法をカスタマイズするには、GetRecommendedProducts
パイプラインを拡張して、新しいプロセッサーとカスタム プロパティを追加できます。これを行うには、EmailRecommendedProductsRepository
の GetRecommendedProductsPipelineArgs
メソッドをオーバーライドします。