C# 单击提示对话框。从上一个提示中选择

C# 单击提示对话框。从上一个提示中选择,c#,botframework,C#,Botframework,用户是否可以单击上一个提示的按钮并重定向回该状态 例如: 机器人:这是你的选择:菜单,促销,方向(在 PromptDialog.Choice的形式) 用户:点击菜单 Bot:起动器、电源、甜点(以a的形式给出) PromptDialog.Choice) 用户:点击电源 机器人:这里是电源:(电源列表,后面是a) PromptDialog.选择(在其他地方引导) 用户:向上滚动,单击促销 或者 用户:向上滚动,单击启动器 我知道我可以通过scorables处理对话框切换,但是如果我有一个对话框

用户是否可以单击上一个提示的按钮并重定向回该状态


例如:

机器人:这是你的选择:菜单,促销,方向(在 PromptDialog.Choice的形式)

用户:点击菜单

Bot:起动器、电源、甜点(以a的形式给出) PromptDialog.Choice)

用户:点击电源

机器人:这里是电源:(电源列表,后面是a) PromptDialog.选择(在其他地方引导)

用户:向上滚动,单击促销

或者

用户:向上滚动,单击启动器


我知道我可以通过scorables处理对话框切换,但是如果我有一个对话框有4-5个提示,并且用户向上滚动以点击同一对话框中的一个早期提示,该怎么办?是否有一个机制来处理它


我正在C#上运行Bot Framework,如果这有帮助的话,这是大多数人用来进行响应验证的解决方案,因此如果用户响应以前的提示,代码可以说“not a valid response”之类的话,或者代码可以从该提示点重新启动,具体取决于您想要完成的操作。这是一个利用状态数据的好地方

如果所有提示的提示选项都相同(如是/否),这将非常困难,可能无法完成。如果您的提示具有唯一值,则可以将“步骤”存储在
会话数据中
,检查该步骤所属的用户输入,并将步骤计数设置为他们响应的步骤

一些粗略的伪代码如下所示:

context.ConversationData.SetValue(“步骤”,1)
用户回答步骤1
检查输入是否适合该步骤
对用户输入执行逻辑

context.ConversationData.SetValue(“步骤”,2)
用户回答步骤2
检查输入是否适合该步骤
对用户输入执行逻辑

context.ConversationData.SetValue(“步骤”,3)
用户向上滚动并回答步骤1
检查输入是否适合该步骤(在本例中不是)
将步数重置为1
对该步骤的用户输入执行逻辑


然后,您决定是否按照步骤的顺序继续,或者您可以使用其他状态变量来跟踪之前的步骤,如
context.ConversationData.SetValue(“step3”,true)表示用户已经回答了步骤3,下一个提示是步骤4。

Bot记录正在进行的对话的状态。所以,在大多数情况下,它期望在对话的某个阶段有某种输入。例如,当按钮提示被触发时,bot希望单击提示中的按钮。有些时候,bot希望用户点击一些东西。如果用户在聊天历史记录上向上滚动并单击按钮,则bot响应将基于bot在此阶段的预期。在您的情况下,单击按钮将发送一条文本消息,如果bot希望发送这种消息,if将采取适当的措施。