2

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

4

2 回答 2

2

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

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

基本上,您必须使用field.AddDescriptionfield.AddTerms函数在SetDefine函数中获取数据(从 SQL DB 或其他任何地方)。

:)

于 2016-04-25T10:07:09.503 回答
2

这是一个演示如何在表单流中实现数据库中的动态字段。只需将 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();
    }
于 2017-09-14T14:05:10.180 回答