如何在 botframework 中从 REST API 创建动态对话框

How to create dynamic dialogs from REST API in botframework

我不想构建一个从休息中收集答案和问题的机器人 API。

Bot: How are you?
User: I'm fine, how are you?
Bot: I'm fine, also.

所以来自机器人的问题(即使是第一个)是通过 REST API 从外部服务收集的。用户的回答也会发送到此服务,机器人回答 "I'm fine, also" 是 REST 请求的结果。

我第一次实现它时根本没有使用对话框功能。效果很好,但是如果没有对话就无法完成对话。

四处寻找一些示例,我只能找到一些带有 WaterfallDialog 的示例。 WatefallDialogs 是按步骤构建的 - 我不知道步骤数。

是否可以构建这样的对话框,或者 botframework 不是为此类事情设计的吗?

在机器人框架 V4 中,您为对话选择的 dialog/conversation 流是可选的,您不需要使用它们 (https://docs.microsoft.com/en-us/azure/bot-service/bot-service-design-conversation-flow?view=azure-bot-service-4.0). All you NEED to do is implement bot state (https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-howto-v4-state?view=azure-bot-service-4.0),因此您可以存储对话数据(或用户数据 - 取决于您需要的状态。)

我使用单个 activity 处理程序和 FSM (https://en.wikipedia.org/wiki/Finite-state_machine) 实现了对话流 - 我将识别器用于常见对话框(帮助),但在大多数情况下,我的转换处理程序进行正则表达式比较提取关键字,然后进入下一个状态。因此,如果您可以绘制出您的 FSM,并列出所有对话选项,您就可以构建一个看起来对话自然的对话。

我现在不能分享代码,但希望你不需要它。