如何避免PromptChoice重试消息

时间:2017-07-14 20:54:43

标签: c# botframework

与此问题非常类似的问题:How to get PromptDialog.Choice features and still allow other User responses in Bot Framework?

我想扩展PromptChoice以向用户提供许多选项,如下所示:

这是我发现的:

选项1 选项2 备选方案3

您想了解哪些信息?

如果用户以“选项1”响应,我想使用PromptChoice来选择它。但是如果用户用更自然的语言回答,比如“选项1在哪里”?即使开箱即用的PromptChoice没有处理这个问题,我也想回答有关选项1的信息。

我知道我必须覆盖TryParse,但我感到困惑的是如何自己解析消息,然后从选项列表中选择正确的选项。我必须在PromptChoice中覆盖哪些内容才能添加此功能?

1 个答案:

答案 0 :(得分:2)

首先查看PromptChoice实施及其TryParse方法,here

您将看到它是通过3个识别步骤制作的:

  • 识别选择(尝试识别您提供的可能选择)
  • 识别数字(“数字1”,“选择3”等)
  • 识别序数(如“第一价值”,“最后选择”等)

这些步骤将提供topScoretopEntity,并返回这3个值中的最佳值(如果topScore优于minScore值。)< / p>

请注意,可以在PromptChoice设置中禁用每个识别,并且也可以在那里设置minScore值。

如何修改行为?

一个想法是将minScore值设置得相当高,并添加else语句来执行您的专用代码。

那将是:

if (topScore >= this.minScore && topScore > 0)
{
    result = topEntity;
    return true;
}
else
{
    // Your custom code here
    // You have access to your list of options, to your message...
}

我无法在your custom code here中添加有关该怎么做的详细信息,因为您的问题不够明确。如果它是“已知的固定问题”,那么比理解所有自然语言可能性要容易得多。