1. Commerce Connectの設定

xDBインデックス内のSearch連絡先と商取引のやり取り

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

xConnect Search APIを使えば、連絡先や商取引のやり取りを検索し 、例えば注文した顧客のリストや顧客が購入した全商品のリストを作成できます。

!注デフォルトでインデックスされていないすべてのモデルのブラックリストを見つけることができます。これらのモデルは*DoNotIndexAttribute*タイプを持っています。このリストはカスタムモデルでデプロイされるSitecore.Commerce.Connect.XConnect.Models.jsonファイルに含まれています。

このトピックでは、xConnect Search APIを使ってCommerceのイベントに基づいて連絡先を照会する方法の例を提供します。

!注Azureでは、以下の例にある入れ子されたループを単一のLINQ文にまとめることができます。

注文した顧客のリストを返却してください

以下のコード例は、注文を行った連絡先のリストを返します。

using (var client = new XConnectClient(cfg)) { var query = client.Contacts.Where(c => c.Interactions .Any(i => i.Events.OfType() .Any(e => e.Order.CartLines.Any(l => l.Product.ProductName == "Habitat Sentinel Touchscreen Thermostat"))));

var enumerator = await query.GetBatchEnumerator(20); List<IEntityReference> contactsWhoPlacedOrders = new List<IEntityReference>();

while (await enumerator.MoveNext()) { var contacts = enumerator.Current; contactsWhoPlacedOrders.AddRange(contacts); } }

顧客が購入したすべての商品のリストを返送してください

以下のコード例は、特定の顧客が購入した商品のリストを返します。

using (var client = new XConnectClient(cfg)) { var contactId = Guid.Parse("1822ef81-3016-0000-0000-05a9dc69662e"); var query = client.Interactions .Where(i => i.Contact.Id == contactId && i.Events.OfType().Any()); var enumerator = await query.GetBatchEnumerator();

while (await enumerator.MoveNext()) { var interactions = enumerator.Current; var productList = interactions.Where(i => i.Events.OfType().Any()) .SelectMany(i => i.Events.OfType()) .SelectMany(e => e.Order.CartLines) .Select(cl=>cl.Product).ToList(); } }

顧客が閲覧したすべての商品のリストを返送してください

以下のコード例は、個々の顧客が閲覧したすべての商品のリストを返します。

using (var client = new XConnectClient(cfg)) { var query = client.Interactions .Where(i => i.Contact.Id == Guid.Parse("1822ef81-3016-0000-0000-05a9dc69662e") && i.Events.OfType().Any()); var enumerator = await query.GetBatchEnumerator();

while (await enumerator.MoveNext()) { var interactions = enumerator.Current; var visitedProductsListIds = interactions .SelectMany(i => i.Events.OfType()) .Select(e => e.ProductId).ToList(); } }

顧客が訪れたすべてのカテゴリーのリストを返してください

以下のコード例は、顧客が訪れたすべてのカテゴリのリストを返します。

var cfg = GetXConnectClientConfiguration();

using (var client = new XConnectClient(cfg)) { var query = client.Interactions .Where(i => i.Contact.Id == Guid.Parse("1822ef81-3016-0000-0000-05a9dc69662e") && i.Events.OfType().Any()); var enumerator = await query.GetBatchEnumerator();

while (await enumerator.MoveNext()) { var interactions = enumerator.Current; var visitedCategoryListIds = interactions .SelectMany(i => i.Events.OfType()) .Select(e => e.CategoryId).ToList(); } }

カートを放棄した顧客のリストを返却してください

以下のコード例は、カートを放棄した顧客のリストを返します。

var cfg = GetXConnectClientConfiguration();

using (var client = new XConnectClient(cfg)) { var query = client.Contacts.Where(c => c.Interactions .Any(i => i.Events.OfType().Any())); var enumerator = await query.GetBatchEnumerator(20); List<IEntityReference> contactsWithAbandonedCart = new List<IEntityReference>();

while (await enumerator.MoveNext()) { var contacts = enumerator.Current; contactsWithAbandonedCart.AddRange(contacts); } }

この記事を改善するための提案がある場合は、 お知らせください!