2016-05-16 21 views
0

Ich muss ein einfaches Newsletter-Formular erstellen. Diese Form sollte wie folgt funktionieren:Sitecore EXM 3.2 (ECM) Ziel der ausgelösten Nachricht zuweisen

  • Benutzer gibt eine E-Mail und drückt auf den Absenden-Button
  • Benutzer recieves Nachricht per E-Mail mit Bestätigungslink
  • Nach Benutzer klickt auf den Link seine E-Mail Empfängerliste hinzugefügt wird

sollte diese Form der Arbeit mit Hilfe EXM

I Triggered-Nachricht in dem EXM mit Link zur Zeichnung erstellt habe. Und ich schrieb diesen Code für die Schaltfläche Senden für Auslöser des Newsletter Tor

[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(); 

    } 

Wie ich meine ausgelöst Mitteilung an den newsletterGoal zuordnen kann? Auch versuche ich manuell Nachricht auf diese Weise senden:

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); 

Und ich sehe Fehler im Protokoll: Der Empfänger ‚xdb: 857bbea1-1f18-4621-a798-178399cd0b54‘ existiert nicht. Aber die ausgelöste Nachricht hat keine Empfängerliste

Antwort

1

Ziele werden Nachrichten nicht direkt zugewiesen. Sie können jedoch Auftragspläne und Kampagnen zuweisen. Jede Nachricht hat ihren eigenen Angriffsplan, um die Kontaktaktionen mit der Nachricht zu verfolgen. Wenn Sie eine Kampagne erstellen, die ein Ziel auslöst, können Sie dies der Nachricht zuweisen und sie wird dem Kontakt zugeordnet, wenn sie die Nachricht erhält. Sie können den Nachrichtenbereitstellungsplan auch dazu verwenden, Ereignisse auszulösen, wenn der Kontakt diese Status durchläuft.

Außerdem fehlen bei der Aufzeichnung der Kontaktdaten einige Details. Sehen Sie sich die Newsletter-Registrierungssteuerung an, die im EXM-Modul enthalten ist. Der wichtige Teil drin ist dies:

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); 
    } 

Es wird die E-Mail-Adresse direkt an Mongo, anstatt zu warten, für die Sitzung zu beenden schreiben. Fügen Sie diese und die zugehörigen RecipientId- und ContactId-Eigenschaften in Ihren Anmeldecode ein.

Sobald sie angemeldet sind, können Sie das Ziel programmgesteuert registrieren oder senden Sie sie auf eine Seite, wo das Ziel registriert werden kann (Advanced - Tracking), oder senden Sie die Nachricht und lassen Sie das Ziel registrieren. Oder erstellen Sie einen Verbindungsplan mit Zuständen für jeden Schritt des Prozesses (dies ist der beste Weg).

Sie möchten den Empfänger auch zu einer Liste hinzufügen, die die Newsletter-Nachricht später verwenden kann. Eigentlich sieht es für mich so aus, als ob das Beispiel-Abo-Formular alles was du benötigst.

+0

Aber ich habe noch nicht einmal eine Nachricht gesendet. Ich dachte, dass es so funktionieren würde: 1. Benutzer klickt auf den Submit-Button 2. Ich verarbeite es und registriere ein Ziel 3. EXM fangen dieses Ziel wurde registriert und senden Sie Triggered Nachricht an die E-Mail, die Benutzer in Newsletter-Formular eingegeben –

+0

Es sieht so aus, als ob das Beispiel-Abonnement-Formular alles bietet, was Sie brauchen. Ich würde empfehlen, einen Interaktionsplan zu erstellen und eine Kampagne und zusätzliche Ziele zu erstellen, um den Kontakt durch den Fluss zu verschieben. Ausgelöste Nachrichten können als Aktion in einem Interventionsplan gesendet werden. Auf diese Weise müssen alle Anmeldedaten die Kontaktinformationen speichern. Der Rest kann mit Seitenanalysen und einer Kampagne und einigen Zielen erledigt werden. Fühlen Sie sich frei, mich zu plaudern, und wir können mehr Details sprechen. –

+0

Sitecore EXM 3.2 Out of the Box (OOTP) Abonnementformular funktioniert nicht. Sie müssen diesen Code manuell schreiben. Dies wird in der ersten Version von EXM 3.3 behoben, die Sitecore 8.1 Update 3 erfordert. Https://dev.sitecore.net/Downloads/Email%20Experience%20Manager/Email%20Experience%20Manager%2033/Email%20Experience%20Manager%2033%20Initial % 20Release/Release% 20Notes –