public void HandleMessage(CtiServiceSwitch @switch, Message message) { var createInteractionMessage = message as CreateInteractionMessage; if (createInteractionMessage != null) { @switch.QueueInteraction(createInteractionMessage.Interaction); } }
public void HandleMessage(CtiServiceSwitch @switch, Message message) { var interactionTransferMessage = message as InteractionTransferMessage; if (interactionTransferMessage != null) { var interaction = @switch.Interactions.FirstOrDefault(i => i.Id == interactionTransferMessage.InteractionId); var transferInteraction = new SwitchInteraction { Id = Guid.NewGuid(), State = SwitchInteractionState.Queued, SourceAddress = interaction.SourceAddress, ReferenceId = interaction.ReferenceId, Queue = interaction.Queue, Properties = interaction.Properties, Type = interaction.Type, ConferencedCall = interaction.ConferencedCall }; var originalTransfers = transferInteraction.Properties.Where(p => p.Key.StartsWith("OriginalInteraction-")).Count(); transferInteraction.Properties.Add(string.Format("OriginalInteraction-{0}", originalTransfers), interaction.Id.ToString()); if (interactionTransferMessage.TargetAddress == "queue") { @switch.QueueInteraction(transferInteraction); } else { var device = @switch.Devices.FirstOrDefault(d => d.Address == interactionTransferMessage.TargetAddress); if (device != null) { @switch.Interactions.Add(transferInteraction); @switch.AssignInteraction(device, transferInteraction); } } notifyInteractionState(@switch, interaction, SwitchInteractionState.Disconnected); interaction.Agent.State = SwitchAgentState.WrapUp; notifyAcw(interaction, @switch); } var deviceInfoMessage = message as GetDeviceInfoMessage; if (deviceInfoMessage != null) { var device = @switch.Devices.FirstOrDefault(d => d.Id == deviceInfoMessage.DeviceId); var targetDevice = @switch.Devices.FirstOrDefault(d => d.Id == deviceInfoMessage.TargetDeviceId); var response = new DeviceInfoMessage { TargetDevice = targetDevice }; @switch.SendMessage(device, response); } }