如何获得在Sitecore会话期间触发的活动和目标列表

本文关键字:活动 列表 目标 何获得 Sitecore 会话 | 更新日期: 2023-09-27 18:15:23

我在识别通过我们网站的联系表单联系我们的访问者时遇到了麻烦。该表单收集基本信息,但如果在邮件正文中包含一些Sitecore Analytics数据,以帮助描绘更大的图景,那就更好了。

为了实现这一点,我需要以某种方式检索当前会话中触发的所有活动和目标。

Sitecore API为"触发"目标和活动提供了方便的方法,但我似乎找不到任何方法来检索为当前会话触发的内容。如果可能的话,我希望避免直接查询OMS数据库。

如何获得在Sitecore会话期间触发的活动和目标列表

您可以在Tracker.CurrentVisit返回的VisitorDataSet对象中进行挖掘,您应该能够获得一些有用的属性,然后提取相关数据。

这个,例如,应该得到您当前访问返回的广告系列(如果有相关的广告系列)..

if(!Tracker.CurrentVisit.IsCampaignIdNull())
{
    var campaignDataTable = new SharedDataSet.CampaignsDataTable();
    var data = campaignDataTable.FindByCampaignId(Tracker.CurrentVisit.CampaignId); 
    Response.Write("Campaign Name:" + data.CampaignName);
    Response.Write("Id:" + Tracker.CurrentVisit.CampaignId);    
}
else
{
    Response.Write("No campaign found!");
} 

我不经常使用这个,但可能会让你在正确的方向,对不起,我不能提供更多的细节

我无法得到建议的答案,但我找到了一个解决方案!它应该与Sitecore 6.5到7.2相关(不确定7.5或更高版本)。您可以通过Sitecore.Analytics.Tracker.DataContext对象访问战役。

结合Stephen Pope的答案,我们得到:

using System.Linq;
using Sitecore.Analytics;
// won't be null if a campaign was triggered
if (!Tracker.CurrentVisit.IsCampaignIdNull())
{
    var campaign = Tracker.DataContext.Where(x => x.ID.Guid == Tracker.CurrentVisit.CampaignId).FirstOrDefault();
    if (campaign != null)
    {
        // do stuff with the campaign here
        var name = campaign.Title;
    }
}

我还关心获得活动的流量类型,你可以这样做:

var trafficType = campaign.SelectTrafficType.TargetItem.Name;