예제 #1
0
        public EResultado InteraccionVoz(out EResultado MensaejError, InteractionVoz inxvoz, string token)
        {
            MensaejError = null;

            try
            {
                var JsonInxVoz = JsonConvert.SerializeObject(inxvoz);
                error = request <EResultado>("InteraccionVoz", "POST", token, out error, JsonInxVoz) as EResultado;
            }
            catch (Exception ex)
            {
                return(null);
            }
            return(error);
        }
        private void ConvierteClase(int idEvento, IMessage evento, IInteraction inx)
        {
            var data = "";

            if (_caseIdentifier.CaseId != null)
            {
                data = _caseIdentifier.CaseId;
            }
            else if (inx.CaseId != null)
            {
                data = _caseIdentifier.CaseId;
            }

            InteractionVoz inxVoz  = new InteractionVoz();
            Campana        campana = new Campana();

            switch (idEvento)
            {
            case EventDialing.MessageId:
                var eventDial = evento as EventDialing;
                inxVoz.CImessage = new CImessage
                {
                    nombreEvento   = eventDial.Name,
                    ani            = eventDial.ANI,
                    dnis           = eventDial.DNIS,
                    CallType       = eventDial.CallType,
                    Connid         = eventDial.ConnID.ToString(),
                    eventId        = eventDial.Id,
                    TransferConnid = eventDial.TransferConnID != null?
                                     eventDial.TransferConnID.ToString() :
                                         "",
                };
                inxVoz.Cinteraction = new CIInteracion
                {
                    CaseId            = inx.CaseId,
                    HasOutboundRecord = inx.HasOutboundChainRecord,
                    Records           = null,
                    type = inx.Type
                };

                inxVoz.CinteractionWebInx = new CIInteracionWeb
                {
                    formulario = null,
                    ParentId   = inx.ParentInteractionId
                };

                if (inxVoz.Cinteraction.HasOutboundRecord)
                {
                    ICampaignManager cm = _container.Resolve <ICampaignManager>();
                    IWCampaign       c;

                    for (int i = 0; i < cm.IWCampaigns.Count(); i++)
                    {
                        if (cm.IWCampaigns[i].Mode.Value != null)
                        {
                            inxVoz.CImessage.DialMode = cm.IWCampaigns[i].Mode.Value.ToString();
                        }
                    }
                }


                var xmlAtachado = Utility.GeneraXMLAtachado(listaAtached, inx);
                if (xmlAtachado != null)
                {
                    inxVoz.ATTACHED = XElement.Parse(xmlAtachado.ToString());
                }
                if (inx.IsMonitoredByMe)
                {
                    inxVoz.CImessage.EsMonitoreada = true;
                }
                break;

            case EventAck.MessageId:
                var eventInvite = evento as EventAck;
                inxVoz.CImessage = new CImessage
                {
                    nombreEvento = eventInvite.Name,
                    ani          = "",
                    dnis         = "",

                    Connid         = inx.InteractionId,
                    eventId        = eventInvite.Id,
                    TransferConnid = ""
                };
                inxVoz.Cinteraction = new CIInteracion
                {
                    CaseId            = inx.CaseId,
                    HasOutboundRecord = inx.HasOutboundChainRecord,
                    Records           = null,
                    type = inx.Type
                };

                inxVoz.CinteractionWebInx = new CIInteracionWeb
                {
                    formulario = null,
                    ParentId   = inx.EntrepriseInteractionCurrent.Id
                };

                if (inxVoz.Cinteraction.HasOutboundRecord)
                {
                    ICampaignManager cm = _container.Resolve <ICampaignManager>();
                    IWCampaign       c;

                    for (int i = 0; i < cm.IWCampaigns.Count(); i++)
                    {
                        if (cm.IWCampaigns[i].Mode.Value != null)
                        {
                            inxVoz.CImessage.DialMode = cm.IWCampaigns[i].Mode.Value.ToString();
                        }
                    }
                }


                var xmlAtachadoInvite = Utility.GeneraXMLAtachado(listaAtached, inx);
                if (xmlAtachadoInvite != null)
                {
                    inxVoz.ATTACHED = XElement.Parse(xmlAtachadoInvite.ToString());
                }
                if (inx.IsMonitoredByMe)
                {
                    inxVoz.CImessage.EsMonitoreada = true;
                }
                break;

            case EventEstablished.MessageId:
                var eventEstablished = evento as EventEstablished;
                inxVoz.CImessage = new CImessage
                {
                    nombreEvento   = eventEstablished.Name,
                    ani            = eventEstablished.ANI,
                    dnis           = eventEstablished.DNIS,
                    CallType       = eventEstablished.CallType,
                    Connid         = eventEstablished.ConnID.ToString(),
                    eventId        = eventEstablished.Id,
                    TransferConnid = eventEstablished.TransferConnID != null?
                                     eventEstablished.TransferConnID.ToString() :
                                         "",
                };
                inxVoz.Cinteraction = new CIInteracion
                {
                    CaseId            = inx.CaseId,
                    HasOutboundRecord = inx.HasOutboundChainRecord,
                    Records           = null,
                    type = inx.Type
                };
                inxVoz.CinteractionWebInx = new CIInteracionWeb
                {
                    formulario = null,
                    ParentId   = inx.ParentInteractionId
                };

                if (inxVoz.Cinteraction.HasOutboundRecord)
                {
                    ICampaignManager cm = _container.Resolve <ICampaignManager>();
                    IWCampaign       c;

                    for (int i = 0; i < cm.IWCampaigns.Count(); i++)
                    {
                        if (cm.IWCampaigns[i].Mode.Value != null)
                        {
                            inxVoz.CImessage.DialMode = cm.IWCampaigns[i].Mode.Value.ToString();
                        }
                        var nombreCampaign = cm.IWCampaigns[i].Name.ToString();
                    }

                    if (inxVoz.CImessage.DialMode.Equals("PROGRESSIVE") || inxVoz.CImessage.DialMode.Equals("PREDICTIVE"))
                    {
                        ConvierteClaseCampana(inx);
                    }
                }

                var xmlAtachad = Utility.GeneraXMLAtachado(listaAtached, inx);
                if (xmlAtachad != null)
                {
                    inxVoz.ATTACHED = XElement.Parse(xmlAtachad.ToString());
                }
                string transferidoOrigen = "";
                if (eventEstablished.UserData.GetAsKeyValueCollection("IWAttachedDataInformation") != null)
                {
                    var ValuesKey = eventEstablished.UserData.GetAsKeyValueCollection("IWAttachedDataInformation");
                    if (ValuesKey.GetValues("GCS_TransferringAgentName") != null)
                    {
                        transferidoOrigen = ValuesKey.GetValues("GCS_TransferringAgentName").FirstOrDefault().ToString();
                    }
                }
                if (inx.IsMonitoredByMe)
                {
                    inxVoz.CImessage.EsMonitoreada = true;
                }

                //if (transferidoOrigen != "" && transferidoOrigen != Agente.UserName)
                //    return;

                break;

            case EventPartyChanged.MessageId:
                var eventPartyChanged = evento as EventPartyChanged;
                inxVoz.CImessage = new CImessage
                {
                    nombreEvento   = eventPartyChanged.Name,
                    ani            = eventPartyChanged.ANI,
                    dnis           = eventPartyChanged.DNIS,
                    CallType       = eventPartyChanged.CallType,
                    Connid         = eventPartyChanged.ConnID.ToString(),
                    eventId        = eventPartyChanged.Id,
                    TransferConnid = eventPartyChanged.PreviousConnID != null?
                                     eventPartyChanged.PreviousConnID.ToString() : "",
                };
                inxVoz.Cinteraction = new CIInteracion
                {
                    CaseId            = inx.CaseId,
                    HasOutboundRecord = inx.HasOutboundChainRecord,
                    Records           = null,
                    type = inx.Type
                };

                inxVoz.CinteractionWebInx = new CIInteracionWeb
                {
                    formulario = null,
                    ParentId   = inx.ParentInteractionId
                };

                if (inx.GetAttachedData("GCS_TransferringAgentName") != null)
                {
                    var agenteTransferencia = inx.GetAttachedData("GCS_TransferringAgentName").ToString();

                    if (!agenteTransferencia.Equals(Agente.UserName))
                    {
                        _metodos.InsertaRegistroMarkDoneModule(inx);
                        return;
                    }
                }
                if (inx.IsMonitoredByMe)
                {
                    inxVoz.CImessage.EsMonitoreada = true;
                }
                break;

            case EventReleased.MessageId:
                var eventReleased = evento as EventReleased;
                inxVoz.CImessage = new CImessage
                {
                    nombreEvento   = eventReleased.Name,
                    ani            = eventReleased.ANI,
                    dnis           = eventReleased.DNIS,
                    CallType       = eventReleased.CallType,
                    Connid         = eventReleased.ConnID.ToString(),
                    eventId        = eventReleased.Id,
                    TransferConnid = eventReleased.TransferConnID != null?
                                     eventReleased.TransferConnID.ToString() :
                                         "",

                                         Release = eventReleased.Extensions.GetAsString("ReleasingParty") != null?
                                                   eventReleased.Extensions.GetAsString("ReleasingParty").ToString() :
                                                       null,
                };
                inxVoz.Cinteraction = new CIInteracion
                {
                    CaseId            = inx.CaseId,
                    HasOutboundRecord = inx.HasOutboundChainRecord,
                    Records           = null,
                    type = inx.Type
                };

                if (inx.EntrepriseInteractionCurrent.Profile != null)
                {
                    if (inx.EntrepriseInteractionCurrent.Profile.ToString().Equals("Transfered"))
                    {
                        inxVoz.CImessage.TransferConnid = inx.EntrepriseInteractionCurrent.Data.Owner != null?
                                                          inx.EntrepriseInteractionCurrent.Data.Owner.ToString() : "";
                    }
                }



                if (inxVoz.Cinteraction.HasOutboundRecord)
                {
                    ICampaignManager cm = _container.Resolve <ICampaignManager>();
                    IWCampaign       c;

                    for (int i = 0; i < cm.IWCampaigns.Count(); i++)
                    {
                        if (cm.IWCampaigns[i].Mode.Value != null)
                        {
                            inxVoz.CImessage.DialMode = cm.IWCampaigns[i].Mode.Value.ToString();
                        }
                    }

                    if (inxVoz.CImessage.DialMode.Equals("PROGRESSIVE") || inxVoz.CImessage.DialMode.Equals("PREDICTIVE"))
                    {
                        ConvierteClaseCampana(inx);
                    }
                }

                if (inxVoz.CImessage.TransferConnid.Equals(inxVoz.CImessage.Connid))
                {
                    inxVoz.CImessage.TransferConnid = eventReleased.TransferConnID != null?
                                                      eventReleased.TransferConnID.ToString() :
                                                          "";
                }
                if (inx.EntrepriseInteractionCurrent.Profile != null)
                {
                    if (inx.EntrepriseInteractionCurrent.Profile.ToString().Equals("Transfered"))
                    {
                        inxVoz.CImessage.TransferredNetworkCallID = 1;
                    }
                }
                if (inx.IsMonitoredByMe)
                {
                    inxVoz.CImessage.TransferConnid = "";
                }

                if (inx.IsMonitoredByMe)
                {
                    inxVoz.CImessage.EsMonitoreada = true;
                }
                break;

            case Platform.Voice.Protocols.TServer.Events.EventUserEvent.MessageId:
                var evetUserEvent = evento as Platform.Voice.Protocols.TServer.Events.EventUserEvent;

                break;

            default:
                return;

                break;
            }


            EResultado resultado = null;

            _metodoApi.InteraccionVoz(out resultado, inxVoz, token);
        }