Пример #1
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        private void handleAgentStateMessage(AgentStateMessage agentStateMessage)
        {
            Contract.Requires(agentStateMessage != null);

            CurrentState = getAgentState(agentStateMessage);
        }