Lync - 与ContactEndpoints的不一致行为

Max*_*xim 5 c# lync

我正在为基于Lync的公司目录开发自定义UI.使用Lync 2013我执行此搜索:

Container.Instance.Lync.ContactManager.BeginSearch(SearchQuery,
            SearchProviders.GlobalAddressList,
            SearchFields.AllFields,
            SearchOptions.IncludeContactsWithoutSipOrTelUri,
            500,
            ContactsAndGroupsCallback, SearchQuery);
Run Code Online (Sandbox Code Playgroud)

对于每个匹配的联系人,我尝试访问其端点以显示电话号码:

var cit = ContactInformationType.ContactEndpoints;
var endpoints = contact.GetContactInformation(cit) as List<object>;
Run Code Online (Sandbox Code Playgroud)

问题

如果找到联系人在我用来连接Lync的帐户的联系人列表中,那么我可以访问完整的详细信息(5个端点).但是,如果他不在联系人列表中,我只能访问1个端点.

任何想法为什么会这样发生?是否需要关闭全球隐私设置?

如何随时访问所有端点?

谢谢.

PS:我试图单独加载结果集中的每个联系人,但仍然会得到相同的行为.

Max*_*xim 1

微软支持的答复:

您看到的行为是由于对 Lync 客户端的在线状态订阅进行了优化,因此订阅会延迟,直到 Lync 客户端需要必要的联系信息为止。照片是此优化的一个示例。另一个例子是 ContactEndpoints。请查看MSDN 文档中 Lync 2013 迁移文档页面的联系人在线状态订阅更改部分。具体来说,您必须为需要所有 ContactEndpoint 的联系人创建并维护自己的 ContactSubscription。