В настоящее время я работаю над технологией платформы Bot, в одном из моих проектов я хочу вернуться к разговору с пользователем, как только я нажму кнопку "Назад" в ФОРМЕ, как показано на рисунке ниже. 
Я знаю, что когда пользователь снова войдет в эмулятор фреймворка бота, он вернется немедленно, но я хочу, чтобы сценарий был выше.
Как я могу разрешить описанный выше сценарий?
Ответ 1 · Pedro G. Dias
Если это FormDialog, вы можете добавить шаги проверки для каждого элемента в форме. В вашем случае вы, вероятно, используете логическое значение "WantsToCreateAccount" или что-то в этом роде?
В вашем коде FormBuilder вы обычно делаете то, что я сделал здесь, в более простой форме:
public static IForm<UserData> BuildForm()
{
return new FormBuilder<UserData>()
.Message("Before we start, let me ask you a couple of questions")
.AddRemainingFields()
.Field(new FieldReflector<UserData>(nameof(IsCustomer))
.SetValidate(async (state, value) => await ValidateIsCustomerFieldAsync(state, value)))
.Field(new FieldReflector<UserData>(nameof(HasCustomerId))
.SetValidate(async (state, value) => await ValidateHasCustomerIdFieldAsync(state, value)))
.Build();
}
Ключом здесь является SetValidate, где вы можете применить любую логику после проверки этого поля, т.е.
private static Task<ValidateResult> ValidateHasCustomerIdFieldAsync(UserData state, object value)
{
if( (SvarAlternativ) value == SvarAlternativ.Nej)
{
state.CustomerId = "Kund, har inte Id";
}
return Task.FromResult(new ValidateResult { IsValid = true, Value = value });
}
Обратите внимание, что значение BOOLEAN сложно проверить, потому что это тип значения, который не может быть нулевым, поэтому средство проверки не увидит, имеет ли оно состояние "NoValue" или "false". Из-за этого я только что создал перечисление, где нулевое значение - это состояние "NoValue", установленное фреймворком бота:
public enum SvarAlternativ
{
NoValue,
Ja,
Nej
}
Надеюсь, это поможет вам. Оказавшись внутри метода проверки, вы можете использовать context.close или делать все, что вам нужно.