C# 从停止的位置启动FormFlow
按照AnnotatedSandwichBot示例,可以通过以下方式处理表单填写取消: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) => {
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集成。