推奨商品パイプライン

概要

推奨商品パイプラインとパイプライン引数の概要。

推奨商品は、SXA Storefront で 2 つの方法でサポートされています。メール キャンペーンの一部として、またはストア フロント サイトでレンダリングできます (Commerce 検索結果のレンダリングと検索スコープを使用して)。どちらの場合も、GetRecommendedProducts パイプラインが使用されます。

GetRecommendedProducts パイプラインが実行されると、結果の商品 ID のリストを使用して、カタログ アイテムと商品詳細を取得することで商品カードをレンダリングし、対応するレンダリングモデルを作成します。パイプラインへの入力は、GetRecommendedProductsArgs 型の引数オブジェクトです。パイプラインを実行した結果は、商品アイテム ID のリストであり、パイプライン引数オブジェクトの RecommendedProductsIdList プロパティに格納されます。

次の図は、3 つのシナリオで推奨商品がどのように決定されるかを示しています。

  • 商品を推奨するメールがマーケティング オートメーション キャンペーンから、またはリスト マネージャーのセグメンテーション ルールを使用して送信される場合、注文 ID が商品の推奨を決定するために使用されます。EXM クエリ パラメータに注文 ID がないときには、最後の注文 ID が ProductsQuery プロパティまたは Commerce インタラクション キャッシュから取得されます。

  • 商品を推奨する一括メール キャンペーンが送信されるとき。この場合、最後の注文 ID が ProductsQuery プロパティまたは Commerce インタラクション キャッシュから取得されます。

  • 検索スコープを使用して、ライブ ストアフロント サイトに推奨商品を表示するとき。この場合、推奨商品は検索スコープの結果から取得されます。

注記

ScopeId は、Commerce 検索結果レンダリングと関連する検索スコープをレンダリングする場合にのみ、パイプライン引数に渡されます。

推奨商品の評価時にパイプライン プロセッサーの 1 つが成功するとすぐに、残りのプロセッサーは無視されます。

推奨商品パイプライン プロセスを取得する

デフォルトでは、GetRecommendedProducts パイプラインは、次の表に示すように、4 つのプロセッサーを含みます。これらはリストされた順序で実行されます。最初のプロセッサーの条件が満たされると、プロセッサーは商品アイテム ID を取得し、RecommendedProductsIdList プロパティと Success プロパティを、これ以上の処理が不要であることを示すように設定します。

各プロセッサーは、実行を開始する前に、RecommendedProductsIdList プロパティがすでに設定されているかどうかを確認します。設定されていた場合は、それ以上の処理をスキップして、次のプロセッサーに順に移動します。つまり、明示的な注文 ID が引数として渡された場合は、それが優先されます。また、明示的な注文 ID が存在せず、クエリが指定されて結果が返された場合、それ以上の処理は行われません。フォールバックとして、メール キャンペーンで推奨商品レンダリングを使用するときには、コンタクトの CommerceInteractionsCache ファセットから現在の顧客の最後に発注された注文が検索されます。それ以外の場合、Commerce 検索結果レンダリングを使用するときには、フォールバックは ScopeId を使用することです。

プロセッサー

説明

FromOrder

Email Experience Manager (EXM) キャンペーン クエリ文字列 (言い換えると、キャンペーンのカスタム値) の OrderId を使用して、推奨商品プロバイダーから商品リストを取得します。

FromQuery

レンダリング データ ソース アイテムの [商品クエリ] フィールドに行き、検索マネージャーを使用してインデックスに対するクエリを実行し、アイテムのリストを取得します。

FromLastOrder

コンタクトの前回の注文 ID を取得して、推奨商品プロバイダーに渡します。

FromSearchScope

フォールバック スコープ ID を取得し、スコープに対して定義されたクエリを実行して、推奨する商品を決定します。

推奨商品のメール メッセージでは、パイプラインの実行結果として商品 ID のリストがないか、空のリストであった場合、商品推奨レンダリングは代わりに HTML マークアップの一部として「[CXA-DoNotSend]」を出力し、メール メッセージを送信しないことを通知します。推奨を含まないメール メッセージの送信を回避するために、CheckForCommerceFlag プロセッサーは「[CXA-DoNotSend]」テキストを確認して、このテキストがあった場合、EXM SendEmail パイプラインを破棄して、メール メッセージが送信されないようにします。

重要

一般に、EXM がメール メッセージの送信を停止する洗練された方法がないため、EXM が処理しなければならないレンダリングにロジックを挿入するのは避けてください。ベスト プラクティスでは、レンダリングで使用されるデータは、EXM がメール メッセージの本文をレンダリングするに取得する必要があります。自動化されたメール キャンペーンがマーケティング オートメーション キャンペーンからトリガーされると、マーケティング オートメーション アクション Commerce メールがデータを取得し、EXM がメール メッセージ本文をレンダリングする前にカスタム値として渡します。通常のメール キャンペーンを使用して推奨商品のメール メッセージを送信するときには、推奨商品のレンダリングが処理されるときにカスタム値が取得されます。

レンダリング リポジトリには、GetRecommendedProductsPipelineArgs メソッドが含まれています。これは、レンダリング データ ソース、カスタム パラメーター (注文 ID)、およびクエリ文字列パラメーターを使用してパイプライン引数のプロパティを設定するために呼び出されます。結果のオブジェクトはパイプラインに渡されます。

パイプライン引数タイプには、以下のプロパティが含まれています。

プロパティ

説明

RecommendedProductsIdList

結果としての推奨商品 ID のリストを格納します。最初は値が含まれていません。

ProductsQuery

インデックスから商品アイテムを取得できるクエリを格納します。

MaxNumberOfRecommendedProducts

RecommendedProductsIdList プロパティで取得して返される推奨商品の最大数を示す整数を含みます。

RelationshipFieldName

プロバイダーが使用するフィールド名を渡します。

デフォルトのプロバイダー実装では、商品アイテムの関係フィールドを使用して、推奨商品を選択します。デフォルトでは、RelatedSellableItemToSellableItem 関係フィールドを使用します。別の関係フィールドをレンダリング パラメーターで設定して、パイプラインに渡すことができます。

Success

推奨商品リストが正常に計算されたかどうかを示します。プロセッサーが商品 ID のリストを取得すると、値を True に設定します。

IsRecommendedProductsReady

推奨商品リストが存在し、空でないかどうかを示します。

注記

推奨商品の決定方法をカスタマイズするには、GetRecommendedProducts パイプラインを拡張して、新しいプロセッサーとカスタム プロパティを追加できます。これを行うには、EmailRecommendedProductsRepositoryGetRecommendedProductsPipelineArgs メソッドをオーバーライドします。