botframework v4:ReplaceDialogAsync找不到ID为“ X”的对话框

时间:2019-01-23 22:29:44

标签: c# .net botframework

我有一个使用固定瀑布流和单个对话框的工作bot,但是我希望将其扩展为具有多个不同的对话框,这些对话框将根据用户输入进行切换。我使用的对话框已经过单独测试,并且彼此独立工作。第一个工作对话框允许用户在4个选项之间进行选择,然后应根据所选选项打开不同的对话框。

在我当前正在使用的对话框中,我尝试使用以下行切换到另一个对话框。

return await stepContext.ReplaceDialogAsync("QnaMakerQueryDialog");

ReplaceDialogAsync的文档指出:“结束活动对话框并在其位置启动一个新对话框。这对于创建循环或重定向到另一个对话框特别有用。”听起来完全像我要执行的操作,但是出现错误“找不到ID为'QnaMakerQueryDialog'的对话框”。我希望Dialog是从QnaMakerQueryDialog的开头开始的,但是它只会引发上述错误并在当前对话框中继续。

1 个答案:

答案 0 :(得分:1)

我将做出一个有根据的猜测,您上面显示的对ReplaceDialogAsync的调用是在ComponentDialog内部进行的。是吗?

如果是这样,属于ComponentDialogs的子对话框不能调用位于ComponentDialog 之外的对话框。这是当前版本(当前为4.2)中的限制,并且正在考虑解决方案,以解除此限制。

如果这听起来像与您的情况相符,请please visit this issue in GitHub并对其进行投票,以使您的声音得知您希望在将来的版本中解决此问题。