Azure Bot输入特定字符串时跳过对话环节的问题求助
解决Azure Bot FormFlow中字段跳转的问题
这个情况我之前在使用Bot Framework的FormFlow时也遇到过,本质是FormFlow默认开启了字段导航功能——它允许用户通过输入字段名称直接跳转到对应环节,虽然这个设计在某些场景下提升了灵活性,但显然和你想要的“按顺序完成选择”的需求冲突了。
问题成因
FormFlow的默认配置里,FormOptions中的AllowNavigation属性默认是true,这就导致系统会识别用户输入的文本是否匹配表单中的字段名(或者字段的显示文本),一旦匹配就自动跳转到对应字段,跳过当前的输入验证流程。比如你输入“dessert”时,系统识别到这对应DessertOptions字段,就直接跳转到甜点选择环节了。
解决方案
要禁用这种跳过行为,只需要在构建表单的时候关闭AllowNavigation选项即可,具体代码修改如下:
.BuildForm() .Message("Choose your pizza") .Field(nameof(PizzaOptions)) .Message("Choose a dessert") .Field(nameof(DessertOptions)) .WithFormOptions(options => { // 禁用字段跳转功能,强制用户按顺序完成每个环节 options.AllowNavigation = false; })
修改后,当用户在披萨选择环节输入“dessert”这类非披萨选项的内容时,机器人会提示输入无效,并要求用户从提供的披萨选项中选择,而不会跳转到甜点环节。
如果你之后有更精细的需求(比如允许部分字段跳转,禁止其他字段),可以通过自定义字段的Validate方法或者Active属性来控制,但对于你的场景来说,全局禁用导航就足够解决问题啦。
内容的提问来源于stack exchange,提问作者J Marlow
相关产品推荐
相关产品推荐

