Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从MessageController中调用普通对话框和LuisDialog_C#_Botframework_Azure Language Understanding - Fatal编程技术网

C# 如何从MessageController中调用普通对话框和LuisDialog

C# 如何从MessageController中调用普通对话框和LuisDialog,c#,botframework,azure-language-understanding,C#,Botframework,Azure Language Understanding,我有一个要求,基于某些条件,我需要调用普通对话框或LuisDialog,我无法实现同样的要求 if(condition == 1) return await Conversation.SendAsync(message, () => new SampleLuisDialog()); else return await Conversation.SendAsync(message, () => new SimpleIDialog()); 问题是: 当它满足第2个条件时,它执行

我有一个要求,基于某些条件,我需要调用普通对话框或
LuisDialog
,我无法实现同样的要求

if(condition == 1)
  return await Conversation.SendAsync(message, () => new SampleLuisDialog());
else
  return await Conversation.SendAsync(message, () => new SimpleIDialog());
问题是:
当它满足第2个条件时,它执行
simpledialog
中的逻辑。当它满足第一个条件而不是进入
SampleLuisDialog
时,它再次进入
simpledialog的
startAsync

我做错了什么?

在第一个调用的对话框中,您必须调用Context.Done。在此之前,用户被“卡住”在该对话框中


因此,在启动另一个对话框之前,必须“关闭”第一个调用的对话框。

这里只有一个条件。使用调试器,查看
条件
变量的值是什么。只有一个条件,当我说第二个条件时,我指的是itOK的其他部分,然后我的注释的其他部分仍然适用。如何验证当满足条件时,else子句是否仍在执行?试试调试器!是的,它进入else块,但不符合任何LUIS意图(即,LUIS对话框中的任何方法)。好吧,它是一个异步方法,因此不必立即执行它。您是否尝试过在
SampleLuisDialog
constructor中放置断点?同意。如果我们有一个根对话框,并且在它里面我们尝试调用几个其他的子对话框,那么这很好。但是在我的例子中,我试图从MessageController.cs中调用多个对话框