FormBuilder代码执行突然跳转到FormCompletion委托

时间:2017-05-18 05:24:37

标签: bots botframework formbuilder

我在Bot框架应用程序中有以下代码。 您可以在下面的代码中看到我已经评论过ValidateStartDate委托,其背后的原因是,如果我在表单流中包含委托,那么在委托执行代码之后直接跳转到“context.Call(Booking,BookingComplete)”的BookingComplete委托;即会话结束。但理想情况下,它应该从表单构建器执行其余的字段。 请注意,这里StartDate的类型为String,我手动验证日期部分。此外,代码执行期间没有发生可见异常

public static IForm<ConferenceBooking> BuildForm()
{
     return new FormBuilder<ConferenceBooking>().Message("Tell me meeting details!")
    .Field(nameof(title))
    .Field(nameof(StartDate))//, validate: ValidateStartDate
    .Field(nameof(EntryTime), validate:ValidateCallTime)
    .Build();
}

以下是StartDate的委托部分

private static Task<ValidateResult> ValidateStartDate(ConferenceBooking state, object response)
{
var result = new ValidateResult();
DateTime startDt = Convert.ToDateTime(GetDate(Convert.ToString(response)));
if (startDt == null || startDt == DateTime.MinValue)
{
    result.IsValid = false;
    result.Feedback = "I could not understand this format.";
}
else if (startDt.Date < DateTime.Now.Date)
{
    result.IsValid = false;
    result.Feedback = "Sorry, back dated bookings are not allowed";
}
else
{
    result.IsValid = true;
    result.Value = startDt;
}
  return Task.FromResult(result);
}

1 个答案:

答案 0 :(得分:0)

之前我也注意到了这种行为,这总是由于异常。 FormBuilder似乎捕获所有异常并退出catch块中的表单。这就是为什么你没有看到弹出任何异常的原因。尝试逐步检查代码或从表单外部执行代码。