ウォークスルー

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

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

このウォークスルーは「エクステンディング・ザ・xConnectコレクション」モデルウォークスルーシリーズの第3部です。このウォークスルーを完了するには、まずパート1パート2をクリアする必要があります。

このウォークスルーでは、以下の方法を説明しています:

  • 連絡先識別子から連絡先を取得する
  • 連絡先のやり取りを取得
  • 交流を得ましょう

!注Sitecore 9.1.0のSitecore.Xdb.Common.Web名前空間では:

  • Certificate**WebRequest**HandlerModifierOptionsCertificate**HttpClient**HandlerModifierOptionsになった。

  • Certificate**WebRequest**HandlerModifierCertificate**HttpClient**HandlerModifierになった。

連絡先識別子から連絡先を取得する

連絡先識別子から連絡先を取得するには:

  1. 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 } } } } }

  2. CERTIFICATE_THUMBPRINT、XCONNECT_URL、CONTACT IDENTIFIER定数を編集してください。

  3. Program.csファイルを保存してください。

  4. F5を押してアプリを起動します。接続が確立されると、アプリはターミナルに次のように書き込みます:

    • 連絡先ID。
    • 連絡先の名前です。
    A terminal with the contact details in the app output.

!重要ファセットを取得するには、明示的にContactExpandOptionsの一部としてリクエストしなければなりません。 ContactExpandOptionsなしでコードを実行するとファセットはNULLになり、使用しようとすると例外エラーが発生します。

!注外部システムは通常、接触IDを保存するために使われないため、接触IDを受け入れる .Get オーバーロードを使うことはまずありません。

連絡先のやり取りを取得

接触の相互作用を得るには、Interactionsプロパティ をContactExpandOptionsを設定する必要があります。

連絡先のやり取りを得るには:

  1. 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 } } } } }

  2. CERTIFICATE_THUMBPRINT、XCONNECT_URL、CONTACT IDENTIFIER定数を編集してください。

  3. Program.csファイルを保存してください。

  4. F5を押してアプリを起動します。接続が確立されると、アプリはターミナルに次のように書き込みます:

    • 連絡先ID。
    • 連絡先の名前です。
    • 交流の回数。
    • 各やり取りのビジネス名。
    A terminal with the contact and interaction details in the app output.

!ヒント

  • 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( interactionReference, new InteractionExpandOptions(new string { IpInfo.DefaultFacetKey }) { Contact = new RelatedContactExpandOptions(new string { PersonalInformation.DefaultFacetKey }) } );

次のウォークスルーで 連絡先ややり取りの検索方法を学びましょう。

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