有没有一种方法可以使用ChoicePrompt而不验证选择?

时间:2019-03-29 17:48:02

标签: botframework

我想为用户提供一系列选择,但也允许他们键入自由格式的文本。选择提示会自动提示,直到选择了一个选项或同义词为止。

RecognizerOptions NoValue和/或NoAction似乎与此有关,但是我无法找到关于它们的优质文档。将它们设置为true无效。

AddDialog(new ChoicePrompt(promptForChoice) { RecognizerOptions = new FindChoicesOptions() { NoValue = true, NoAction = true } });

我还尝试创建一个始终返回true的“任何”验证器。

AddDialog(new ChoicePrompt(promptForChoice, validator: AnythingValidator.AnythingValidatorAsync) { RecognizerOptions = new FindChoicesOptions() { NoValue = true, NoAction = true } });
public static Task<bool> AnythingValidatorAsync(PromptValidatorContext<FoundChoice> promptContext, CancellationToken cancellationToken)
    {           
        return Task.FromResult(true);
    }

这允许提示退出,但结果为null。我可以找出用户从Context.Activity.Text中输入的内容,但这似乎不是一个非常可靠的解决方案。

PromptChoice似乎缺少一些明显的东西

1 个答案:

答案 0 :(得分:0)

通过对用户需要选择的选项进行硬编码来进行选择。我们不能在选择中实现自由格式的文本。您可以做的是,在选择列表中添加另一个选择“其他”,并实现waterfall以获取用户输入。另外,您不能使用RecognizerOptions,因为它们与同义词相关。