gpt4 book ai didi

dialog - 将代码从 Bot Framework V3 迁移到 V4

转载 作者:行者123 更新时间:2023-12-04 01:49:12 25 4
gpt4 key购买 nike

在将对话框从 V3 迁移到 V4 时,我有更多问题。下面是我们的代码。在 v3 中,我们使用

Microsoft.Bot.Builder.Dialogs.Conversation.SendAsync(conversationContext.CurrentActivity, new RootDialog());

public class RootDialog : IDialog {
public RootDialog()
{
.....
}

public async Task StartAsync(IDialogContext context)
{
context.Wait(this.MessageReceivedAsync);
}

public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{
}

在 MessageReceivedAsync 中,我们使用了 context.Wait()、context.Done() 和 context.PostAsync()。你能推荐一下如何在V4中更换吗? V4 中 Microsoft.Bot.Builder.Dialogs.Conversation.SendAsync 的 alertnative 是什么?

最佳答案

这些API都没有了。以下是他们在 V4 中的替换说明:

context.Wait(…)

此方法用于告诉对话系统当新事件到达并且现在已经消失时在您的类上下一步调用什么方法。相反,您现在子类化 Dialog 并为各种生命周期事件覆盖几个方法:

  • BeginDialogAsync - 当对话框首次被机器人代码插入堆栈时调用或另一个对话框在 DialogContext 上调用 BeginDialogAsync 时调用。<
  • ContinueDialogAsync - 当新事件进入并且机器人在 DialogContext 上调用 ContinueDialog 时调用。
  • ResumeDialogAsync - 当堆栈中的另一个对话框完成并且之前位于堆栈中的对话框现在位于堆栈顶部时调用。
  • RepromptDialogAsync - 在明确请求重新提示用户时调用。这基本上是一种告诉对话框没有任何变化的方法,但它应该通过发送上次发送的任何事件从中断的地方再次开始。
  • EndDialogAsync - 在对话框指示完成并从堆栈中弹出时调用。

context.Done()/.Fail()

这是您报告对话框状态的一种方式,但现在通过从上述大多数生命周期方法返回 DialogTurnResult 来完成。其中一个属性名为 Status,属于 DialogTurnStatus 类型,其值指示对话框的当前状态。例如:

  • 正在等待 - 对话框发送了一些事件并正在等待更多输入,应该保留在堆栈的顶部。
  • Complete - 对话框已完成其工作,应该结束并从堆栈中弹出。当返回此状态时,调用者还可以调查通过 DialogTurnResult::Result 属性传回的对话框的输出(如果有的话)。
  • Cancelled - 对话在其工作过程中被部分取消。

context.PostAsync()/Conversation.SendAsync

这些都用于响应用户。两者现在都被调用 ITurnContext 上的 SendActivityAsync 取代,可通过 DialogContext 实例的 Context 属性访问作为参数传递到大多数上述生命周期方法中。注意:一些生命周期方法实际上直接接收 ITurnContext 参数,然后您就可以使用它。

关于dialog - 将代码从 Bot Framework V3 迁移到 V4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54102225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com