推奨製品パイプライン
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
推奨商品は、SXAストアフロントで2つの方法をサポートしています - メール キャンペーンの一部としてレンダリングするか、ストアフロント サイト (Commerce検索結果レンダリングと検索範囲を使用) でレンダリングできます。どちらの場合も、GetRecommendedProductsパイプラインが使用されます。
GetRecommendedProductsパイプラインが実行されると、結果の製品IDの一覧を使用して、カタログ アイテムと製品の詳細を取得して製品カードをレンダリングし、対応するレンダリング モデルを構成します。パイプラインへの入力は、GetRecommendedProductsArgs型の引数オブジェクトです。パイプラインの実行結果は、パイプライン引数オブジェクトのRecommendedProductsIdListプロパティに格納される製品アイテムIDのリストです。
次の図は、3つのシナリオで推奨製品がどのように決定されるかを示しています。
-
マーケティングオートメーションキャンペーンから、またはリストマネージャのセグメンテーションルールを使用して、商品をおすすめするメールが送信されると、オーダー IDを使用して商品のレコメンデーションが決定されます。EXMクエリ パラメーターに注文IDがない場合、最後の注文IDはProductsQueryプロパティまたはCommerce Interactionsキャッシュから取得されます。
-
商品をレコメンドする一括メールキャンペーンが送信されたとき。この場合、最後の注文IDはProductsQueryプロパティまたはCommerce Interactionsキャッシュから取得されます。
-
検索範囲を使用して、ライブ ストアフロント サイトで推奨製品を表示する場合。この場合、推奨製品は検索範囲の結果から取得されます。
ScopeIdは、Commerce検索結果のレンダリングと関連する検索スコープをレンダリングするときにのみ、パイプライン引数に渡されます。
パイプライン プロセッサの1つが推奨製品の評価に成功するとすぐに、残りのプロセッサは無視されます。
GetRecommendedProductsパイプライン
既定では、GetRecommendedProductsパイプラインには、次の表に示すように4つのプロセッサが含まれています。これらは、リストされた順序で実行されます。最初のプロセッサの条件が満たされた場合、プロセッサは製品アイテムIDを取得し、RecommendedProductsIdListプロパティとSuccessプロパティを設定して、これ以上の処理が不要であることを示します。
各プロセッサは、実行を開始する前に、RecommendedProductsIdListプロパティが既に設定されているかどうかを確認します。その場合は、それ以上の処理をスキップし、次のプロセッサに移動します。つまり、明示的な注文IDが引数として渡された場合は、そのIDが優先されます。また、明示的な注文IDが存在せず、クエリが指定されて結果が返された場合、それ以上の処理は行われないということも意味します。フォールバックとして、メール キャンペーンで推奨製品のレンダリングを使用する場合は、現在の顧客の最後に発注された注文が連絡先のCommerceInteractionsCacheファセットから検索されます。それ以外の場合、Commerce検索結果レンダリングを使用する場合、フォールバックはScopeIdを使用することです。
|
プロセッサー |
形容 |
|---|---|
|
FromOrder |
Email Experience Manager (EXM) キャンペーン クエリ文字列 (つまり、キャンペーンのカスタム値) からのOrderIdを使用して、推奨製品プロバイダーから製品リストを取得します。 |
|
FromQuery |
レンダリング データ ソース アイテムからProducts queryフィールドに移動し、検索マネージャーを使用してインデックスに対してクエリを実行し、アイテムのリストを取得します。 |
|
FromLastOrder |
連絡先の最後の注文IDを取得し、推奨製品プロバイダーに渡します。 |
|
FromSearchScope |
フォールバック スコープIDを取得し、スコープに対して定義されたクエリを実行して、推奨する製品を決定します。 |
推奨製品電子メール メッセージでは、パイプラインの実行結果が製品IDのリストなしまたは空のリストである場合、製品推奨事項レンダリングは代わりにHTMLマークアップの一部として 'CXA-DoNotSend' を出力し、電子メール メッセージを送信しないことを示します。推奨事項が含まれていないメール メッセージの送信を回避するために、CheckForCommerceFlagプロセッサは 'CXA-DoNotSend' テキストを検証し、存在する場合はEXM SendEmailパイプラインを破棄して、メール メッセージが送信されないようにします。
一般に、EXMが処理する必要があるレンダリングにロジックを挿入することは避けてください。これは、EXMがメール メッセージを送信するのを止める洗練された方法がないためです。ベスト プラクティスでは、レンダリングで使用されるデータは、EXMがメール メッセージ本文をレンダリングbefore取得する必要があります。マーケティングオートメーションキャンペーンから自動メールキャンペーンがトリガーされると、マーケティングオートメーションアクションのコマースメールはデータを取得し、EXMがメールメッセージ本文をレンダリングする前にカスタム値として渡します。通常のEメールキャンペーンを使用して推奨製品のEメールメッセージを送信すると、推奨製品のレンダリングが処理されるときにカスタム値が取得されます。
GetRecommendedProductsPipelineArgs引数
レンダリング リポジトリには、レンダリング データ ソース、カスタム パラメーター (注文ID)、およびクエリ文字列パラメーターを使用してパイプライン引数のプロパティを設定するために呼び出されるGetRecommendedProductsPipelineArgsメソッドが含まれています。結果のオブジェクトはパイプラインに渡されます。
パイプライン引数の型には、次のプロパティが含まれています。
|
財産 |
形容 |
|---|---|
|
RecommendedProductsIdList |
推奨商品IDの結果リストを保存します。初期状態には値が含まれていません。 |
|
ProductsQuery |
インデックスから製品アイテムを取得できるクエリを格納します。 |
|
MaxNumberOfRecommendedProducts |
RecommendedProductsIdListプロパティで取得して返す推奨製品の最大数を示す整数が含まれます。 |
|
RelationshipFieldName |
プロバイダーが使用するフィールド名を渡します。 デフォルトのプロバイダー実装では、製品アイテムの関連付けフィールドを使用して、推奨製品を選択します。デフォルトでは、RelatedSellableItemToSellableItem関係フィールドを使用します。別のリレーションシップ フィールドをレンダリング パラメーターで構成し、パイプラインに渡すことができます。 |
|
Success |
推奨製品リストが正常に計算されたかどうかを示します。プロセッサは、製品IDのリストを取得すると、値をTrueに設定します。 |
|
IsRecommendedProductsReady |
推奨製品リストが存在し、空でないかどうかを示します。 |
推奨製品の決定方法をカスタマイズするには、GetRecommendedProductsパイプラインを拡張し、新しいプロセッサとカスタム プロパティを追加します。これを行うには、EmailRecommendedProductsRepositoryのGetRecommendedProductsPipelineArgsメソッドをオーバーライドします。