他们是否有任何方式在对话流中发送多个简单响应

Is their any way to send multiple simple response in dialogflow

我需要在针对特定意图的调用期间向用户发送(超过 2 个响应)简单响应。但它仅限于 google 文档中的操作中提到的 2 个简单响应。

还有其他发送多个回复的方法吗?

我认为您可以通过这种方式从您的 webhook 传递多个响应。基本上一旦你的 webhook 从 dialogflow 收到请求,你将执行该过程并将 fulfillmentText 作为响应传回。因此您可以将 json 对象转换为字符串并将其传回。从前端应用程序中,您可以将其转换回 json 或您想要的任何格式,然后根据需要使用它。

一个简单的示例形式 nodejs (webhook)。所有语言的方法都应该相同

router.post('/web-hook', function(req, res, next) {
    //do your process here
    res.json({
        'fulfillmentText': JSON.stringify([{response:"response 1"},{response:"response 2"},{response:"response 3"}])
    });
})

简短的回答是否定的,您一次不能发回多个 SimpleResponse。

但是,根据您的需要并确保您尊重良好的视觉 UI 设计,有一些方法可以解决这个问题。

  1. 您可以将要发回的许多项目串联成一个语音段落。

    因此,如果您有如下列表项:

    • 红色
    • 绿色
    • 蓝色

    您可以将它们连接成一个字符串,并可能发回一个带有 "The colors I have selected for you are red, green, and blue."

    的 SimpleResponse

    但是如果您的列表很长,请小心。所以如果你有一个包含 20 种左右颜色的列表,你会 not 想说 "The colors I have selected are red, green, blue, yellow, brown, black, white, purple, lavender, peach, mauve, scarlet, gold, ruby, silver, teal, grey, orange, bronze, and pearl." 在这种情况下...

  2. 对于很多项目,尤其是当您希望用户在视觉显示设备上时,您可以只说出其中的几个项目(例如,最有可能的 3 个)并显示使用更少的文本简介,然后使用 List or Carousel 显示更完整的集合。这可能看起来像

    conv.ask(new SimpleResponse({
      speech: 'The colors I have selected for you include red, green, blue, and 17 more',
      text: 'Here are the colors I have selected for you.'
    });
    conv.ask(new List({
      items:{
        red: {title: "red"},
        green: {title: "green"},
        blue: {title: "blue"},
        // You get the idea
        pearl: {title: "pearl"}
      }
    };
    
  3. 如果您只使用语音,请考虑进一步缩小该列表的范围。例如,您可能会报告 "I have 20 colors for you. Are you looking for something more reddish or more bluish?" 并继续缩小范围。

  4. 作为最后的选择,您可能只想阅读可用内容的简短列表,但指出他们还有多少其他选择,然后让他们 "audibly scroll" 浏览列表。这不是很好,因为它需要您和您的用户做很多额外的工作,但在某些情况下这是一个不错的选择。