如何使用FormFlow向用户动态显示值列表

时间:2016-04-16 17:32:27

标签: botframework

我想使用FormFlow对话框,但我见过的所有示例都提示用户从Enum中做出选择。如果值来自数据库怎么办?

2 个答案:

答案 0 :(得分:2)

如果要在FormFlow中为Field设置动态值,则必须使用动态定义的字段。

以下是文档和完整的使用示例:https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-formflow-formbuilder?view=azure-bot-service-3.0

基本上,您必须使用 field.AddDescription field.AddTerms <获取 SetDefine 函数中的数据(来自SQL DB或其他任何地方) / strong>功能。

:)

答案 1 :(得分:2)

以下是如何在formflow中从数据库实现动态字段的演示。    只需将StateClass替换为您的类的名称,将ProperyName替换为您的属性的名称。不幸的是,目前您还没有在Microsoft Bot Framework的官方文档中找到有关FieldReflector的任何信息。

    public static IForm<StateClass> BuildForm()
    {
        return new FormBuilder<StateClass>()
                .Message("Start Message")
                .Field(new FieldReflector<StateClass>(nameof(ProperyName))
                        .SetType(null)
                        .SetDefine(async (state, field) =>
                        {
                            List<string> list = QueryFromDatabase();
                            foreach (string item in list)
                                field
                                    .AddDescription(item , item )
                                    .AddTerms(item , item );

                            return true;
                        }))
                .AddRemainingFields()
                .OnCompletionAsync(async (context, state) => 
                 {
                    await context.PostAsync("Finish message");
                 })
                .Build();
    }