連絡先リスト

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<IContactListDefinition>();

連絡先リストの定義

連絡先リストは、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";
        }
    }
}
大事な

TypeOwnerを除くすべての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<IContactListDefinition> manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

                        await manager.SaveAsync(contactList);
                }
        }
}

オプションで、保存中にSaveAsync() メソッドの2番目のパラメーターにtrueを渡すことで、連絡先リストをアクティブ化することもできます。

manager.SaveAsync(contactList, true);

連絡先リストのアクティブ化

連絡先リストは、Experience Managerの外部で使用する前にアクティブ化する必要があります。連絡先リストは、SaveAsync()メソッドのactivate(2番目)パラメータにtrueを渡すことで、保存時にアクティブにすることができます。

manager.SaveAsync(contactList, true);

連絡先リストは、ActivateAsync() メソッドを使用して、saveを呼び出さずにアクティブ化することもできます。

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<IContactListDefinition> manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

                        manager.Delete(contactListId);
                }
        }
}

連絡先リストを取得する

1つの連絡先リストは、マネージャーの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<IContactListDefinition> manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

                        // 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<IContactListDefinition> manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

                        // 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<IContactListDefinition> manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IContactListDefinition>();

                        // 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<IContactListDefinition>> contactLists = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IContactListDefinition, string>());

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

                        // Include inactive versions
                        ResultSet<DefinitionResult<IContactListDefinition>> 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;
この記事を改善するための提案がある場合は、 お知らせください!