可以在bot框架中预填充形成流场
本文关键字:填充 bot 框架 | 更新日期: 2023-09-27 18:17:17
我用formflow问了几个问题,最后填写了一个表单。生成一个惟一的id,并在最后给用户。现在使用这个唯一id编辑表单。是否有可能预先填充字段?或者还有其他方法吗?
这是我用来第一次创建表单的代码:
public static IForm<AssesmentHelper> BuildForm()
{
OnCompletionAsyncDelegate<AssesmentHelper> wrapUpRequest = async (context, state) =>
{
//Do something....
};
return new FormBuilder<AssesmentHelper>()
.Message(Responses.NumberSelection)
.Field(nameof(Name))
.Field(nameof(Age))
.Field(nameof(Address))
.Field(nameof(Information))
.Field(nameof(Email), validate: ValidateMailId)
.AddRemainingFields()
.OnCompletion(wrapUpRequest)
.Build();
}
现在,我想要预填充字段(Name, Age, Address),以便我可以使用它进行编辑。
是的,你可以传递一个表单状态/模型的实例给FormDialog,并预先填充表单参数(如你在这里看到的)。记住这一点。如果这样做,如果字段有值,则跳过填充字段的任何步骤。
如果你仍然想请求这些参数,即使它们有一个值;你必须更改FormOptions并使用FormOptions。PromptFieldsWithValues,它将提示字段,但对于默认值使用传入状态。
相关文档在这里
当然可以预先填充表单流字段首先,您将查找要填充的字段,然后将它们添加到实体列表
我正在使用LUIS,如果我从我的LUIS结果中找到一个合适的实体,我将把它添加到要预填充的表单中。
var entities = new List<EntityRecommendation>(result.Entities);
if (entities.Any(e => e.Type == "IdNumber"))
{
entities.Add(new EntityRecommendation(type: "IdNumber") { Entity = entities.FirstOrDefault(e => e.Type == "IdNumber").Entity});
}
这将在调用要构建的表单之前完成。只要确保你的"type"是你的类的属性名。"Entity"的值为