Botframework v4。暂停后以主动方式继续对话

时间:2019-08-29 21:14:03

标签: botframework

我有一个带有一些瀑布步骤的普通对话框。一开始,我需要一个值,一旦用户键入了一个值,便将其放入队列(另一个应用程序将完成验证,因为这可能需要一段时间),并使用以下行停止步骤: 返回新的DialogTurnResult(DialogTurnStatus.Waiting); 当然,代码将对话框状态保存为天蓝色。一切都很好。

现在,一旦应用程序结束该过程,我将不断使用BackgroundServices(让我们将其称为线程)来读取验证状态,而且,我想知道以后如何继续该对话框。

以前,我一直暂停HTTP请求,直到应用程序终止验证为止,但是等待回复的等待时间为15秒。

所以我想找到另一个解决方案,我已经检查了C#中的Proactive Message示例。以及其他有关启动对话框的示例。但是我的目标是继续下去。

我想知道这种主动功能是否只能通过API调用来完成,而不能通过and事件或类似的事情来实现。

1 个答案:

答案 0 :(得分:0)

根据我对您的情况的了解,继续进行对话框可能只是一条主动消息。当机器人在瀑布中间开始执行长任务时,转弯结束。解决此问题的一种方法是,瀑布式步骤可能会带有一种提示,其中包含拒绝所有内容的“验证”。无论用户说什么,该机器人都可以使用“请稍候”之类的响应,这基本上等同于再次提示。它不一定是实际的提示,但它是在瀑布顶部添加的对话框。然后,当通知机器人该任务已完成时,该机器人可以继续进行到瀑布的下一步。

实现取决于长时间运行的任务的详细信息,即任务是在bot代码本身中运行(不建议)还是在某些外部服务中运行,该服务在完成后会向bot发送通知。在这两种情况下,都可以调用DialogContext.EndDialogAsync结束该验证提示,然后瀑布将自动恢复。

希望这会有所帮助。