Bot Framework中的PromptDialog.Choice显示运行良好的选项列表。但是,我希望有一个选项来取消/退出/退出对话框,并在列表中给出cancel / escape / exit optioin。 PromptDialog.Choice中有什么可以覆盖,因为我没有找到任何取消选项。
这是我在c#中的代码..
PromptDialog.Choice(
context: context,
resume: ChoiceSelectAsync,
options: getSoftwareList(softwareItem),
prompt: "We have the following software items matching " + softwareItem + ". (1), (2), (3). Which one do you want?:",
retry: "I didn't understand. Please try again.",
promptStyle: PromptStyle.PerLine);
示例:
Bot:我们有以下与Photoshop相匹配的软件。 (1),(2),(3)。你想要哪一个
如果用户不输入上述内容或命令或编号,取消,退出,绕过上述选项,而不触发重试错误消息,我想要的是什么。
我们如何做到这一点?
答案 0 :(得分:3)
有两种方法可以实现这一目标:
答案 1 :(得分:2)
只需添加选项"取消"在列表上,并在获取用户输入的方法上使用switch-case,然后调用main manu,或者在取消时执行任何操作
答案 2 :(得分:0)
当前提示选择不能以这种方式工作,以允许用户按编号选择。我已经覆盖了CancleablePromptChoice中的ScoreMatch函数,如下所示
public override Tuple<bool, int> ScoreMatch(T option, string input)
{
var trimmed = input.Trim();
var text = option.ToString();
// custom logic to allow users to select by number
int isInt;
if(int.TryParse(input,out isInt) && isInt <= promptOptions.Options.Count())
{
text = promptOptions.Options.ElementAt(isInt - 1).ToString();
trimmed = option.ToString().Equals(text) ? text :trimmed;
}
bool occurs = text.IndexOf(trimmed, StringComparison.CurrentCultureIgnoreCase) >= 0;
bool equals = text == trimmed;
return occurs ? Tuple.Create(equals, trimmed.Length) : null;
}
@Ezequiel再次感谢你!