【问题标题】:Clearing a published presence with UCMA 3.0使用 UCMA 3.0 清除已发布的存在
【发布时间】:2012-04-12 14:09:40
【问题描述】:

我在受信任的应用程序端点中发布用户状态,但我也想在不再需要此状态时清除它。

这样做是否是终止 UserEndpoint 实例的唯一选择?

我正在使用这个代码 sn-p:

    user.Endpoint.LocalOwnerPresence.BeginPublishPresence(
        user.categories,
        arBeginPublishPresence =>
        {
            try
            {
                user.Endpoint.PresenceServices.EndUpdatePresenceState(arBeginPublishPresence);
                logger.log("Published presence for {0} with state {1}.", user.SipUserUri, newState.Availability);
            }
            catch (RealTimeException ex)
            {
                logger.log("Failed publishing presence for {0}. {1}", user.SipUserUri, ex);
            }
        },
        null);

其中 user.Endpoint 是该用户的 UserEndpoint,而 user.categories 是 PresenceCategoryWithMetaData 对象的列表。

【问题讨论】:

    标签: c# lync-2010 ucma


    【解决方案1】:

    首先 - 我很惊讶这真的有效!您在 LocalOwnerPresence 对象上调用 BeginPublishPresence,然后在 aysnc 回调中调用 PresenceServices 对象上的 EndUpdatePresenceState。请告诉我这是一个错字,否则我将不得不扔掉我认为我知道的关于 Lync 开发和异步编程的所有内容;o)

    无论如何 - 假设您正在发布与

    LocalOwnerPresence.BeginPublishPresence

    (并在异步回调中调用对应的EndPublishPresence),可以调用

    LocalOwnerPresence.BeginDeletePresence

    删除发布。

    【讨论】:

    • 我从使用 Microsoft Lync Server 2010 的专业统一通信开发,第 9 章,关于“使用 Presence Grammar 发布 Presence”一书中获得了大部分内容。如果这是大错特错,
    • 我尝试使用 BeginDeletePresence,但在原始 BeginPublishPresence 的异步回调代码之外。习惯了Java,c#还是有点糊涂。
    • 正如我在其他地方所说的,我有一个错误,我为每个状态更新使用了一个新的实例 ID。除非我跟踪所有这些,否则 BeginDeletePresence 不仅不会工作,而且在某些时候 Lync 会厌倦并终止会话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多