在 AnnotatedSandwichBot 示例之后,可以使用以下方式处理表单填充取消:
private static IDialog<object> MakeRootDialog()
{
return Chain.From(() => FormDialog.FromForm(Form.BuilLocalizedForm))
.Do(async (context, state) =>
{
try
{
var completed = await state;
}
catch (FormCanceledException canceled)
{
if (canceled.InnerException == null)
await context.PostAsync($"You quit on {canceled.Last}");
else
await context.PostAsync($"Sorry, I have a problem here");
}
});
当用户突然键入“再见”时,机器人会成功说You quit on FieldName
(以及随后在机器人模拟器上出现 FormCanceledException 的巨大堆栈跟踪)。
但是,如果我只是再说一遍,它将从开头开始表单,而不是从最后完成的步骤开始。我怎样才能使表格从那里开始 - 理想情况下打印“欢迎回来!”之类的东西?