我正在使用lync 2013 sdk开发小型应用程序。在sdk中是否有任何方法可以实现允许用户使用SDK中提供的任何API上传其图片的功能。
如果可以,那么如果在活动目录中配置了用户,那么存储它的最佳方式是什么?在哪里?
等待你方的积极回应。
此致
阿米特
答案 0 :(得分:0)
您可以使用
通过SDK获取照片流var photoStream = Client.Self.Contact.GetContactInformation(ContactInformationType.Photo) as System.IO.Stream
虽然您可以阅读您无法写入的信息流,因为您此时正在查看AD的联系信息。
有点想要写一些东西来改变AD的photoThumbnails属性中的照片,而不是在Lync中。
答案 1 :(得分:0)
最新的Lync更新( Lync Client CU3(11月更新))可以选择将照片添加回GUI。
有关解释和屏幕截图的文章可在此处找到:Lync Client CU3 (November Update) – Show a picture from a website!。
虽然这是一个不同的问题,但我对这个问题(Displaying a photo for an Application endpoint)的回答在这里也是有效的:
基本上,可以选择将用户的照片设置为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
的一部分,“现状信息”。
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);
那应该这样做,真的。我最终明确地发布到所有关系级别,因为它没有按照逻辑预期将数据级联。