/** * Change state if connected call was terminated. * * @param event */ void handleAgentCompleteEvent(AgentCompleteEvent event) { AsteriskAgentImpl agent = getAgentByAgentId(event.getChannel()); if (agent == null) { logger.error("Ignored AgentCompleteEvent for unknown agent " + event.getChannel()); return; } agent.updateState(AgentState.AGENT_IDLE); }
/** * On AgentsEvent create a new Agent. * * @param event generated by Asterisk server. */ void handleAgentsEvent(AgentsEvent event) { AsteriskAgentImpl agent = new AsteriskAgentImpl( server, event.getName(), "Agent/" + event.getAgent(), AgentState.valueOf(event.getStatus())); logger.info("Adding agent " + agent.getName() + "(" + agent.getAgentId() + ")"); addAgent(agent); }
/** * Change state if agent logs out. * * @param event */ void handleAgentCallbackLogoffEvent(AgentCallbackLogoffEvent event) { AsteriskAgentImpl agent = getAgentByAgentId("Agent/" + event.getAgent()); if (agent == null) { logger.error( "Ignored AgentCallbackLogoffEvent for unknown agent " + event.getAgent() + ". Agents: " + agents.values().toString()); return; } agent.updateState(AgentState.AGENT_LOGGEDOFF); }
/** * Change state if agent logs in. * * @param event */ void handleAgentLoginEvent(AgentLoginEvent event) { AsteriskAgentImpl agent = getAgentByAgentId("Agent/" + event.getAgent()); if (agent == null) { synchronized (agents) { logger.error( "Ignored AgentLoginEvent for unknown agent " + event.getAgent() + ". Agents: " + agents.values().toString()); } return; } agent.updateState(AgentState.AGENT_IDLE); }
/** * Set state of agent. * * @param agent */ private void updateAgentState(AsteriskAgentImpl agent, AgentState newState) { logger.info("Set state of agent " + agent.getAgentId() + " to " + newState); synchronized (agent) { agent.updateState(newState); } }
/** * Add a new agent to the manager. * * @param agent agent to add. */ private void addAgent(AsteriskAgentImpl agent) { synchronized (agents) { agents.put(agent.getAgentId(), agent); } server.fireNewAgent(agent); }