迟到总比没有好,但这可能会对某人有所帮助。
我不确定这是否适用于应用程序端点,但您可以肯定地发布用户端点的照片设置(我已经这样做了,它可以工作)。有关发布存在的一些基本信息可以在 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“状态信息”的一部分。
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);
确实应该这样做。我最终明确地发布到所有关系级别,因为它没有按逻辑预期级联数据。这变成了一个相当长的回复,也供我自己将来参考。请让我知道这是否也适用于应用端点。