如何检索联系人';s关键词与Tridion';s出站电子邮件API

本文关键字:Tridion API 电子邮件 关键词 何检索 联系人 检索 | 更新日期: 2023-09-27 18:27:34

我正在使用Tridion.OutboundEmail.ContentManagement API来检索和管理联系人详细信息。

检索Contacts工作正常,正如取回ExtendedDetails字典一样,但Keywords TcmUriCollection始终为空。

[Test]
public void GetContacts_via_address_book()
{
    var uri = new TcmUri(101, 2, TcmItemTypes.StaticAddressBook);
    var addressBook = new StaticAddressBook(uri);
    var contacts = addressBook.GetContacts();
    foreach (var contact in contacts) 
    {
        var firstName = contact.ExtendedDetails["NAME"].StringValue;
        Assert.That(contact.EmailAddress, Is.Not.Empty); // PASS
        Assert.That(firstName, Is.Not.Empty); // PASS
        Assert.That(contact.Keywords.Count, Is.GreaterThan(0)); // FAIL
    }
}

我还尝试了以下方法:

[Test]
public void GetContacts_via_filter()
{
    var uri = new TcmUri(101, 2, TcmItemTypes.StaticAddressBook);
    var addressBook = new StaticAddressBook(uri);
    var filter = new ContactFilter(UserContext.Current);
    var contacts = Contact.GetContacts(filter, addressBook);
    foreach (var contact in contacts) 
    {
        var firstName = contact.ExtendedDetails["NAME"].StringValue;
        Assert.That(contact.EmailAddress, Is.Not.Empty); // PASS
        Assert.That(firstName, Is.Not.Empty); // PASS
        Assert.That(contact.Keywords.Count, Is.GreaterThan(0)); // FAIL
    }
}

我甚至可以向联系人的Keywords集合添加一个关键字并保存它,它在Tridion中正确显示,但当我再次检索同一联系人时,该集合再次为空。

是否有人有使用此API的经验,和/或知道问题所在?

如何检索联系人';s关键词与Tridion';s出站电子邮件API

这是因为在获取联系人列表时不会加载Keywords。出于性能原因,只有一部分数据可用。

要解决此问题,您需要重新加载每个联系人。由于"联系人"是从数据库流式传输的,因此您不能在循环中执行此操作。因此,您需要首先构建联系人列表,然后循环查看并完整加载它们。

有关更多信息和示例,请参阅我关于该主题的博客文章:http://pkjaer.wordpress.com/2011/12/01/looping-through-contacts/