1. ファセット

コアコレクションモデルのファセットを活用してください

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

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

xConnectは複数の組み込みファセットを定義しています。これらのファセットはSitecore.XConnect.Collection.Model名前空間に位置しています。

コア収集モデルを参照

以下の例は、自分のモデル内でSitecore.XConnect.Collection.Model.CollectionModel.Modelを参照する方法を示しています。

xdbModelBuilder modelBuilder = new XdbModelBuilder("ModelName", new XdbModelVersion(0,1)); modelBuilder.ReferenceModel(Sitecore.XConnect.Collection.Model.CollectionModel.Model);

コアコレクションモデルの側面を用いる

コアコレクションモデル内でファセットを扱うには、示されたデフォルトのファセットキーを使用します。

var avatarFacet = contact.GetFacet(Avatar.DefaultFacetKey);

すべての組み込みファセットにはデフォルトのファセットキーがあり、それはDefaultFacetKeyプロパティで表現されます。例えば、PersonalInformation.DefaultFacetKey。

接触面

PersonalInformation(PersonalInformation)

PersonalInformationの側面には必須のプロパティはありません。

PersonalInformation personal = new PersonalInformation();

personal.Birthdate = new DateTime(1901, 01, 20, 0, 0, 0, DateTimeKind.Utc); personal.JobTitle = "xDB Enthusiast"; personal.LastName = "McSitecore"; personal.MiddleName = ""; personal.FirstName = "Myrtle"; personal.Gender = "Female"; personal.PreferredLanguage = "English"; personal.Suffix = "the Magnificent"; personal.Title = "Miss"; personal.Nickname = "Myrtle the Cool";

client.SetFacet(new FacetReference(contact, PersonalInformation.DefaultFacetKey), personal);

クライアント側で .SetPersonal() 拡張機能も使えます:

client.SetPersonal(contact, personal);

メールアドレスリスト

var preferredEmail = new EmailAddress("[email protected]", true); var preferredKey = "Work";

var emailFacet = new EmailAddressList(preferredEmail, preferredKey) { Others = new Dictionary<string, EmailAddress>() { { "Spam", new EmailAddress("[email protected]", false) } }, };

client.SetFacet(new FacetReference(contact, EmailAddressList.DefaultFacetKey), emailFacet);

!重要希望するメールアドレスは .Othersリストに含まれていません。

クライアント側で .SetEmails() 拡張機能も使えます:

client.SetEmails(contact, emailFacet);

アドレスリスト

// Preferred address Address preferredAddress = new Address() { AddressLine1 = "Slartibartfast Mansion", AddressLine2 = "42", AddressLine3 = "Douglas Road", AddressLine4 = "Adams Common", City = "Sqornshellous", CountryCode = "UK", GeoCoordinate = new GeoCoordinate(51.507351f, -0.127758f), PostalCode = "AB1 2CD", StateOrProvince = "Dragonville" };

AddressList addressList = new AddressList(preferredAddress, "Home");

Address workAddress = new Address() { AddressLine1 = "44 Work Street", City = "Work City", CountryCode = "DK" };

addressList.Others.Add("Work", workAddress);

!重要希望住所は .Othersに記載されていません。

クライアント側で .SetAddresses() 拡張機能も使えます:

client.SetAddresses(contact, addressList);

電話番号リスト

var countryCode = "44"; var number = "(555) 555-5555"

PhoneNumber mainNumber = new PhoneNumber(countryCode, number) { Extension = "5", AreaCode = "917" };

PhoneNumberList numbers = new PhoneNumberList(mainNumber, "Home");

PhoneNumber mobileNumber = new PhoneNumber() { CountryCode = "44", Number = "07912345678" };

numbers.Others.Add("Mobile", mobileNumber);

!重要希望電話番号はOthersリストに含まれていません。

クライアント側で .SetPhoneNumbers() 拡張機能も使えます:

client.SetPhoneNumbers(contact, numbers);

同意情報

!注ConsentInformationの側面はSitecore 10.0で変更されました。

以下の例は、ConsentInformationファセットクラスのインスタンスを埋め込み、辞書に2つの同意項目を追加する方法を示しています。1つはデフォルトサイト用(website)用、もう1つはカスタムサイト用(subsite)。

var consentInformation = new ConsentInformation();

consentInformation.Consents.Add("website", new ConsentItem { ConsentDateTime = DateTime.UtcNow, ConsentValue = 1 // Consent given });

consentInformation.Consents.Add("subsite", new ConsentItem { ConsentDateTime = DateTime.UtcNow, ConsentValue = 0 // Consent not given });

consentInformation.Consents"website".ConsentValue = 0; // Update consent consentInformation.Consents"website".ConsentDateTime = DateTime.UtcNow; // Update consent time

EXM doNotMarketおよびconsentRevoked値を読み取って変更するための拡張メソッドを提供しています:

var doNotMarket = consentInformation.IsDoNotMarket(); var consentRevoked = consentInformation.IsConsentRevoked();

クライアント側で .SetConsentInformation() 拡張機能も使えます:

client.SetConsentInformation(contact, consent);

リスト購読

ListSubscriptions subscriptions = new ListSubscriptions();

var listId = Guid.NewGuid(); /* Replace with real list ID */ var isActive = true; var added = DateTime.UtcNow;

ContactListSubscription subscription = new ContactListSubscription(added, isActive, listId);

subscriptions.Subscriptions.Add(subscription);

クライアントの .SetListSubscriptions() 拡張機能を使って、次のファセットを設定できます:

client.SetListSubscriptions(contact, subscriptions);

連絡先リストの定義を取得する方法

各ContactListSubscriptionはリストIDを保存します。リストの詳細(リスト名など)にアクセスしたい場合は、Contact List Definition Manager (マーケティングオペレーションAPIの一部)をご利用ください。

AutomationPlanEnrollmentCache

AutomationPlanEnrollmentCacheには、連絡先の現在の自動化プラン登録状況と、登録されているアクティビティが含まれます。このファセットは、新しいプランやアクティビティに登録される際に自動化エンジンによって設定されます。

!重要このファセットは手動で設定しないでください。マーケティング オートメーション運用APIによって更新されます。

AutomationPlanEnrollmentCache enrollmentCache = new AutomationPlanEnrollmentCache();

foreach (var enrollment in enrollmentCache.ActivityEnrollments) { Guid activityID = enrollment.ActivityId; Guid planID = enrollment.AutomationPlanDefinitionId; DateTime entryDate = enrollment.ActivityEntryDate; // Entry date for activity string contextKey = enrollment.ContextKey; }

この側面を復元するには:

var facet = contact.GetFacet(AutomationPlanEnrollmentCache.DefaultFacetKey);

計画と活動の定義を取得しましょう

各AutomationPlanEnrollmentはアクティビティIDとプランIDを保存します。プランやアクティビティの詳細(名前など)にアクセスしたい場合は、自動化プラン定義マネージャー(マーケティングオペレーションAPIの一部)をご利用ください。

アバター

var pictureByteArray = new byte { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 }; var mimeType = "image/jpeg";

Avatar avatar = new Avatar(pictureByteArray, mimeType);

この側面を復元するには:

var facet = contact.GetFacet(Avatar.DefaultFacetKey);

クライアント側で .SetAvatar() 拡張機能も使えます:

client.SetAvatar(contact, avatar);

計算された接触面

以下の 計算された接触面は デフォルトで利用可能です:

!重要計算されたファセットの値は決して設定すべきではありません。これらはxConnectにやり取りが提出されるたびにサービスプラグインによって設定されます。

相互作用の側面

UserAgentInfo

UserAGentInfo userAgentInfo = new UserAgentInfo();

userAgentInfo.CanSupportTouchScreen = true; userAgentInfo.DeviceType = "Mobile"; userAgentInfo.DeviceVendor = "HTC" userAgentInfo.DeviceVendorHardwareModel = "HTC Desire"

IpInfo

var ipAddress = "8, 8, 8, 8";

IpInfo ipInfo = new IpInfo(ipAddress);

ipInfo.Isp = "Super Duper Internet"; ipInfo.Latitude = 55.673977; ipInfo.Longitude = 12.568730; ipInfo.MetroCode = "408"; ipInfo.AreaCode = "205"; ipInfo.BusinessName = "Bizniz"; ipInfo.City = "Super City"; ipInfo.Country = "Narnia"; ipInfo.PostalCode = "12A 24B"; ipInfo.Region = "Icy Plains"; ipInfo.Url = "host.local"; ipInfo.Dns = "dnsvalue";

この側面を復元するには:

var facet = interaction.GetFacetIpInfo.DefaultFacetKey);

クライアント側で .SetIpInfo() 拡張機能も使えます:

client.SetIpInfo(interaction, ipInfo);

プロフィールスコア

ProfileScore profileScore = new ProfileScore() { MatchedPatternId = Guid.NewGuid(), // Guid of matched profile ProfileDefinitionId = Guid.NewGuid(), // Guid of profile Score = 1.9f, ScoreCount = 3, Values = new Dictionary<Guid, float>() { { Guid.NewGuid(), 1.2f }, { Guid.NewGuid(), 1.2f } } };

ProfileScores profiles = new ProfileScores();

profiles.Scores.Add(Guid.NewGuid(), profileScore);

// NOTE: The Scores dictionary key should be the profile definition ID as a Guid

ウェブ訪問

WebVisitファセットはウェブサイト上で発生したやり取りに関する情報を保存します。Sitecore文脈では、このファセットはセッション終了時にトラッカーによって埋め込まれます。以下の例は、WebVisitファセットを設定し、複数のPageViewEventイベントを追加することでウェブ訪問を模倣する方法を示しています。

using Sitecore.XConnect; using Sitecore.XConnect.Collection.Model; using System;

namespace Documentation { public class SampleWebVisit { public async void Example() { using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { // Create a new contact and set some facets var contact = new Contact();

var personalInfoFacet = new PersonalInformation() { FirstName = "Myrtle", LastName = "McSitecore" };

client.SetPersonal(contact, personalInfoFacet);

client.AddContact(contact);

// Create a new interaction for the contact Guid channelId = Guid.NewGuid(); string userAgent = "Sample User Agent"; Interaction webInteraction = new Interaction(contact, InteractionInitiator.Brand, channelId, userAgent);

// Create a new web visit facet model var webVisitFacet = new WebVisit();

// Populate data about the web visit webVisitFacet.Browser = new BrowserData() { BrowserMajorName = "Chrome", BrowserMinorName = "Desktop", BrowserVersion = "22.0" }; webVisitFacet.Language = "en"; webVisitFacet.OperatingSystem = new OperatingSystemData() { Name = "Windows", MajorVersion = "10", MinorVersion = "4" }; webVisitFacet.Referrer = "www.google.com"; webVisitFacet.Screen = new ScreenData() { ScreenHeight = 1080, ScreenWidth = 685 }; webVisitFacet.SearchKeywords = "sitecore"; webVisitFacet.SiteName = "website";

var itemId = Guid.NewGuid(); var itemVersion = 5;

// First page view pageView = new PageViewEvent(new DateTime(2016, 10, 10, 13, 20, 22).ToUniversalTime(), itemId, itemVersion, "en");

pageView.ItemLanguage = "en"; pageView.Duration = new TimeSpan(3000);

webInteraction.Events.Add(pageView);

var secondItemId = Guid.NewGuid(); var secondItemVersion = 2;

// Second page view PageViewEvent pageView2 = new PageViewEvent(new DateTime(2016, 10, 10, 13, 21, 22).ToUniversalTime(), secondItemId, secondItemVersion, "en");

pageView.ItemLanguage = "en"; pageView.Duration = new TimeSpan(3200);

webInteraction.Events.Add(pageView2);

// First goal, associated with second page view Goal goal1 = new Goal(Guid.NewGuid(), new DateTime(2016, 10, 10, 13, 22, 22).ToUniversalTime());

goal1.ParentEventId = pageView2.Id;

webInteraction.Events.Add(goal1);

var thirdItemId = Guid.NewGuid(); var thirdItemVersion = 2;

// Third page view PageViewEvent pageView3 = new PageViewEvent(new DateTime(2016, 10, 10, 13, 22, 22).ToUniversalTime(), thirdItemId, thirdItemVersion, "en");

pageView.ItemLanguage = "en"; pageView.Duration = new TimeSpan(1200);

webInteraction.Events.Add(pageView3);

// Set web visit facet on interaction client.SetWebVisit(webInteraction, webVisitFacet);

// Add interaction client.AddInteraction(webInteraction);

// Submit contact and interaction await client.SubmitAsync(); // Synchronous version - client.SubmitAsync().GetAwaiter().GetResult(); } } } }

ロケインフォ

LocaleInfo localeInfo = new LocaleInfo();

localeInfo.TimeZoneOffset = new TimeSpan(200); localeInfo.GeoCoordinate = new GeoCoordinate(1.11111f, 2.22222f);

クライアント側で .SetLocaleInfo() 拡張機能も使えます:

client.SetLocaleInfo(interaction, localeInfo);

ファセット取得/セット拡張メソッド

クラスにusingSitecore.XConnect.Collection.Modelを追加して、連絡先、インタラクション、xConnectクライアント向けの拡張メソッドにアクセスでき、組み込みのファセットの取得や設定を容易にします。例えば、myContact.Personal() は以下のメソッドを呼び出します:

public static PersonalInformation Personal(this Contact c) { return c.GetFacet(PersonalInformation.DefaultFacetKey); }

同様に、client.SetAddresses(myContactObject,myFacetObject) は以下の方法を呼びます。

public static SetFacetOperation SetAddresses(this XdbContext context, IEntityReference contact, AddressList facet) { return context.SetFacet(new FacetReference(contact, PersonalInformation.DefaultFacetKey), facet); }

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