2

这是我的问题:我从 3 个月开始从事一个大型 UCMA 项目,现在我想添加一个小功能。

我有很多可以动态添加、修改或删除的 ApplicationEndpoint,我希望在每次创建 ApplicationEndpoint 时指定一张将在 Microsoft Lync 上显示的图片。

我已经有很多其他的功能,但我真的很想拥有这个。

我搜索了几天,但我没有找到任何东西,所以在告诉自己无法完成之前,我想问一下!

有谁知道这是否可能?在那种情况下,你能告诉我怎么做吗?

谢谢

4

2 回答 2

1

迟到总比没有好,但这可能对某人有所帮助。

我不确定这是否适用于应用程序端点,但您可以肯定地发布用户端点的照片设置(我已经这样做了,它可以工作)。可以在 MSDN 上找到有关发布状态的一些基本信息:Publishing Presence

发布状态信息(包括照片设置)在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,“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);

真的应该这样做。我最终明确地发布到所有关系级别,因为它没有按逻辑预期级联数据。这变成了一个相当长的回复,也供我自己将来参考。请让我知道这是否也适用于应用程序端点。

于 2013-06-11T08:02:18.077 回答
0

很确定你不能这样做。因为它是一个应用程序端点,根据定义,它与任何一个特定用户都不相关。不过肯定会很好。:)

于 2012-07-10T11:20:12.590 回答