Exemple #1
0
        private ScopesSelector <ContextsClient> RegisterContextsClientBalancer(IComponentContext context)
        {
            var configuration = context.Resolve <DialogflowConfiguration[]>();

            var contexts = GetScopesContexts(configuration);

            var storage  = context.Resolve <IScopeBindingStorage>();
            var balancer = new ScopesSelector <ContextsClient>(storage, contexts, CreateDialogflowContextsClient);

            return(balancer);
        }
        public DialogflowService(
            IMapper mapper,
            ScopesSelector <SessionsClient> sessionsClientBalancer,
            ScopesSelector <ContextsClient> contextsClientBalancer)
        {
            _mapper = mapper;
            _sessionsClientBalancer = sessionsClientBalancer;
            _contextsClientBalancer = contextsClientBalancer;

            _eventResolvers = new Dictionary <InternalModels.Source, Func <InternalModels.Request, string, EventInput> >
            {
                { InternalModels.Source.Yandex, DefaultWelcomeEventResolve },
                { InternalModels.Source.Sber, DefaultWelcomeEventResolve },
                { InternalModels.Source.Marusia, DefaultWelcomeEventResolve }
            };
        }
Exemple #3
0
        internal IEnumerable <T> GetScopes(ScopesSelector selector, int sessionId)
        {
            var next = this;

            while (next != null)
            {
                if (selector == ScopesSelector.Loaded)
                {
                    if (_startSessionId != 0)
                    {
                        yield return(Domain);
                    }
                }
                else if (IsActive(sessionId))
                {
                    yield return(Domain);

                    yield break; // Only one active domain for a session
                }
                next = next._next;
            }
        }
Exemple #4
0
 IEnumerable <TDomain> IScopeManager <TDomain> .GetScopes(ScopesSelector selector, int sessionId)
 {
     return(_scopes.Value.Values.SelectMany(e => e.GetScopes(selector, sessionId)));
 }