C# 从停止的位置启动FormFlow

C# 从停止的位置启动FormFlow,c#,botframework,botbuilder,C#,Botframework,Botbuilder,按照AnnotatedSandwichBot示例,可以通过以下方式处理表单填写取消: private static IDialog<object> MakeRootDialog() { return Chain.From(() => FormDialog.FromForm(Form.BuilLocalizedForm)) .Do(async (context, state) => {

按照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");
                }
            });
private静态IDialog MakeRootDialog()
{
返回链.From(()=>FormDialog.FromForm(Form.BuilLocalizedForm))
.Do(异步(上下文、状态)=>
{
尝试
{
var completed=等待状态;
}
捕获(FormCanceledException已取消)
{
if(cancelled.InnerException==null)
wait context.PostAsync($“您在{cancelled.Last}上退出了”);
其他的
wait context.PostAsync($“对不起,我这里有问题”);
}
});
当用户突然键入“bye”时,bot会成功地在FieldName上说
您退出了
(随后在bot Emulator上会有一个巨大的堆栈跟踪,其中有一个FormCanceledException)


但是,如果我只是再说一次,它将从乞讨开始,而不是从最后一个完成的步骤开始。我如何才能使表单从那里开始-理想情况下打印“欢迎回来!”?

您应该捕获一个
FormCanceledException
,其中T是您的表单模型。一旦这样做,您应该能够访问异常的属性,在用户退出时您将在其中找到部分表单


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

机器人状态服务上的文档说,它的目的是解决我向他们提出的最后一个问题是什么?之类的问题,但我不确定如何/在何处将其与FormFlow集成。