Microsoft Bot Framework:如何根据用户对先前字段的输入来填充表单流字段值

时间:2018-10-04 15:40:03

标签: botframework formflow dynamic-attributes

对于表单流案例,我具有以下属性:

public enum Offices{}

[Describe("Country")]
public string Country;
[Prompt("Which office are you working in?{||}")]
public Offices Office; 

我要根据指定国家/地区填充办事处。 例如,如果用户在“国家/地区”字段中输入“印度”,我希望办公室是孟买,新德里和浦那。如果用户进入阿联酋,我希望办公室在迪拜和阿布扎比,等等。

我该如何实现?

1 个答案:

答案 0 :(得分:1)

这与“ How to use enum category and subcategory in bot framework C#?”类似,至少在如何完成所需工作方面与之类似。

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