ウォークスルー

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

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

このウォークスルーは「 xConnectコレクションモデルの拡張」シリーズ の第1部であり、連絡先とインタラクションの作成方法を説明しています。

このウォークスルーを完了する前に、xConnectやxDBを含むSitecore Experience Platformのフルインストールが必要です。

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

  • Sitecore.Documentationソリューションとコンソールアプリを作成する
  • Sitecore.DocumentationアプリとXConnectインスタンス間の連絡を確立してください
  • 既知の識別子を持つ連絡先を作成する
  • 単一のイベントでインタラクションを作成する

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

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

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

Sitecoreを作成しましょう。ドキュメントソリューションとコンソールアプリ

Sitecore.Documentationソリューションとコンソールアプリを作成するには:

  1. 管理者権限をVisual Studioして、.NETフレームワークプロジェクト用の新しいソリューションおよびコンソールアプリを作成し、Sitecore.Documentation:

    The Configure your new project dialogue box in Visual Studio.
  2. Solution Explorerで 「References 」を右クリックし、「 Add Reference」をクリックします。

  3. 参照管理者のウィンドウで「Browse」をクリックして、\bin\フォルダから以下の参照を追加してください:

    • Sitecore.Framework.Conditions.dll
    • Sitecore.XConnect.Core
    • Sitecore.XConnect.dll
    • Sitecore.XConnect.Client.dll
    • Sitecore.XConnect.Collection.Model.dll
    • Sitecore.XConnect.Search.dll
    • Sitecore.Xdb.Common.Web.dll
  4. Solution Explorerで 「References 」を右クリックし、「 Manage NuGet Packages」をクリックします。

  5. NuGetウィンドウで「ブラウズ」をクリックし、以下の参照を追加してください:

    • Microsoft.AspNet.WebApi.Client - バージョン
      .2.6
    • Microsoft.Extensions.Configuration.Abstractions - バージョン
      .1.1
    • System.Interactive.Async.Providers バージョン
      .1.1
    • Newtonsoft.Json - バージョン
      .0.2

Sitecoreと連絡を取る。ドキュメントアプリとXConnectインスタンス

Sitecore.DocumentationアプリとxConnectインスタンス間の連絡を確立するには:

  1. 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";

    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 { await cfg.InitializeAsync();

    // 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 { // This is where we add content in later code samples } catch (XdbExecutionException ex) { // Deal with exception } } } } }

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

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

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

    A terminal with END OF PROGRAM in the app output.

既知の識別子を持つ連絡先を作成する

既知の識別子を持つ連絡先を作成するには:

  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";

    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 { await cfg.InitializeAsync();

    // 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 { // Identifier for a 'known' contact var identifier = new ContactIdentifier { new ContactIdentifier( "twitter", "myrtlesitecore" + Guid.NewGuid().ToString("N"), ContactIdentifierType.Known ) };

    // Print out the identifier that is going to be used Console.WriteLine("Contact Identifier: " + identifier0.Identifier);

    // Create a new contact with the identifier Contact knownContact = new Contact(identifier);

    client.AddContact(knownContact);

    // Submit contact and interaction - a total of two operations await client.SubmitAsync();

    // Get the last batch that was executed var operations = client.LastBatch;

    // Loop through operations and check status foreach (var operation in operations) { Console.WriteLine( operation.OperationType

    • operation.Target.GetType().ToString()
    • " Operation: "
    • operation.Status ); }

    Console.ReadLine(); } catch (XdbExecutionException ex) { // Deal with exception } } } } }

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

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

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

    • 連絡先識別子。
    • 連絡先が追加されたということです。
    A terminal with the contact details in the app output.

単一のイベントでインタラクションを作成する

次のステップは、目標のような単一のイベントとの相互作用を作成することです。

!警告このコードサンプルはデータベースを汚染します。理由は以下の通りです:

  • すべてのやり取りにはチャネルGUIDが必要です。これらはSitecoreで定義しますが、xConnectはランダムなチャネルGUIDを渡すことができます。

  • すべてのイベントはイベントGUIDを必要とします。これらはSitecoreで定義しますが、xConnectはランダムなイベントGUIDを渡すことができます。

データベースをクリーンに保ちたい場合は、ここで作成されたインタラクションとイベントを手動で削除する必要があります。

例えば、単一のイベントとの相互作用を作成するには、目標を設けます:

  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";

    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 { await cfg.InitializeAsync();

    // 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 { var offlineGoal = Guid.Parse("ad8ab7fe-ab48-4ea9-a976-ae7a268ae2f0"); // "Watched demo" goal var channelId = Guid.Parse("110cbf07-6b1a-4743-a398-6749acfcd7aa"); // "Other event" channel

    // Identifier for a 'known' contact var identifier = new ContactIdentifier { new ContactIdentifier( "twitter", "myrtlesitecore" + Guid.NewGuid().ToString("N"), ContactIdentifierType.Known ) };

    // Print out the identifier that is going to be used Console.WriteLine("Identifier: " + identifier0.Identifier);

    // Create a new contact with the identifier Contact knownContact = new Contact(identifier);

    client.AddContact(knownContact);

    // Create a new interaction for that contact Interaction interaction = new Interaction(knownContact, InteractionInitiator.Brand, channelId, "");

    // Add events - all interactions must have at least one event var xConnectEvent = new Goal(offlineGoal, DateTime.UtcNow); interaction.Events.Add(xConnectEvent);

    // Add the contact and interaction client.AddInteraction(interaction);

    // Submit contact and interaction - a total of two operations await client.SubmitAsync();

    // Get the last batch that was executed var operations = client.LastBatch;

    // Loop through operations and check status foreach (var operation in operations) { Console.WriteLine( operation.OperationType

    • operation.Target.GetType().ToString()
    • " Operation: "
    • operation.Status ); }

    Console.ReadLine(); } catch (XdbExecutionException ex) { // Deal with exception }

    } } } }

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

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

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

    • 連絡先識別子。
    • 連絡先が追加されたということです。
    • イベントとのインタラクションが追加されたのです。
    A terminal with the contact and interaction event details in the app output.

次のウォークスルーで 、接触やインタラクションの要素の設定方法を学びましょう。

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