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



为了特定的目的,我需要在调用期间向用户发送(超过2个响应(简单的响应。但它被限制为2个简单的响应,正如谷歌文档中提到的那样。

是否有其他方式发送多个响应?

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

然而,有一些方法可以根据您的需求进行处理,并确保您尊重良好的Visual UI设计。

  1. 您可以将发送回的许多项目连接到一个单独的口语段落中。

    所以,如果你有这样的列表项目:

    • 红色
    • 绿色
    • 蓝色

    您可以将它们连接成一个单独的字符串,并可能发回一个带有"我为您选择的颜色是红色、绿色和蓝色"的SimpleResponse

    但是如果你有一个很长的列表,请小心。因此,如果你有一个大约20种颜色的列表,你会不想说"我选择的颜色是红色、绿色、蓝色、黄色、棕色、黑色、白色、紫色、薰衣草、桃红色、淡紫色、猩红色、金色、红宝石色、银色、蓝绿色、灰色、橙色、青铜色和珍珠色。"在这种情况下。。。

  2. 有了很多项目,尤其是当你希望用户在视觉显示设备上时,你可以只说出其中的几个项目(比如说,最有可能的3个(,并显示更少的文本简介,然后使用列表或旋转木马来显示更完整的一组。这可能看起来像

    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. 如果你只使用语音,请考虑如何进一步缩小列表范围。例如,你可能会报告"我有20种颜色给你。你在寻找更红或更蓝的颜色吗?"然后继续缩小范围。

  4. 作为最后一种选择,你可能只想阅读一个简短的可用内容列表,但要指出他们还有多少其他选择,并让他们在列表中"听得见地滚动"。这并不好,因为这需要你和你的用户做很多额外的工作,但在某些情况下这是一个很好的选择。

我认为可以通过这种方式从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"}])
});
})

最新更新