使用PresenceServices BeginPresenceQuery时,Ucma4延迟响应

时间:2016-01-16 16:49:01

标签: lync-2013 ucma

在测试机器上,当向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;
    }
}

1 个答案:

答案 0 :(得分:1)

对于如此众多的用户,我建议您使用Presence Subscription来通知您当前的状态和状态更改,而不是尝试同时检查所有用户的存在。

有关详细信息,请参阅以下有关使用状态和组的Microsoft文章https://msdn.microsoft.com/en-us/library/office/hh456406(v=office.14).aspx

上述链接中有很多内容,但您所使用的功能以RemotePresenceView类为中心。