キャンペーン

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

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

キャンペーン定義は、Sitecore.Marketing.Definitions.Campaigns.CampaignDefinitionManagerクラスによって管理されます。

CampaignDefinitionManagerへのアクセス

CampaignDefinitionManagerは、Sitecore DIコンテナから入手できます。クラスのコンストラクタにDefinitionManagerBase<ICampaignActivityDefinition, CampaignActivityDefinitionRecord> 型のパラメータを含め、コンテナからクラスをプルして、コンテナがインスタンスを解決できるようにすることをお勧めします。

public MyClass(DefinitionManagerBase<ICampaignActivityDefinition, CampaignActivityDefinitionRecord> campaignDefinitionManager)
{
        ...
}

コンテナを使用してクラスを構築できない場合は、サービス ロケータを使用できます。このクラスは、Sitecore DIコンテナーでも使用できます。

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

ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<ICampaignActivityDefinition>();

キャンペーンの定義

キャンペーンは、 Sitecore.Marketing.Definitions.Campaigns.Model名前空間の型を使用して定義します。

using System;
using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;
using System.Globalization;
using Sitecore.Marketing.Definitions.Campaigns;

namespace Documentation
{
    public class DefineCampaign
    {
        public void Example()
        {
            Guid campaignActivityID = Guid.NewGuid(); // Campaign activity ID
            CultureInfo campaignActivityCulture = new CultureInfo("es"); // Campaign activity culture
            string campaignName = "Facebook Summer Campaign"; // Campaign activity name
            DateTime creationDate = DateTime.UtcNow; // Campaign activity creation date
            string createdBy = "sitecore\admin"; // Campaign activity creator

            CampaignActivityDefinition campaign = new CampaignActivityDefinition(campaignActivityID, "Campaign item name", campaignActivityCulture, campaignName, creationDate, createdBy);

            campaign.StartDate = DateTime.UtcNow;
            campaign.EndDate = DateTime.UtcNow.AddDays(20);
        }
    }
}
メモ

このAutomationStateEnrollmentListは、自動化状態の登録が変更されたため、後のリリースで削除されます。

キャンペーンの保存

キャンペーンを定義したら、定義マネージャーでSaveAsync() メソッドを呼び出して保存できます。

using System;
using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;
using System.Globalization;
using Sitecore.Marketing.Definitions.Campaigns;

namespace Documentation
{
    public class SaveCampaign
    {
        public void Example()
        {
            var definitionManager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<ICampaignActivityDefinition>();

            Guid campaignActivityID = Guid.NewGuid(); // Campaign activity ID
            CultureInfo campaignActivityCulture = new CultureInfo("es"); // Campaign activity culture
            string campaignName = "Facebook Summer Campaign"; // Campaign activity name
            DateTime creationDate = DateTime.UtcNow; // Campaign activity creation date
            string createdBy = "sitecore\admin"; // Campaign activity creator

            CampaignActivityDefinition campaign = new CampaignActivityDefinition(campaignActivityID, "Campaign item name", campaignActivityCulture, campaignName, creationDate, createdBy);

            campaign.StartDate = DateTime.UtcNow;
            campaign.EndDate = DateTime.UtcNow.AddDays(20);

            definitionManager.SaveAsync(campaign);
        }
    }
}

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

manager.SaveAsync(campaign, true);

キャンペーンのアクティブ化

キャンペーンは、Reference Data Serviceに "公開" されるなど、管理の外部で使用できるようになる前にアクティブ化する必要があります。

キャンペーンは、SaveAsync() メソッドのactivate(2番目)パラメータにtrueを渡すことで、保存されたときにアクティブ化できます。

manager.SaveAsync(campaign, true);

キャンペーンは、ActivateAsync() メソッドを使用して、saveを呼び出さずにアクティブ化することもできます。

manager.ActivateAsync(campaignId);

ActivateAsync()メソッドはキャンペーンのIDを受け取り、キャンペーン定義モデルは必要ありません。

キャンペーンの削除

キャンペーンを削除するには、マネージャーでDelete() メソッドを使用します。個々のカルチャを定義から削除することはできず、定義全体のみを削除します。メソッド呼び出しに提供されるカルチャは、null (既定値) またはCultureInfo.InvariantCultureである必要があります。

manager.Delete(campaignActivityID);

又は:

manager.Delete(campaignActivityID, CultureInfo.InvariantCulture);

キャンペーンの取得

1つのキャンペーンは、マネージャーのGet() メソッドのいずれかを使用して、そのIDで取得できます。

using System;
using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;
using System.Globalization;
using Sitecore.Marketing.Definitions.Campaigns;

namespace Documentation
{
    public class GetCampaign
    {
        public void Example()
        {
            var definitionManager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<ICampaignActivityDefinition>();

            Guid campaignActivityID = Guid.NewGuid(); // Campaign activity ID
            CultureInfo campaignActivityCulture = new CultureInfo("fr-fr"); // Campaign activity culture

            // Call Get() to get concrete campaign by ID and culture
            var campaignActivityDefinition = definitionManager.Get(campaignActivityID, campaignActivityCulture);
        }
    }
}

また、アクティブなバージョンが存在しない場合は、非アクティブなバージョンを取得することもできます。

var campaignActivityDefinition = manager.Get(campaignActivityID, campaignActivityCulture, true);

エイリアスによるキャンペーンの取得

キャンペーンを エイリアスで取得することもできます。

CultureInfo campaignActivityCulture = new CultureInfo("fr-fr"); // Campaign activity culture
var campaignActivityDefinitionByAlias = definitionManager.GetByAlias("My alias", campaignActivityCulture);

既存のキャンペーンを更新する

既存のキャンペーン定義を更新するには、IDでキャンペーンを取得し、キャンペーンを編集します

Guid campaignActivityID = Guid.NewGuid(); // Campaign activity ID
CultureInfo campaignActivityCulture = new CultureInfo("es"); // Campaign activity culture

var campaignActivityToUpdate = manager.Get(campaignActivityID, campaignActivityCulture);
campaignActivityToUpdate.Name = "Updated campaign name";
manager.SaveAsync(campaignActivityToUpdate, true); // Save and activate

すべてのキャンペーンの取得

GetAll() メソッドを使用して、マネージャーからすべてのキャンペーンを取得できます。定義が多数ある可能性があるため、このメソッドはページングをサポートします。戻り値は1ページの結果です。

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

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

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

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

IAutomationCampaignDefinition campaign = page1AllCampaigns.DataPage.ElementAt(0);

この結果には、定義の総数と現在のページ・インデックスおよびページ・サイズを公開するプロパティも含まれます。

long totalDefinitionCount = page1AllCampaigns.Total;
int pageNumber = page1AllCampaigns.PageNumber;
int pageSize = page1AllCampaigns.Count;
この記事を改善するための提案がある場合は、 お知らせください!