ゴールをコンバージョンする
このページの翻訳は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; } } }
目標変換プロセッサを作成する
- ConvertPageEventDataToEventBaseを継承するパイプラインプロセッサを作成します。
- 示した通り CreateEvent と CanProcessPageEventData を実装します。このハンドラは NewsletterId が Data プロパティに保存されていると仮定しています。
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という新しい設定ファイルを作成し、表示通りハンドラーでパッチを当ててください:
!重要最終ゴールハンドラーの前にプロセッサーを接続しなければなりません。
目標を発動する
目標変換パイプラインプロセッサが期待するカスタムデータで目標をトリガーします:
var ev = Sitecore.Analytics.Tracker.MarketingDefinitions.GoalsNewsletterSignupGoal.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); }