如何在链流畅对话框中使用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与链或我如何使用多个对话框在一起?
谢谢马可
使用上下文。前瞻和背景。调用需要创建一个实现IDialog的新类。
如果您不喜欢这样做,请在您的LuisDialog实现中尝试以下代码。它的工作原理!
public override async Task StartAsync(IDialogContext context)
{
await this.MessageReceived(context, Awaitable.FromItem(context.Activity.AsMessageActivity()));
}