Sitecore ECM 2.1:有没有办法根据条件细分用户?

时间:2015-08-21 08:20:41

标签: sitecore sitecore7 sitecore-ecm

有没有办法根据ECM 2.1中的条件向某些用户发送邮件。例如,我想只向那些用户个人资料属性为Country ='USA'的用户发送邮件。有没有办法在ECM 2.1中执行此操作?

对于ECM 1.3,我们过去常常使用下面的第三方细分模块 https://marketplace.sitecore.net/en/Modules/Sitecore_EmailCampaign_Segment.aspx
但它不支持ECM 2.1。所以我想知道如何在ECM 2.1中实现它。顺便说一句,我们使用的是Sitecore 7.2

1 个答案:

答案 0 :(得分:2)

如果您不介意稍微延长ECM,可以使用DispatchNewsletter Pipline。

如果您添加如下处理器,您可以动态获取所有用户并将其添加到订阅者列表中。您只需要确保这只会在某些情况下触发,以避免干扰核心产品功能。

public class GetUSASubscribers
{
        public void Process(DispatchNewsletterArgs args)
        {
          if(CanProcessEmail(args))
          {
            var matches = UserManager.GetUsers().Where(usr => usr.Profile["Country"].Equals("USA")).ToList();
            foreach (var username in matches)
            {
                if (User.Exists(username.Name))
                {
                    var contact = Contact.FromName(username.LocalName);
                    args.Message.Subscribers.Add(contact);
                    args.Message.SubscribersNames.Add(contact.Name);
                }
            }
          }
      }
 }

您可以在Sitecore.EmailCampaign.config

中按如下方式注册处理器
  <DispatchNewsletter>
    <processor  type="Sitecore.Modules.EmailCampaign.Core.Pipelines.DispatchNewsletter.CheckPreconditions, Sitecore.EmailCampaign" />
    <processor type="YourClass, YourNamespace" />
   ........................
  </DispatchNewsletter>

为了使其更具动态性,您可以为每个消息项添加规则引擎字段,以确定将哪些用户添加到订户列表中。因此,例如用户简档[“country”]等于'USA'的逻辑可以在规则字段中。

供参考,有关Sitecore中规则设置的更多详细信息。

http://blog.horizontalintegration.com/2013/12/06/bending-the-sitecore-rules-field-to-your-will-with-sitecore-7-1-part-1/