Bot Framework从v3迁移到v4

时间:2019-07-30 08:23:37

标签: c# botframework bots

我无法在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中实现此功能吗?

1 个答案:

答案 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,则该对话框将添加到堆栈中,并且在中断对话框结束后,将自动恢复上一个对话框。