.net core 是否有一种本地方式来重新处理对提示的响应?

.net core 是否有一种本地方式来重新处理对提示的响应?,.net-core,botframework,.net Core,Botframework,我们的聊天机器人(用.NETCore3.1编写)有多个提示,以按钮的形式提供选择。在用户通过聊天发送一个回合后(通过单击按钮或键入任何内容),我们隐藏按钮,因为单击按钮只会将按钮文本作为回合发送。然后,我们的提示符将拾取用户的响应,并将其与choice dictionary进行比较,以生成一个更友好的后端结果,以便在对话框步骤中使用 用户已经就我们如何处理他们给了我们反馈。一个经常被要求的功能是滚动到上一个提示,并对一个问题给出不同的回答。下面是一个例子: “你想了解更多关于哪种超声波的信息

我们的聊天机器人(用.NETCore3.1编写)有多个提示,以按钮的形式提供选择。在用户通过聊天发送一个回合后(通过单击按钮或键入任何内容),我们隐藏按钮,因为单击按钮只会将按钮文本作为回合发送。然后,我们的提示符将拾取用户的响应,并将其与choice dictionary进行比较,以生成一个更友好的后端结果,以便在对话框步骤中使用

用户已经就我们如何处理他们给了我们反馈。一个经常被要求的功能是滚动到上一个提示,并对一个问题给出不同的回答。下面是一个例子:

“你想了解更多关于哪种超声波的信息

  • 定位超声
  • 足月超声
  • 结构超声检查“
用户通常只寻找其中一个,但提示符本身激发了好奇心。他们会选择最初寻找的选项,然后希望看到其他响应之一。目前,我们的用户必须重新键入触发超声意图的短语,该短语将他们发送到超声对话框,在该对话框中触发提示。理想情况下,他们会向上滚动到提示,只需单击不同的按钮,中间步骤可能会单击提示问题上的“选择不同选项”按钮

我们已经简要介绍了如何实现此功能,并考虑在整个对话中存储提示的选择词典。然后我们将添加许多自定义逻辑来处理话语,可能是通过在前端使用特殊的标记。或者我们会让中间步骤将对话倒回提示符,并从那里处理他们的进一步操作

在我们进行任何这方面的工作之前,我们对自己说“微软一定想到了这一点”,但我们找不到任何关于重复使用提示的文档


Bot框架是否有一种本机方式允许用户从前端重新激活已在后端处理的提示?

否,没有本机方式可以按照您的意思重新处理对提示的响应。为了正确使用Bot,您需要了解Bot框架的一些方面

什么是提示? 提示是一种可以被认为是机器人向用户提问的类型。如果用户的回答第一次是可以接受的,它可以在一个回合内结束,或者如果机器人没有立即获得它需要的信息,它可以在多个回合内结束。在选择提示的情况下,用户的答案只有在能够被识别为可用选项之一时才是可接受的。既然您提到了选项,我假设您使用的是选项提示

选项提示可以以五种可能的方式显示其选项,称为列表样式。有两种方式可以将选项显示为按钮,两种方式可以将选项显示为文本,还有一种方式可以完全不显示选项。如果您查看,您可以看到第六个选项:“自动”。这是默认选项,它将根据您的选择和频道的功能选择最佳选项。在您的情况下,它必须将选择作为建议的操作呈现

建议采取什么行动?

建议的操作是当用户单击其中一个按钮时消失的按钮。与所有UI元素一样,它们非常特定于频道,Azure机器人服务将尝试将它们转换为给定频道的适当格式。例如,在Facebook Messenger中,建议的操作将变为“快速回复”。网络聊天是Bot框架的一部分,因此在您的情况下无需进行转换

您将在中看到,建议的操作旨在防止您的机器人不得不担心处理旧卡上的点击:

与出现在富卡中的按钮不同(即使在点击后,用户仍然可以看到和访问富卡),出现在“建议操作”窗格中的按钮将在用户进行选择后消失。这可以防止用户在对话中点击过时的按钮,并简化bot开发(因为您不需要考虑该场景)

听起来您的用户希望能够返回并单击按钮,因此您希望使用卡片而不是建议的操作

什么是卡片? 目前,大约有九种类型的项目得到了Bot框架的正式支持。对于更高级的场景来说是非常好的,但是由于您只需要几个按钮,您可以使用最简单的选项:英雄卡

您可能已经注意到,“英雄卡”是列表样式的另一个按钮选项。所以你所要做的就是设置你的提示来使用英雄卡片列表样式,你的选择将显示为一张卡片而不是建议的动作

这些信息可能足以帮助您解决问题,但我想确保您走上了正确的道路。我在开始时说“不”的原因是,您不应该尝试将对话框倒回特定的提示。这不是对话框或提示的工作方式。如果希望bot能够在对话框中的任意点响应这些选择,则需要将这些选择作为中断处理

什么是干扰? 是指机器人以不遵循当前对话框流程的方式响应用户的话语或动作。您可以在中看到中断的示例。在该示例中,您可以看到仅在对话框的范围内处理中断,该对话框允许您决定何时允许中断。或者,您可以通过将该逻辑置于任何对话框之外来全局处理中断

您可以设置中断,这样机器人将始终在您所有的选择提示中侦听所有选择中的确切文本。文本将是一个关键短语