---
title: "交流者と連絡を取りましょう"
slug: "get-contact-with-interactions"
abstract: "さまざまな交流、あるいはすべての交流のための連絡先を用意しましょう。"
---
# 交流者と連絡を取りましょう

RelatedInteractionsExpandOptionsを使って、各接触で返すべき相互作用の範囲や相互作用の側面を指定します。以下の例では、過去10日間の相互作用が各接触と共に返されますが、最大30回までに制限されます。LocaleInfo面も存在すれば各相互作用ごとに返されます。

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

以下の表はRelatedInteractionsExpandOptionsクラスの使い方を示しています。

財産

概要

FacetKeys

読み取り専用特性 - 文字列の配列としてコンストラクタに渡され、各相互作用でどの面を返すかを指定します

StartDateTime

インタラクション開始日/時刻はこの値以上でなければなりません。最も早いインタラクションを取得するにはDateTime.MinValueを使います。

EndDateTime

インタラクション終了日時はこの値以下でなければなりません。DateTime.MaxValueを使って、最新のインタラクションを取得してください。

Limit

指定された日付間に戻すべき最大インタラクション数。

以下の例は、ContactExpandOptionsとRelatedInteractionsExpandOptionsを組み合わせて使う方法を示しています。連絡先は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 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 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 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 Sitecore.XConnect.ContactExpandOptions(PersonalInformation.DefaultFacetKey)
 {
 Interactions = new RelatedInteractionsExpandOptions(WebVisit.DefaultFacetKey)
 {
 StartDateTime = DateTime.MinValue,
 Limit = int.MaxValue
 }
 });

 var contacts = await contactsTask;

 foreach (var contact in contacts)
 {
 // All interactions
 var interactions = contact.Entity.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 Sitecore.XConnect.ContactExpandOptions(PersonalInformation.DefaultFacetKey)
 {
 Interactions = new RelatedInteractionsExpandOptions(WebVisit.DefaultFacetKey)
 {
 StartDateTime = DateTime.MinValue,
 Limit = int.MaxValue
 }
 });

 foreach (var contact in contacts)
 {
 // All interactions
 var interactions = contact.Entity.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
 }
 }
 }
 }
}