Отключить / повторно включить распознаватель LUIS перед входом в диалоговое окно - PullRequest
0 голосов
/ 25 октября 2018

Я нахожусь в той же ситуации, что и многие, где я запускаю выбор. Скорее всего, LUIS выводит меня из моего WaterfallDialog и пытается сопоставить выбранный выбор с одним из моих намерений.Я видел много сообщений об этой же проблеме, и многие из решений включают использование LuisRecognizer.onEnabled() для отключения вызовов LUIS, находящихся внутри dialogStack.Тем не менее, это должно быть изменено в v4 SDK, потому что этот метод больше не существует в классе LuisRecognizer (https://docs.microsoft.com/en-us/dotnet/api/microsoft.bot.builder.ai.luis.luisrecognizer?view=botbuilder-dotnet-stable). Я видел решение, включающее состояние не используется, однако в Startup.cs у меня есть MemoryStorage иЯ передаю его в то, что я считаю правильными местами:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddBot<BasicBot>(options =>
        {
            ...
            IStorage dataStore = new MemoryStorage();
            var conversationState = new ConversationState(dataStore);
            options.State.Add(conversationState);
            var userState = new UserState(dataStore);
            options.State.Add(userState);
            services.AddSingleton(sp => new BotServices(botConfig));
            services.AddSingleton<BotAccessors>(sp =>
            {
            var options = sp.GetRequiredService<IOptions<BotFrameworkOptions>>().Value;
            var accessors = new BotAccessors(conversationState, userState)
            {
                CommandState = userState.CreateProperty<string>(BotAccessors.CommandStateName),
                ConversationDialogState = conversationState.CreateProperty<DialogState>(BotAccessors.DialogStateName),
            };
            return accessors;
        });
        services.AddSingleton(sp =>
        {
            var section = this.Configuration.GetSection("Luis");
            var luisApp = new LuisApplication(
                applicationId: "2d...",
                endpointKey: "64...",
                endpoint: "https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/")

            var luisPredictionOptions = new LuisPredictionOptions
            {
                IncludeAllIntents = true,
            };
            return new LuisRecognizer(
                application: luisApp,
                predictionOptions: luisPredictionOptions,
                includeApiResults: true);
        });
    }

С этой конфигурацией, я все еще получаю прерывание Луиса, когда я просто хочу перейти к следующему шагу диалога водопада после подсказки.У кого-нибудь есть идеи? Спасибо за вашу помощь.

...