//------------------------------------------------ Private -------------------------------------------------- ISessionScript create(ISessionChannel pChannel, string pOrigIPAddress, string pAccessNumber, string pANI) { ISessionScript _sessionScript; try { ISession _session = new Session(pChannel, pOrigIPAddress, pAccessNumber, pANI); Thread.SetData(Thread.GetNamedDataSlot(Thread.CurrentThread.Name), _session.Id); ScriptInfo _scriptInfo; RbrResult _rc = rbr.InitRetailSession(_session, out _scriptInfo); if (_scriptInfo == null) { return(null); } switch (_scriptInfo.ScriptType) { case ScriptType.PhoneCard: { _scriptInfo.PinLength += 1; //NOTE: this is so that we pickup '#' terminator too, since standard prompt directs user to pres '#' after the PinNumber _sessionScript = new PhoneCardCallScript(_rc, _session, _scriptInfo); break; } case ScriptType.Residential: { _sessionScript = new ResidentialCallScript(_rc, _session, _scriptInfo); break; } case ScriptType.LD: { _sessionScript = new LDCallScript(_rc, _session, _scriptInfo); break; } case ScriptType.LadyGuadalupe: { _scriptInfo.PinLength += 1; //NOTE: this is so that we pickup '#' terminator too, since standard prompt directs user to pres '#' after the PinNumber _sessionScript = new LadyGuadalupeCallScript(_rc, _session, _scriptInfo); break; } default: { T.LogRbr(LogSeverity.Critical, "SessionScript.create", string.Format("Error: Unknown RetailType {0}", _scriptInfo)); return(null); } } } catch (Exception _ex) { T.LogRbr(LogSeverity.Critical, "SessionScriptFactory.create", string.Format("CallFlowFactory.Create, Exception:\r\n{0}", _ex)); return(null); } return(_sessionScript); }
public void Run(bool pIsFinal) { RbrResult _rbrResult = RbrResult.Success; try { run(); } catch (Exception _ex) { _rbrResult = handleException(_ex); } finally { SetCallEnd(_rbrResult, pIsFinal); } }
protected void SetCallEnd(RbrResult pRbrResult, bool pIsFinal) { if (pIsFinal) { if (session.State == SessionState.Leg1) { session.Channel.DisconnectLeg1(); } else if (session.State == SessionState.Leg2) { session.Channel.DisconnectAll(); } } }
public SessionScriptBase(RbrResult pInitResult, ISession pSession, ScriptInfo pScriptInfo) { session = pSession; scriptInfo = pScriptInfo; promptManager = new PromptManager(scriptInfo); leg1Length = 0; cardLength = scriptInfo.PinLength; neverUsed = false; startingBalance = currentBalance = decimal.Zero; currentBonusBalance = 0; serialNumber = string.Empty; callState = CallState.Initializing; }
bool setCallEnd(RbrResult pRbrResult) { try { cdr.End(); var _cause = IVRDisconnectCause.LC_NORMAL; var _source = IVRDisconnectSource.IVR; if (session.Channel.DisconnectCause != (int)IVRDisconnectCause.LC_UNKNOWN) { _cause = (IVRDisconnectCause)session.Channel.DisconnectCause; _source = (IVRDisconnectSource)session.Channel.DisconnectSource; } cdr.SetCause(_cause, _source, pRbrResult); sessionHandler.CallComplete(session.Id, cdr.CallId, cdr.ToString()); sessionHandler.OnCompleted(callState, safeCarrierAcctId(), LegIn.CustomerAcctId); //TODO: just do DisconnectAll here? if (session.State == SessionState.Leg1) { session.Channel.DisconnectLeg1(); return(false); } if (lastAttempt()) { session.Channel.DisconnectAll(); return(false); } session.Channel.DisconnectLeg2(); return(true); } finally { if (lastAttempt() && account.Obtained) { sessionHandler.SetRetailAcctNotInUse(session); } } }
public void SetCause(IVRDisconnectCause pDisconnectCause, IVRDisconnectSource pDisconnectSource, RbrResult pRbrResult) { switch (pDisconnectCause) { case IVRDisconnectCause.LC_NORMAL: disconnectCause = (int)GkDisconnectCause.NormalCallClearing; break; case IVRDisconnectCause.LC_NUMBER_BUSY: disconnectCause = (int)GkDisconnectCause.UserBusy; break; case IVRDisconnectCause.LC_NO_ANSWER: disconnectCause = (int)GkDisconnectCause.NoAnswer; break; case IVRDisconnectCause.LC_NUMBER_UNOBTAINABLE: disconnectCause = (int)GkDisconnectCause.UnallocatedNumber; break; case IVRDisconnectCause.LC_NUMBER_CHANGED: disconnectCause = (int)GkDisconnectCause.NumberChanged; break; case IVRDisconnectCause.LC_OUT_OF_ORDER: disconnectCause = (int)GkDisconnectCause.DestinationOutOfOrder; break; case IVRDisconnectCause.LC_INCOMING_CALLS_BARRED: disconnectCause = (int)GkDisconnectCause.InvalidNumberFormat; break; case IVRDisconnectCause.LC_CALL_REJECTED: disconnectCause = (int)GkDisconnectCause.CallRejected; break; case IVRDisconnectCause.LC_CALL_FAILED: disconnectCause = (int)GkDisconnectCause.ResourceUnavailable; break; case IVRDisconnectCause.LC_CHANNEL_BUSY: disconnectCause = (int)GkDisconnectCause.ChannelUnacceptable; break; case IVRDisconnectCause.LC_NO_CHANNELS: disconnectCause = (int)GkDisconnectCause.NoCircuitChannelAvailable; break; case IVRDisconnectCause.LC_CONGESTION: disconnectCause = (int)GkDisconnectCause.Congestion; break; default: break; } disconnectSource = (byte)pDisconnectSource; rbrResult = (int)pRbrResult; mappedDisconnectCause = (int)pDisconnectCause; }
public RbrException(RbrResult pRbrResult, string pSource, string pMessage) : base(pMessage) { RbrResult = pRbrResult; base.Source = pSource; }
public RbrException(RbrResult pRbrResult, string pMessage) : base(pMessage) { RbrResult = pRbrResult; }
public TestCallScript(RbrResult pInitResult, ISession pSession, ScriptInfo pScriptInfo) : base(pInitResult, pSession, pScriptInfo) { }