Microsoft Bot Framework:如何根据用户对前一个字段的输入填充表单流字段值
Microsoft Bot Framework: How can I populate form flow field values based on the user's input for a previous field
我有表单流案例的以下属性:
public enum Offices{}
[Describe("Country")]
public string Country;
[Prompt("Which office are you working in?{||}")]
public Offices Office;
我想根据指定的国家/地区填充办事处。
例如,如果用户在国家/地区字段中输入印度,我希望办公室为孟买、新德里和浦那。如果用户进入阿联酋,我希望办公室是迪拜和阿布扎比等...
我怎样才能做到这一点?
这是一个与“”类似的问题,至少在如何做你需要的事情上。
使用 FormBuilder,您可以动态定义表单。 FormBuilder 上的完整文档是 here。
回顾之前的 StackOverlfow 答案,您使用 FieldReflector 并允许您设置异步委托。在该委托中,您将根据 state.Country 值构建城市列表。
它看起来像这样:
public static IForm<Offices> BuildForm()
{
return new FormBuilder<Offices>()
.Message("Welcome!")
.Field(nameof(Country))
.Field(new FieldReflector<Offices>(nameof(Office))
.SetType(null)
.SetDefine(async (state, field) =>
{
//// Define your Officelogic here
switch (state.Country)
{
Country.Dubai:
////logic to add Dubai city
break;
Country.UAE:
////logic to add UAE cities
break;
default:
break;
}
return true;
}))
.Build();
}
我有表单流案例的以下属性:
public enum Offices{}
[Describe("Country")]
public string Country;
[Prompt("Which office are you working in?{||}")]
public Offices Office;
我想根据指定的国家/地区填充办事处。 例如,如果用户在国家/地区字段中输入印度,我希望办公室为孟买、新德里和浦那。如果用户进入阿联酋,我希望办公室是迪拜和阿布扎比等...
我怎样才能做到这一点?
这是一个与“
使用 FormBuilder,您可以动态定义表单。 FormBuilder 上的完整文档是 here。
回顾之前的 StackOverlfow 答案,您使用 FieldReflector 并允许您设置异步委托。在该委托中,您将根据 state.Country 值构建城市列表。 它看起来像这样:
public static IForm<Offices> BuildForm()
{
return new FormBuilder<Offices>()
.Message("Welcome!")
.Field(nameof(Country))
.Field(new FieldReflector<Offices>(nameof(Office))
.SetType(null)
.SetDefine(async (state, field) =>
{
//// Define your Officelogic here
switch (state.Country)
{
Country.Dubai:
////logic to add Dubai city
break;
Country.UAE:
////logic to add UAE cities
break;
default:
break;
}
return true;
}))
.Build();
}