C# Проверка шага диалога с ботом - PullRequest
0 голосов
/ 30 января 2020

Привет. Я внедряю бот, использующий ядро. net. Я использую диалог водопада, чтобы иметь мой разговор. Дело в том, что между одним шагом и другим мне нужно проверять информацию, полученную с помощью моей базы данных. Я пытаюсь использовать проверки в опциях приглашения, но я не могу сделать это работает. Кто-нибудь может мне помочь. Вот мой код

public class DetectProblemStep : ComponentDialog
{
    // Define a "done" response for the company selection prompt.
    private const string DoneOption = "done";

    // Define value names for values tracked inside the dialogs.
    private const string UserInfo = "value-userInfo";

    public DetectProblemStep()
        : base(nameof(DetectProblemStep))
    {
        AddDialog(new TextPrompt(nameof(TextPrompt)));
        AddDialog(new NumberPrompt<int>(nameof(NumberPrompt<int>)));

        AddDialog(new ReviewSelectionDialog());

        AddDialog(new WaterfallDialog(nameof(WaterfallDialog), new WaterfallStep[]
        {
            NameStepAsync,
            EmailStepAsync
        }));

        InitialDialogId = nameof(WaterfallDialog);
    }

    private static async Task<DialogTurnResult> NameStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
    {
        // Create an object in which to collect the user's information within the dialog.
        stepContext.Values[UserInfo] = new UserProfile();

        var promptOptions = new PromptOptions { Prompt = MessageFactory.Text("Please enter your name."),
            Validations = nameof(NameValidation)
        };

        // Ask the user to enter their name.
        return await stepContext.PromptAsync(nameof(TextPrompt), promptOptions, cancellationToken);
    }

    private static async Task<DialogTurnResult> EmailStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
    {
        // Create an object in which to collect the user's information within the dialog.
        stepContext.Values[UserInfo] = new UserProfile();

        var promptOptions = new PromptOptions
        {
            Prompt = MessageFactory.Text("Please enter your Email."),
        };

        // Ask the user to enter their name.
        return await stepContext.PromptAsync(nameof(TextPrompt), promptOptions, cancellationToken);
    }



    public Task<bool> NameValidation(PromptValidatorContext<string> promptContext, CancellationToken cancellationToken)
    {

        return Task.FromResult(false);
    }


}

}

...