Sitecore EXM 3.2(ECM)为触发的消息分配目标

时间:2016-05-16 14:54:15

标签: sitecore sitecore8.1 sitecore-ecm sitecore-exm

我需要做一个简单的通讯表格。这个表格应该是这样的:

  • 用户输入电子邮件并按下提交按钮
  • 用户通过确认链接收到电子邮件
  • 用户点击链接后,他的电子邮件将添加到“收件人列表”

此表单应与帮助EXM一起使用

我在EXM中创建了带有订阅链接的触发消息。 我为“提交”按钮编写了此代码,以触发“新闻稿目标”

    [HttpPost]
    public ActionResult NewsletterSubscribe(NewsletterViewBag model)
    {

        var goal = Context.Database.GetItem(newsletterGoal);

        if (goal == null)
        {
            continue;
        }

        var registerGoal = new Sitecore.Analytics.Data.Items.PageEventItem(goal);

        var eventData = Tracker.Current.CurrentPage.Register(registerGoal);

        eventData.Data = goal[DateTime.Now.ToString(CultureInfo.InvariantCulture)];

        Tracker.Submit();

    }

如何将触发的消息分配给newsletterGoal? 我也尝试用这种方式手动发送消息:

 MessageItem message = Sitecore.Modules.EmailCampaign.Factory.GetMessage(new ID(messageId));
   Sitecore.Modules.EmailCampaign.AsyncSendingManager manager = new AsyncSendingManager(message);
   var contactId = ClientApi.GetAnonymousIdFromEmail(email);
   var recipientId = (RecipientId) new XdbContactId(contactId);
   manager.SendStandardMessage(recipientId);

我在日志中看到错误:收件人'xdb:857bbea1-1f18-4621-a798-178399cd0b54'不存在。但是Triggered Message没有任何收件人列表

1 个答案:

答案 0 :(得分:1)

目标未直接分配给消息。但是,您可以分配参与计划和广告系列。每条消息都有自己的参与计划,以处理跟踪消息的联系人操作。如果您创建了一个触发目标的广告系列,则可以将其分配给邮件,并在收到邮件时与联系人关联。您还可以利用邮件参与计划在联系人通过这些状态时触发事件。

此外,您在录制联系人数据时遗漏了一些细节。 查看EXM模块中包含的简报注册控件。其中重要的部分是:

for eachWord in ogtL: #ogtL is a List
    newString=""
    for eachCharacter in eachWord:
        newString+=eachCharacter
        newString.replace("?","0")
    print(newString)

它会直接将电子邮件地址写入Mongo,而不是等待会话结束。在注册代码中包含此内容以及相关的RecipientId和ContactId属性。

注册后,您可以以编程方式注册目标,或将其发送到可以注册目标的感谢页面(高级 - 跟踪),或发送消息并让注册目标。或者为流程的每个步骤创建一个包含状态的参与计划(这是最好的方法)。

您还希望将收件人添加到新闻稿消息稍后可以使用的列表中。实际上,在我看来,例如订阅表格可以满足您的所有需求。