---
title: "カスタムイベントのトリガー"
slug: "triggering-custom-events"
abstract: ""
---
# カスタムイベントのトリガー

デフォルトでは、トラッカーからトリガーされるイベントは、Goal、Outcome、Eventなどの汎用的な組み込みイベントモデルを使ってxConnectに保存されます。カスタムイベントモデルを使用するには、汎用イベントをカスタムイベントに変換するイベント変換パイプラインプロセッサを作成する必要があります。例えば、{7D59A563-29A1-4C3D-8C15-35FA110B79E0}のIDを持つ汎用Eventが専門的なSearchEventに変換されることがあります。

また、トラッカーが取得したカスタムイベントデータを専門モデルのプロパティにコピーすることもできます。例えば、SearchEventクラスにはKeywordsプロパティがあります。このプロパティは、汎用EventモデルのDataフィールドの値をコピーすることで埋められます。

> !注以下のコード例はC#(.NET)で書かれ、サーバーサイドのSitecore XP追跡APIを使用しています。これらの例はSitecoreサーバー(例えばコントローラ、パイプライン、イベントハンドラ、カスタムサービスなど)上で実行されなければなりません。これらのAPIはブラウザ側のJavaScriptから直接呼び出すことはできません。ブラウザJavaScriptからイベントをトリガーするには、以下の2つの方法のいずれかがあります。
> 
> -   *JSS apps* - [JSS Tracking API](https://doc.sitecore.com/xp/en/developers/hd/22/sitecore-headless-development/en/jss-tracking-api.html)を使用して、クライアントから目標、成果、キャンペーン、イベント、ページビューを送信します。
>     
> -   *従来の Sitecore MVC サイトでは*、トラッカー APIを呼び出すサーバーエンドポイント(MVC、ウェブAPI、ハンドラー)を実装し、そのエンドポイントをJavaScriptから呼び出します(例えばfetchを使う)。
>     

## カスタムイベントデータの取得

カスタムデータを取得するには、以下のいずれかの方法でイベントをトリガーする必要があります:

-   Sitecore.Analytics.Tracker.Current.CurrentPage.Register() ページイベントや目標のために。
-   Sitecore.Analytics.Tracker.Current.CurrentPage.RegisterOutcome() 結果のために。
-   Sitecore.Analytics.Tracker.Current.Interaction.RegisterOutcome() インタラクションレベルの結果(9.0アップデート1のみ)に対して。

カスタムデータをキャプチャする必要がない場合は、[一般的なイベントをトリガーするのと同じ方法で](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/triggering-built-in-events.html "Triggering built-in events") イベントをトリガーし、このセクションをスキップできます。

### カスタム目標およびイベントデータの取得

Sitecore.Analytics.Tracker.Current.CurrentPage.Register()メソッドを使ってカスタムデータで目標やページイベントをトリガーします。

以下の表は、カスタムデータを保存するために使用できるSitecore.Analytics.Model.PageEventDataクラスのプロパティを説明しています。イベント変換時に、このデータはカスタムイベントにコピーできます。変換前にカスタムデータの保存方法を決める必要があります。例えば、DownloadEventはダウンロードされたメディアアイテムのIDをItemIdプロパティに保存することを期待します。

財産

概要

ItemId

イベントが発生したページアイテムのID、またはそのイベントに関連付けられたメディアアイテム。

Text

人間が読みやすいイベントの説明 - 例:「インストールガイドをダウンロード済み」

DataKey

「Data」の内容を識別するキー(例:「campaignid」や「keywords」)です

Data

イベントのトリガーとして収集されたデータ、例えばキャンペーンイベントのキャンペーンIDや「スローページ」イベントのページロード時間など。

CustomValues

任意の文字列/オブジェクトの組み合わせを保存してください。  
  
\>\[!重要\]  
\> このプロパティはxConnectには決して保存されず、 [イベント変換パイプラインでカスタムxConnectイベントモデルにコピー](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/triggering-custom-events.html#UUID-d354e926-26e6-2619-e8a9-549e18dbf334_N1560769852457)されるデータのみを保存するために使用すべきです。

以下の例は、カスタムデータで目標を発動する方法を示しています:

var ev = Sitecore.Analytics.Tracker.MarketingDefinitions.GoalsNewsletterSignupGoal.NewsletterGoalID;

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

pageData.Data = newsletterId.ToString();
pageData.Text = "Signed up for newsletter";
pageData.DataKey = "newsletterid";
pageData.CustomValues"NewsletterImageCategory" = "C"; // Never saved to xConnect, must be converted into a property on a custom model

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

### カスタムアウトカムデータの取得

Sitecore.Analytics.Tracker.Current.CurrentPage.RegisterOutcome()メソッドを使ってカスタムデータで結果をトリガーしてください。Sitecore.Analytics.Data.OutcomeDataオブジェクトはカスタムデータをCustomValuesプロパティにのみ保存でき、これは型Dictionary<string,object>です。CustomValuesはxConnectに保存されず、セッション中やイベント変換パイプラインのコンテキストでのみアクセス可能です。

以下の例は、現在のページのカスタムデータを使って結果をトリガーする方法を示しています:

var ev = Sitecore.Analytics.Tracker.MarketingDefinitions.OutcomesCarPurchaseOutcome.CarPurchaseOutcomeID;

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

 outcomeData.CustomValues.Add("Make", "Mazda"); // Never saved to xConnect, must be converted into a property on a custom model
 outcomeData.CustomValues.Add("Model", "MX-5"); // Never saved to xConnect, must be converted into a property on a custom model

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

> !注9.0 Update-1以降は、現在のやり取りに関するカスタムデータで結果をトリガーすることも可能です。

### CustomValuesでのイベントデータをキャプチャするオプション

以下の表は、セッション中のイベントのイベントデータをCustomValues辞書に保存する方法を示しています。

> !重要CustomValuesプロパティはxConnectに保存されることはありません。各カスタムイベントモデルごとに、CustomValuesからそのモデルにデータをコピーする変換パイプラインを作成しなければなりません。

-   方法:説明
-   CustomValuesにシンプルな値を保存する:必要なカスタム値をCustomValues辞書のキーに対して保存する:これはセッション内でカスタムデータを保存する最も簡単な方法で、最も容量を節約できます。

pageData.CustomValues"NewsletterID" = "1234";
pageData.CustomValues"NewsletterBannerID" = "1245";

-   CustomValuesにシンプルなクラスを保存する:カスタムクラスのインスタンスをCustomValues辞書のキーに対して保存する:

Serializable // Required
public class NewsletterGoalSessionData {
 public string NewsletterID { get; set; }
 public string NewsletterBannerID { get; set; }
}

pageData.CustomValues"NewsletterImageCategory" = new NewsletterGoalSessionData {
 NewsletterID = "1234",
 NewsletterBannerID = "1245"
}

-   CustomValuesにシリアライズされたxConnectイベントモデル全体を保存する:イベントモデル全体(例えばMyCustomGoal)をシリアライズしてJSONし、カスタム値として保存し、イベント変換パイプラインでデシリアライズして返すことができます。これを行うには[xConnectのシリアライズヘルパー](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/serialize-xconnect-entities-using-json-net.html)を使う必要があります。重要:カスタムイベントクラスにSerializable属性を付けてカスタム値として保存することはできません。トラッカーがSystem.Runtime.Serialization.SerializationException例外を出します。シリアライズされたイベントのサイズに注意してください。セッションに大量のデータを保存するとセッション状態プロバイダーのパフォーマンスに悪影響を及ぼすため、単純な値を辞書に保存するCustomValuesを好むかもしれません。

#### xConnectイベントCustomValuesプロパティ

Sitecore.XConnect.Eventクラスにはレガシー上の理由からDictionary<string,string>型の型CustomValuesプロパティがあります。PageEventDataにstring値だけを保存したり、カスタム値を保存したりOutcomeDataする場合、トラッカーイベントからxConnectイベントにカスタム値をコピーする変換プロセッサを作っても、イベントタイプを変えずにできます。トラッカーは各辞書オブジェクトが文字列であることを保証することは不可能なので、この変換を自動的に実行しません。

> !注CustomValuesプロパティは文脈的な意味を欠き、サードパーティツールでデータを分析するのが難しいです。xConnectイベントCustomValuesに依存しない、カスタムデータを含むすべてのイベントに対してカスタムタイプを作成することが推奨されます。

## セッションイベントをxConnectイベントに変換する方法

セッションイベントをカスタムのxConnectイベントに変換するために、コンバージョンパイプラインプロセッサを作成する必要があります。各カスタムイベントには独自のプロセッサーがあります。各コンバージョンパイプラインプロセッサでは、以下の作業を行います:

-   xConnectイベントのインスタンスを作成します。例えば NewsletterGoal。
-   セッションイベントのカスタムデータをxConnectイベントにコピーします。例えば、NewsletterGoalクラスのプロパティにpageData.CustomValues"NewsletterImageCategory"の値をコピーするNewsletterImageCategory。

具体的な指示は、[xConnectイベントモデル](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/convert-a-page-event.html "Convert a page event")、xConnect[目標モデル](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/convert-a-goal.html "Convert a goal")、またはxConnect[アウトカムモデル](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/convert-an-outcome.html "Convert an outcome")に変換するかどうかによって異なります。

> !注ItemId、Text、DataKey、DataプロパティはデフォルトでベースSitecore.XConnect.Eventクラスに保存されます。データを別のプロパティにコピーしても、これらのプロパティをクリアする必要はありません。