发布 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 将聚合用户登录的所有终结点的状态,以提供单个状态。例如,如果用户在其电脑上登录到 Lync,其状态设置为"离开",并且在其移动客户端上登录到存在"可用",则所有用户都将看到聚合状态为"可用",因为他可以在其中一个终结点上访问。但是,他的 Lync 客户端仍将处于"离开"状态。
所以我认为同样的事情正在发生在你身上。UCMA 应用只是您从中发布状态的另一个终结点。您可能正在发布"可用"状态,但它是来自 UMCA 应用程序中的终结点的状态,因此它不会影响他登录的任何其他终结点,例如 Lync 客户端。但是,所有其他用户将看到聚合状态。
这更像是一个有根据的猜测,而不是我用代码证明的任何东西。我已经通过SDK进行了侦察,但是我看不到任何方法可以"覆盖"其他端点的存在(实际上,这样做感觉像是错误的行为)。