/// <summary> /// DTMFs the send. /// </summary> /// <returns></returns> #region DtmfSend public static Pointel.Softphone.Voice.Common.OutputValues DtmfSend(string dtmfDigit) { var logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID"); var output = Pointel.Softphone.Voice.Common.OutputValues.GetInstance(); try { var connId = new Genesyslab.Platform.Voice.Protocols.ConnectionId(Settings.GetInstance().ConnectionID); var requestSendDtmf = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Dtmf.RequestSendDtmf.Create(Settings.GetInstance().ACDPosition, connId, dtmfDigit, new Genesyslab.Platform.Commons.Collections.KeyValueCollection(), new Genesyslab.Platform.Commons.Collections.KeyValueCollection()); Settings.GetInstance().VoiceProtocol.Send(requestSendDtmf); logger.Info("---------------DtmfSend------------------"); logger.Info("ThisDN:" + Settings.GetInstance().ACDPosition); logger.Info("ConnectionID:" + connId); logger.Info("--------------------------------------------"); output.MessageCode = "200"; output.Message = "Dtmf Send Successful"; } catch (System.Exception commonException) { logger.Error("Error occurred while DtmfSend " + commonException.ToString()); output.MessageCode = "2001"; output.Message = commonException.Message; } return(output); }
public static Pointel.Softphone.Voice.Common.OutputValues DoRequestQueryCall(string ThisDN, string connectionId) { var logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID"); var output = Pointel.Softphone.Voice.Common.OutputValues.GetInstance(); try { var connID = new Genesyslab.Platform.Voice.Protocols.ConnectionId(connectionId); var requestQueryCall = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Queries.RequestQueryCall.Create(ThisDN, connID, Genesyslab.Platform.Voice.Protocols.TServer.CallInfoType.StatusQuery); Settings.GetInstance().VoiceProtocol.Send(requestQueryCall); logger.Info("---------------RequestQuerycall------------------"); logger.Info("ThisDN:" + ThisDN); logger.Info("ConnectionID:" + connectionId); logger.Info("-------------------------------------------------"); output.MessageCode = "200"; output.Message = "Request for Query call Successful"; } catch (System.Exception commonException) { logger.Error("DoRequestQueryCall : " + commonException.ToString()); output.MessageCode = "2001"; output.Message = commonException.Message; } return(output); }
public static Pointel.Softphone.Voice.Common.OutputValues InitiateTransfer(string pOtherDN, string location, 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 { //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) { 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("Location :" + location); 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); }
public static Pointel.Softphone.Voice.Common.OutputValues CompleteTransfer() { 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.RequestCompleteTransfer.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 //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 Genesyslab.Platform.Voice.Protocols.ConnectionId(Settings.GetInstance().ConsultConnectionID); requestCompleteTransfer.TransferConnID = transfConnid; } //End requestCompleteTransfer.ConnID = connId; Settings.GetInstance().VoiceProtocol.Send(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 Complete Transfer call " + commonException.ToString()); output.MessageCode = "2001"; output.Message = commonException.Message; } return(output); }
/// <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); }
public static Genesyslab.Platform.Commons.Protocols.IMessage InitiateTransferResponse(string pOtherDN, Genesyslab.Platform.Commons.Collections.KeyValueCollection reasonCode) { 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 (reasonCode != null) { requestInitiateTransfer.Reasons = reasonCode; } //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("--------------------------------------------"); } catch (System.Exception commonException) { logger.Error("Error occurred while Initiate Transfer call " + commonException.ToString()); } return(response); }
public static IMessage DoRequestQueryCall(string ThisDN, string connectionId, bool isUnsolicited) { var logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID"); IMessage message = null; try { var connID = new Genesyslab.Platform.Voice.Protocols.ConnectionId(connectionId); var requestQueryCall = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Queries.RequestQueryCall.Create(ThisDN, connID, Genesyslab.Platform.Voice.Protocols.TServer.CallInfoType.StatusQuery); requestQueryCall.CallInfoType = Genesyslab.Platform.Voice.Protocols.TServer.CallInfoType.PartiesQuery; message = Settings.GetInstance().VoiceProtocol.Request(requestQueryCall); logger.Info("---------------RequestQuerycall------------------"); logger.Info("ThisDN:" + ThisDN); logger.Info("ConnectionID:" + connectionId); logger.Info("-------------------------------------------------"); } catch (System.Exception commonException) { logger.Error("DoRequestQueryCall : " + commonException.ToString()); message = null; } return(message); }
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); }
public static Pointel.Softphone.Voice.Common.OutputValues Reconnect(PhoneFunctions pStatus) { var logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID"); var output = Pointel.Softphone.Voice.Common.OutputValues.GetInstance(); try { var requestReconnectCall = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Party.RequestReconnectCall.Create(); //Below condition added to decide which DN going to control the call //05-14-2013 Palaniappan requestReconnectCall.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); var reconnectConnID = new Genesyslab.Platform.Voice.Protocols.ConnectionId(Settings.GetInstance().ConsultConnectionID); //requestReconnectCall.ConnID = connId; //requestReconnectCall.PreviousConnID = reconnectConnID; requestReconnectCall.ConnID = reconnectConnID; requestReconnectCall.PreviousConnID = connId; Settings.GetInstance().VoiceProtocol.Send(requestReconnectCall); logger.Info("---------------Reconnect------------------"); //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:" + reconnectConnID); logger.Info("PreviousConnectionID:" + connId); logger.Info("--------------------------------------------"); switch (pStatus) { case PhoneFunctions.CancelTransfer: output.MessageCode = "200"; output.Message = "Call Reconnected"; break; case PhoneFunctions.CancelConference: output.MessageCode = "200"; output.Message = "Call Reconnected"; break; } } catch (System.Exception commonException) { logger.Error("Error occurred while reconnect the call " + commonException.ToString()); switch (pStatus) { case PhoneFunctions.CancelTransfer: output.MessageCode = "2001"; output.Message = commonException.Message; break; case PhoneFunctions.CancelConference: output.MessageCode = "2001"; output.Message = commonException.Message; break; } } return(output); }
private void TServerEventsHandler(object sender, EventArgs e) { IMessage message = ((MessageEventArgs)e).Message; switch (message.Id) { case Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentLogin.MessageId: var eventAgentLogin = (Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentLogin)message; //EnviaMensagemSignalR("ServidorCTI", eventAgentLogin.ToString()); AtualizaEstadoAgente(eventAgentLogin.AgentID, eventAgentLogin.ThisDN, Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentLogin.MessageId, eventAgentLogin.ThisQueue, message.Name); break; case Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentLogout.MessageId: var eventAgentLogout = (Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentLogout)message; AtualizaEstadoAgente(eventAgentLogout.AgentID, eventAgentLogout.ThisDN, Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentLogout.MessageId, eventAgentLogout.ThisQueue, message.Name); break; case Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentReady.MessageId: var eventAgentReady = (Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentReady)message; AtualizaEstadoAgente(eventAgentReady.AgentID, eventAgentReady.ThisDN, Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentReady.MessageId, eventAgentReady.ThisQueue, message.Name); break; case Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentNotReady.MessageId: var eventAgentNotReady = (Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentNotReady)message; EnviaMensagemSignalR("ServidorCTI", eventAgentNotReady.ToString()); AtualizaEstadoAgente(eventAgentNotReady.AgentID, eventAgentNotReady.ThisDN, Genesyslab.Platform.Voice.Protocols.TServer.Events.EventAgentNotReady.MessageId, eventAgentNotReady.ThisQueue, message.Name); break; case Genesyslab.Platform.Voice.Protocols.TServer.Events.EventRinging.MessageId: var eventRinging = (Genesyslab.Platform.Voice.Protocols.TServer.Events.EventRinging)message; connIdAnswered = new Genesyslab.Platform.Voice.Protocols.ConnectionId(eventRinging.ConnID); EnviaMensagemSignalR("ServidorCTI", "EventRinging(...) connId: " + connIdAnswered.ToString()); AtualizaEstadoAgente(eventRinging.AgentID, eventRinging.ThisDN, Genesyslab.Platform.Voice.Protocols.TServer.Events.EventRinging.MessageId, eventRinging.ThisQueue, message.Name); break; case Genesyslab.Platform.Voice.Protocols.TServer.Events.EventDialing.MessageId: var eventDialing = (Genesyslab.Platform.Voice.Protocols.TServer.Events.EventDialing)message; connId = new Genesyslab.Platform.Voice.Protocols.ConnectionId(eventDialing.ConnID); if (eventDialing.TransferConnID != null) connIdTransfer = new Genesyslab.Platform.Voice.Protocols.ConnectionId(eventDialing.TransferConnID); EnviaMensagemSignalR("ServidorCTI", "EventDialing(...) connId: " + connId.ToString()); AtualizaEstadoAgente(eventDialing.AgentID, eventDialing.ThisDN, Genesyslab.Platform.Voice.Protocols.TServer.Events.EventDialing.MessageId, eventDialing.ThisQueue, message.Name); break; case Genesyslab.Platform.Voice.Protocols.TServer.Events.EventEstablished.MessageId: var eventEstabilished = (Genesyslab.Platform.Voice.Protocols.TServer.Events.EventEstablished)message; if (connId == null) connId = new Genesyslab.Platform.Voice.Protocols.ConnectionId(eventEstabilished.ConnID); if (eventEstabilished != null && eventEstabilished.UserData != null) { foreach (var chave in eventEstabilished.UserData.AllKeys) EnviaMensagemSignalR("ServidorCTI", String.Format("[{0}] = {1}", chave, eventEstabilished.UserData[chave])); } EnviaMensagemSignalR("ServidorCTI", "EventRinging(...) connId: " + eventEstabilished.ToString()); AtualizaEstadoAgente(eventEstabilished.AgentID, eventEstabilished.ThisDN, Genesyslab.Platform.Voice.Protocols.TServer.Events.EventReleased.MessageId, eventEstabilished.ThisQueue, message.Name); break; case Genesyslab.Platform.Voice.Protocols.TServer.Events.EventReleased.MessageId: var eventReleased = (Genesyslab.Platform.Voice.Protocols.TServer.Events.EventReleased)message; AtualizaEstadoAgente(eventReleased.AgentID, eventReleased.ThisDN, Genesyslab.Platform.Voice.Protocols.TServer.Events.EventReleased.MessageId, eventReleased.ThisQueue, message.Name); break; case Genesyslab.Platform.Voice.Protocols.TServer.Events.EventError.MessageId: var eventError = (Genesyslab.Platform.Voice.Protocols.TServer.Events.EventError)message; EnviaMensagemSignalR("ServidorCTI-Erro", eventError.ToString()); break; default: EnviaMensagemSignalR("ServidorCTI", String.Format("MessageID: {0} - MessageName: {1}", message.Id, message.Name)); break; } }