在 Lync 2013 中显示用户图片

Posted

技术标签:

【中文标题】在 Lync 2013 中显示用户图片【英文标题】:Display User Picture in Lync 2013 【发布时间】:2013-10-16 13:13:48 【问题描述】:

我正在使用 lync 2013 sdk 开发小型应用程序。 sdk 中是否提供了任何方法,我可以实现一个功能,允许用户使用 SDK 中提供的任何 API 上传他的图片。

如果可能的话,如果用户是在活动目录中配置的,那么最好的存储方式和存储方式是什么?

等待您的积极回应。

问候

阿米特

【问题讨论】:

【参考方案1】:

您可以使用 SDK 通过 SDK 获取到照片的流

var photoStream = Client.Self.Contact.GetContactInformation(ContactInformationType.Photo) as System.IO.Stream

虽然您可以读取流,但无法写入,因为此时您正在查看来自 AD 的联系信息。

感觉就像您想写一些东西来更改 AD 的 photoThumbnails 属性中的照片,而不是在 Lync 中。

【讨论】:

感谢保罗的回复。有什么方法可以让用户通过 Lync 2013 SDK 提供的任何 API 在 AD 或 lync 中上传图片? 如何确保我们能够在一次调用中检索图像?因为有时无法检索图像。【参考方案2】:

2013 年 12 月 11 日更新

最新的 Lync 更新(Lync 客户端 CU3(11 月更新))可以选择将照片添加回 GUI。

Link to the KB Article Link to the Download

可以在此处找到带有解释和屏幕截图的文章: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 上发布状态信息(包括照片设置)。 UserEndpointApplicationEndpoint 都派生自 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);

确实应该这样做。我最终明确发布到所有关系级别,因为它没有按逻辑预期级联数据。

【讨论】:

以上是关于在 Lync 2013 中显示用户图片的主要内容,如果未能解决你的问题,请参考以下文章

在 UI 抑制模式下向对话 Lync 2013 SDK 中的特定用户发送 IM 消息

计算 Lync 的可用用户数

Lync 2010 UMCA 3.0 自动安排会议加入用户

如果网站在服务器上并且 Lync 在本地用户环境中,我如何让 Lync 客户端正常工作?

Lync 2010 更改发件人的显示名称

Lync 检索用户位置