インタラクションで連絡を取る

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

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

RelatedInteractionsExpandOptionsを使用して、各連絡先で返されるインタラクションとインタラクション ファセットの範囲を指定します。次の例では、過去10日間のインタラクションが各コンタクトで返され、最大30件のインタラクションに制限されています。LocaleInfoファセットが存在する場合は、インタラクションごとにも返されます。

var contactsTask = client.GetAsync<Contact>(references, new ContactExecutionOptions(new ContactExpandOptions() {
    Interactions = new RelatedInteractionsExpandOptions(LocaleInfo.DefaultFacetKey)
    {
        EndDateTime = DateTime.UtcNow.AddDays(-10),
        Limit = 30
    }
}));

次の表では、RelatedInteractionsExpandOptionsクラスの使用方法について説明します。

財産

形容

FacetKeys

Read-only property - 文字列の配列としてコンストラクタに渡され、各インタラクションで返すファセットを指定します

StartDateTime

インタラクションの開始日時は、この値以上である必要があります。DateTime.MinValueを使用して、最も早いインタラクションを取得します。

EndDateTime

インタラクションの終了日時は、この値以下である必要があります。DateTime.MaxValueを使用して、最新のインタラクションを取得します。

Limit

指定した日付の間に返されるインタラクションの最大数。

次の例は、ContactExpandOptionsRelatedInteractionsExpandOptionsを一緒に使用する方法を示しています。コンタクトは、PersonalInformationファセットと10日以上経過したインタラクション(30インタラクションに制限)で返されます。

using Sitecore.XConnect.Collection.Model;
using Sitecore.XConnect.Operations;
using System;
using System.Collections.Generic;
using Sitecore.XConnect;
using Sitecore.XConnect.Client;

namespace Documentation
{
    public class GetContactWithInteractions
    {
        public async void ExampleAsync()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    var references = new List<Sitecore.XConnect.IEntityReference<Sitecore.XConnect.Contact>>()

                    {
                        // Contact ID
                        new Sitecore.XConnect.ContactReference(new Guid("{A2814105-1F45-E611-52E6-34E6D7117DCB}")),
                        // Username
                        new Sitecore.XConnect.IdentifiedContactReference("twitter", "myrtlesitecore"),
                        // Ad network ID
                        new Sitecore.XConnect.IdentifiedContactReference("adnetwork", "AB973934540244")
                    };

                    var contactsTask = client.GetAsync<Sitecore.XConnect.Contact>(references, new ContactExecutionOptions(new Sitecore.XConnect.ContactExpandOptions(PersonalInformation.DefaultFacetKey)
                    {
                        Interactions = new Sitecore.XConnect.RelatedInteractionsExpandOptions(LocaleInfo.DefaultFacetKey)
                        {
                            StartDateTime = DateTime.MinValue,
                            EndDateTime = DateTime.UtcNow.AddDays(-10),
                            Limit = 30
                        }
                    }));

                    var results = await contactsTask;

                    foreach (var result in results)
                    {
                        if (result.Exists)
                        {
                            // Do something
                            var contact = result.Entity;
                        }
                    }
                }
                catch (XdbExecutionException ex)
                {
                    // Manage exceptions
                }
            }
        }

        public async void Example()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    var references = new List<Sitecore.XConnect.IEntityReference<Sitecore.XConnect.Contact>>()

                    {
                        // Contact ID
                        new Sitecore.XConnect.ContactReference(new Guid("{A2814105-1F45-E611-52E6-34E6D7117DCB}")),
                        // Username
                        new Sitecore.XConnect.IdentifiedContactReference("twitter", "myrtlesitecore"),
                        // Ad network ID
                        new Sitecore.XConnect.IdentifiedContactReference("adnetwork", "AB973934540244")
                    };

                    var results = client.Get<Sitecore.XConnect.Contact>(references,  new ContactExecutionOptions(new Sitecore.XConnect.ContactExpandOptions(PersonalInformation.DefaultFacetKey)
                    {
                        Interactions = new Sitecore.XConnect.RelatedInteractionsExpandOptions(LocaleInfo.DefaultFacetKey)
                        {
                            StartDateTime = DateTime.MinValue,
                            EndDateTime = DateTime.UtcNow.AddDays(-10),
                            Limit = 30
                        }
                    }));

                    foreach (var result in results)
                    {
                        if (result.Exists)
                        {
                            // Do something
                            var contact = result.Entity;
                        }
                    }
                }
                catch (XdbExecutionException ex)
                {
                    // Manage exceptions
                }
            }
        }
    }
}

すべてのインタラクションを取得する

次の最小値と最大値を設定して、各連絡先と利用可能なすべてのインタラクションを返します。

var contactsTask = client.GetAsync<Contact>(new Sitecore.XConnect.ContactReference(new Guid("{A2814105-1F45-E611-52E6-34E6D7117DCB}")), new ContactExecutionOptions(new ContactExpandOptions() {
    Interactions = new RelatedInteractionsExpandOptions()
    {
        StartDateTime = DateTime.MinValue,
        EndDateTime = DateTime.MaxValue,
        Limit = int.MaxValue
    }
}));

インタラクションのフィルタリング

コンタクトのインタラクションのサブセット( WebVisitファセットとのインタラクションなど)のみを操作することができます。コンタクトのインタラクションをフィルタリングするには、次の2つの方法があります。

  • RelatedInteractionsExpandOptionsを使用して利用可能なすべてのインタラクションを返し、メモリ内のコレクションをフィルタリングします

  • すべてのインタラクションSearch、コンタクトIDでフィルタリング

次の例では、連絡先とその連絡先で使用可能なすべてのインタラクションが / .Get<Contact>を使用して返されます。GetAsyncメソッド。次に、インタラクションのコレクションは、WebVisitファセットと少なくとも1つのOutcomeを持つインタラクションのサブセットに絞り込まれます。

using Sitecore.XConnect.Collection.Model;
using Sitecore.XConnect;
using System;
using System.Collections.Generic;
using System.Linq;
using Sitecore.XConnect.Client;

namespace Documentation
{
    public class FilterInteractions
    {
        // Async example
        public async void ExampleAsync()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    var contactsTask = client.GetAsync<Contact>(new IdentifiedContactReference("twitter", "myrtlesitecore"), new ContactExecutionOptions(new ContactExpandOptions(PersonalInformation.DefaultFacetKey)
                    {
                        Interactions = new RelatedInteractionsExpandOptions(WebVisit.DefaultFacetKey)
                        {
                            StartDateTime = DateTime.MinValue,
                            Limit = int.MaxValue
                        }
                    }));

                    var contacts = await contactsTask;

                                        {
                    // All interactions
                    var interactions = contacts.Interactions;

                    // Interactions with WebVisit facet and at least one Outcome
                        var interactionsWithOutcomes = interactions.Where(x => x.WebVisit() != null && x.Events.OfType<Outcome>().Any());
                }
                catch (XdbExecutionException ex)
                {
                    // Manage exceptions
                }
            }
        }

        // Sync example
        public void Example()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    var contacts = client.Get<Contact>(new IdentifiedContactReference("twitter", "myrtlesitecore"), new ContactExecutionOptions(new Sitecore.XConnect.ContactExpandOptions(PersonalInformation.DefaultFacetKey)
                    {
                        Interactions = new RelatedInteractionsExpandOptions(WebVisit.DefaultFacetKey)
                        {
                            StartDateTime = DateTime.MinValue,
                            Limit = int.MaxValue
                        }
                    }));

                    
                    // All interactions
                        var interactions = contacts.Interactions;

                    // Interactions with WebVisit facet and outcome
                        var interactionsWithOutcomes = interactions.Where(x => x.WebVisit() != null && x.Events.OfType<Outcome>().Any());
                }
                catch (XdbExecutionException ex)
                {
                    // Manage exceptions
                }
            }
        }
    }
}

次の例では、インタラクション検索を使用して、少なくとも1つのOutcomeを持ち、特定の連絡先IDに一致するすべてのインタラクションを取得します。

using Sitecore.XConnect.Collection.Model;
using Sitecore.XConnect.Operations;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Linq;
using Sitecore.XConnect.Search;
using Sitecore.XConnect;
using Sitecore.XConnect.Client;

namespace Documentation
{
    public class SearchByContactID
    {
        public async void ExampleAsync()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    var contactID = Guid.Parse("ea991dce-1f9b-443c-84a5-f83b46cbc0f8");

                    // IMPORTANT: You cannot check facets for null; check a property of the facet instead, such as SiteName for WebVisit
                    var queryable = client.Interactions
                        .Where(x => x.Contact.Id == contactID
                        && x.Events.OfType<Outcome>().Any()
                        && x.WebVisit().SiteName != "")
                        .WithExpandOptions(new InteractionExpandOptions(WebVisit.DefaultFacetKey) { Contact = new RelatedContactExpandOptions(PersonalInformation.DefaultFacetKey) });

                    var enumerator = await queryable.GetBatchEnumerator(10);

                    while (await enumerator.MoveNext())
                    {
                        foreach (var item in enumerator.Current)
                        {
                            var listOfOutcomes = item.Events.OfType<Outcome>();
                            var webFacet = item.WebVisit();
                        }
                    }

                }
                catch (XdbExecutionException ex)
                {
                    // Handle exception
                }
            }
        }

        // Sync example
        public async void Example()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    var contactID = Guid.Parse("ea991dce-1f9b-443c-84a5-f83b46cbc0f8");

                    // IMPORTANT: You cannot check facets for null; check a property of the facet instead, such as SiteName for WebVisit
                    var queryable = client.Interactions
                        .Where(x => x.Contact.Id == contactID
                        && x.Events.OfType<Outcome>().Any()
                        && x.WebVisit().SiteName != "")
                        .WithExpandOptions(new InteractionExpandOptions(WebVisit.DefaultFacetKey) { Contact = new RelatedContactExpandOptions(PersonalInformation.DefaultFacetKey) });

                    var enumerator = queryable.GetBatchEnumeratorSync(10);

                    while (enumerator.MoveNext())
                    {
                        foreach (var item in enumerator.Current)
                        {
                            var listOfOutcomes = item.Events.OfType<Outcome>();
                            var webFacet = item.WebVisit();
                        }
                    }

                }
                catch (XdbExecutionException ex)
                {
                    // Handle exception
                }
            }
        }
    }
}
この記事を改善するための提案がある場合は、 お知らせください!