1. Commerce Connectの設定

xDBインデックスでの連絡先とCommerceインタラクションの検索

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

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

xConnect Search APIを使用すると、連絡先やCommerceインタラクションを検索して 、注文した顧客のリストや顧客が購入したすべての製品のリストなどを生成できます。

メモ

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

このトピックでは、xConnect Search APIを使用してCommerceイベントに基づいて連絡先をクエリする方法の例を示します。

手記

Azureでは、次の例の入れ子になったループを1つのLINQステートメントに配置できます。

注文した顧客のリストを返す

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

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

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

                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<VisitorOrderCreatedGoal>().Any());
                var enumerator = await query.GetBatchEnumerator();

                while (await enumerator.MoveNext())
                {
                    var interactions = enumerator.Current;
                    var productList = interactions.Where(i => i.Events.OfType<VisitorOrderCreatedGoal>().Any())
                        .SelectMany(i => i.Events.OfType<VisitorOrderCreatedGoal>())
                            .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<VisitedProductDetailsPageEvent>().Any());
                var enumerator = await query.GetBatchEnumerator();

                while (await enumerator.MoveNext())
                {
                    var interactions = enumerator.Current;
                    var visitedProductsListIds = interactions
                        .SelectMany(i => i.Events.OfType<VisitedProductDetailsPageEvent>())
                        .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<VisitedCategoryPageEvent>().Any());
                var enumerator = await query.GetBatchEnumerator();

                while (await enumerator.MoveNext())
                {
                    var interactions = enumerator.Current;
                    var visitedCategoryListIds = interactions
                        .SelectMany(i => i.Events.OfType<VisitedCategoryPageEvent>())
                        .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<AbandonedCartPageEvent>().Any()));
                var enumerator = await query.GetBatchEnumerator(20);
                List<IEntityReference<Contact>> contactsWithAbandonedCart = new List<IEntityReference<Contact>>();

                while (await enumerator.MoveNext())
                {
                    var contacts = enumerator.Current;
                    contactsWithAbandonedCart.AddRange(contacts);
                }
            }
この記事を改善するための提案がある場合は、 お知らせください!