Exemple #1
0
        protected virtual IScorableFactory <IResolver, object> MakeFactory(IDialogContext context, IActivity activity)
        {
            var cache = new DictionaryCache <ILuisService, Uri, LuisResult>(EqualityComparer <Uri> .Default);

            var serviceByModel = new Dictionary <ILuisModel, ILuisService>();

            Func <ILuisModel, ILuisService> MakeLuisService = model =>
            {
                ILuisService service;
                if (!serviceByModel.TryGetValue(model, out service))
                {
                    service = new CachingLuisService(MakeService(model), cache);
                    serviceByModel.Add(model, service);
                }

                return(service);
            };

            IScorableFactory <IResolver, object> factory = new OrderScorableFactory <IResolver, object>
                                                           (
                new LuisIntentScorableFactory(MakeLuisService),
                new RegexMatchScorableFactory(MakeRegex),
                new MethodScorableFactory()
                                                           );

            return(factory);
        }
        protected virtual IScorableFactory <IResolver, object> MakeFactory(IDialogContext context, IActivity activity)
        {
            var comparer = MakeComparer(context, activity);

            IScorableFactory <IResolver, object> factory = new OrderScorableFactory <IResolver, object>
                                                           (
                this.OnStage,
                comparer,
                new LuisIntentScorableFactory(MakeService),
                new RegexMatchScorableFactory(MakeRegex),
                new MethodScorableFactory()
                                                           );

            return(factory);
        }