Привет. Я внедряю бот, использующий ядро. 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);
}
}
}