使用 PresenceServices BeginPresenceQuery 时 Ucma4 延迟响应
Ucma4 Delayed Response when using PresenceServices BeginPresenceQuery
在测试机上,当向 FRONT END 发送请求时,我得到了很好的响应(两秒)。
在生产中,请求需要 30 秒或更长时间,组织有超过 5000 个用户。
是否还有其他方法可以使用 UCMA 获得 SIP 状态?
UCWA无法使用。
有什么想法吗?
代码:
public Dictionary<string, string> GetAgentsAvailability(List<string> usersUris)
{
lock (lockObj)
{
AgentsAvailability = new Dictionary<string, string>();
try
{
if (usersUris != null && usersUris.Count > 0)
{
IAsyncResult agentAvailabilityCheck = ApplicationEndPoint.PresenceServices.BeginPresenceQuery(usersUris, new string[] { "state" },null, null);
WaitHandle[] w = new WaitHandle[] { agentAvailabilityCheck.AsyncWaitHandle };
WaitHandle.WaitAll(w, 3000);
}
else
{
WriteEntry.ELog("Platform - GetAgentsAvailability - No Agent SIPs to check.", EventLogEntryType.Information);
}
}
catch (Exception ex)
{
WriteEntry.ELog(ex.ToString(), EventLogEntryType.Error);
throw;
}
return AgentsAvailability;
}
}
对于如此大量的用户,我建议使用 Presence Subscription 来通知您当前的状态和状态变化,而不是尝试一次检查所有用户的状态。
有关使用在线状态和组的更多详细信息,请参阅以下 Microsoft 文章https://msdn.microsoft.com/en-us/library/office/hh456406(v=office.14).aspx
上面link的内容很多,但是你想要的功能集中在RemotePresenceView
class.
在测试机上,当向 FRONT END 发送请求时,我得到了很好的响应(两秒)。 在生产中,请求需要 30 秒或更长时间,组织有超过 5000 个用户。 是否还有其他方法可以使用 UCMA 获得 SIP 状态? UCWA无法使用。 有什么想法吗?
代码:
public Dictionary<string, string> GetAgentsAvailability(List<string> usersUris)
{
lock (lockObj)
{
AgentsAvailability = new Dictionary<string, string>();
try
{
if (usersUris != null && usersUris.Count > 0)
{
IAsyncResult agentAvailabilityCheck = ApplicationEndPoint.PresenceServices.BeginPresenceQuery(usersUris, new string[] { "state" },null, null);
WaitHandle[] w = new WaitHandle[] { agentAvailabilityCheck.AsyncWaitHandle };
WaitHandle.WaitAll(w, 3000);
}
else
{
WriteEntry.ELog("Platform - GetAgentsAvailability - No Agent SIPs to check.", EventLogEntryType.Information);
}
}
catch (Exception ex)
{
WriteEntry.ELog(ex.ToString(), EventLogEntryType.Error);
throw;
}
return AgentsAvailability;
}
}
对于如此大量的用户,我建议使用 Presence Subscription 来通知您当前的状态和状态变化,而不是尝试一次检查所有用户的状态。
有关使用在线状态和组的更多详细信息,请参阅以下 Microsoft 文章https://msdn.microsoft.com/en-us/library/office/hh456406(v=office.14).aspx
上面link的内容很多,但是你想要的功能集中在RemotePresenceView
class.