我正在使用 lync 2013 sdk 开发小型应用程序。sdk 中是否提供了任何方法,我可以实现一个功能,允许用户使用 SDK 中提供的任何 API 上传他的图片。
如果可能的话,如果用户在活动目录中配置,那么存储它的最佳方式是什么以及在哪里?
等待您的积极回应。
问候
阿米特
我正在使用 lync 2013 sdk 开发小型应用程序。sdk 中是否提供了任何方法,我可以实现一个功能,允许用户使用 SDK 中提供的任何 API 上传他的图片。
如果可能的话,如果用户在活动目录中配置,那么存储它的最佳方式是什么以及在哪里?
等待您的积极回应。
问候
阿米特
您可以使用 SDK 通过 SDK 获取照片流
var photoStream = Client.Self.Contact.GetContactInformation(ContactInformationType.Photo) as System.IO.Stream
虽然您可以读取流,但您无法写入它,因为此时您正在查看来自 AD 的联系信息。
感觉就像您想写一些东西来更改 AD 的 photoThumbnails 属性中的照片,而不是在 Lync 中。
最新的 Lync 更新(Lync 客户端 CU3(11 月更新))可以选择设置添加回 GUI 的照片。
可以在此处找到带有解释和屏幕截图的文章:Lync 客户端 CU3(11 月更新)– 显示来自网站的图片!.
虽然这是一个不同的问题,但我对这个问题(显示应用程序端点的照片)的回答在这里也是有效的:
基本上,有一个选项可以将用户的照片设置为 URL,但它不再显示在 Lync 2013 客户端界面中(它在 Lync 2010 客户端中存在)。如果您可以获取将图像发布到 Web 可访问位置的代码,则可以将 URL 发布到它并以这种方式更改您的用户图片。
作为参考,另一个问题的答案:
发布状态信息(包括照片设置)在LocalEndpoint.LocalOwnerPresence
. 两者UserEndpoint
都ApplicationEndpoint
来自LocalEndpoint
,所以这应该是可行的。
实际的发布会稍微复杂一些,因为要发布的“级别”有很多不同的组合:
首先,InstanceID
您需要了解一些值,请在此处阅读它们:Presence data source and category instance ID
其次,这种存在适用于谁是有价值的,请参阅Microsoft.Rtc.Collaboration.Presence.PresenceRelationshipLevel
。不要在 上发布Unknown
,你会得到一个例外。
public enum PresenceRelationshipLevel
{
Unknown = -1,
Everyone = 0,
External = 100,
Colleagues = 200,
Workgroup = 300,
Personal = 400,
Blocked = 32000,
}
您需要PresenceCategoryWithMetaData
为用户照片属性发布一个,它是容器的一部分0x5
,“Presentity information”。
var photoPresence = new PresenceCategoryWithMetaData(
0x5, // The container id
(int)PresenceRelationshipLevel.Everyone,
new ContactCard(0x5) // Same container ID again
{
IsAllowedToShowPhoto = true,
PhotoUri = "<uri to your photo here"
});
你也可以在这个对象上设置一个ExpiryPolicy
,真的应该是自我解释的。然后在您的端点上发布此存在对象:
Endpoint.LocalOwnerPresence.BeginPublishPresence(new[] { photoPresence }, cb => {
Endpoint.LocalOwnerPresence.EndPublishPresence(cb);
}, null);
真的应该这样做。我最终明确地发布到所有关系级别,因为它没有按逻辑预期级联数据。