如何在BotFramework SDK3 C#中切换对话框

时间:2018-09-04 05:53:41

标签: botframework

我正在尝试使用proactiveMessages添加超时对话框。如果用户不回复[A对话框],则会出现[超时对话框]。所以我认为超时对话框应该是当前对话框。但是,我是否要关闭其他对话框[一个对话框]?

根据this,看来 context.EndConversation 在MS Teams中不起作用。当然,我再次尝试过。它仍然无法正常工作。

我也尝试了以下方法。但它似乎也不起作用。

      using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, context.Activity.AsMessageActivity()))
        {

            var botData = scope.Resolve<IBotData>();
            await botData.LoadAsync(default(CancellationToken));
            var stack = scope.Resolve<IDialogStack>();
            stack.Reset();
            await botData.FlushAsync(default(CancellationToken));
        }

关于更改对话框的任何建议吗?

1 个答案:

答案 0 :(得分:1)

在C#机器人中重定向对话框流有两种方法。

您可以使用context.Forward()将用户发送到新对话框,并以您当前正在处理的消息开头:

await context.Forward(new NewOrderDialog(), this.ResumeAfterNewOrderDialog, message, CancellationToken.None);

或者您可以使用context.call()将用户发送到新对话框并从此处开始:

context.Call(new AgeDialog(this.name), this.AgeDialogResumeAfter);

“ ResumeAfter”函数可以在任何地方定义(包括新对话框中的函数),并将其设置为您希望用户完成超时对话框后将其重定向到的位置,从而可以确定流程。