我想使用FormFlow对话框,但我见过的所有示例都提示用户从Enum中做出选择。如果值来自数据库怎么办?
答案 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();
}