【问题标题】:Is mandatory to select the option of PromptDialog?是否必须选择 PromptDialog 的选项?
【发布时间】:2019-11-18 08:33:05
【问题描述】:

如果我们选择 PromptDialog 则必须选择 PromptDialog 选项。是否必须选择选项?

如果不选择该选项,用户会要求新的查询,而 Bot 将根据新的查询做出响应。

简单来说,我们如何在没有选择选项的情况下忽略并接受新请求并通过 Bot 向用户提供答案?

【问题讨论】:

    标签: c# .net azure botframework bots


    【解决方案1】:

    您要查找的内容称为用户中断,每次用户向您的机器人发送消息时,您首先要检查的是,如果它是“中断” ”,或者是一个全新的消息。

    如果是中断,你可以处理它,你可以开始一个新的对话,完成然后从用户离开的地方继续。

    在此处查看机器人服务文档以获取 Handling User Interruption

    【讨论】:

      【解决方案2】:

      可以有两种方法:

      方法 1: 使用'Handle Interruptions',但它是有代价的。它将检查用户发送的所有消息,无论是在对话框/提示中还是之外。 为任何文本提示输入的任何有用输入都可以匹配 switch 中的任何大小写,这可能会在此处结束对话。 此外,它可能会减慢进程

      方法 2:(如果您只想对选择提示执行此操作)有一个验证功能可以附加到任何类型的提示。

      假设CheckChoicePromptValidator是您选择的提示验证器。你可以在里面做这样的事情:

      private async Task<bool> CheckChoicePromptValidator(PromptValidatorContext<FoundChoice> promptContext, CancellationToken cancellationToken)
          {
              if(promptContext.Recognized.Succeeded)
              {
                  return await Task.FromResult(true);
              }
              else
              {
                  var userInput = promptContext.Context.Activity.Text;
                  // You can use LUIS instead of switch case
                  switch(userInput.ToLower())
                  {
                      case "cancel":
                      case "quit":
                      case "reset":
                          await promptContext.Context.SendActivityAsync(MessageFactory.Text("Cancelling!"), cancellationToken);
                          var dc = await BotUtil.Dialogs.CreateContextAsync(promptContext.Context, cancellationToken);
                          await dc.CancelAllDialogsAsync(cancellationToken);
                          return await Task.FromResult(false);
                  }
              }
      
          }
      

      它只会在用户输入选项以外的内容时处理中断。

      【讨论】:

      • 非常感谢,对我很有用
      • @AshwiniKumar,如果它解决了您的问题,您可以接受答案。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 2014-05-04
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2022-10-21
      • 2016-01-15
      • 1970-01-01
      相关资源
      最近更新 更多