可以在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),以便我可以使用它进行编辑。

可以在bot框架中预填充形成流场

是的,你可以传递一个表单状态/模型的实例给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"的值为