我想根据 Bot Framework App 中的先前字段结果提示更多字段

I want to prompt further field based on its previous field result in Bot Framework App

我在 class 中有以下 formbuilder 代码,我想根据用户的响应提示用户。如果用户对字段 "ConfirmISTTimeZone" 的响应是 "Yes" 那么它应该提示输入字段 "TimeZone" 否则它应该直接提示 "Duration" 如何做到这一点?

var formflow = new FormBuilder<FlightBooking>().Message("Tell me Flight details!")
        .Field(nameof(Flightname))
        .Field(nameof(StartDate), validate: ValidateStartDate)
        .Field(nameof(ConfirmISTTimeZone), validate: ValidateResponseOfTimeZone)
        .Field(nameof(TimeZone), validate: ValidateTimeZone)
        .Field(nameof(Duration), validate: ValidateDuration)

您可以在 FieldReflectorclass 上使用 SetActive 方法。

var formflow = new FormBuilder<FlightBooking>().Message("Tell me Flight details!")
        .Field(nameof(Flightname))
        .Field(nameof(StartDate), validate: ValidateStartDate)
        .Field(nameof(ConfirmISTTimeZone), validate: ValidateResponseOfTimeZone)
        .Field(new FieldReflector<FlightBooking>(nameof(TimeZone))
               .SetActive(CheckActiveMethod)
               .SetValidate(ValidateTimeZone))
        .Field(nameof(Duration), validate: ValidateDuration)

CheckActiveMethod 只是一个获取状态的方法,return 要么为真,如果该字段处于活动状态并且应该被提示,要么为假,如果该字段可以跳过。

另一种选择是在时区

字段中包含'active: ActiveTimeZone'

.Field(nameof(TimeZone),活动:ActiveTimeZone,验证:ValidateTimeZone)

 private bool ActiveTimeZone(FlightBooking state)
    {
        bool setActive = true;
        if (!state.ConfirmISTTimeZone.Contains("Add ur condition here"))
            setActive = false;


        return setActive;

    }