我正在尝试使用proactiveMessages添加一个超时对话框。如果用户不回复[对话框],则会出现[超时对话框]。所以我认为超时对话框应该是当前对话框。但是我应该关闭其他对话框[一个对话框]吗?
据此,似乎有上下文。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));
}
关于更改对话框的任何建议?
在 C# 机器人中,有两种重定向对话流的方法。
您可以使用context.Forward()
将用户发送到以当前正在处理的消息开头的新对话框:
await context.Forward(new NewOrderDialog(), this.ResumeAfterNewOrderDialog, message, CancellationToken.None);
或者,您可以使用context.call()
将用户发送到新对话框,并从那里从头开始:
context.Call(new AgeDialog(this.name), this.AgeDialogResumeAfter);
"ResumeAfter"函数可以在任何地方定义(包括新对话框本身中的函数(,并且将这些函数设置为您希望在用户完成超时对话框后重定向到的位置将允许您确定流。