我们有一个机器人将收集信息,我们想利用FormFlow。使用自定义提示器我们可以自定义传出消息,但有没有类似的工具让我们在传入消息到达识别器之前拦截它们?具体用例基于用户输入,我们可能希望立即存在流出并重定向到不同的对话框。
答案 0 :(得分:0)
使用FormFlow时,您可以使用business logic处理用户输入,您可以立即退出表单流并重定向到其他对话框。
由于validate函数无法传递上下文,因此您可以将上下文存储在构造时填充的表单变量中。
public MyFormClass(IDialogContext context)
{
Context = context;
}
public IDialogContext Context { get; set; }
public int IntegerField { get; set; }
稍后,调用特定字段的validate函数。在这里,您可以使用存储的上下文来启动新对话框。
return new FormBuilder<MyFormClass>()
.Field(nameof(IntegerField),
validate: async (state, value) =>
{
var result = new ValidateResult { IsValid = true };
if (state.IntegerField > 10)
{
await state.Context.Call(new Dialog(), Dialog.ResumeMethod);
return result;
}
else
{
return result;
}
}
)
.Build();
注意:
即使永远不会达到第一个return语句,也需要