单击上一个提示中的PromptDialog.Choice

时间:2018-04-30 07:29:51

标签: c# botframework

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

例如:

  

Bot:以下是您的选择:菜单,促销,路线(在   形式的PromptDialog.Choice)

     

用户:点击菜单

      Bot:Starters,Mains,Desserts(以a。的形式给出)   PromptDialog.Choice)

     

用户:点击主电路

     

Bot:这是主电源:(电源列表,后跟一个   PromptDialog.Choice领先于其他地方)

     

用户:向上滚动,点击“促销”

     

替代地

     

用户:向上滚动,点击“初学者”

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

如果有帮助的话,我在C#上运行Bot Framework

1 个答案:

答案 0 :(得分:1)

大多数人用来响应验证的解决方案,以便如果用户响应之前的提示,代码可以说“不是有效的响应”,或者代码可以从该提示点重新启动,具体取决于你想要完成什么。这是利用州数据的好地方。

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

一些粗糙的伪代码看起来像这样:

context.ConversationData.SetValue("step", 1);
用户回答第1步 检查输入是否适合步骤
在用户输入上执行逻辑

context.ConversationData.SetValue("step", 2);
用户回答第2步 检查输入是否适合步骤
对用户输入执行逻辑

context.ConversationData.SetValue("step", 3);
用户向上滚动并回答步骤1 检查输入是否适合步骤(在这种情况下不是) 将步数重置为1
对该步骤的用户输入执行逻辑

然后从那里你决定是否按照你的步骤顺序继续,或者你可以有其他状态变量来跟踪它们之前的步骤,例如context.ConversationData.SetValue("step3", true);意味着用户已经回答了第3步和下一个提示将是第4步。