发布 Lync 2010 用户状态未显示在用户 Lync 客户端上

本文关键字:用户 Lync 客户端 显示 状态 2010 发布 | 更新日期: 2023-09-27 18:30:58

在受信任的应用程序端点中,我必须根据外部状态提供程序发布用户状态,我可以这样做(稍后当外部源进入"空闲"时清除它们是一个不同的问题)

但问题是,如果我为用户 A 发布新状态,这不会反映在用户拥有 Lync 客户端上,尽管其他人都会获得更新。

目前,我正在使用以下代码片段进行发布:

    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.category 是:

            PresenceCategoryWithMetaData stateWithMetaDataForPersonal = new PresenceCategoryWithMetaData(++instanceId, 400, newState);
            PresenceCategoryWithMetaData stateWithMetaDataForWorkgroup = new PresenceCategoryWithMetaData(instanceId, 300, newState);
            PresenceCategoryWithMetaData stateWithMetaDataForColleagues = new PresenceCategoryWithMetaData(instanceId, 200, newState);
            PresenceCategoryWithMetaData stateWithMetaDataForExternal = new PresenceCategoryWithMetaData(instanceId, 100, newState);
            PresenceCategoryWithMetaData stateWithMetaDataForAll = new PresenceCategoryWithMetaData(instanceId, 0, newState);
            if (instanceId >= Int64.MaxValue)
            {
                instanceId = 1;
            }
            stateWithMetaDataForPersonal.ExpiryPolicy = expirypolicy;
            stateWithMetaDataForWorkgroup.ExpiryPolicy = expirypolicy;
            stateWithMetaDataForColleagues.ExpiryPolicy = expirypolicy;
            stateWithMetaDataForExternal.ExpiryPolicy = expirypolicy;
            stateWithMetaDataForAll.ExpiryPolicy = expirypolicy;
            stateWithMetaDataForPersonal.Expires = timeout;
            stateWithMetaDataForWorkgroup.Expires = timeout;
            stateWithMetaDataForColleagues.Expires = timeout;
            stateWithMetaDataForExternal.Expires = timeout;
            stateWithMetaDataForAll.Expires = timeout;
            user.categories =
                new List<PresenceCategoryWithMetaData>()
                        {
                            stateWithMetaDataForPersonal,
                            stateWithMetaDataForWorkgroup,
                            stateWithMetaDataForColleagues,
                            stateWithMetaDataForExternal,
                            stateWithMetaDataForAll
                        };

类别是地毯式轰炸存在状态,我只知道我做错了。不可能是这个...混乱。

请耐心等待,我是C#,.NET和UCMA的新手,直到一个月前才接触过它们。

发布 Lync 2010 用户状态未显示在用户 Lync 客户端上

对我来说似乎是正确的行为。Lync 将聚合用户登录的所有终结点的状态,以提供单个状态。例如,如果用户在其电脑上登录到 Lync,其状态设置为"离开",并且在其移动客户端上登录到存在"可用",则所有用户都将看到聚合状态为"可用",因为他可以在其中一个终结点上访问。但是,他的 Lync 客户端仍将处于"离开"状态。

所以我认为同样的事情正在发生在你身上。UCMA 应用只是您从中发布状态的另一个终结点。您可能正在发布"可用"状态,但它是来自 UMCA 应用程序中的终结点的状态,因此它不会影响他登录的任何其他终结点,例如 Lync 客户端。但是,所有其他用户将看到聚合状态。

这更像是一个有根据的猜测,而不是我用代码证明的任何东西。我已经通过SDK进行了侦察,但是我看不到任何方法可以"覆盖"其他端点的存在(实际上,这样做感觉像是错误的行为)。