【问题标题】:Sitecore ECM 2.1: Is there a way to segment the users based on a condition?Sitecore ECM 2.1:有没有办法根据条件对用户进行细分?
【发布时间】:2015-08-21 08:20:40
【问题描述】:

有没有办法根据 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

【问题讨论】:

  • 您考虑升级到 Sitecore 8+ 和 ExM 3+ 吗?列表管理器组件可让您开箱即用地构建分段列表。
  • @Anton 目前我们没有任何升级 Sitecore 8+ 的计划:(
  • 您在解决方案中使用 CRM 吗?在这种情况下,可以构建与 Sitecore 中的角色相匹配的联系人动态营销列表。
  • @Anton 不,我们没有使用 CRM。我必须从用户个人资料中获取信息:(

标签: sitecore sitecore7 sitecore-ecm


【解决方案1】:

如果您不介意稍微扩展 ECM,可以使用 DispatchNewsletter 管道。

如果您像下面这样添加处理器,您可以动态获取所有用户并将他们添加到订阅者列表中。您只需要确保这只在特定场景下触发,以避免干扰核心产品功能。

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>

为了使其更具动态性,您可以向每个消息项添加一个规则引擎字段,以确定哪些用户被添加到订阅者列表中。因此,例如 user profile["country"] 等于 'USA' 的逻辑可能在规则字段中。

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

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

【讨论】:

  • 非常感谢您的帮助。我离我想要的只有一半。我希望用户从 ECM 语音界面输入规则,所以我在其中创建了一个按钮,但我不知道如何使该按钮导致弹出窗口让用户编辑规则。
  • 感谢您的提示!当我调试时,它看起来像是在进行过滤,所以如果我理解正确,那么修改后的 args 参数会被传递给管道中的下一个方法()?
  • 是的,没错。只是提醒一下,这可能与您的情况无关,但我记得遇到了一个问题,为了使上面的代码正常工作,需要分配收件人列表,如果您不需要收件人列表,则为空白收件人没有收件人的列表将完成这项工作。
猜你喜欢
  • 2020-06-10
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
相关资源
最近更新 更多