Sitecore 7分析以编程方式增加参与价值

Sitecore 7分析以编程方式增加参与价值,sitecore,analytics,sitecore7,sitecore-dms,sitecore7.2,Sitecore,Analytics,Sitecore7,Sitecore Dms,Sitecore7.2,我正致力于在7.2中实现sitecore DMS,我有一个主要问题,我似乎很难找到答案。我已经设定了一些目标和事件,我正试图通过Analytics API设定一个目标和事件。该事件被记录为在PageEventId数据库中设置,但我尝试的是向当前访问/访问者添加参与值 我正在为当前访问更新访问数据库中的值字段。以下是我目前正在使用的内容: public static void triggerGoal(ID goal) { if (Tracker.IsActive && Tr

我正致力于在7.2中实现sitecore DMS,我有一个主要问题,我似乎很难找到答案。我已经设定了一些目标和事件,我正试图通过Analytics API设定一个目标和事件。该事件被记录为在PageEventId数据库中设置,但我尝试的是向当前访问/访问者添加参与值

我正在为当前访问更新访问数据库中的值字段。以下是我目前正在使用的内容:

public static void triggerGoal(ID goal)
{
    if (Tracker.IsActive && Tracker.CurrentPage != null)
    {
        Sitecore.Data.Items.Item goalToTrigger = Sitecore.Context.Database.GetItem(goal);
        if (goalToTrigger != null)
        {
            Sitecore.Analytics.Data.Items.PageEventItem reg = new Sitecore.Analytics.Data.Items.PageEventItem(goalToTrigger);
            Sitecore.Analytics.Data.DataAccess.DataSets.VisitorDataSet.PageEventsRow eventData = 

            Tracker.CurrentPage.Register(reg);
            eventData.Data = goalToTrigger["Description"];
            Tracker.Submit();
        }
    }
}
这将正确更新PageEventId数据库,注意事件已被触发,但这不会向访问数据库添加任何参与值,无论有多少参与点分配给正在触发的Goad

我尝试了各种方法让API更新这个字段,但到目前为止没有任何效果。以下是我尝试过的一些不同的东西:

Tracker.CurrentVisit.BeginEdit();
Tracker.CurrentVisit.Value += 3; //look up value here instead of hardcoding. Create new PageEventItem class to get field ID.
Tracker.CurrentVisit.AcceptChanges();
Tracker.CurrentVisit.EndEdit();
Tracker.CurrentVisit.Load();
Tracker.CurrentPage.BeginEdit();
Tracker.CurrentPage.Visit.Value += 3;
Tracker.CurrentPage.AcceptChanges();
Tracker.CurrentPage.EndEdit();
Tracker.Visitor.CurrentVisit.BeginEdit();
Tracker.Visitor.CurrentVisit.Value += 3;
Tracker.Visitor.CurrentVisit.AcceptChanges();
Tracker.Visitor.CurrentVisit.EndEdit();
Tracker.Visitor.CurrentVisit.Load();
Tracker.CurrentVisit.CurrentPage.Visit.BeginEdit();
Tracker.CurrentVisit.CurrentPage.Visit.Value += 3;
Tracker.CurrentVisit.CurrentPage.Visit.AcceptChanges();
Tracker.CurrentVisit.CurrentPage.Visit.EndEdit();
Tracker.CurrentVisit.CurrentPage.Visit.Load();
Tracker.CurrentVisit.CurrentPage.VisitorsRow.BeginEdit();
Tracker.CurrentVisit.CurrentPage.VisitorsRow.Value += 3;
Tracker.CurrentVisit.CurrentPage.VisitorsRow.AcceptChanges();
Tracker.CurrentVisit.CurrentPage.VisitorsRow.EndEdit();
我使用了AcceptChanges()和BeginEdit()EndEdit()以及Load()函数的不同组合,因为我不完全确定它们各自的作用,但无论哪种方式,它们都不会更新值字段


我试图避免使用自定义SQL查询来更新此字段,我试图找出如何通过内置Sitecore Analytics API进行更新。有人能帮我找出如何更新此字段吗?

以下内容对我来说很好,您是否等待足够长的时间来查看为访问编写的值

if (Tracker.IsActive)
{
    Tracker.CurrentVisit.Value += 3;
}

无需开始编辑、接受更改、重新编辑等。

只要您在Sitecore中正确设置了目标,您所做的工作应该可以正常工作。我喜欢镜像sitecore的默认目标,并创建“页面事件”模板的目标。确保已将目标分配给内容项
分析选项卡->目标->[从复选框列表中选择目标]
。如果要设置CurrentVisite值,我建议使用下面的行来防止硬编码接合点值

//This line will add points specified in Content Editor
Tracker.CurrentVisit.Value += int.Parse(reg.Points);
本文档介绍如何以正确的方式设定目标。如果您遵循它,代码将按照您的方式工作,报告在内容编辑器中指定的值,而不设置CurrentVisite.value。

好的,我想我可能已经发现了问题,这是一个完全独立的问题,是跟踪程序代码的基础,但是现在最初的问题已经解决了,这里的代码确实有效。非常感谢你!