コード例 #1
0
        public static IMessage UnRegisterDNRequest(string dnNumber)
        {
            var logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
                                                                  "AID");
            IMessage message = null;

            try
            {
                //Input Validation
                Pointel.Softphone.Voice.Core.Exceptions.CheckException.CheckDialValues(dnNumber);

                var extensions = new Genesyslab.Platform.Commons.Collections.KeyValueCollection();
                var requestUnRegisterAddress = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Dn.RequestUnregisterAddress.Create(dnNumber, Genesyslab.Platform.Voice.Protocols.TServer.ControlMode.RegisterDefault, extensions);

                message = Settings.GetInstance().VoiceProtocol.Request(requestUnRegisterAddress);
                logger.Info("---------------UnRegisterDNRequest------------------");
                logger.Info("DN:" + dnNumber);
                logger.Info("---------------------------------------------------");
            }
            catch (System.Exception commonException)
            {
                logger.Error("Error occurred while Unregister " + dnNumber + " : " + commonException.ToString());
            }
            return(message);
        }
コード例 #2
0
        /// <summary>
        /// This method used to modify/delete active call user data
        /// </summary>
        /// <param name="ThisDN">ThisDN</param>
        /// <param name="connectionID">ConnectionID</param>
        /// <param name="userData">UserData</param>

        #region UpdateAttachData

        public static Pointel.Softphone.Voice.Common.OutputValues UpdateAttachData(string ThisDN, string connectionId,
                                                                                   Genesyslab.Platform.Commons.Collections.KeyValueCollection userData)
        {
            var logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
            var output = Pointel.Softphone.Voice.Common.OutputValues.GetInstance();

            try
            {
                if (!string.IsNullOrEmpty(connectionId) && !string.IsNullOrEmpty(ThisDN) && userData != null)
                {
                    var connID = new Genesyslab.Platform.Voice.Protocols.ConnectionId(connectionId);
                    var requestUpdateUserData = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Userdata.RequestUpdateUserData.Create(ThisDN, connID, userData);
                    var cProperties           = Genesyslab.Platform.Voice.Protocols.TServer.CommonProperties.Create();
                    cProperties.ConnID    = connID;
                    cProperties.UserData  = userData;
                    cProperties.UserEvent = 85;
                    cProperties.ThisDN    = ThisDN;
                    Settings.GetInstance().VoiceProtocol.Send(requestUpdateUserData);
                    logger.Info("---------------UpdateAttachData------------------");
                    logger.Info("ThisDN:" + ThisDN);
                    logger.Info("ConnectionID:" + connectionId);
                    logger.Info("UserData:" + userData);
                    logger.Info("-------------------------------------------------");

                    output.MessageCode = "200";
                    output.Message     = "UserData has been Updated";
                }
                else
                {
                    output.MessageCode = "2001";
                    output.Message     = "UserData has not been Updated";
                    logger.Info("---------------UpdateAttachData------------------");
                    logger.Info("ThisDN:" + ThisDN);
                    logger.Info("ConnectionID:" + connectionId);
                    logger.Info("UserData:" + userData);
                    logger.Info("-------------------------------------------------");
                }
            }
            catch (System.Exception commonException)
            {
                logger.Error("DoUpdateAttachData : " + commonException.ToString());
                output.MessageCode = "2001";
                output.Message     = commonException.Message;
            }
            return(output);
        }
コード例 #3
0
ファイル: CTIBasico.cs プロジェクト: phillipebarbosa/poc
        public void AdicionarDadosLigacao(Dictionary<String, String> dadosUsuario)
        {
            try
            {
                EnviaMensagemSignalR("ServidorCTI", this.PA + ", " + this.AgentID + ", " + this.PasswordAgentID + ", " + this.Queue);
                Genesyslab.Platform.Commons.Collections.KeyValueCollection kvColl = new Genesyslab.Platform.Commons.Collections.KeyValueCollection();
                kvColl.Add(dadosUsuario);

                Genesyslab.Platform.Voice.Protocols.ConnectionId currentConnId = connIdAnswered;
                if (connIdTransfer != null)
                    currentConnId = connIdTransfer;

                RequestAttachUserData raud = RequestAttachUserData.Create(this.PA, currentConnId, kvColl);
                pmsTServer[TSERVER_IDENTIFIER].Send(raud);
            }
            catch (Exception ex)
            {
                EnviaMensagemSignalR("ServidorCTI-Erro", "AdicionarDadosLigacao(...) - EncaminharPara: " + ex.Message);
            }
        }
コード例 #4
0
        public static Pointel.Softphone.Voice.Common.OutputValues InitiateTransfer(string pOtherDN, Genesyslab.Platform.Commons.Collections.KeyValueCollection reasonCode)
        {
            var logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
            var output = Pointel.Softphone.Voice.Common.OutputValues.GetInstance();

            try
            {
                //Input Validation
                Pointel.Softphone.Voice.Core.Exceptions.CheckException.CheckDialValues(pOtherDN);

                var requestInitiateTransfer = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Party.RequestInitiateTransfer.Create();
                //Below condition added to decide which DN going to control the call
                //05-14-2013 Palaniappan
                requestInitiateTransfer.ThisDN = (Settings.GetInstance().CallControl == "both" ? Settings.GetInstance().ActiveDN : (Settings.GetInstance().CallControl == "acd" ?
                                                                                                                                    Settings.GetInstance().ACDPosition : Settings.GetInstance().ExtensionDN));
                //End
                var connId = new Genesyslab.Platform.Voice.Protocols.ConnectionId(Settings.GetInstance().ConnectionID);
                requestInitiateTransfer.ConnID  = connId;
                requestInitiateTransfer.OtherDN = pOtherDN;
                if (reasonCode != null)
                {
                    requestInitiateTransfer.Reasons = reasonCode;
                }
                //Code Added - V.Palaniappan
                //28.10.2013
                if (requestInitiateTransfer.ThisDN != pOtherDN)
                {
                    Settings.GetInstance().VoiceProtocol.Send(requestInitiateTransfer);
                }
                //End
                logger.Info("---------------InitiateTransfer------------------");
                //Below condition added to decide which DN going to control the call
                //05-14-2013 Palaniappan
                logger.Info("ThisDN:" + (Settings.GetInstance().CallControl == "both" ? Settings.GetInstance().ActiveDN : (Settings.GetInstance().CallControl == "acd" ?
                                                                                                                           Settings.GetInstance().ACDPosition : Settings.GetInstance().ExtensionDN)));
                //End
                logger.Info("ConnectionID:" + connId);
                logger.Info("OtherDN:" + pOtherDN);
                logger.Info("--------------------------------------------");

                output.MessageCode = "200";
                output.Message     = "Call Transfer Initiated";
            }
            catch (System.Exception commonException)
            {
                logger.Error("Error occurred while Initiate  Transfer call " + commonException.ToString());

                output.MessageCode = "2001";
                output.Message     = commonException.Message;
            }
            return(output);
        }
コード例 #5
0
        public static Pointel.Softphone.Voice.Common.OutputValues MuteTransfer(string OtherDN, string location, Genesyslab.Platform.Commons.Collections.KeyValueCollection userData, Genesyslab.Platform.Commons.Collections.KeyValueCollection reasons, Genesyslab.Platform.Commons.Collections.KeyValueCollection extensions)
        {
            var logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
            var output = Pointel.Softphone.Voice.Common.OutputValues.GetInstance();

            try
            {
                var requestCompleteTransfer = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Party.RequestMuteTransfer.Create();
                //Below condition added to decide which DN going to control the call
                //05-14-2013 Palaniappan
                requestCompleteTransfer.ThisDN = (Settings.GetInstance().CallControl == "both" ? Settings.GetInstance().ActiveDN : (Settings.GetInstance().CallControl == "acd" ?
                                                                                                                                    Settings.GetInstance().ACDPosition : Settings.GetInstance().ExtensionDN));
                //End
                requestCompleteTransfer.OtherDN = OtherDN;

                //Code added by Manikandan on 24/03/2015 to implement Requeue
                if (!string.IsNullOrEmpty(location))
                {
                    requestCompleteTransfer.Location = location;
                }
                if (extensions != null && extensions.Count > 0)
                {
                    requestCompleteTransfer.Extensions = extensions;
                }
                if (reasons != null && reasons.Count > 0)
                {
                    requestCompleteTransfer.Reasons = reasons;
                }
                if (userData != null && userData.Count > 0)
                {
                    requestCompleteTransfer.UserData = userData;
                }
                //End

                //Code Added to handle connectionid based on Switch Type
                //26/09/2013 V.Palaniappan
                Genesyslab.Platform.Voice.Protocols.ConnectionId connId;
                //Genesyslab.Platform.Voice.Protocols.ConnectionId transfConnid;
                if (string.Compare(Settings.GetInstance().SwitchTypeName, "nortel") == 0)
                {
                    connId = new Genesyslab.Platform.Voice.Protocols.ConnectionId(Settings.GetInstance().ConnectionID);
                }
                else
                {
                    connId = new Genesyslab.Platform.Voice.Protocols.ConnectionId(Settings.GetInstance().ConnectionID);
                    //transfConnid = new ConnectionId(Settings.GetInstance().ConsultConnectionID);
                    //requestCompleteTransfer.TransferConnID = transfConnid;
                }
                //End
                requestCompleteTransfer.ConnID = connId;
                Settings.GetInstance().VoiceProtocol.Request(requestCompleteTransfer);
                logger.Info("---------------CompleteTransfer------------------");
                //Below condition added to decide which DN going to control the call
                //05-14-2013 Palaniappan
                logger.Info("ThisDN:" + (Settings.GetInstance().CallControl == "both" ? Settings.GetInstance().ActiveDN : (Settings.GetInstance().CallControl == "acd" ?
                                                                                                                           Settings.GetInstance().ACDPosition : Settings.GetInstance().ExtensionDN)));
                //End
                logger.Info("ConnectionID:" + connId);
                logger.Info("--------------------------------------------");
                output.MessageCode = "200";
                output.Message     = "Call Transfer Completed";
            }
            catch (System.Exception commonException)
            {
                logger.Error("Error occurred while Mute  Transfer call " + commonException.ToString());
                output.MessageCode = "2001";
                output.Message     = commonException.Message;
            }
            return(output);
        }
コード例 #6
0
        public static Genesyslab.Platform.Commons.Protocols.IMessage InitiateTransferResponse(string pOtherDN, string location, Genesyslab.Platform.Commons.Collections.KeyValueCollection userData)
        {
            var logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");

            Genesyslab.Platform.Commons.Protocols.IMessage response = null;
            try
            {
                //Input Validation
                Pointel.Softphone.Voice.Core.Exceptions.CheckException.CheckDialValues(pOtherDN);

                var requestInitiateTransfer = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Party.RequestInitiateTransfer.Create();
                //Below condition added to decide which DN going to control the call
                //05-14-2013 Palaniappan
                requestInitiateTransfer.ThisDN = (Settings.GetInstance().CallControl == "both" ? Settings.GetInstance().ActiveDN : (Settings.GetInstance().CallControl == "acd" ?
                                                                                                                                    Settings.GetInstance().ACDPosition : Settings.GetInstance().ExtensionDN));
                //End
                var connId = new Genesyslab.Platform.Voice.Protocols.ConnectionId(Settings.GetInstance().ConnectionID);
                requestInitiateTransfer.ConnID  = connId;
                requestInitiateTransfer.OtherDN = pOtherDN;
                if (!string.IsNullOrEmpty(location))
                {
                    requestInitiateTransfer.Location = location;
                }
                if (userData != null && userData.Count > 0)
                {
                    requestInitiateTransfer.UserData = userData;
                }
                //Code Added - V.Palaniappan
                //28.10.2013
                if (requestInitiateTransfer.ThisDN != pOtherDN)
                {
                    response = Settings.GetInstance().VoiceProtocol.Request(requestInitiateTransfer);
                }
                //End
                logger.Info("---------------InitiateTransfer------------------");
                //Below condition added to decide which DN going to control the call
                //05-14-2013 Palaniappan
                logger.Info("ThisDN:" + (Settings.GetInstance().CallControl == "both" ? Settings.GetInstance().ActiveDN : (Settings.GetInstance().CallControl == "acd" ?
                                                                                                                           Settings.GetInstance().ACDPosition : Settings.GetInstance().ExtensionDN)));
                //End
                logger.Info("ConnectionID:" + connId);
                logger.Info("OtherDN:" + pOtherDN);
                logger.Info("Location :" + location);
                logger.Info("--------------------------------------------");
            }
            catch (System.Exception commonException)
            {
                logger.Error("Error occurred while Initiate  Transfer call " + commonException.ToString());
            }
            return(response);
        }
コード例 #7
0
 /// <summary>
 /// Joins the consult chat session.
 /// </summary>
 /// <param name="sessionID">The session unique identifier.</param>
 /// <param name="subject">The subject.</param>
 /// <param name="message">The message.</param>
 /// <param name="userData">The user data.</param>
 /// <returns></returns>
 public static Pointel.Interactions.Chat.Core.General.OutputValues JoinConsultChatSession(string sessionID, string subject, string message, Genesyslab.Platform.Commons.Collections.KeyValueCollection userData)
 {
     Pointel.Logger.Core.ILog logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
     Pointel.Interactions.Chat.Core.General.OutputValues output = Pointel.Interactions.Chat.Core.General.OutputValues.GetInstance();
     try
     {
         Genesyslab.Platform.WebMedia.Protocols.BasicChat.Requests.RequestJoin requestJoinChat = Genesyslab.Platform.WebMedia.Protocols.BasicChat.Requests.RequestJoin.Create();
         Genesyslab.Platform.WebMedia.Protocols.BasicChat.MessageText          newMessageText  = Genesyslab.Platform.WebMedia.Protocols.BasicChat.MessageText.Create();
         newMessageText.Text         = message;
         requestJoinChat.MessageText = newMessageText;
         requestJoinChat.SessionId   = sessionID;
         requestJoinChat.UserData    = userData;
         requestJoinChat.Visibility  = Genesyslab.Platform.WebMedia.Protocols.BasicChat.Visibility.Int;
         requestJoinChat.Subject     = subject;
         if (Pointel.Interactions.Chat.Core.Util.Settings.ChatProtocol != null && Pointel.Interactions.Chat.Core.Util.Settings.ChatProtocol.State == Genesyslab.Platform.Commons.Protocols.ChannelState.Opened)
         {
             Genesyslab.Platform.Commons.Protocols.IMessage iMessage = Pointel.Interactions.Chat.Core.Util.Settings.ChatProtocol.Request(requestJoinChat);
             if (iMessage != null)
             {
                 logger.Info("------------JoinConsultChatSession-------------");
                 logger.Info("SessionID  :" + sessionID);
                 logger.Info("subject    :" + subject);
                 logger.Info("MessageText:" + message);
                 logger.Info("----------------------------------------");
                 logger.Trace(iMessage.ToString());
                 output.RequestJoinIMessage = iMessage;
                 output.MessageCode         = "200";
                 output.Message             = "Join Consult Chat Session Successful";
             }
             else
             {
                 logger.Warn("JoinConsultChatSession() : IMessage is Null..");
             }
         }
         else
         {
             logger.Warn("JoinConsultChatSession() : Interaction Server protocol is Null..");
         }
     }
     catch (Exception generalException)
     {
         logger.Error("Error occurred while Join the consult chat session request " + generalException.ToString());
         output.MessageCode = "2001";
         output.Message     = generalException.Message;
     }
     return(output);
 }
コード例 #8
0
        /// <summary>
        /// Rejects the chat interaction.
        /// </summary>
        /// <param name="ticketID">The ticket identifier.</param>
        /// <param name="interactionID">The interaction identifier.</param>
        /// <param name="proxyID">The proxy identifier.</param>
        /// <returns></returns>
        public static Pointel.Interactions.Chat.Core.General.OutputValues RejectChatInteraction(int ticketID, string interactionID, int proxyID, Genesyslab.Platform.Commons.Collections.KeyValueCollection data)
        {
            Pointel.Interactions.Chat.Core.General.OutputValues output = Pointel.Interactions.Chat.Core.General.OutputValues.GetInstance();
            Pointel.Logger.Core.ILog logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
            try
            {
                Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionDelivery.RequestReject requestReject = Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionDelivery.RequestReject.Create();
                requestReject.TicketId      = ticketID;
                requestReject.InteractionId = interactionID;
                requestReject.ProxyClientId = proxyID;
                requestReject.Extension     = data;
                Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.ReasonInfo reasonInfo = Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.ReasonInfo.Create();
                reasonInfo.ReasonDescription = "Agent has reject this interaction";
                requestReject.Reason         = reasonInfo;
                if (Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol != null && Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.State == Genesyslab.Platform.Commons.Protocols.ChannelState.Opened)
                {
                    Genesyslab.Platform.Commons.Protocols.IMessage message = Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.Request(requestReject);
                    if (message != null)
                    {
                        switch (message.Id)
                        {
                        case Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck.MessageId:
                            Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck eventInteractionReject = (Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck)message;
                            logger.Info("------------RejectChatInteraction-------------");
                            logger.Info("InteractionId  :" + interactionID);
                            logger.Info("ProxyClientId    :" + proxyID);
                            logger.Info("---------------------------------------------");
                            logger.Trace(eventInteractionReject.ToString());
                            output.MessageCode = "200";
                            output.Message     = "Reject Chat Interaction Successful";
                            break;

                        case Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError.MessageId:
                            Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError eventError = (Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError)message;
                            string LoginErrorCode        = Convert.ToString(eventError.ErrorCode);
                            string LoginErrorDescription = Convert.ToString(eventError.ErrorDescription);
                            logger.Trace(eventError.ToString());
                            output.MessageCode = "2001";
                            output.Message     = "RejectChatInteraction() : " + LoginErrorDescription;
                            break;
                        }
                    }
                    else
                    {
                        output.MessageCode = "2001";
                        output.Message     = "Chat Media Agent Reject Interaction UnSuccessful";
                    }
                }
                else
                {
                    logger.Warn("RejectChatInteraction() : Interaction Server protocol is Null..");
                }
            }
            catch (Exception generalException)
            {
                logger.Error("Error occurred while Reject Chat Interaction request " + generalException.ToString());
                output.MessageCode = "2001";
                output.Message     = generalException.Message;
            }
            return(output);
        }
コード例 #9
0
        /// <summary>
        /// Transfers the chat session.
        /// </summary>
        /// <param name="interactionId">The interaction identifier.</param>
        /// <param name="agentId">The agent identifier.</param>
        /// <param name="placeId">The place identifier.</param>
        /// <param name="proxyId">The proxy identifier.</param>
        /// <param name="queueName">Name of the queue.</param>
        /// <returns></returns>
        public static Pointel.Interactions.Chat.Core.General.OutputValues TransferChatSession(string interactionId, string agentId, string placeId, int proxyId, string queueName, Genesyslab.Platform.Commons.Collections.KeyValueCollection userData)
        {
            Pointel.Logger.Core.ILog logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
            Pointel.Interactions.Chat.Core.General.OutputValues output = Pointel.Interactions.Chat.Core.General.OutputValues.GetInstance();
            try
            {
                if (!string.IsNullOrEmpty(placeId) && !string.IsNullOrEmpty(agentId))
                {
                    Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestTransfer requestTransfer = Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestTransfer.Create();
                    requestTransfer.Extension     = userData;
                    requestTransfer.InteractionId = interactionId;
                    requestTransfer.ProxyClientId = proxyId;
                    requestTransfer.PlaceId       = placeId;
                    requestTransfer.AgentId       = agentId;
                    if (Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol != null && Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.State == Genesyslab.Platform.Commons.Protocols.ChannelState.Opened)
                    {
                        Genesyslab.Platform.Commons.Protocols.IMessage message = Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.Request(requestTransfer);
                        if (message != null)
                        {
                            switch (message.Id)
                            {
                            case Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck.MessageId:
                                Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck eventack = (Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck)message;
                                logger.Info("------------TransferChatSession-------------");
                                logger.Info("InteractionId  :" + interactionId);
                                logger.Info("ProxyClientId    :" + proxyId);
                                logger.Info("AgentId    :" + agentId);
                                logger.Info("PlaceId    :" + placeId);
                                logger.Info("--------------------------------------------");
                                logger.Trace(eventack.ToString());
                                output.MessageCode = "200";
                                output.Message     = "Transfer Chat Session Successful";
                                break;

                            case Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError.MessageId:
                                Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError eventError = (Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError)message;
                                string LoginErrorCode        = Convert.ToString(eventError.ErrorCode);
                                string LoginErrorDescription = Convert.ToString(eventError.ErrorDescription);
                                logger.Info("------------TransferChatSession-------------");
                                logger.Error(LoginErrorCode + ":" + LoginErrorDescription);
                                logger.Info("--------------------------------------------");
                                logger.Trace(eventError.ToString());
                                output.MessageCode = "2001";
                                output.Message     = LoginErrorDescription;
                                break;
                            }
                        }
                    }
                    else
                    {
                        logger.Warn("TransferChatSession() : Interaction Server protocol is Null..");
                    }
                }
                else if (!string.IsNullOrEmpty(queueName))
                {
                    Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestChangeProperties requestChangeProperties = Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestChangeProperties.Create();
                    Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestPlaceInQueue     requestPlaceInQueue     = Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestPlaceInQueue.Create();
                    Genesyslab.Platform.Commons.Collections.KeyValueCollection attachData = new Genesyslab.Platform.Commons.Collections.KeyValueCollection();
                    attachData.Add("ChatSkills", queueName);
                    requestChangeProperties.ChangedProperties = attachData;
                    requestChangeProperties.InteractionId     = interactionId;
                    requestChangeProperties.ProxyClientId     = proxyId;
                    requestPlaceInQueue.InteractionId         = interactionId;
                    requestPlaceInQueue.Queue           = queueName;
                    requestPlaceInQueue.ProxyClientId   = proxyId;
                    requestPlaceInQueue.AddedProperties = attachData;

                    if (Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol != null && Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.State == Genesyslab.Platform.Commons.Protocols.ChannelState.Opened)
                    {
                        Genesyslab.Platform.Commons.Protocols.IMessage message = Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.Request(requestPlaceInQueue);
                        if (message != null)
                        {
                            switch (message.Id)
                            {
                            case Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck.MessageId:
                                Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck eventAck = (Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck)message;
                                logger.Info("------------Chat Transfer Interaction By Queue-------------");
                                logger.Info("InteractionId  :" + interactionId);
                                logger.Info("ProxyClientId    :" + proxyId);
                                logger.Info("QueueName    :" + queueName);
                                logger.Info("----------------------------------------------------------");
                                logger.Trace(eventAck.ToString());
                                output.MessageCode = "200";
                                output.Message     = "Chat Transfer interaction Successful";
                                break;

                            case Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError.MessageId:
                                Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError eventError = (Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError)message;
                                logger.Info("------------Error on Chat Transfer Interaction By Queue-------------");
                                logger.Info("InteractionId  :" + interactionId);
                                logger.Info("ProxyClientId    :" + proxyId);
                                logger.Info("QueueName    :" + queueName);
                                logger.Info("-------------------------------------------------------------------");
                                logger.Trace(eventError.ToString());
                                output.MessageCode = "2001";
                                output.Message     = Convert.ToString(eventError.ErrorDescription);
                                logger.Error("Error occurred while chat transferring  interaction : " + Convert.ToString(eventError.ErrorDescription));
                                break;
                            }
                        }
                        else
                        {
                            output.MessageCode = "2001";
                            output.Message     = "Chat Transfer Interaction UnSuccessful";
                        }
                        logger.Info("------------TransferChatSession-------------");
                        logger.Info("InteractionId  :" + interactionId);
                        logger.Info("ProxyClientId    :" + proxyId);
                        logger.Info("QueueName    :" + queueName);
                        logger.Info("--------------------------------------------");
                        logger.Info(requestChangeProperties.ToString());
                        logger.Info(requestPlaceInQueue.ToString());
                    }
                    else
                    {
                        logger.Warn("TransferChatSession() : Interaction Server protocol is Null..");
                    }
                }
            }
            catch (Exception generalException)
            {
                logger.Error("Error occurred while Transfer Chat Session request " + generalException.ToString());
                output.MessageCode = "2001";
                output.Message     = generalException.Message;
            }
            return(output);
        }
コード例 #10
0
        public static Pointel.Softphone.Voice.Common.OutputValues AgentNotReady(string reason, string code, bool isSolicited)
        {
            var logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
            var output = Pointel.Softphone.Voice.Common.OutputValues.GetInstance();

            try
            {
                var requestAgentNotReady = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Agent.RequestAgentNotReady.Create(Settings.GetInstance().ACDPosition, Settings.GetInstance().WorkMode);

                var ReasonCode = new Genesyslab.Platform.Commons.Collections.KeyValueCollection();

                //Code Added to check whether send configurable reason key and code/default key and code to tserver
                //27.09.2013 V.Palaniappan
                if (!string.IsNullOrEmpty(Settings.GetInstance().NotReadyKey))
                {
                    ReasonCode.Add(Settings.GetInstance().NotReadyKey, reason);
                }
                if (!string.IsNullOrEmpty(Settings.GetInstance().NotReadyCodeKey))
                {
                    ReasonCode.Add(Settings.GetInstance().NotReadyCodeKey, code);
                }
                if (string.IsNullOrEmpty(Settings.GetInstance().NotReadyKey) && string.IsNullOrEmpty(Settings.GetInstance().NotReadyCodeKey))
                {
                    ReasonCode.Add("Name", reason);
                    ReasonCode.Add("Code", code);
                }
                if (string.IsNullOrEmpty(reason) && string.IsNullOrEmpty(code))
                {
                    ReasonCode = null;
                }
                //End
                if (string.Compare(Settings.GetInstance().NotReadyRequest.ToLower(), "extensions", true) == 0)
                {
                    requestAgentNotReady.Extensions = ReasonCode;
                }
                else
                {
                    requestAgentNotReady.Reasons = ReasonCode;
                }
                //Code Added - To resolve agent not ready issue in client box
                //11.10.2013 V.Palaniappan
                if (Settings.GetInstance().QueueName.ToLower() != "optional" && Settings.GetInstance().QueueName.ToLower() != "none")
                {
                    requestAgentNotReady.ThisQueue = Settings.GetInstance().QueueName;
                }

                logger.Info("---------------AgentNotReady------------------");
                logger.Info("ThisDN:" + Settings.GetInstance().ACDPosition);
                logger.Info("Reason:" + reason);
                logger.Info("Reasoncode:" + code);
                logger.Info("--------------------------------------------");
                output.MessageCode = "200";
                output.Message     = "Not Ready Successful";

                //End
                if (isSolicited)
                {
                    output.IMessage = Settings.GetInstance().VoiceProtocol.Request(requestAgentNotReady);
                }
                else
                {
                    Settings.GetInstance().VoiceProtocol.Send(requestAgentNotReady);
                }
            }
            catch (System.Exception commonException)
            {
                logger.Error("Error occurred while Agent Not Ready " + commonException.ToString());
                output.MessageCode = "2001";
                output.Message     = commonException.Message;
            }
            return(output);
        }
コード例 #11
0
        /// <summary>
        /// Consults the chat session.
        /// </summary>
        /// <param name="interactionId">The interaction unique identifier.</param>
        /// <param name="agentID">The agent unique identifier.</param>
        /// <param name="placeId">The place unique identifier.</param>
        /// <param name="proxyId">The proxy unique identifier.</param>
        /// <param name="userData">The user data.</param>
        /// <returns></returns>
        public static Pointel.Interactions.Chat.Core.General.OutputValues ConsultChatSession(string interactionId, string agentID, string placeId, int proxyId, Genesyslab.Platform.Commons.Collections.KeyValueCollection userData)
        {
            Pointel.Logger.Core.ILog logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
            Pointel.Interactions.Chat.Core.General.OutputValues output = Pointel.Interactions.Chat.Core.General.OutputValues.GetInstance();
            try
            {
                Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestConference requestConference = Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestConference.Create();
                requestConference.PlaceId       = placeId;
                requestConference.AgentId       = agentID;
                requestConference.InteractionId = interactionId;
                requestConference.ProxyClientId = proxyId;
                requestConference.Extension     = userData;
                requestConference.Extension.Add("ConsultUserData", "separate");
                requestConference.VisibilityMode = Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.VisibilityMode.Coach;
                if (Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol != null && Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.State == Genesyslab.Platform.Commons.Protocols.ChannelState.Opened)
                {
                    Genesyslab.Platform.Commons.Protocols.IMessage message = Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.Request(requestConference);
                    if (message != null)
                    {
                        switch (message.Id)
                        {
                        case Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck.MessageId:
                            Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck eventack = (Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck)message;
                            logger.Info("------------ConsultChatSession-------------");
                            logger.Info("InteractionId  :" + interactionId);
                            logger.Info("ProxyClientId    :" + proxyId);
                            logger.Info("AgentId    :" + agentID);
                            logger.Info("PlaceId    :" + placeId);
                            logger.Info("--------------------------------------------");
                            logger.Trace(eventack.ToString());
                            output.MessageCode = "200";
                            output.Message     = "Consult Chat Session Successful";
                            break;

                        case Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError.MessageId:
                            Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError eventError = (Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError)message;
                            string LoginErrorCode        = Convert.ToString(eventError.ErrorCode);
                            string LoginErrorDescription = Convert.ToString(eventError.ErrorDescription);
                            logger.Info("------------ConsultChatSession-------------");
                            logger.Error(LoginErrorCode + ":" + LoginErrorDescription);
                            logger.Info("--------------------------------------------");
                            logger.Trace(eventError.ToString());
                            output.MessageCode = "2001";
                            output.Message     = LoginErrorDescription;
                            break;
                        }
                    }
                }
                else
                {
                    logger.Warn("ConferenceChatSession() : Interaction Server protocol is Null..");
                }
            }
            catch (Exception generalException)
            {
                logger.Error("Error occurred while Conference Chat Session request " + generalException.ToString());
                output.MessageCode = "2001";
                output.Message     = generalException.Message;
            }
            return(output);
        }
コード例 #12
0
 /// <summary>
 /// Updates the properties.
 /// </summary>
 /// <param name="interactionId">The interaction identifier.</param>
 /// <param name="keyvalues">The key values.</param>
 /// <returns></returns>
 public static Pointel.Interactions.Chat.Core.General.OutputValues UpdateProperties(string interactionId, int proxyClientID, Genesyslab.Platform.Commons.Collections.KeyValueCollection keyvalues)
 {
     Pointel.Logger.Core.ILog logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
     Pointel.Interactions.Chat.Core.General.OutputValues output = Pointel.Interactions.Chat.Core.General.OutputValues.GetInstance();
     try
     {
         Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestChangeProperties updateProperties = Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestChangeProperties.Create();
         updateProperties.InteractionId = interactionId;
         updateProperties.ProxyClientId = proxyClientID;
         if (keyvalues != null)
         {
             updateProperties.ChangedProperties = keyvalues;
         }
         if (Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol != null && Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.State == Genesyslab.Platform.Commons.Protocols.ChannelState.Opened)
         {
             Genesyslab.Platform.Commons.Protocols.IMessage response = Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.Request(updateProperties);
             if (response.Id == Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventPropertiesChanged.MessageId || response.Id == Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck.MessageId)
             {
                 logger.Info("------------updateProperties-------------");
                 logger.Info("InteractionId  :" + interactionId);
                 logger.Info("ProxyClientId    :" + proxyClientID);
                 logger.Info(" UpdateProperties : response :" + response.ToString());
                 logger.Info("-----------------------------------------------");
                 logger.Trace(response.ToString());
                 output.MessageCode = "200";
                 output.Message     = "Update Properties Successful";
             }
             else
             {
                 output.MessageCode = "2001";
                 output.Message     = "Don't Update Properties Successful";
             }
         }
         else
         {
             logger.Warn("UpdateProperties() : Interaction Server Protocol is Null..");
         }
     }
     catch (Exception generalException)
     {
         logger.Error("Error occurred while update properties request " + generalException.ToString());
         output.MessageCode = "2001";
         output.Message     = generalException.Message;
     }
     return(output);
 }
コード例 #13
0
ファイル: CTIBasico.cs プロジェクト: phillipebarbosa/poc
        public void ColocarPausa(TiposDePausa tipoPausa)
        {
            try
            {
                EnviaMensagemSignalR("ServidorCTI", this.PA + ", " + this.AgentID + ", " + this.PasswordAgentID + ", " + this.Queue);
                Genesyslab.Platform.Commons.Collections.KeyValueCollection reasons = new Genesyslab.Platform.Commons.Collections.KeyValueCollection();
                reasons.Add(tipoPausa.ToString(), ((int)tipoPausa).ToString());

                RequestAgentNotReady rar = RequestAgentNotReady.Create(this.PA, AgentWorkMode.WalkAway, this.Queue, reasons, null);
                pmsTServer[TSERVER_IDENTIFIER].Send(rar);
            }
            catch (Exception ex)
            {
                EnviaMensagemSignalR("ServidorCTI-Erro", "ColocarPausa(...) - exception: " + ex.Message);
            }
        }