結果を変換する

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

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

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

using Sitecore.XConnect;
using Sitecore.XConnect.Collection.Model;
using System;

namespace Documentation
{
    public class CarPurchaseOutcome : Outcome
    {
        public static Guid CarPurchaseEventDefinitionId { get; } = new Guid("2b7e9e7e-f7ac-4ac2-8f8e-26a9c8644b23");

        public CarPurchaseOutcome(DateTime timestamp, string currencyCode, decimal monetaryValue, string model, string make)
            : base(CarPurchaseEventDefinitionId, timestamp, currencyCode, monetaryValue)
        {
            Model = model;
            Make = make;
        }

        public string Model { get; set; }
        public string Make { get; set; }
    }

}

結果変換プロセッサを作成する

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

  2. 示されているように、CreateEventCanProcessPageEventDataを実装します。このハンドラーは、車のメーカーとモデルがCustomValuesディクショナリに格納されていることを前提としています。

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

namespace Documentation
{
    public class ConvertCarPurchaseOutcome : ConvertToXConnectEventProcessorBase<OutcomeData>
    {
        protected override Event ConvertToEvent(OutcomeData entity)
        {
            var make = entity.CustomValues["Make"] as string;
            var model = entity.CustomValues["Model"] as string;

            var carPurchase = new CarPurchaseOutcome(entity.Timestamp, make, model, entity.CurrencyCode, entity.MonetaryValue);

            return carPurchase;
        }

        protected override bool CanProcess(Sitecore.Analytics.Model.Entity entity)
        {
            if (entity is OutcomeData)
            {
                OutcomeData outcomeData = (OutcomeData)entity;

                return (outcomeData.OutcomeDefinitionId == CarPurchaseOutcome.CarPurchaseOutcomeID);
            }

            return false;
        }
    }
}

レジスタ結果変換プロセッサ

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.ConvertOutcomeDataToOutcome, Sitecore.Analytics.XConnect']" type="Documentation.ConvertCarPurchaseOutcome, Documentation"/>
        </convertToXConnectEvent>
        </pipelines>
    </sitecore>
</configuration>

結果をトリガーする

結果変換パイプライン プロセッサが想定するカスタム データを使用して結果をトリガーします。

var ev = Sitecore.Analytics.Tracker.MarketingDefinitions.Outcomes[CarPurchaseOutcome.CarPurchaseOutcomeID];

if (ev != null)
{
    var outcomeData = new Sitecore.Analytics.Data.OutcomeData(ev, "DKK", 100000.00m);

    outcomeData.CustomValues.Add("Make", "Mazda");
    outcomeData.CustomValues.Add("Model", "MX-5");

    Sitecore.Analytics.Tracker.Current.CurrentPage.RegisterOutcome(outcomeData);
}
メモ

9.0 Update-1以降では、現在のインタラクションのカスタムデータを使用して結果をトリガーすることもできます。

この記事を改善するための提案がある場合は、 お知らせください!