2016-05-16 7 views
0

簡単なニュースレターフォームを行う必要があります。この形式は、次のように動作するはずです:Sitecore EXM 3.2(ECM)トリガーされたメッセージに目標を割り当てる

  • ユーザーは、電子メールを入力し、送信ボタンを押した
  • ユーザーは確認リンクを電子メールでメッセージをrecieves彼の電子メールが受信者リストに追加されたリンクをユーザーがクリックする後

この形式は、私は、サブスクリプションへのリンクをEXMでトリガメッセージを作成したヘルプEXM

で作業する必要があります。トリガーのためのニュースレターの目標私はnewsletterGoalに私のトリガーメッセージを割り当てることができますどのように

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

    } 

を送信ボタンをため そして、私はこのコードを書きましたか? はまた、私はメッセージをこのように送って手動で試してみてください。

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 'が存在しません。しかしトリガされたメッセージには受信者リストがありません

答えて

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

セッションが終了するのを待つのではなく、直接Mongoに電子メールアドレスを書き込みます。これと関連するRecipientIdとContactIdのプロパティをサインアップコードに含めます。

登録したら、目標をプログラムで登録したり、ゴールを登録できる「ありがとう」ページ(アドバンストラッキング)に送信したり、メッセージを送信して目標を登録したりできます。または、プロセスの各ステップの状態を含むエンゲージメントプランを作成します(これが最良の方法です)。

ニュースレターメッセージが後で使用できるリストに受信者を追加することもできます。実際には、サンプルの購読フォームが必要なものすべてを処理するように見えます。

+0

でも、私はメッセージを送っていません。 1.ユーザーが送信ボタンをクリックする 2.処理して目標を登録する 3. EXMが目標を登録し、ニュースレターフォームに入力したメールにトリガされたメッセージを送信する –

+0

サンプル購読フォームは、必要なものすべてを処理しているようです。私はエンゲージメントプランを作成し、キャンペーンを作成し、フローを介して連絡先を移動させるための追加の目標を作成することをお勧めします。トリガされたメッセージは、エンゲージメントプランのアクションとして送信できます。サインアップコードが行う必要があるこの方法で連絡先情報を保存します。残りは、ページ分析とキャンペーンといくつかの目標で行うことができます。午後には気軽に話してください。 –

+0

Sitecore EXM 3。2 Out of the Box(OOTP)購読フォームが機能しません。このコードを手動で記述する必要があります。これは、Sitecore 8.1アップデート3を必要とするEXM 3.3初回リリースで修正されています。https://dev.sitecore.net/Downloads/Email%20Experience%20Manager/Email%20Experience%20Manager%2033/Email%20Experience%20Manager%2033%20Initial %20Release/Release%20Notes –

関連する問題