2016-05-16 2 views
0

Мне нужно сделать простую форму для рассылки новостей. Эта форма должна работать так:Sitecore EXM 3.2 (ECM) Назначение цели для инициированного сообщения

  • Пользователя вводит адрес электронной почты и нажимает на кнопку отправки
  • пользователя recieves сообщения по электронной почте с подтверждающей ссылкой
  • После пользователь нажимает на ссылке, его электронный адрес добавлен в список получателей

Эта форма должна быть работа с помощью EXM

Я создал Инициированном сообщение в EXM со ссылкой на подписку. И я написал этот код для кнопки Submit для запуска на информационный бюллетень Цель

[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

Голы не назначаются непосредственно на сообщения. Однако вы можете назначить планы взаимодействия и кампании. Каждое сообщение имеет свой собственный план взаимодействия для обработки отслеживания действий контактов с сообщением. Если вы создаете кампанию, которая запускает цель, вы можете назначить ее сообщению, и она будет связана с контактом, когда они получат сообщение. Вы также можете использовать план взаимодействия с сообщениями, чтобы инициировать события, когда контакт проходит через эти состояния.

Кроме того, во время записи контактных данных вам не хватает деталей. Посмотрите на элемент управления подпиской на бюллетень, который включен в модуль EXM. Важную роль там это:

protected virtual RecipientId RecipientId 
    { 
     get 
     { 
      RecipientId recipientId = null; 

      var contactId = ContactId; 

      if (contactId != (ID)null) 
      { 
       recipientId = new XdbContactId(contactId); 
      } 

      return recipientId; 
     } 
    } 

    protected virtual ID ContactId 
    { 
     get 
     { 
      if (!Email.Visible || string.IsNullOrEmpty(Email.Text)) 
      { 
       return new ID(Tracker.Current.Contact.ContactId); 
      } 

      var anonymousId = ClientApi.GetAnonymousIdFromEmail(Email.Text); 

      return anonymousId.HasValue ? new ID(anonymousId.Value) : new ID(Tracker.Current.Contact.ContactId); 
     } 
    } 

    protected virtual void UpdateEmailInXdb() 
    { 
     _recipientRepository.UpdateRecipientEmail(RecipientId, Email.Text); 
    } 

Он будет писать адрес электронной почты непосредственно в Монго, не дожидаясь сессии до конца. Включите это и связанные с ним свойства RecipientId и ContactId в свой код регистрации.

После того, как они зарегистрированы, вы можете зарегистрировать цель программно или отправить их на страницу «Спасибо», где цель может быть зарегистрирована («Дополнительно» - «Отслеживание»), или отправить сообщение и позволить зарегистрировать цель. Или создайте план взаимодействия с состояниями для каждого шага процесса (это лучший способ).

Вы также захотите добавить получателя в список, который позднее может сообщить информационное письмо. На самом деле, мне кажется, что пример формы подписки делает все, что вам нужно.

+0

Но я даже не отправил сообщение. Я думал, что он будет работать следующим образом: 1. пользователь нажимает кнопку отправки 2. Я обрабатываю его и регистрирую какой-то гол 3. EXM поймал этот гол и отправил сообщение Triggered на адрес электронной почты, который вводил пользователь в форме рассылки –

+0

Похоже, пример формы подписки делает все, что вам нужно. Я бы рекомендовал создать План взаимодействия и создать Кампанию и дополнительные цели для обработки перемещения контакта через поток. Триггерные сообщения могут быть отправлены как Действие в Плане взаимодействия. Таким образом, ваш код регистрации должен сохранить информацию о контакте. Остальное можно сделать с помощью аналитики страниц, кампании и некоторых целей. Не стесняйтесь меня, и мы можем поговорить более подробно. –

+0

Sitecore EXM 3.2 из коробки (OOTP) Форма подписки не работает. Вам нужно написать этот код вручную. Это исправлено в исходной версии EXM 3.3, для которой требуется обновление Sitecore 8.1. 3. https://dev.sitecore.net/Downloads/Email%20Experience%20Manager/Email%20Experience%20Manager%2033/Email%20Experience%20Manager%2033%20Initial % 20Release/Release% 20Notes –