【问题标题】:Start FormFlow from where it was stopped从停止的地方启动 FormFlow
【发布时间】:2016-11-11 19:55:22
【问题描述】:

按照 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)。

但如果我再说一遍,它将从开头开始表单,而不是从最后完成的步骤开始。我怎样才能使表单从那里开始 - 理想情况下打印“欢迎回来!”之类的内容?

【问题讨论】:

  • Bot 状态服务上的文档说它的目的是解决诸如 我问他们的最后一个问题是什么? 之类的问题,但我不确定如何/在哪里将其与 FormFlow 集成。

标签: c# botframework botbuilder


【解决方案1】:

您应该捕获FormCanceledException&lt;T&gt;,其中 T 是您的表单模型。完成此操作后,您应该能够访问异常的 LastForm 属性,当用户退出时,您将在其中找到部分表单。

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

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多