2016-09-22 4 views
0

뉴스 레터를 구독하려면 확인란이있는 ContactForm이 있습니다.Sitecore 8.1 EXM 3.2 : 프로그램 방식으로 목록 관리자의 목록에 연락처를 추가하는 방법은 무엇입니까?

구독자가 이미 sitecore 연락처인지 확인하고이 사람의 데이터를 업데이트 한 다음 목록 관리자의 RecipientsList에 연락처를 추가해야합니다. 내가 MongoDB를 screen here 에서 찾을 수 있지만

var recipientCollectionRepository = RecipientCollectionRepository.GetDefaultInstance(); 
var list = recipientCollectionRepository.GetEditableRecipientCollection(listId); 

var contactRepository = new ContactRepository(); 
var contact = contactRepository.LoadContactReadOnly(ContactEmail); 
if (contact != null) 
{ 
    if (list != null) 
    { 
     var xdbContact = new XdbContactId(contact.ContactId); 
     if (!list.Contains(xdbContact, true).Value) 
     { 
      list.AddRecipient(xdbContact); 
     } 
    } 
} 
else 
{ 
    contact = contactRepository.CreateContact(Sitecore.Data.ID.NewID); 
    contact.Identifiers.AuthenticationLevel = Sitecore.Analytics.Model.AuthenticationLevel.None; 
    contact.Identifiers.Identifier = ContactEmail; 

    contact.Tags.Add("ContactLists",listId); 

    var contactEmailAddresses = contact.GetFacet<IContactEmailAddresses>("Emails"); 

    if (!contactEmailAddresses.Entries.Contains("Email")) 
    { 
     contactEmailAddresses.Entries.Create("Email").SmtpAddress = ContactEmail; 
     contactEmailAddresses.Preferred = "Email"; 
    } 
    var contactPersonalInfo = contact.GetFacet<IContactPersonalInfo>("Personal"); 
    contactPersonalInfo.FirstName = ContactFirstName; 
    contactPersonalInfo.Surname = ContactSurname; 

    if (list != null) 
    { 
    var xdbContact = new XdbContactId(contact.ContactId); 

    if (!list.Contains(xdbContact, true).Value) 
    { 
     list.AddRecipient(xdbContact); 
    } 

    contactRepository.SaveContact(contact, new ContactSaveOptions(true, null)); 
} 

}

내가 ListManager 내 목록을 볼 수 없습니다 :

여기 내 코드입니다.

ListManager의 목록에서 내 새 연락처를 볼 수있게하려면 어떻게해야합니까?

+0

새로 추가 된 연락처를 다시 색인하는 데 시간이 필요합니다. – Anton

+0

예, 추가 된 연락처를 볼 수 있지만 나중에 다른 문제가 발생했습니다. 목록보기의 수신자 수는 0입니다. –

답변

0

세션 끝 이후에만 추가됩니다.

MongoDB 호출을 제한하는 기본 동작입니다.

또한 EXM 3.2 버전에서는 연락처 목록 수신자 수에 문제가있었습니다. 핫 픽스에 대해서는 sitecore 지원에 문의하십시오. 또는 EXM 3.3으로 업그레이드 할 수 있습니다.