xDBプログラミング:インタラクションにカスタムデータを登録したい

samatsu 7/25/2015 1230 N/A xDB Programming

xDBプログラミング:コンタクトにカスタムデータを登録したいでは、コンタクトにカスタムデータを登録する方法を紹介しました。それでは、今回の訪問を表すインタラクションにカスタムデータを登録したい場合はどうすればよいでしょうか?

今回はインタラクションにカスタムデータを登録する方法をご紹介します。

インタラクションにカスタムデータを登録することで、それ以降のページ遷移でそのデータを使ったり、セッション終了時のパイプラインで他システムに登録するデータとして利用したり、カスタムアグリゲーションプロセッサでレポーティング用にSQL Serverに格納する集約データとして使用することができるようになります。(記事作成日時現在でxDBクラウドを使用する場合はカスタムアグリゲーションプロセッサは作成できないので注意してください。)

それでは実際に現在のインタラクション(訪問情報)にカスタムデータを登録する方法を記載していきます。今回はCustomValueSampleというカスタムデータを表すクラスを作成し、そのクラスのオブジェクトをカスタムデータとして登録することにします。

今回の記事作成するにあたり Sitecore 8 update 4 を使用しています。

1.CustomValueSample クラスを定義する

CustomValueSample クラスを次のように定義しました。このクラスんは文字列と整数型をプロパティとして定義しています。カスタムデータはセッションデータとしてSQL Serverに格納されることがあるのでSerializable属性を必ず設定してください。

[Serializable]
public class CustomValueSample
{
    public string CustomText { get; set; }
    public int CustomValue { get; set; }
}

2.動作確認

適当なサブレイアウトを作成し、ボタンをクリックしたら下記サンプルコードを実行するようにしてみます。サンプルコードではCustomValueSampleクラスのインスタンスを作成し、Interaction.CustomValuesにmy.customという名前を付けて保存しています。

if (Tracker.IsActive)
{
    CustomValueSample sample = null;

    if (Tracker.Current.Interaction.CustomValues.ContainsKey("my.custom"))
    {
        sample = Tracker.Current.Interaction.CustomValues["my.custom"]
            as CustomValueSample;
    }
    else
    {
        sample = new CustomValueSample();
        Tracker.Current.Interaction.CustomValues.Add("my.custom", sample);
    }

    sample.CustomText = "Sample Text です";
    sample.CustomValue = 999999;
}

実際にコードを実行すると次のようにInteranctionsコレクションのInteractionsドキュメント(今回の訪問データ)にCustomValuesフィールドが追加され、my.customというキーに関連付けられて値が格納されます。

3.まとめ

本記事では訪問情報に対してカスタムデータを登録する方法を紹介しました。登録したカスタムデータは後続のページ遷移の中で使用したり、セッションエンドのパイプラインで他システムに連携データとして利用したり、カスタムアグリゲーションプロセッサーでレポート用のデータとして利用するなどが行えます。