Sitecore ECM 2.1: есть ли способ сегментировать пользователей по условию?

Есть ли способ отправлять письма определенным пользователям на основе условия в 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.


person Sachin B. R.    schedule 21.08.2015    source источник
comment
Рассматриваете ли вы обновление до Sitecore 8+ и ExM 3+? Существует компонент List Manager, который позволяет вам строить списки сегментации из коробки.   -  person Anton    schedule 21.08.2015
comment
@Anton В настоящее время у нас нет планов по обновлению Sitecore 8+ :(   -  person Sachin B. R.    schedule 21.08.2015
comment
Используете ли вы CRM в своем решении? В этом случае можно было бы создать динамический маркетинговый список контактов, которым будет соответствовать роль в Sitecore.   -  person Anton    schedule 21.08.2015
comment
@Anton Нет, мы не используем CRM. Мне нужно получить информацию из профиля пользователя :(   -  person Sachin B. R.    schedule 21.08.2015


Ответы (1)


Если вы не возражаете против небольшого расширения 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>

Чтобы сделать его более динамичным, вы можете добавить поле механизма правил к каждому элементу сообщения, чтобы определить, какие пользователи добавляются в список подписчиков. Таким образом, логика, например, где профиль пользователя ["страна"] равняется "США", может быть в поле правил.

Для справки, подробнее о настройке правил в Sitecore.

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

person Ian Graham    schedule 21.08.2015
comment
Спасибо большое за вашу помощь. Я на полпути к тому, чего хочу. Я хочу, чтобы пользователь ввел правила из интерфейса ECM, поэтому я создал там кнопку, но я не знаю, как заставить эту кнопку вызывать всплывающее окно, которое позволит пользователю редактировать правила. - person Sachin B. R.; 26.08.2015
comment
Спасибо за этот совет! Когда я отлаживаю, похоже, что фильтрация выполняется, поэтому, если я правильно понимаю, параметр args при изменении затем передается следующему методу в конвейере (‹DispatchNewsLetter›)? - person Daniel Hallqvist; 03.09.2015
comment
Да, это правильно. Просто на заметку, это может не иметь отношения к вашему делу, но я помню, что столкнулся с ошибкой, где для того, чтобы приведенный выше код работал, необходимо назначить список получателей, если вам не нужен список получателей, то пустой получатель список без получателей выполнит эту работу. - person Ian Graham; 04.09.2015