我想使用链接口作为我的根对话框,通过用户消息切换对话,例如,如果用户写了“帮助”,我可以调用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一起使用,或者如何一起使用多个Dialog?
由于 马可
答案 0 :(得分:0)
要使用,context.Forward和context.Call需要创建一个实现IDialog的新类。
如果您不想这样做,请在LuisDialog实施中尝试以下代码。它有效!
public override async Task StartAsync(IDialogContext context)
{
await this.MessageReceived(context, Awaitable.FromItem(context.Activity.AsMessageActivity()));
}