キャンペーン
このページの翻訳は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
キャンペーンの定義
キャンペーンは 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
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);
キャンペーンの開始
キャンペーンは、管理外で利用可能になる前に、例えばリファレンスデータサービスに「公開」される前に有効化されなければなりません。
キャンペーンは、SaveAsync() メソッドの有効化(2つ目の)パラメータにtrueを渡すことで保存時に有効化できます。
manager.SaveAsync(campaign, true);
キャンペーンは、ActivateAsync() の方法でセーブを呼ばずに有効化することも可能です。
manager.ActivateAsync(campaignId);
ActivateAsync()方法はキャンペーンのIDを取り、キャンペーン定義モデルを必要としません。
キャンペーンの削除
キャンペーンを削除するには、マネージャーのDelete() メソッドを使います。個々のカルチャーは定義から削除できず、定義全体のみ削除できます。メソッド呼び出しに提供されるカルチャーは、null(デフォルト値)またはCultureInfo.InvariantCultureのいずれかであるべきです。
manager.Delete(campaignActivityID);
または:
manager.Delete(campaignActivityID, CultureInfo.InvariantCulture);
キャンペーンの取得
単一のキャンペーンは、マネージャーの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
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
// Get page 2
ResultSet<DefinitionResult
// Include inactive versions
ResultSet<DefinitionResult
結果にアクセスするには、結果のDataPageプロパティを使いましょう。
IAutomationCampaignDefinition campaign = page1AllCampaigns.DataPage.ElementAt(0);
その結果には、定義の総数や現在のページインデックス、ページサイズを公開するプロパティも含まれています。
long totalDefinitionCount = page1AllCampaigns.Total; int pageNumber = page1AllCampaigns.PageNumber; int pageSize = page1AllCampaigns.Count;