可以预先填充机器人框架中的流场吗?

时间:2016-11-09 12:50:11

标签: c# botframework

我使用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();
}

现在,我想预先填充字段(名称,年龄,地址),以便我也可以使用它进行编辑。

2 个答案:

答案 0 :(得分:6)

是的,您可以将Form状态/模型的实例传递给FormDialog,并预先填充Form参数(如您所见here)。请记住。如果您这样做,如果该字段具有值,则跳过填充字段的任何步骤。

如果您仍然想要询问这些参数,即使它们有值;您必须更改FormOptions并使用FormOptions.PromptFieldsWithValues,它将提示输入字段,但使用传入状态作为默认值。

相关文档为here

答案 1 :(得分:4)

当然,您可以预先填充表单流字段 首先,您将查找要填充的字段,然后将它们添加到实体列表

我正在使用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});
        }

这将在您调用构建表单之前完成。 只需确保你的&#34;键入&#34;是您的类的属性名称。 &#34;实体&#34;将是值