コード例 #1
0
        //-------------------------------------------- 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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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]);
                        }
                    }
                }
            }
        }
コード例 #4
0
 static NumberRoutingCallScript()
 {
     T.LogRbr(LogSeverity.Status, "NumberRoutingCallScript.StaticCtor", string.Format("RoutingTable file: {0}", Configuration.IVR.NumberRoutingFilePath));
     NumberRoutingState.ShouldReload = true;
     callCount = 0;
     loadMappingTable();
 }
コード例 #5
0
        //------------------------------------------------ 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);
        }
コード例 #6
0
        //------------------------------------------------ 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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
0
 //------------------------------------------------ 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);
 }
コード例 #10
0
 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;
 }