gpt4 book ai didi

c# - 如何在 Chain 流畅的对话框中使用 LuisDialog?

转载 作者:行者123 更新时间:2023-11-30 18:19:01 25 4
gpt4 key购买 nike

我想使用链式接口(interface)作为我的根对话框,通过用户消息切换对话,例如,如果用户写“帮助”,我可以调用 HelpDialog 并让 LuisDialog 管理其他输入。

我的问题是 LuisDialog 等待来自用户的消息,因此在链式环境中,用户必须在 Luis 返回他的意图之一之前写入两次输入。

这是我的示例代码:

public static readonly IDialog<string> dialog = Chain
.PostToChain()
.Switch(
new Case<IMessageActivity, IDialog<string>>(msg =>
{
var regex = new Regex("^help$", RegexOptions.IgnoreCase);
return regex.IsMatch(msg.Text);
},
(ctx, msg) =>
{
return new HelpDialog();
}),

new DefaultCase<IMessageActivity, IDialog<string>>(
(ctx, msg) => {
return new MyLuisDialog();
})
)
.Unwrap().PostToUser();

是否可以将 LuisDialog 与 Chain 一起使用,或者如何同时使用多个对话框?

谢谢马可

最佳答案

要使用,context.Forward 和 context.Call 需要创建一个实现 IDialog 的新类。

如果您不想这样做,请在您的 LuisDialog 实现中尝试以下代码。有用!

public override async Task StartAsync(IDialogContext context)
{
await this.MessageReceived(context, Awaitable.FromItem(context.Activity.AsMessageActivity()));
}

关于c# - 如何在 Chain 流畅的对话框中使用 LuisDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40176354/

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