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

时间:2018-07-07 08:52:22

标签: dialogflow

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

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

agent.add("send a response back"); 

将命令发送回用户,但是我想知道是否可以进行设置,以便像在“意图”屏幕中一样,要从多个响应列表中选择要发送回的响应:

例如

agent.add("response1");
agent.add("response2");
agent.adD("response3");

其中之一将被随机发回。

谢谢

1 个答案:

答案 0 :(得分:2)

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

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

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

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

var response = possibleResponse[pick];
agent.add( response );

这也更好,因为当您将动作国际化时,只需将possibleResponse替换为本地化的字符串即可。

实际上,这是解决该问题的一种流行方法,以multivocal库作为其解决方案的核心。您只需在配置中为“动作”,“意图”或“结果”提供可能的本地化响应,它就会为您挑选一个。由于所有响应都是模板,因此您可以添加任何其他所需参数,或在显示它们时加上条件(例如处理单数或复数值)。因此,在多声系统中,配置的这一部分将是:

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