这是我的问题:我从 3 个月开始从事一个大型 UCMA 项目,现在我想添加一个小功能。
我有很多可以动态添加、修改或删除的 ApplicationEndpoint,我希望在每次创建 ApplicationEndpoint 时指定一张将在 Microsoft Lync 上显示的图片。
我已经有很多其他的功能,但我真的很想拥有这个。
我搜索了几天,但我没有找到任何东西,所以在告诉自己无法完成之前,我想问一下!
有谁知道这是否可能?在那种情况下,你能告诉我怎么做吗?
谢谢
迟到总比没有好,但这可能对某人有所帮助。
我不确定这是否适用于应用程序端点,但您可以肯定地发布用户端点的照片设置(我已经这样做了,它可以工作)。可以在 MSDN 上找到有关发布状态的一些基本信息:Publishing Presence。
发布状态信息(包括照片设置)在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);
真的应该这样做。我最终明确地发布到所有关系级别,因为它没有按逻辑预期级联数据。这变成了一个相当长的回复,也供我自己将来参考。请让我知道这是否也适用于应用程序端点。
很确定你不能这样做。因为它是一个应用程序端点,根据定义,它与任何一个特定用户都不相关。不过肯定会很好。:)