マーケティング定義をプログラムで管理する

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

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

Marketing Operations API定義マネージャーを使用して、キャンペーン、ゴール、結果、ファネル、アセットなどのマーケティング定義データを管理できます。

このトピックには、コード サンプルが含まれており、次の方法について説明します。

Visual Studioの準備

マーケティング定義をプログラムで管理するには、Microsoft Visual Studioプロジェクトで次の操作を行います。

  1. 次のプロジェクト参照を追加します。

    • Sitecore.Kernel

    • Sitecore.Marketing

    • Sitecore.Marketing.Core

  2. 次の名前空間を追加します。

    • using System.Globalization;

    • using Sitecore.Marketing.Definitions;

    • using Sitecore.Marketing.Definitions.Campaigns;

    • using Sitecore.Data;

    • using Sitecore.Marketing.Core;

マーケティング定義の取得

SitecoreクライアントUIに直接アクセスできないカスタム アプリケーションを作成している場合は、Marketing Operations APIを使用して、プログラムでマーケティング定義データを取得できます。たとえば、エクスペリエンス プロファイル (xFile) やエクスペリエンス分析レポートなどのSitecoreアプリケーションをカスタマイズする場合や、モバイル アプリケーションを作成する場合などです。デフォルトでは、xFileは最近トリガーされたキャンペーンに関する一部の基本情報のみを表示し、Marketing Operations APIを使用してより多くのデータを取得できます。

  • マーケティング定義アイテム (キャンペーン定義アイテムの名前、説明、分類分類など) を取得するには、次のコード サンプルを適応させます。

            // Get a campaign
            public void GetCampaignActivityExample(ID campaignActivityId, CultureInfo 
            campaignActivityCulture)
            {
                // Retrieve the definition manager associated with the ICampaignActivityDefinition
                var manager = GetDefinitionManager();
                // Call Get() to get concrete campaign by ID and culture
                var campaignActivityDefinition = manager.Get(campaignActivityId, 
                campaignActivityCulture);
                var name = campaignActivityDefinition.Name;
                var description = campaignActivityDefinition.Description;
                var classification = campaignActivityDefinition.Classifications;
                var startDate = campaignActivityDefinition.StartDate;
                var endDate = campaignActivityDefinition.EndDate;
                var lastModifiedDate = campaignActivityDefinition.LastModifiedDate;
                // GetAll() allows to get all campaigns with specified culture
                ResultSet<DefinitionResult<ICampaignActivityDefinition>> allCampaigns = 
                manager.GetAll(CultureInfo.InvariantCulture);
                long numberOfCampaigns = allCampaigns.Total;
                foreach (var campaign in allCampaigns.DataPage)
                {
                    name = campaignActivityDefinition.Name;
                    description = campaignActivityDefinition.Description;
                    classification = campaignActivityDefinition.Classifications;
                    startDate = campaignActivityDefinition.StartDate;
                    endDate = campaignActivityDefinition.EndDate;
                    lastModifiedDate = campaignActivityDefinition.LastModifiedDate;
                }
            }
            [NotNull]
            private static IDefinitionManager<ICampaignActivityDefinition> GetDefinitionManager()
            {
                return 
            DefinitionManagerFactory.Default.GetDefinitionManager<ICampaignActivityDefinition>();
            }
メモ

定義マネージャのGetメソッドは、定義が見つからない場合にnullを返します。これは、定義が削除された場合、または定義が取得される環境に定義がプッシュされていない場合に発生する可能性があります。

マーケティング定義の作成

SitecoreクライアントUIに直接アクセスできないカスタム アプリケーションを作成する場合は、Marketing Operations APIマーケティング定義マネージャーを使用して新しいキャンペーン定義アイテムを作成します。

マーケティング定義を作成するには:

  1. 次のコード サンプルを適応させます。

    // Create a campaign
            public async Task CreateCampaignActivityExample()
            {
                ID campaignActivityId = ID.NewID; // Campaign activity ID
                CultureInfo campaignActivityCulture = new CultureInfo("es"); // Campaign activity 
                culture
                string campaignName = "Newly created campaign"; // Campaign activity name
                DateTime creationDate = DateTime.UtcNow; // Campaign activity creation date
                string createdBy = "sitecore\admin"; // Campaign activity creator
                // Retrieve the definition manager associated with the ICampaignActivityDefinition
                var manager = GetDefinitionManager();
                // Call SaveAsync() method with the list of parameters to create, save and deploy the 
                definition
                Task saveTask = manager.SaveAsync(new CampaignActivityDefinition(campaignActivityId, 
                campaignActivityCulture, campaignName, creationDate, createdBy), activate: true);
                await saveTask; //potentially it's a long-running task as it may involve a number of 
                retries of deploy, publish, index update operations
            }
            [NotNull]
            private static IDefinitionManager<ICampaignActivityDefinition> GetDefinitionManager()
            {
                return    
            DefinitionManagerFactory.Default.GetDefinitionManager<ICampaignActivityDefinition>();
            }
  2. マーケティング定義をアクティブ化するには、SaveAsyncメソッドの最後のパラメーターをtrueに設定します。

    マーケティング定義をアクティブ化すると、次のようになります。

    • マーケティング定義はmasterデータベースに保存され、Webデータベースに公開され、レポート データベースに配置されます。

    • 検索インデックスが更新されます(これはキャンペーン、アセット、目標到達プロセスに適用されます)。

    手記

    マーケティング定義をアクティブ化しない場合は、このパラメーターをfalseに設定します。マーケティング定義は、masterデータベースにのみ保存されます。

    この動作は構成可能であり、Sitecore.Marketing.configファイルのcampaign/definitionManager/config/activationFeedセクションを変更することで変更できます。

検索マーケティングの定義

Marketing Operations APIを使用して、キャンペーン定義アイテムなどのマーケティング定義をプログラムで検索できます。検索機能は、キャンペーン、アセット、目標到達プロセスにのみ適用されます。

  • マーケティング定義を検索するには、次のコード サンプルを適応させます。

    //// Search for a campaign
            public void SearchForCampaignActivityExample()
            {
                // Retrieve the definition manager associated with the ICampaignActivityDefinition
                var manager = GetDefinitionManager();
                // Search active campaigns by name
                ResultSet<DefinitionResult<ICampaignActivityDefinition>> searchResults = 
                manager.Search(
                    new SearchParameters<ICampaignActivityDefinition, string>(
                        c => (c.Name == "My campaign") && c.IsActive,
                        c => c.Name,
                        1,
                        10));
                long totalResuls = searchResults.Total;
                ICampaignActivityDefinition campaignDefinition;
                foreach (var result in searchResults.DataPage)
                {
                    campaignDefinition = result.Data;
                }
            }
            [NotNull]
            private static IDefinitionManager<ICampaignActivityDefinition> GetDefinitionManager()
            {
                return 
            DefinitionManagerFactory.Default.GetDefinitionManager<ICampaignActivityDefinition>();
            }

マーケティング定義の削除

マーケティング定義 (キャンペーンなど) を削除すると、その定義は非アクティブ化され、マスター データベース、Webデータベース、およびレポート データベースから削除されます。また、検索インデックスからも削除されます。これは、キャンペーン、アセット、目標到達プロセスに適用されるデフォルトの動作です。この動作は、<deleteCampaign> パイプラインにパッチを適用することで構成できます。

  • マーケティング定義項目を削除するには、次のコード サンプルを調整します。

    // Delete campaign
            public void DeleteCampaignActivityExample(ID campaignActivityId)
            {
                // Retrieve the definition manager associated with the ICampaignActivityDefinition
                var manager = GetDefinitionManager();
                // Delete campaign activity
                manager.Delete(campaignActivityId);
            }
            [NotNull]
            private static IDefinitionManager<ICampaignActivityDefinition> GetDefinitionManager()
            {
                return 
            DefinitionManagerFactory.Default.GetDefinitionManager<ICampaignActivityDefinition>();
            }
この記事を改善するための提案がある場合は、 お知らせください!