private void handleAgentStateMessage(AgentStateMessage message) { Application.Current.Dispatcher.Invoke(new Action(() => { if (message.State == SwitchAgentState.LoggedIn) { if (message.DeviceId == _controllerDevice.Id) { getSwitchState(); } else { _client.Request(new GetDeviceInfoMessage { DeviceId = _controllerDevice.Id, TargetDeviceId = message.DeviceId }); } } else { if (message.DeviceId != _controllerDevice.Id) { var device = Devices.FirstOrDefault(d => d.Id == message.DeviceId); if (device != null) { device.Agent.State = message.State; } } } })); }
public void HandleMessage(CtiServiceSwitch @switch, Message message) { var connectMessage = message as ConnectMessage; if (connectMessage != null) { var device = @switch.Devices.FirstOrDefault(d => d.Id == connectMessage.Device.Id); if (device != null) { @switch.SendMessage(device, new SwitchMessage(SwitchMessageType.Disconnected)); } @switch.Devices.Add(connectMessage.Device); if (connectMessage.EnableGlobalSubscription) { @switch.GlobalSubscribers.Add(connectMessage.Device); } connectMessage.Device.Agent.State = SwitchAgentState.LoggedIn; connectMessage.Device.Agent.Device = connectMessage.Device; var agentStateMessage = new AgentStateMessage { State = connectMessage.Device.Agent.State, AgentId = connectMessage.Device.Agent.Id, DeviceId = connectMessage.Device.Id, }; @switch.SendMessage(connectMessage.Device, agentStateMessage); } }
private void notifyAgentState(Device device, SwitchAgentState state, CtiServiceSwitch @switch) { var agentStateMessage = new AgentStateMessage { AgentId = device.Agent.Id, DeviceId = device.Id, State = state, }; @switch.SendMessage(device, agentStateMessage); }
private void notifyAcw(SwitchInteraction interaction, CtiServiceSwitch @switch) { //var agentStateMessage = new AgentStateMessage { // AgentId = interaction.Agent.Id, // DeviceId = interaction.Agent.Device.Id, // State = SwitchAgentState.WrapUp, //}; var agentStateMessage = new AgentStateMessage { AgentId = interaction.Agent.Id, DeviceId = interaction.Agent.Device.Id, State = SwitchAgentState.Available, }; @switch.SendMessage(interaction.Agent.Device, agentStateMessage); }
private AgentState getAgentState(AgentStateMessage message) { AgentSwitchMode switchMode = AgentSwitchMode.NewReason; switch (message.State) { case SwitchAgentState.Available: switchMode = AgentSwitchMode.Ready; break; case SwitchAgentState.Busy: switchMode = AgentSwitchMode.NotReady; break; case SwitchAgentState.HandlingInteraction: switchMode = AgentSwitchMode.HandlingInteraction; break; case SwitchAgentState.LoggedIn: switchMode = AgentSwitchMode.LoggedIn; break; case SwitchAgentState.WrapUp: switchMode = AgentSwitchMode.WrapUp; break; default: break; } // TODO: Better match var agentState = InteractionManager.AgentStates.FirstOrDefault(s => s.SwitchMode == switchMode); if (agentState == null) { agentState = StandardAgentStates.Unknown; } return(agentState); }
private void handleAgentStateMessage(AgentStateMessage agentStateMessage) { Contract.Requires(agentStateMessage != null); CurrentState = getAgentState(agentStateMessage); }