【问题标题】:How can I make Bot Framework Prompt Choices only accept exact matches?如何使 Bot Framework Prompt Choices 只接受完全匹配?
【发布时间】:2017-12-07 00:24:19
【问题描述】:

在 Bot Framework (NodeJS api) 中,如何强制我的提示选择仅与完全匹配的用户输入匹配,而不是进行部分匹配或模糊匹配?我应该为如此基本的东西创建一个自定义提示吗?

我正在使用此代码:

var choices_films = JSON.parse(fs.readFileSync('films.json', 'utf8'));
builder.Prompts.choice(session, "Say one film", choices_films, { listStyle: builder.ListStyle.button, minScore: 1.0 });

films.json 包含以下内容:

[
    {
        "value": "House of Cards",
        "synonyms": ["house of cards", "house cards", "cards"]
},
{
        "value": "House of Kings",
        "synonyms": ["house kings", "house of kings", "kings"]
}, 
{
        "value": "Matrix Revolutions",
        "synonyms": ["matrix", "revolutions"]
}]

如果我说“house”,则选择“House of Cards”,因为它首先出现,并且机器人框架忽略了我的“minScore:1.0”。任何想法都会受到欢迎,因为目前我必须进行自定义选择或使用中间件来捕获并修复它......

【问题讨论】:

  • 你能进一步解释你的问题吗?代码示例也会有所帮助
  • 语言? C# 还是 Node?​​span>
  • 嗨,Daniel -- 我认为这是一个很好且可以回答的问题,我对其进行了编辑以稍微清理措辞。也就是说,正如@EzequielJadib 所提到的,如果您在询问有关 Bot 框架的问题时能够澄清您使用的是 C# 还是 Node.js SDK,那么人们就更容易为您的特定场景提供答案。谢谢!

标签: botframework


【解决方案1】:

如果您使用的是 C# 版本的 SDK,则有一个 PromptDialog.Choice signature,其中包括 a parameter called minScore,描述如下:

(可选)将公认的选择视为匹配所需的最低分数为 0.0 - 1.0。默认值为“0.4”。

如果 minScore 设置为小于 1 的值,则将使用模糊匹配,但如果将值设置为 1,则仅接受精确匹配。

方法签名如下:

public static void Choice<T>(IDialogContext context, ResumeAfter<T> resume, IPromptOptions<T> promptOptions, bool recognizeChoices = true, bool recognizeNumbers = true, bool recognizeOrdinals = true, double minScore = 0.4)

如果您使用的是 Node.js 版本的 SDK,在 IPromptChoiceFeatures 接口 (link to source) 中似乎有一个equivalent minScore parameter,即passed to the PromptChoice constructor,因此您应该可以设置阈值那里也有类似的——但除此之外,我无法说出具体的语法,因为我没有亲自使用过 Node.js SDK。

【讨论】:

  • 感谢@SamHanley 的提示,我使用的是NodeJS,但我尝试使用minScore 1.0,它仍在进行部分匹配。它是我正在使用的代码:builder.Prompts.choice(session, "Choose one option", choices_list, { listStyle: builder.ListStyle.button, minScore: 1.0 });
  • 你能创建一个简单的例子来重现这个问题吗?正如我所说,我承认我只使用了 C# 版本,而不是 Node,但是没有关于您的用例的任何更清晰的信息,我只能说这是应该工作的代码。
  • 我认为当您在不同选项中使用多个单词(例如同义词)并且重复单词时会出现问题。例如:“国王之家”和“纸牌之家”。
  • 再次 - 除非您编辑您的问题以包含重现该问题的实际、具体的代码示例/场景,否则我所能做的就是告诉您,如果您使用它,您所报告的内容不应该发生代码。在您提出的具体问题上,这是对您问题的正确答案 - 如果您想获得更具体的答案,那么您需要关于您的具体问题的更多详细信息。
  • 完成!如果您需要任何其他信息,请告诉我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 2020-11-02
  • 1970-01-01
  • 2012-12-22
  • 2018-08-19
  • 1970-01-01
  • 2016-10-15
相关资源
最近更新 更多