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 } }; }
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; } }
IEnumerable <TDomain> IScopeManager <TDomain> .GetScopes(ScopesSelector selector, int sessionId) { return(_scopes.Value.Values.SelectMany(e => e.GetScopes(selector, sessionId))); }