На самом деле довольно просто отменить форму.Если вы введете «help» или «choices», вы увидите список встроенных команд формы, и одна из них - «quit».Есть много терминов, которые вы можете использовать, чтобы выйти, таких как «конец» или «пока».Если вы хотите определить свои собственные термины, вы можете настроить команды формы следующим образом:
var builder = new FormBuilder<BalanceForm>().Message
("We have to ask you some information")
.Field(nameof(contract), validate: async (state, response) =>
{
var result = new ValidateResult();
return result;
})
.OnCompletion(wrapUpRequest)
// Set the command term configuration on its own line
builder.Configuration.Commands[FormCommand.Quit].Terms = new[] { "exit", "cancel" };
return builder.Build();
Имейте в виду, что при отмене формы выдается FormCanceledException<T>
.Если вы не хотите, чтобы это отображало сообщение типа «Извините, у моего бота-кода возникла проблема», вы можете поймать исключение следующим образом:
var balanca = new FormDialog<BalanceForm>(
new BalanceForm(),
BalanceForm.BuildForm,
FormOptions.PromptInStart,
result.Entities)
.Catch<BalanceForm, FormCanceledException<BalanceForm>>((dialog, ex) =>
{
// Handle the cancellation here and return an IDialog<BalanceForm>
});