这是我的基本代码
formFlow运行良好,在检查if条件后,它应该转到else部分,但在else部分中编写了下面这行代码
await Conversation.SendAsync(activity, () => new AskMeAnything());
AskMeAnything是一个实现Idialog的类。问题是,它再次转到/调用表单流,而不是跳到上面提到的对话框。
我读过关于IdialogStack的文章,但不明白如何删除堆栈顶部的对话框或与之相关的东西。
我需要帮助移动到其他对话框,而不是循环到formflow。
谢谢
发布于 2017-04-10 15:47:43
第一次调用Conversation.SendAsync(...)
时,您实际上为对话创建了一个根对话框。对机器人的每个连续调用仍将进入控制器,但将被路由到堆栈顶部的对话框。
因此,当您第二次调用Conversation.SendAsync(...)
时,您实际上是在尝试更改堆栈中的根对话框。我认为这是不可能的,这就是为什么你的表单被再次调用。
为了解决这个问题,我会创建一个不同的对话框,并将该对话框设为根对话框。在这个根对话框中,您可以调用窗体和任何其他对话框。
https://stackoverflow.com/questions/43298499
复制