我无法在bot框架v4上找到任何文档,类似于在bot v3中通过外部API调用对话和操纵对话框堆栈时的以下实现:
这是bot v3中的代码的样子
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, messageToBot))
{
var botData = scope.Resolve<IBotData>();
await botData.LoadAsync(CancellationToken.None);
//This is our dialog stack
var task = scope.Resolve<IDialogTask>();
//interrupt the stack.This means that we're stopping whatever conversation that is currently happening with the user
//Then adding this stack to run and once it's finished, we will be back to the original conversation
var dialog = new LoginCompletedDialog();
var interruption = dialog.Void<object, IMessageActivity>();
task.Call(interruption, null);
await task.Forward(interruption, null, null);
await task.PollAsync(CancellationToken.None);
//flush dialog stack
await botData.FlushAsync(CancellationToken.None);
}
有人可以给我如何在bot框架v4中实现此功能吗?
答案 0 :(得分:0)
可以在此处找到一些有关从v3迁移到v4的详尽文档:https://docs.microsoft.com/en-us/azure/bot-service/migration/migration-overview
v4中的主动消息传递文档可在以下位置找到:https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-howto-proactive-message
可以在以下位置找到用于管理v4中的对话框堆栈的文档:https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-dialog-manage-conversation-flow
在v4中,使用ConfigureServices
方法在Startup.cs文件中初始化依赖项注入。您可以定义状态存储,还可以选择定义对话状态和用户状态。将这些状态对象传递到bot类或其他类中后,您可以创建状态属性访问器,并从状态属性访问器创建对话框集。
让新对话框中断当前对话框堆栈没有什么特别的事情。如果您仅调用DialogContext.BeginDialogAsync
,则该对话框将添加到堆栈中,并且在中断对话框结束后,将自动恢复上一个对话框。