Botframework 如何使Bot框架提示选择仅接受精确匹配?

Botframework 如何使Bot框架提示选择仅接受精确匹配?,botframework,Botframework,在Bot框架(nodejsapi)中,如何强制我的提示选择只与完全匹配的用户输入匹配,而不是进行部分或模糊匹配?我应该为如此基本的东西创建一个自定义提示吗 我正在使用以下代码: var choices_films = JSON.parse(fs.readFileSync('films.json', 'utf8')); builder.Prompts.choice(session, "Say one film", choices_films, { listStyle: builder.ListSt

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

我正在使用以下代码:

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”,因为它首先出现,而bot框架忽略了我的“minScore:1.0”。任何想法都是受欢迎的,因为目前我必须做一个自定义选择,或者使用中间件来捕获并修复它…

如果您使用的是C版本的SDK,那么有一个包括,描述如下:

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)
(可选)被认可的选择被视为匹配所需的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)
公共静态无效选项(IDialogContext上下文、恢复后恢复、IPromptOptions提示选项、bool recognizeChoices=true、bool recognizeNumber=true、bool recognizeOrdinals=true、double minScore=0.4)

如果您使用的是Node.js版本的SDK,那么IPromptChoiceFeatures接口()中似乎有一个阈值,也就是说,您应该能够在那里设置类似的阈值-但除此之外,我不能谈论特定的语法,因为我没有亲自使用Node.js SDK。

您能进一步解释您的问题吗?代码示例有助于工具语言?C#还是节点?嗨,丹尼尔——我认为这是一个很好的、可以回答的问题,我对它进行了编辑,以稍微整理一下措辞。也就是说,正如@EzequielJadib所提到的,如果您能够澄清在询问有关Bot框架的问题时是使用C#还是Node.js SDK,那么人们就更容易为您的特定场景提供答案。谢谢谢谢@SamHanley的提示,我正在使用NodeJS,但我尝试使用minScore 1.0,它仍然在进行部分匹配。这就是我正在使用的代码:
builder.Prompts.choice(会话,“选择一个选项”,选项列表,{listStyle:builder.listStyle.button,minScore:1.0})你能创建一个简单的例子来重现这个问题吗?正如我所说的,我承认我只使用了C版本,而不是Node,但是没有任何关于用例的更清晰的信息,我能说的是这是应该可以工作的代码。我认为当你在不同的选项中使用多个单词,比如同义词,并且你有重复的单词时,问题就会出现。例如:“国王之家”和“纸牌之家”。再一次-除非你编辑你的问题以包含一个真实的、具体的代码样本/场景来再现这个问题,否则我所能做的就是告诉你,如果你使用这个代码,你所报告的不应该发生。这是你所问问题的正确答案——如果你想得到一个更具体的答案,那么你需要关于你的具体问题的更好的细节。完成!如果你需要任何其他信息,请告诉我