必要なデータを取得する方法を見つけましたが、Sitecoreバージョン6.6を使用していますが、6.5ではこれは同じであるはずです。メールキャンペーンの「送信済み」フォルダにあるメッセージを選択すると、アイテムの詳細のメッセージプレビュータブに「動作の監視」ボタンが表示されます。このボタンは、必要な情報を表示する分析データダイアログを開きます。現在、バックエンドでこの情報を取得するには、次のようにします。
//get the message item we need the statistics for
var campaignMessage = Sitecore.Modules.EmailCampaign.Util.GetMessage(itemId);
//FlowDesigner will use the sc_ContentDatabase database
Sitecore.Context.Items["sc_ContentDatabase"] = Sitecore.Context.Database;
//get the flow by plan id
var flow = new FlowDesigner().ItemsToFlow(campaignMessage.PlanId);
Assert.ArgumentNotNull(flow, "flow");
var infos = new Dictionary<string, StateInfo>();
int totalVisitorsCount = 0;
foreach (State state in flow.States)
{
totalVisitorsCount += state.Visitors;
infos[state.Name] = new StateInfo(state.Id, state.Name, (double)state.Visitors, default(double), default(int), string.Empty);
}
foreach (StateInfo info in infos.Values)
info.UsersPct = (totalVisitorsCount == default(double)) ? default(double) : Math.Round((double)((info.UsersTotal / totalVisitorsCount) * 100.0), 1);
TotalUserCount = totalVisitorsCount.ToString();
SentNotCompleted = infos["Send not Complete"].UsersTotal.ToString();
InvalidAddress = infos["Invalid Address"].UsersTotal.ToString();
SoftBouncePercent = infos["Soft Bounce"].UsersPct.ToString();
HardBouncePercent = infos["Hard Bounce"].UsersPct.ToString();
MessageOpened = infos["Message Opened"].UsersTotal.ToString();
ClickedThroughPercent = infos["Clicked Through Message"].UsersPct.ToString();
VisitorBouncedPercent = infos["Visitor Bounced"].UsersPct.ToString();
MessageUnopened = infos["Message Unopened"].UsersTotal.ToString();
これは、Sitecoreが統計データを取得するために使用するコードを少し変更したものです。変更点は、アイテムを辞書に入れて名前で簡単に参照できるようにすることですが、計算ロジックは変更されていません。取得できる状態は次のとおりです。
- 受信者がキューに入れられました
- 送信が完了していません
- 無効なアドレス
- ソフトバウンス
- ハードバウンス
- メッセージ未開封
- メッセージが開かれました
- クリックスルーメッセージ
- ビジターバウンス
- 非生産的な訪問者
- 生産的な訪問者
Sitecore.Shell.MarketingAutomation.BusinessObjects.StateInfoのUsersTotalプロパティとUsersPctプロパティをそれぞれ使用して、統計データを数値またはパーセントで表示できます。