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

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

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

等待您的积极回应。

问候

阿米特

【问题讨论】:

    标签: c# lync lync-client-sdk lync-2013 instantmessenger


    【解决方案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。

    可以在此处找到带有解释和屏幕截图的文章: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);
    

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

    【讨论】:

      猜你喜欢
      • 2016-12-11
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      相关资源
      最近更新 更多