連絡先リスト

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

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

連絡先リストの定義はSitecore.Marketing.Definitions.ContactLists.ContactListDefinitionManagerクラスによって管理されます。

ContactListDefinitionManagerへのアクセス

ContactListDefinitionManagerはSitecore DIコンテナから利用可能です。クラスのコンストラクタに型DefinitionManagerBase<IContactListDefinition, ContactListDefinitionRecord>のパラメータを含め、コンテナからクラスを引き出すことで、コンテナがインスタンスを解決するのが望ましいです。

public MyClass(DefinitionManagerBase<IContactListDefinition, ContactListDefinitionRecord> contactListDefinitionManager) { ... }

コンテナを使ってクラスを構築できない場合は、サービスロケーターを使うことができます。このクラスはSitecore DIコンテナでも利用可能です:

using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;

ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager();

連絡先リストの定義

連絡先リストはSitecore.Marketing.Definitions.ContactLists名前空間のタイプを用いて定義されます。

using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks;

namespace Documentation { public class AddContactList { public void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID CultureInfo contactListCulture = new CultureInfo("es"); // Contact list culture string contactListName = "Newly created contact list"; // Contact list name DateTime creationDate = DateTime.UtcNow; // Contact list creation date string createdBy = "sitecore\admin"; // Contact list creator

ContactListDefinition contactList = new ContactListDefinition(contactListId, "Contact list item name", contactListCulture, contactListName, creationDate, createdBy);

contactList.Owner = "sitecore\\maw"; contactList.Type = "Folder"; } } }

!重要TypeとOwnerを除くすべてのContactListDefinitionプロパティは旧式化されていますが削除されていません。これはList Managerなどのコンポーネントの移行をサポートするためです。一部のプロパティは後のリリースで削除または移動される可能性があることに注意してください。

連絡先リストの保存

連絡先リストを定義したら、定義マネージャーのSaveAsync() メソッドを呼び出して保存できます。

using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;

namespace Documentation { public class SaveContactList { public async void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID CultureInfo contactListCulture = new CultureInfo("es"); // Contact list culture string contactListName = "Newly created contactList"; // Contact list name DateTime creationDate = DateTime.UtcNow; // Contact list creation date string createdBy = "sitecore\admin"; // Contact list creator

ContactListDefinition contactList = new ContactListDefinition(contactListId, "Contact list item name", contactListCulture, contactListName, creationDate, createdBy);

contactList.Owner = "sitecore\\maw"; contactList.Type = "Folder";

IDefinitionManager manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager();

await manager.SaveAsync(contactList); } } }

また、セーブ中にtrueSaveAsync()メソッドの2つ目のパラメータに渡すことで連絡先リストを有効化することも可能です。

manager.SaveAsync(contactList, true);

連絡先リストの有効化

連絡先リストはExperience Manager外で使用可能になる前に有効化しなければなりません。連絡先リストは保存時にSaveAsync()メソッドのactivate(2つ目の)パラメータにtrueを渡すことで有効化できます。

manager.SaveAsync(contactList, true);

連絡先リストは、ActivateAsync() メソッドを使ってセーブを呼ばずに有効化することも可能です。

manager.ActivateAsync(contactListId);

ActivateAsync()方法は連絡先リストのIDを取り、連絡先リスト定義モデルを必要としません。

連絡先リストの削除

連絡先リストを削除するには、マネージャーのDelete() メソッドを使います。個々の文化は定義から削除できず、定義全体のみ削除できます。メソッド呼び出しに提供される文化は、null(デフォルト値)またはCultureInfo.InvariantCultureであるべきです。

using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;

namespace Documentation { public class SaveContactList { public async void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID

IDefinitionManager manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager();

manager.Delete(contactListId); } } }

連絡先リストを作成してください

単一の連絡先リストは、マネージャーのGet() 方法のいずれかを用いてIDで取得できます。

using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;

namespace Documentation { public class GetContactList { public async void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID

IDefinitionManager manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager();

// Get 'en' contact list, including inactive versions manager.Get(contactListId, new CultureInfo("en"), true); } } }

別名で連絡先リストを取得する

また、別名から連絡先リストを取得することもできます:

CultureInfo contactListCulture = new CultureInfo("fr-fr"); var contactListDefinitionByAlias = definitionManager.GetByAlias("My alias", contactListCulture);

既存の連絡先リストの更新

既存の連絡先リスト定義を更新するには、IDで連絡先リストを取得し、連絡先リストのプロパティを編集し、保存/有効化して使用してください:

using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;

namespace Documentation { public class UpdateContactList { public async void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID

IDefinitionManager manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager();

// Get 'en' contact list, including inactive versions var contactList = manager.Get(contactListId, new CultureInfo("en"), true);

contactList.Owner = "sitecore\\newowner"; contactList.Name = "New name";

manager.SaveAsync(contactList, true); } } }

すべての連絡先リストの取得

.GetAll()メソッドはマネージャーからすべての連絡先リストを取得するために使用できます。定義が多数存在する場合があるため、この方法はページングをサポートしています。返される値は結果の1ページ分です。

using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Sitecore.Marketing.Definitions; using Sitecore.Marketing.Core;

namespace Documentation { public class GetAllContactList { public async void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID

IDefinitionManager manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager();

// Get 'en' contact list, including inactive versions var contactList = manager.Get(contactListId, new CultureInfo("en"), true);

// Get All with defaults which will be first page, page size 20, latest active versions only ResultSet<DefinitionResult> contactLists = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IContactListDefinition, string>());

// Get page 2 ResultSet<DefinitionResult> page2contactLists = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IContactListDefinition, string>(pageNumber: 2));

// Include inactive versions ResultSet<DefinitionResult> page1contactLists = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IContactListDefinition, string>(), true); } } }

結果にアクセスするには、結果のDataPageプロパティを使いましょう。

IContactListDefinition contactList = page1contactLists.DataPage.ElementAt(0);

その結果には、定義の総数や現在のページインデックス、ページサイズを公開するプロパティも含まれています。

long totalDefinitionCount = contactLists.Total; int pageNumber = page1contactLists.PageNumber; int pageSize = contactLists.Count;

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