Dialogflow webhook(Google上的操作)。是否应该使用RichResponse?

时间:2018-08-31 00:21:47

标签: node.js dialogflow actions-on-google google-home

通读Google的Actions文档,我通过使用丰富的响应类并为其提供了简单的响应,轮播和一些建议芯片,构建了一个浏览轮播。

const carouselItems = [];
items.forEach(item => {
    const carouselItem = new BrowseCarouselItem({
        description: item.description.text,
        image: new Image({
            alt: item.title,
            url: item.image,
        }),
        url: item.link,
        title: item.title,
    })
    carouselItems.push(carouselItem)
});


conv.ask(new RichResponse({
    items: [{
        simpleResponse: new SimpleResponse("the simple response message"),
        carouselBrowse: new BrowseCarousel({ 
            items: [ browseCarouselItem1, browseCarouselItem2 ],
        }),
    }],
    suggestions: ["suggestion1", "suggestion2"]
});

花时间做完这些之后,我发现丰富的响应类似乎是不必要的。实际上,我可以连续三次使用conv.ask()来获得相同的结果。

conv.ask("the simple response message");
conv.ask(new BrowseCarousel({
    items: [ browseCarouselItem1, browseCarouselItem2 ]
}));
conv.ask(new Suggestions([ "suggestion1", "suggestion2" ]);

有了这个发现,我发现自己不确定正确的方法。这些方法中的一种可以替代另一种吗?最佳做法是什么?我在整个Webhook中都使用过RichResponse次,现在不确定是否正在使用过时的课程。

1 个答案:

答案 0 :(得分:2)

它不是“过时”的,但是不必要。标准做法是多次调用ask(),并让库为您构建RichResponse对象。但是该库确实在内部使用它,因此它不是过时的。

当我使用Google动作库时,我更喜欢使用多个ask(),因为我不必全部使用它们。我可以根据可用的功能或适当的响应将它们中的一些包含在不同的块中。

使用最适合您的东西。