private static bool CheckAgentStatus(Agent agent) { try { var uiMode = UiModes.Offline; switch (agent.AgentMode) { case AgentMode.Offline: break; case AgentMode.Inbound: uiMode = UiModes.Inbound; break; case AgentMode.Outbound: uiMode = UiModes.Outbound; break; default: throw new ArgumentOutOfRangeException(); } var uiState = UiStatus.Initializing; new ComMethods.SwitchOnType <AgentEvent>(agent.AgentCurrentState) .Case <AgentInitiate>(initiate => { uiState = UiStatus.Initializing; }) .Case <AgentIdle>(i => { uiState = UiStatus.Idle; }) .Case <AgentBusy>(b => { uiState = UiStatus.Busy; }) .Case <AgentAcw>(b => { uiState = UiStatus.Acw; }) .Case <AgentBreak>(b => { uiState = UiStatus.Break; }); var startTIme = DateTime.Now; var client = new ResourceStatusCheckerClient("BasicHttpBinding_IResourceStatusChecker"); var sqid = SequenceNumberGenerator.Instance.GetNextNo; var reply = client.CheckCurrentState(agent.Auth.SecurityToken, uiState, uiMode, sqid); Logger.Instance.LogMessage(Logger.LogAppender.DuoLogger5, string.Format("ResourceStatusChecker. Time Take :{0}. Softphone Status : {1} Map>uiState {2}. Reply : {3}, sqid : {4}", DateTime.Now.Subtract(startTIme).TotalMilliseconds, agent.AgentCurrentState, uiState, reply, sqid), Logger.LogLevel.Info); return((reply.IsMatching == false) && reply.CurrentMode == UiModes.Offline && reply.CurrentState == UiStatus.Initializing); } catch (Exception exception) { Logger.Instance.LogMessage(Logger.LogAppender.DuoLogger5, "CheckAgentStatus", exception, Logger.LogLevel.Error); return(true); } }
public static bool CheckAgentStatus(string securityToken, DialerState state) { try { var uiState = UiStatus.Initializing; switch (state) { case DialerState.Initiate: uiState = UiStatus.Initializing; break; case DialerState.NotOnCall: uiState = UiStatus.Idle; break; case DialerState.CallRouted: case DialerState.CallIncoming: case DialerState.CallOutgoing: case DialerState.OnHold: case DialerState.AgentSupervisorTalking: case DialerState.AgentClientTalking: case DialerState.Conference: case DialerState.etlCall: case DialerState.swapCall: case DialerState.transferCall: case DialerState.transferIvr: case DialerState.ACW: uiState = UiStatus.Busy; break; default: throw new ArgumentOutOfRangeException("state"); } var startTIme = DateTime.Now; var client = new ResourceStatusCheckerClient("BasicHttpBinding_IResourceStatusChecker"); var reply = client.CheckCurrentState(securityToken, uiState, UiModes.Inbound); Logger.Instance.LogMessage(Logger.LoggerFiles.DuoLogger1, string.Format("ResourceStatusChecker. Time Take :{0}. Softphone Status : {1} Map>uiState {2}. Reply : {3}", DateTime.Now.Subtract(startTIme).TotalMilliseconds, state, uiState, reply), Logger.LogLevel.Info); return((reply.IsMatching == false) && reply.CurrentMode == UiModes.Offline && reply.CurrentState == UiStatus.Initializing); } catch (Exception exception) { Logger.Instance.LogMessage(Logger.LoggerFiles.DuoDefault, "CheckAgentStatus", exception, Logger.LogLevel.Error); return(true); } }