//-------------------------------------------- Private ----------------------------------- CustomerRoute getCustomerRoute(short pServiceId, int pBaseRouteId) { CustomerRoute _customerRoute = null; using (Rbr_Db _db = new Rbr_Db()) { RouteRow _routeRow = _db.RouteCollection.GetByPrimaryKey(pBaseRouteId); if (_routeRow != null) { WholesaleRouteRow _wholesaleRouteRow = _db.WholesaleRouteCollection.GetByServiceIdBaseRouteId(pServiceId, pBaseRouteId); if (_wholesaleRouteRow != null) { _customerRoute = new CustomerRoute(_wholesaleRouteRow, _routeRow); } else { T.LogRbr(LogSeverity.Error, "CustomerRouteImdbRepository.getCustomerRoute", string.Format("ServiceRouteRow NOT FOUND: {0}, {1}", pServiceId, pBaseRouteId)); } } else { T.LogRbr(LogSeverity.Error, "CustomerRouteImdbRepository.getCustomerRoute", string.Format("CustomerRouteRow NOT FOUND: {0}, {1}", pServiceId, pBaseRouteId)); } } return(_customerRoute); }
public static IScriptHandler CreateFlowHandler(ScriptInfo pScript, ISession pSession) { if (pScript == null || pSession == null) { throw new Exception("SessionFactory.Createinstance Error: Script or Session == null"); } var _instance = Activator <ScriptType, IScriptHandler> .CreateInstance(pScript.ScriptType, new object[] { pScript, pSession }); if (_instance == null) // Create a type and Add it to the generic Factory, so it can be cached and returned next time. { var _typeName = string.Format("Timok.IVR.Scripting.{0}CallScript", pScript.ScriptType); var _type = Assembly.GetCallingAssembly().GetType(_typeName); if (_type == null) { T.LogRbr(LogSeverity.Error, "SessionFactory.Createinstance", string.Format("Error creating type={0}", _typeName)); return(null); } Activator <ScriptType, ISessionHandler> .Add(pScript.ScriptType, _type); _instance = Activator <ScriptType, IScriptHandler> .CreateInstance(pScript.ScriptType, new object[] { pScript, pSession }); } return(_instance); }
static void loadMappingTable() { lock (padlock) { if (!NumberRoutingState.ShouldReload) { T.LogRbr(LogSeverity.Debug, "NumberRoutingCallScript.ExecuteScript", "RoutingTable should not reload, no changes present."); return; } NumberRoutingState.ShouldReload = false; routingTable = new Dictionary <string, string>(); if (File.Exists(Configuration.IVR.NumberRoutingFilePath)) { using (TextReader _tr = new StreamReader(Configuration.IVR.NumberRoutingFilePath)) { string _line; while ((_line = _tr.ReadLine()) != null) { if (_line.Length <= 0) { T.LogRbr(LogSeverity.Status, "NumberRoutingCallScript.StaticCtor", "Empty Line!"); break; } string[] _fields = _line.Split(','); routingTable.Add(_fields[0], _fields[1]); } } } } }
static NumberRoutingCallScript() { T.LogRbr(LogSeverity.Status, "NumberRoutingCallScript.StaticCtor", string.Format("RoutingTable file: {0}", Configuration.IVR.NumberRoutingFilePath)); NumberRoutingState.ShouldReload = true; callCount = 0; loadMappingTable(); }
//------------------------------------------------ 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); }
//------------------------------------------------ Private -------------------------------------------------- ISessionScript create(ISessionChannel pChannel, string pOrigIPAddress, string pAccessNumber, string pANI) { ISessionScript _sessionScript; try { ISession _session = new Session(pChannel, pOrigIPAddress, pAccessNumber, pANI); ScriptInfo _scriptInfo = new ScriptInfo(); _sessionScript = new TestCallScript(RbrResult.Success, _session, _scriptInfo); } catch (Exception _ex) { T.LogRbr(LogSeverity.Critical, "SessionScriptFactory.create", string.Format("CallFlowFactory.Create, Exception:\r\n{0}", _ex)); return(null); } return(_sessionScript); }
bool validateOptionalPromptFiles(StringCollection pFiles) { if (pFiles == null || pFiles.Count == 0) { T.LogRbr(LogSeverity.Status, "validateOptionalPromptFiles", string.Format("IVR_InvalidPromptFiles")); return(false); } foreach (string _file in pFiles) { if (!File.Exists(_file)) { T.LogRbr(LogSeverity.Status, "validateOptionalPromptFiles", string.Format("IVR_InvalidPromptFile {0}", _file)); return(false); } } return(true); }
protected override void ExecuteScript() { //REFACTOR: needs new implementation! T.LogRbr(LogSeverity.Error, "NumberRoutingCallScript.ExecuteScript", "Not Activated!, reject"); throw new Exception("Number Routing Not Activeted!"); if (callCount > 2) { T.LogRbr(LogSeverity.Debug, "NumberRoutingCallScript.ExecuteScript", "More then 2 calls active!, reject"); return; } Interlocked.Increment(ref callCount); try { #region TODO: /* * if ((DateTime.Now.Minutes % 5 == 0) { * reloadMapingTable(); * } */ #endregion string[] _mappingFields = getMappingFields(); if (_mappingFields != null) { T.LogRbr(LogSeverity.Debug, "NumberRoutingCallScript.ExecuteScript", "Main menu choice"); if (GetUserChoice(PromptManager.MainMenuChoicePrompt(pressOneMenuChoice), pressOneMenuChoice, 1) == 1) { T.LogRbr(LogSeverity.Debug, "NumberRoutingCallScript.ExecuteScript", "Making Call out"); MakeCall(); } T.LogRbr(LogSeverity.Debug, "NumberRoutingCallScript.ExecuteScript", "Call ended"); } else { T.LogRbr(LogSeverity.Error, "NumberRoutingCallScript.ExecuteScript", "RoutingTable is EMPTY"); } } finally { Interlocked.Decrement(ref callCount); } }
//------------------------------------------------ Private ------------------------------------------------- RbrResult handleException(Exception pEx) { T.LogRbr(LogSeverity.Critical, "SessionScriptBase.HadleException", string.Format("{0},{1}, Exception:\r\n{2}", session.Id, session.Channel, pEx)); return(RbrResult.ExceptionThrown); }
public NumberRoutingCallScript(ScriptInfo pScript, ISession pSession) : base(pScript, pSession) { T.LogRbr(LogSeverity.Status, "NumberRoutingCallScript.Ctor", string.Format("AccessNumber: {0}", pSession.AccessNumber)); Info.AuthenticationType = ScriptAuthenticationType.None; }