カスタム コンタクト ファセットを含めるように [コンタクトをインポートする] ウィザードを設定する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
リスト マネージャーでは、CSV ファイルからコンタクトをインポートするときに、インポートしたファイルのフィールドを次のデフォルトの Sitecore フィールドにマッピングできます。
-
識別子
-
識別子ソース
-
メール アドレス
-
名
-
姓
インポートされたファイル フィールドをマッピングするために追加の Sitecore フィールドが必要な場合は、[コンタクトをインポートする] ウィザードを拡張して次のものを含めることができます。
-
事前定義されたコンタクト ファセット – [コンタクトをインポートする] ウィザードに追加できる利用可能な事前定義されたコンタクト ファセットは次のとおりです。
-
PersonalInformation
-
EmailAddressList
-
AddressList
-
PhoneNumberList
-
ConsentInformation
-
ListSubscriptions
-
AutomationPlanExit
-
AutomationPlanEnrollmentCache
-
Avatar
-
-
新しいカスタム コンタクト ファセット - カスタム ファセットを作成し、次にモデル構成を更新して [コンタクトをインポートする] ウィザードに含めることができます。
事前定義されたファセットをマッピング フィールドとして追加する
リスト マネージャーは、事前定義されたコンタクト マッピング フィールドのリストを提供します。[コンタクトをインポートする] ウィザードを拡張するには、Core database でブランチを使用し、使用可能なマッピング フィールドの 1 つを追加します。
次の手順で、事前定義されたマッピング フィールドを追加します。
-
Core database のコンテンツ エディターで、[/サイトコア/クライアント/アプリケーション/リスト マネージャー/ダイアログ/インポート ウィザード ダイアログ/ページ設定/タブ コントロール パラメーター/マッピング/インポート モデル] フォルダーに移動します。
-
ImportModel
フォルダーを右クリックして [挿入] をクリックし、次に事前定義されたコンタクト マッピング フィールドの 1 つをクリックします。
新しいファセットをマッピング フィールドとして追加する
[コンタクトをインポートする] ウィザードを拡張して事前定義されたファセットを Sitecore マッピング フィールドとして表示するには、コンテンツ エディターで事前定義されたファセットの新しいインポート モデル フィールドを作成します。
次の手順で、新しいファセットをマッピング フィールドとして追加します。
-
Core database のコンテンツ エディターで、[/サイトコア/クライアント/アプリケーション/リスト マネージャー/ダイアログ/インポート ウィザード ダイアログ/ページ設定/タブ コントロール パラメーター/マッピング/インポート モデル] フォルダーに移動します。
-
新しいインポート モデル フィールド アイテムを [/サイトコア/クライアント/アプリケーション/リスト マネージャー/テンプレート/インポート モデル フィールド] に基づいて作成します。これを行うには、
ImportModel
フォルダで既存アイテムの 1 つを複製します。 -
新しいアイテムを変更するには、[フィールド名] フィールドに [コンタクトをインポートする] ウィザードで表示する Sitecore マッピング フィールドの名前を指定します。
-
[データ フィールド] に、ファセット マッパーがインポートされた値を格納する xConnect ファセット プロパティを認識するために使用するキーを指定します。たとえば、Personal_Suffix という名前を付け、後でこのキーを使用してパーソナル ファセットの [サフィックス] フィールドに入力します。
[必須フィールド] には、フィールド マッピングを [コンタクトをインポートする] ウィザードの [マッピング] タブで指定する必要があるかどうかを指定します。これは UI 検証のみです。マッピング フィールドを必須としてマークする場合は、マッピング フィールドを
Sitecore.ListManagement.config
ファイルのListManagement.Import.RequiredFields
設定で、必須フィールドのリストに追加する必要もあります。RequestResponse<!-- REQUIRED MAPPING FIELDS The list of the required mapping fields. If at least one of these fields is missing in a CSV file or is not mapped properly, the entire contact is skipped and not imported. Please note that the field names below should correspond to the Import Dialog mapping fields configured in the 'core' database (you may use predefined Branches to add new mapping fields):'/sitecore/client/Applications/List Manager/Dialogs/ImportWizardDialog/PageSettings/TabControl Parameters/Map/ImportModel'--> <setting name="ListManagement.Import.RequiredFields" value="Identifier|PreferredEmail_SmtpAddress|Personal_FirstName|Personal_LastName" />
インポート中、必須フィールドが空の場合は、インポート ファイルの行全体がスキップされます。リスト マネージャーのデフォルトの必須フィールドには [コンタクト ID]、[メール]、[名]、[姓] があります。
既存のインポート マッパーを拡張する
リスト マネージャーではさまざまなデフォルトのファセット マッパーが提供されますが、必要に応じてこれらのファセット マッパーを拡張できます。たとえば、EmailAddressList ファセットには Others というメールの高度な辞書が含まれています。
次のコード サンプルでは、既存の PreferredEmailMapper
クラスを装飾し、個人用と仕事用のメールを EmailAddressList.Others
辞書に追加することができます。
次の手順で、既存のインポート マッパーを拡張します。
-
ExtendedEmailFacetMapperSample
クラスを作成して実装し、既存のPreferredEmailFacetMapper
クラスを装飾します。RequestResponsepublic class ExtendedEmailFacetMapperSample : IFacetMapper { private readonly PreferredEmailFacetMapper mapper; // Decorate the existing PreferredEmailMapper public ExtendedEmailFacetMapperSample( PreferredEmailFacetMapper mapper) { this.mapper = mapper; } public MappingResult Map( string facetKey, Facet facet, ContactMappingInfo mappings, string[] data) { // Call the existing email mapper to map all the basic email fields var result = this.mapper.Map(facetKey, facet, mappings, data); var facetMappedResult = result as FacetMapped; if (facetMappedResult == null) { return result; } var partiallyMappedFacet = facetMappedResult.Facet as EmailAddressList; if (partiallyMappedFacet == null) { return result; } // Set Personal email var personalEmail = mappings.GetValue("Emails_Others_Personal", data); if (!string.IsNullOrWhiteSpace(personalEmail)) { partiallyMappedFacet.Others["Personal"] = new EmailAddress(personalEmail, false); } // Set Work email var workEmail = mappings.GetValue("Emails_Others_Work", data); if (!string.IsNullOrWhiteSpace(workEmail)) { partiallyMappedFacet.Others["Work"] = new EmailAddress(workEmail, false); } return result; } }
-
Sitecore.ListManagement.config
ファイルのsitecore/import/facetMapper
セクションでファセット マッパーを登録します。RequestResponse<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> <sitecore> <import> <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.CompositeFacetMapperCollection, Sitecore.ListManagement.XConnect.Web"> <param resolve="true" type="Sitecore.Abstractions.BaseLog, Sitecore.Kernel"/> <facetMappers hint="list:Add"> <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.ListSubscriptionMapper, Sitecore.ListManagement.XConnect.Web" /> <facetMapper type="MyProject.ExtendedEmailFacetMapperSample, MyProject"> <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.PreferredEmailFacetMapper, Sitecore.ListManagement.XConnect.Web" /> <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.PersonalInformationFacetMapper, Sitecore.ListManagement.XConnect.Web" /> </facetMappers> </facetMapper> </import> </configuration>
新しいインポート マッパーを作成する
既存のインポート マッパーを使用できない場合は、PreferredAddressFacetMapper
などのカスタム インポート マッパーを作成できます。
次の手順で、新しいインポート マッパーを作成します。
-
Sitecore.ListManagement.XConnect.Web.Import.IFacetMapper
を実装する 新しいPreferredAddressFacetMapper
を作成します。RequestResponsepublic class PreferredAddressFacetMapper : IFacetMapper { public PreferredAddressFacetMapper() : this(CollectionModel.FacetKeys.AddressList) { } public PreferredAddressFacetMapper(string facetName) { Assert.ArgumentNotNull(facetName, nameof(facetName)); this.FacetName = facetName; } public string FacetName { get; } public MappingResult Map( string facetKey, Facet source, ContactMappingInfo mappings, string[] data) { if (facetKey != this.FacetName) { return new NoMatch(); } var preferredAddress = new Address(); var addressLine1 = mappings.GetValue(nameof(preferredAddress.AddressLine1), data); var addressLine2 = mappings.GetValue(nameof(preferredAddress.AddressLine2), data); var addressLine3 = mappings.GetValue(nameof(preferredAddress.AddressLine3), data); var addressLine4 = mappings.GetValue(nameof(preferredAddress.AddressLine4), data); var city = mappings.GetValue(nameof(preferredAddress.City), data); var country = mappings.GetValue(nameof(preferredAddress.CountryCode), data); var postalCode = mappings.GetValue(nameof(preferredAddress.PostalCode), data); var stateProvince = mappings.GetValue(nameof(preferredAddress.StateOrProvince), data); if (!string.IsNullOrWhiteSpace(addressLine1)) { preferredAddress.AddressLine1 = addressLine1; } if (!string.IsNullOrWhiteSpace(addressLine2)) { preferredAddress.AddressLine2 = addressLine1; } if (!string.IsNullOrWhiteSpace(addressLine3)) { preferredAddress.AddressLine3 = addressLine1; } if (!string.IsNullOrWhiteSpace(addressLine4)) { preferredAddress.AddressLine4 = addressLine1; } if (!string.IsNullOrWhiteSpace(city)) { preferredAddress.City = city; } if (!string.IsNullOrWhiteSpace(country)) { preferredAddress.CountryCode = country; } if (!string.IsNullOrWhiteSpace(postalCode)) { preferredAddress.PostalCode = postalCode; } if (!string.IsNullOrWhiteSpace(stateProvince)) { preferredAddress.StateOrProvince = stateProvince; } var facet = source as AddressList ?? new AddressList(preferredAddress, "Preferred"); return new FacetMapped(facetKey, facet); } }
-
Sitecore.ListManagement.config
ファイルのsitecore/import/facetMapper
セクションで、マッパーを登録します。RequestResponse<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> <sitecore> <import> <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.CompositeFacetMapperCollection, Sitecore.ListManagement.XConnect.Web"> <param resolve="true" type="Sitecore.Abstractions.BaseLog, Sitecore.Kernel"/> <facetMappers hint="list:Add"> <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.ListSubscriptionMapper, Sitecore.ListManagement.XConnect.Web" /> <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.PreferredEmailFacetMapper, Sitecore.ListManagement.XConnect.Web" /> <facetMapper type="Sitecore.ListManagement.XConnect.Web.Import.PersonalInformationFacetMapper, Sitecore.ListManagement.XConnect.Web" /> <!-- New extended address mapper registration --> <facetMapper type="MyProject.PreferredAddressFacetMapper, MyProject" /> <!-- New extended address mapper registration --> </facetMappers> </facetMapper> </import> </configuration>
-
Sitecore.ListManagement.config
ファイルで、Addresses
というファセット名を追加してマッピングするファセットのリストを拡張します。RequestResponse<!-- FACETS TO MAP The list of contact facets retrieved from XConnect to map data from a CSV file. Only fields that belong to facets listed here are mapped. All other fields are skipped. --> <setting name="ListManagement.Import.FacetsToMap" value="Emails|Personal|Addresses" />
この例の場合、コンテンツ エディターの PreferredAddressFacetMapper アイテムには、[データ フィールド] セクションに AddressList
ファセットのプロパティの 1 つに関連するキー、たとえば City
や AddressLine1
、CountryCode
などが含まれている必要があります。