Dialogflow es 在Dialogflow中,是否有一种方法可以从多个潜在响应列表中随机返回一个响应?

Dialogflow es 在Dialogflow中,是否有一种方法可以从多个潜在响应列表中随机返回一个响应?,dialogflow-es,Dialogflow Es,在创建意图时,在意图选项卡中有一个“响应”部分,您可以添加多个响应,并随机选择一个响应来响应用户 在调用中使用内联编辑器: agent.add("send a response back"); 将命令发送回用户,但我想知道是否可以设置此选项,以便与意图屏幕中一样,要发送回的响应将是从多个响应列表中选择的响应: 例如 其中一个将被随机发回 感谢尽管不同的响应被认为是VUI设计的最佳实践,但没有直接的方法来实现这一点 但是,解决此问题的最佳方法是将可能的回复放入一个数组中,然后随机选取其中一个。

在创建意图时,在意图选项卡中有一个“响应”部分,您可以添加多个响应,并随机选择一个响应来响应用户

在调用中使用内联编辑器:

agent.add("send a response back"); 
将命令发送回用户,但我想知道是否可以设置此选项,以便与意图屏幕中一样,要发送回的响应将是从多个响应列表中选择的响应:

例如

其中一个将被随机发回


感谢

尽管不同的响应被认为是VUI设计的最佳实践,但没有直接的方法来实现这一点

但是,解决此问题的最佳方法是将可能的回复放入一个数组中,然后随机选取其中一个。大概是这样的:

var possibleResponse = [
  'Response 1',
  'Response 2',
  'Response 3'
];

var pick = Math.floor( Math.random() * possibleResponse.length );

var response = possibleResponse[pick];
agent.add( response );
这也更好,因为当您要国际化您的操作时,您可以用本地化字符串替换
possiblereresponse

事实上,这是一种非常流行的解决问题的方法,因此图书馆将其作为其解决方案的核心。您只需在配置中为操作、意图或Outent提供可能的本地化响应,它会为您选择一个响应。由于所有的响应都是模板,您可以添加任何其他想要的参数,或者在显示它们时设置条件(例如处理单数或复数值)。因此,在multivocal中,这部分配置将是:

Local: {
  en: {
    Response: {
      "Intent.welcome": [
        "Response 1",
        "Response 2",
        "Response 3"
      ]
    }
  }
}

谢谢内联编辑器中的index.js是否在每次发送内容时都会运行?我知道这不是最佳实践,但我尝试使用全局变量来存储exports.dialogflowFirebaseFulfillment函数之外的内容以供重用,但效果不太好,我假设每次将内容发送到Fulfillment时都会运行index.js。我需要知道更多关于你在用它做什么以及为什么,一些你正在尝试的示例代码也会有所帮助。这听起来像是最好在堆栈溢出中作为一个新问题来问。这很奇怪,因为在内联编辑器中它似乎工作得很好。
Local: {
  en: {
    Response: {
      "Intent.welcome": [
        "Response 1",
        "Response 2",
        "Response 3"
      ]
    }
  }
}