首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用UCMA获取用户存在?

使用UCMA获取用户存在?
EN

Stack Overflow用户
提问于 2019-09-26 02:52:09
回答 1查看 182关注 0票数 1

我只需要给出一个电子邮件地址,并让ucma协议将用户的存在从skype发送回业务使用C#。

有没有人对如何获得用户在ucma中的存在有一些建议?关于msdn的教程对此并不清楚。

这是我目前的代码

代码语言:javascript
复制
List<string> targets = new List<string>();
targets.Add("sip:fry@nnylync.info");
_endpoint.PresenceServices.BeginPresenceQuery(targets, new string[] {"state"}, null, ar =>
{
    List<RemotePresentityNotification> presence = new List<RemotePresentityNotification>(_endpoint.PresenceServices.EndPresenceQuery(ar));
    foreach (RemotePresentityNotification rpn in presence)
    {
         Console.WriteLine(rpn.PresentityUri + " is " + rpn.AggregatedPresenceState.EndpointLocation);
    }
}, null);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-26 18:54:58

你的代码看起来很好。我唯一想说的是,它返回了为sip地址注册的所有端点的存在状态列表。您通常希望使用的是聚合存在,即所有skype应用程序使用和显示的总体存在。

所以你通常会使用:

  • presence.AggregatedPresenceState.Availability是基本availability
  • presence.AggregatedPresenceState.Activity.ActivityToken是众所周知的基本可用性的子状态,如“in -a meeting”、“on-on phone”,etc.
  • presence.AggregatedPresenceState.Activity.CustomTokens是由skype中为用户定义的自定义存在状态的区域设置字符串的列表。

其中还有很多其他信息,包括用户可以设置的所有其他信息,比如位置、(EndpointLocation)和注意事项(PersonalNote).。

另外,使用的是queryResultHandler参数(您在示例中传入null,这很好)。这将在出现结果可用时调用。当您为查询提供多个sip地址列表时,这是非常有用的。当所有存在结果都进入时(即整个操作完成),就会调用userCallback,这可能需要一段时间,任何故障都将导致对EndPresenceQuery调用的整个调用失败。当每个成功的存在结果出现时,queryResultHandler将被多次调用,因此您可以更快地获得结果,并且看到所有成功的结果,即使某些结果可能失败并导致EndPresenceQuery抛出。

除此之外,如果希望随时了解端点何时更改存在,还可以订阅端点以进行存在更改。您必须小心订阅,因为一个端点可以订阅它们的数量是有限制的。这是进入轮询和订阅的订阅类型的地方。根据您正在编写的应用程序类型,取决于您需要的订阅类型。通常,您只想订阅当前正在显示/使用的端点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58108936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档