---
title: "ページイベントの変換"
slug: "convert-a-page-event"
abstract: ""
---
# ページイベントの変換

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

> !notexConnectは汎用イベントとページイベントを区別しません。ページイベント定義項目は/sitecore/system/設定/分析/ページイベントに位置し、一般的なイベント定義項目は/sitecore/system/マーケティングコントロールパネル/イベントの下に位置します。

## カスタムイベントモデルを作成する

示すようにカスタムイベントモデルを作成します。この例では組み込みの「Print」ページイベントを使用しています。 [カスタムイベントの作成](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/events.html "Events")に関する詳細はxConnectのドキュメントを参照してください。

using Sitecore.XConnect;
using System;

namespace Documentation
{
 public class PrintEvent : Event
 {
 public static Guid PrintID = Guid.Parse("{CD52B756-21B4-4028-8BA5-E981B8A96F95}");

 public PrintEvent(DateTime timestamp) : base(PrintID, timestamp) { }

 public Orientation Orientation { get; set; }
 }

 public enum Orientation
 {
 Unknown = 0,
 Landscape = 1,
 Potrait = 2
 }
}

## イベント変換プロセッサを作成する

1.  ConvertPageEventDataToEventBaseを継承するパイプラインプロセッサを作成します。
2.  示した通り CreateEvent と CanProcessPageEventData を実装します。このハンドラは Orientation が CustomValues 辞書に保存されていると仮定しています。

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

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

 if (pageEventData.PageEventDefinitionId == PrintEvent.PrintID)
 {
 return true;
 }

 return false;
 }

 // Create new print event from pageEventData
 // All base Event properties are mapped automatically
 protected override Event CreateEvent(PageEventData pageEventData)
 {
 PrintEvent printEvent = new PrintEvent(pageEventData.DateTime);

 var orientation = (Orientation)pageEventData.CustomValues"Orientation"; // Store 'Orientation' as a constant somewhere and use when triggering event

 printEvent.Orientation = orientation;

 return printEvent;
 }
 }
}

## レジスタイベント変換プロセッサ

**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.ConvertPageEventDataToEvent, Sitecore.Analytics.XConnect'" type="Documentation.ConvertPrintEvent, Documentation"/>
 </convertToXConnectEvent>
 </pipelines>
 </sitecore>
</configuration>

## イベントをトリガーする

イベント変換パイプラインプロセッサが期待するカスタムデータでイベントをトリガーします:

var ev = Sitecore.Analytics.Tracker.MarketingDefinitions.PageEventsPrintEvent.PrintID;

if (ev != null)
{
 var pageData = new Sitecore.Analytics.Data.PageEventData(ev.Alias, ev.Id);

 pageData.CustomValues.Add("Orientation", Orientation.Potrait);

 Sitecore.Analytics.Tracker.Current.CurrentPage.Register(pageData);
}