首页 > 解决方案 > Bot Builder:更改提示对话框的“识别”选项

问题描述

我在 C# 中使用 Bot Builder 并promptdialogs询问我的用户选择。它工作正常,但我想限制我的用户使用提示中的按钮,据我发现,我可以设置recognizeOrdinalsandrecognizeNumbersrecognizeChoicesfalse 来解决我的问题。问题是我似乎找不到设置这些值的方法。

我正在使用这样的提示:

PromptDialog.Choice(context, ZipCodeUnavailableAnswerAsync, new List<string>() { "Mudar Código Postal", "Mudar Serviço", "Cancelar Pedido", "Apoio ao Cliente" }, "O que quer fazer?", "Desculpe, não percebi.");

我看到我也可以单独定义Promptoptions,但即使那样我似乎也找不到如何将这 3 个单独的值设置为 false,因为我不能只是将“识别器”的值更改为我想要的值据我所知。

var promptOptions = new PromptOptions<string>(
                        prompt: "O que quer fazer?",
                        retry: "Desculpe, não percebi.",
                        options: new List<string>() { "Mudar Código Postal", "Mudar Serviço", "Cancelar Pedido", "Apoio ao Cliente" },
                        recognizer: ;

标签: c#.netbotframework

解决方案


您可以使用此方法:

public static void Choice<T> (Microsoft.Bot.Builder.Dialogs.IDialogContext context, Microsoft.Bot.Builder.Dialogs.ResumeAfter<T> resume, System.Collections.Generic.IDictionary<T,System.Collections.Generic.IEnumerable<T>> choices, string prompt, string retry = null, int attempts = 3, Microsoft.Bot.Builder.Dialogs.PromptStyle promptStyle = Microsoft.Bot.Builder.Dialogs.PromptStyle.Auto, System.Collections.Generic.IEnumerable<string> descriptions = null, bool recognizeChoices = true, bool recognizeNumbers = true, bool recognizeOrdinals = true, double minScore = 0.4);

所以它看起来像:

var promptOptions = new PromptOptions<string>(
    prompt: "O que quer fazer?",
    retry: "Desculpe, não percebi.",
    options: new List<string>() { "Mudar Código Postal", "Mudar Serviço", "Cancelar Pedido", "Apoio ao Cliente" };

PromptDialog.Choice(context: context, resume: ZipCodeUnavailableAnswerAsync, promptOptions: promptOptions, recognizeChoices: false, recognizeNumbers: false, recognizeOrdinals: false);

推荐阅读