【问题标题】:Bot Framework Migration v3 to v4机器人框架迁移 v3 到 v4
【发布时间】:2019-08-07 01:00:06
【问题描述】:

我在 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 framework v4 中实现这个功能?

【问题讨论】:

  • 您的代码对我来说有点奇怪,即使对于 v3。您能否分享您的代码所基于的任何示例或文档,并详细说明它应该做什么?这里的上下文是什么?该代码在哪个文件中?
  • 该代码中断了机器人当前的对话,它可以在对话框堆栈顶部添加对话框。这用于使用 autofac 进行主动消息传递
  • 我的回答可以接受吗?

标签: c# botframework bots


【解决方案1】:

有关从 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 文件中初始化。您定义状态存储,并可选择定义对话状态和用户状态。当这些状态对象被传递到您的机器人类或其他类中时,您可以创建状态属性访问器并从状态属性访问器创建对话框集。

没有什么特别的事情要让一个新的对话框中断当前的对话框堆栈。如果您只是调用DialogContext.BeginDialogAsync,那么对话框将被添加到堆栈中,并且在中断对话框完成后将自动恢复上一个对话框。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    相关资源
    最近更新 更多