ウォークスルー
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このウォークスルーは「エクステンディング・ザ・xConnectコレクション」モデルウォークスルーシリーズの第3部です。このウォークスルーを完了するには、まずパート1と パート2をクリアする必要があります。
このウォークスルーでは、以下の方法を説明しています:
- 連絡先識別子から連絡先を取得する
- 連絡先のやり取りを取得
- 交流を得ましょう
!注Sitecore 9.1.0のSitecore.Xdb.Common.Web名前空間では:
Certificate**WebRequest**HandlerModifierOptionsCertificate**HttpClient**HandlerModifierOptionsになった。
Certificate**WebRequest**HandlerModifierCertificate**HttpClient**HandlerModifierになった。
連絡先識別子から連絡先を取得する
連絡先識別子から連絡先を取得するには:
-
Visual Studio、Solution ExplorerではProgram.csファイルをダブルクリックし、内容を以下のコードに置き換えてください。
using Sitecore.XConnect; using Sitecore.XConnect.Client; using Sitecore.XConnect.Client.WebApi; using Sitecore.XConnect.Collection.Model; using Sitecore.XConnect.Schema; using Sitecore.Xdb.Common.Web; using System; using System.Collections.Generic; using System.Threading.Tasks;
namespace Sitecore.Documentation { public class Program { // From
\App_Config\AppSettings.config const string CERTIFICATE_OPTIONS = "StoreName=My;StoreLocation=LocalMachine;FindType=FindByThumbprint;FindValue=???"; // From your installation const string XCONNECT_URL = "https://???XConnect.local";
// From the previous xConnect walkthrough const string CONTACT_IDENTIFIER = "myrtlesitecore???";
private static void Main(string args) { MainAsync(args).ConfigureAwait(false).GetAwaiter().GetResult(); System.Console.ForegroundColor = ConsoleColor.DarkGreen; System.Console.WriteLine(""); Console.WriteLine("END OF PROGRAM."); Console.ReadKey(); }
private static async Task MainAsync(string args) { CertificateHttpClientHandlerModifierOptions options = CertificateHttpClientHandlerModifierOptions.Parse(CERTIFICATE_OPTIONS);
var certificateModifier = new CertificateHttpClientHandlerModifier(options);
List
clientModifiers = new List (); var timeoutClientModifier = new TimeoutHttpClientModifier(new TimeSpan(0, 0, 20)); clientModifiers.Add(timeoutClientModifier); var collectionClient = new CollectionWebApiClient( new Uri(XCONNECT_URL + "/odata"), clientModifiers, new { certificateModifier } );
var searchClient = new SearchWebApiClient( new Uri(XCONNECT_URL + "/odata"), clientModifiers, new { certificateModifier } );
var configurationClient = new ConfigurationWebApiClient( new Uri(XCONNECT_URL + "/configuration"), clientModifiers, new { certificateModifier } );
var cfg = new XConnectClientConfiguration( new XdbRuntimeModel(CollectionModel.Model), collectionClient, searchClient, configurationClient );
try { cfg.Initialize();
// Print xConnect if configuration is valid var arr = new { @" ______ __ ", @" / \ | \ ", @" __ __ | $$$$$$\ ______ _______ _______ ______ _______ _| $$_ ", @"| \ / \| $$ \$$ / \ | \ | \ / \ / \| $$ \ ", @"\$$\/ $$| $$ | $$$$$$\| $$$$$$$\| $$$$$$$\| $$$$$$\| $$$$$$$ \$$$$$$ ", @" >$$ $$ | $$ __ | $$ | $$| $$ | $$| $$ | $$| $$ $$| $$ | $$ __ ", @" / $$$$\ | $$__/ \| $$__/ $$| $$ | $$| $$ | $$| $$$$$$$$| $$_____ | $$| \", @"| $$ \$$\ \$$ $$ \$$ $$| $$ | $$| $$ | $$ \$$ \ \$$ \ \$$ $$", @" \$$ \$$ \$$$$$$ \$$$$$$ \$$ \$$ \$$ \$$ \$$$$$$$ \$$$$$$$ \$$$$ " }; Console.WindowWidth = 160; foreach (string line in arr) Console.WriteLine(line);
} catch (XdbModelConflictException ce) { Console.WriteLine("ERROR:" + ce.Message); return; }
// Initialize a client using the validated configuration using (var client = new XConnectClient(cfg)) { try { // Get a known contact IdentifiedContactReference reference = new IdentifiedContactReference( "twitter", CONTACT_IDENTIFIER );
Contact existingContact = await client.GetAsync
( reference, new ContactExpandOptions(new string { PersonalInformation.DefaultFacetKey }) ); PersonalInformation existingContactFacet = existingContact.GetFacet
(PersonalInformation.DefaultFacetKey); Console.WriteLine("Contact ID: " + existingContact.Id.ToString()); Console.WriteLine("Contact Name: " + existingContactFacet.FirstName);
Console.ReadLine(); } catch (XdbExecutionException ex) { // Deal with exception } } } } }
-
CERTIFICATE_THUMBPRINT、XCONNECT_URL、CONTACT IDENTIFIER定数を編集してください。
-
Program.csファイルを保存してください。
-
F5を押してアプリを起動します。接続が確立されると、アプリはターミナルに次のように書き込みます:
- 連絡先ID。
- 連絡先の名前です。

!重要ファセットを取得するには、明示的にContactExpandOptionsの一部としてリクエストしなければなりません。 ContactExpandOptionsなしでコードを実行するとファセットはNULLになり、使用しようとすると例外エラーが発生します。
!注外部システムは通常、接触IDを保存するために使われないため、接触IDを受け入れる .Get
オーバーロードを使うことはまずありません。
連絡先のやり取りを取得
接触の相互作用を得るには、Interactionsプロパティ をContactExpandOptionsを設定する必要があります。
連絡先のやり取りを得るには:
-
Visual Studio、Solution ExplorerではProgram.csファイルをダブルクリックし、内容を以下のコードに置き換えてください。
using Sitecore.XConnect; using Sitecore.XConnect.Client; using Sitecore.XConnect.Client.WebApi; using Sitecore.XConnect.Collection.Model; using Sitecore.XConnect.Schema; using Sitecore.Xdb.Common.Web; using System; using System.Collections.Generic; using System.Threading.Tasks;
namespace Sitecore.Documentation { public class Program { // From
\App_Config\AppSettings.config const string CERTIFICATE_OPTIONS = "StoreName=My;StoreLocation=LocalMachine;FindType=FindByThumbprint;FindValue=???"; // From your installation const string XCONNECT_URL = "https://???XConnect.local";
// From the previous xConnect walkthrough const string CONTACT_IDENTIFIER = "myrtlesitecore???";
private static void Main(string args) { MainAsync(args).ConfigureAwait(false).GetAwaiter().GetResult(); System.Console.ForegroundColor = ConsoleColor.DarkGreen; System.Console.WriteLine(""); Console.WriteLine("END OF PROGRAM."); Console.ReadKey(); }
private static async Task MainAsync(string args) { CertificateHttpClientHandlerModifierOptions options = CertificateHttpClientHandlerModifierOptions.Parse(CERTIFICATE_OPTIONS);
var certificateModifier = new CertificateHttpClientHandlerModifier(options);
List
clientModifiers = new List (); var timeoutClientModifier = new TimeoutHttpClientModifier(new TimeSpan(0, 0, 20)); clientModifiers.Add(timeoutClientModifier); var collectionClient = new CollectionWebApiClient( new Uri(XCONNECT_URL + "/odata"), clientModifiers, new { certificateModifier } );
var searchClient = new SearchWebApiClient( new Uri(XCONNECT_URL + "/odata"), clientModifiers, new { certificateModifier } );
var configurationClient = new ConfigurationWebApiClient( new Uri(XCONNECT_URL + "/configuration"), clientModifiers, new { certificateModifier } );
var cfg = new XConnectClientConfiguration( new XdbRuntimeModel(CollectionModel.Model), collectionClient, searchClient, configurationClient );
try { cfg.Initialize();
// Print xConnect if configuration is valid var arr = new { @" ______ __ ", @" / \ | \ ", @" __ __ | $$$$$$\ ______ _______ _______ ______ _______ _| $$_ ", @"| \ / \| $$ \$$ / \ | \ | \ / \ / \| $$ \ ", @"\$$\/ $$| $$ | $$$$$$\| $$$$$$$\| $$$$$$$\| $$$$$$\| $$$$$$$ \$$$$$$ ", @" >$$ $$ | $$ __ | $$ | $$| $$ | $$| $$ | $$| $$ $$| $$ | $$ __ ", @" / $$$$\ | $$__/ \| $$__/ $$| $$ | $$| $$ | $$| $$$$$$$$| $$_____ | $$| \", @"| $$ \$$\ \$$ $$ \$$ $$| $$ | $$| $$ | $$ \$$ \ \$$ \ \$$ $$", @" \$$ \$$ \$$$$$$ \$$$$$$ \$$ \$$ \$$ \$$ \$$$$$$$ \$$$$$$$ \$$$$ " }; Console.WindowWidth = 160; foreach (string line in arr) Console.WriteLine(line);
} catch (XdbModelConflictException ce) { Console.WriteLine("ERROR:" + ce.Message); return; }
// Initialize a client using the validated configuration using (var client = new XConnectClient(cfg)) { try { // Get a known contact IdentifiedContactReference reference = new IdentifiedContactReference( "twitter", CONTACT_IDENTIFIER );
Contact existingContact = await client.GetAsync
( reference, new ContactExpandOptions(new string { PersonalInformation.DefaultFacetKey }) { Interactions = new RelatedInteractionsExpandOptions(IpInfo.DefaultFacetKey) { StartDateTime = DateTime.MinValue, EndDateTime = DateTime.MaxValue } } ); if (existingContact != null) { PersonalInformation existingContactFacet = existingContact.GetFacet
(PersonalInformation.DefaultFacetKey); Console.WriteLine("Contact ID: " + existingContact.Id.ToString()); Console.WriteLine("Contact Name: " + existingContactFacet.FirstName);
var interactions = existingContact.Interactions; var i = 0;
Console.WriteLine("Interaction count: " + interactions.Count); Console.WriteLine("");
// Cycle through all interactions foreach (var interaction in interactions) { i++; var ipInfo = interaction.GetFacet
(IpInfo.DefaultFacetKey); Console.WriteLine("Interaction #" + i); if (ipInfo != null) { // For each interaction, print out the business name // associated with that interaction's IpInfo Console.WriteLine("Interaction business name: " + ipInfo.BusinessName); } }
Console.ReadLine(); }
Console.ReadLine(); } catch (XdbExecutionException ex) { // Deal with exception } } } } }
-
CERTIFICATE_THUMBPRINT、XCONNECT_URL、CONTACT IDENTIFIER定数を編集してください。
-
Program.csファイルを保存してください。
-
F5を押してアプリを起動します。接続が確立されると、アプリはターミナルに次のように書き込みます:
- 連絡先ID。
- 連絡先の名前です。
- 交流の回数。
- 各やり取りのビジネス名。

!ヒント
StartDateTimeとEndDateTimeのプロパティを調整して、これら2点間の相互作用だけを取得することができます。
Limitプロパティを、見たい相互作用数(最初の相互作用から数えて)に設定できます。
交流を得ましょう
やり取りを得るには、連絡先IDとやり取りIDが必要です。また、関連する連絡先や指定した連絡先の側面を取得できるInteractionExpandOptionsも渡せます。
インタラクションを得るには、以下のコードを使用します:
var contactId = Guid.NewGuid(); var interactionId = Guid.NewGuid();
InteractionReference interactionReference = new InteractionReference(contactId, interactionId);
Interaction interaction = client.Get
次のウォークスルーで 連絡先ややり取りの検索方法を学びましょう。