从停止的位置启动FormFlow

时间:2016-11-09 13:58:11

标签: c# botframework botbuilder

在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");
                }
            });

当用户突然输入“bye”时,机器人成功地说You quit on FieldName(之后在Bot仿真器上使用FormCanceledException进行了大量的堆栈跟踪)。

但如果我再说一遍,它将从开始而不是从最后完成的步骤开始。我怎么能这样做,所以表格从那里开始 - 最好打印像“欢迎回来!”这样的东西?

1 个答案:

答案 0 :(得分:1)

您应该抓住FormCanceledException<T>,其中T是您的表单模型。完成后,您应该能够访问异常的LastForm属性,在用户退出时可以找到部分表单。

然后您可以将该部分表单用作表单的初始状态(请参阅this相关问题)。