0

簡単なニュースレター フォームを作成する必要があります。このフォームは次のように機能します。

  • ユーザーがメールを入力し、送信ボタンを押す
  • ユーザーは、確認リンクが記載された電子メールのメッセージを受け取ります
  • ユーザーがリンクをクリックすると、メールが受信者リストに追加されます

このフォームは EXM のヘルプで動作するはずです

サブスクリプション用のリンクを含むトリガー メッセージを EXM に作成しました。そして、ニュースレターの目標をトリガーするための送信ボタン用にこのコードを書きました

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

ログに次のエラーが表示されます。ただし、トリガーされたメッセージには受信者リストがありません

4

1 に答える 1

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 プロパティをサインアップ コードに含めます。

サインアップしたら、目標をプログラムで登録するか、目標を登録できるサンキュー ページに送信するか (詳細 - 追跡)、メッセージを送信して目標を登録させることができます。または、プロセスの各ステップの状態を含むエンゲージメント プランを作成します (これが最善の方法です)。

また、ニュースレター メッセージで後で使用できるリストに受信者を追加することもできます。実際、Subscription Form の例が必要なすべてを行っているように見えます。

于 2016-05-16T20:49:59.270 に答える