如何在链流畅对话框中使用LuisDialog

本文关键字:LuisDialog 对话框 | 更新日期: 2023-09-27 18:14:06

我想使用一个链接口作为我的根对话框,通过用户消息来切换对话,例如,如果用户写'帮助',我可以调用一个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与链或我如何使用多个对话框在一起?

谢谢马可

如何在链流畅对话框中使用LuisDialog

使用上下文。前瞻和背景。调用需要创建一个实现IDialog的新类。

如果您不喜欢这样做,请在您的LuisDialog实现中尝试以下代码。它的工作原理!

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