目標をコンバージョンする

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

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

このトピックでは、トラッカーからトリガーされた目標をxConnectに保存する前にカスタム目標に変換する方法について説明します。

カスタム目標モデルを作成する

using Sitecore.XConnect;
using System;

namespace Documentation
{
    public class NewsletterSignupGoal : Goal
    {
        public static Guid NewsletterGoalID = Guid.Parse("{1779CC42-EF7A-4C58-BF19-FA85D30755C9}");

        public NewsletterSignupGoal(DateTime timestamp, Guid newsletterID) : base(NewsletterGoalID, timestamp)
        {
            NewsletterId = newsletterID;
        }

        public Guid NewsletterId { get; private set;  }
    }
}

目標変換プロセッサを作成する

  1. ConvertPageEventDataToEventBaseを継承するパイプライン プロセッサを作成します。

  2. 示されているように、CreateEventCanProcessPageEventDataを実装します。このハンドラーは、NewsletterIdDataプロパティに格納されていることを前提としています。

using Sitecore.Analytics.Model;
using Sitecore.Analytics.XConnect.DataAccess.Pipelines.ConvertToXConnectEventPipeline;
using Sitecore.Framework.Conditions;
using Sitecore.XConnect;

namespace Documentation
{
    public class ConvertNewsletterSignupGoal : ConvertPageEventDataToEventBase
    {
        protected override bool CanProcessPageEventData(PageEventData pageEventData)
        {
            Condition.Requires(pageEventData, nameof(pageEventData)).IsNotNull();

            if (pageEventData.PageEventDefinitionId == NewsletterSignupGoal.NewsletterGoalID)
            {
                return true;
            }

            return false;
        }

        protected override Event CreateEvent(PageEventData pageEventData)
        {
            var newsletter = Guid.Empty;

            Guid.TryParse(pageEventData.Data, out newsletter);

            NewsletterSignupGoal newsletterSignupGoal = new NewsletterSignupGoal(pageEventData.DateTime, newsletter);

            return newsletterSignupGoal;
        }
    }
}

レジスターゴール変換プロセッサ

MyBrand.CustomEvents.configという名前の新しい構成ファイルを作成し、次のようにハンドラーにパッチを適用します。

大事な

示されているように、最終ゴール ハンドラーの前にプロセッサにパッチを適用する必要があります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
    <sitecore>
        <pipelines>
        <convertToXConnectEvent>
            <processor patch:before="processor[@type='Sitecore.Analytics.XConnect.DataAccess.Pipelines.ConvertToXConnectEventPipeline.ConvertPageEventDataToGoal, Sitecore.Analytics.XConnect']" type="Documentation.ConvertNewsletterSignupGoal, Documentation"/>
        </convertToXConnectEvent>
        </pipelines>
    </sitecore>
</configuration>

ゴールをトリガーする

目標コンバージョン パイプライン プロセッサが想定するカスタム データを使用して目標をトリガーします。

var ev = Sitecore.Analytics.Tracker.MarketingDefinitions.Goals[NewsletterSignupGoal.NewsletterGoalID];

if (ev != null)
{
    var newsletterId = Guid.NewGuid(); // Fake newsletter ID
    var pageData = new Sitecore.Analytics.Data.PageEventData(ev.Alias, ev.Id);

    pageData.Data = newsletterId.ToString();

    Sitecore.Analytics.Tracker.Current.CurrentPage.Register(pageData);
}
この記事を改善するための提案がある場合は、 お知らせください!