大家好,我正在为Dialogflow代理开发Web界面。我对使用带有Dialogflow履行webhook的Google动作包提供的webhook有效负载有疑问。
我的图像显示了在意图内创建的Carousel的Dialogflow有效负载与使用Google动作包和Dialogflow Webhook发送的Carousel的有效负载之间的比较。我将在下面附加用于创建此有效负载的代码。如果旋转木马遵循左侧的格式,并且能够很容易地映射数据,我就可以毫无问题地渲染旋转木马。
如您所见,右侧的有效负载非常复杂且嵌套。我是否可以使用Google Actions-on-Google库解码或分解此JSON并从中提取数据?特别简单的回复文字,或轮播卡标题,图片等。
此外,将来是否有计划将这种格式标准化? Google上的Dialogflow和Actions似乎会定期更新其文档和技术。肯定有可能在右侧映射JSON有效负载,但是我担心,根据所交付的内容或交付的顺序,它不会共享相同的结构。
例如,简单文本响应嵌套在richResponse对象中,而轮播数据嵌套在systemIntent对象中。
如果任何人都有使用这些Webhook负载的经验,我很乐意听取您关于如何解决此问题以及如何以最有效的方式从JSON提取数据的意见。
这是我的实现代码-我只是从文档中的“轮播”中复制/粘贴了示例conv.ask:
const functions = require('firebase-functions');
const { dialogflow, Carousel, Image } = require('actions-on-google');
const carousel = 'carousel test intent';
const app = dialogflow();
app.intent(carousel, conv => {
// simple response before carousel
conv.ask('This is a carousel example.');
// Create a carousel
conv.ask(
new Carousel({
items: {
// Add the first item to the carousel
SELECTION_KEY_ONE: {
synonyms: ['synonym 1', 'synonym 2', 'synonym 3'],
title: 'Title of First Carousel Item',
description: 'This is a description of a carousel item.',
image: new Image({
url: 'IMG_URL_AOG.com',
alt: 'Image alternate text'
})
},
// Add the second item to the carousel
SELECTION_KEY_GOOGLE_HOME: {
synonyms: ['Google Home Assistant', 'Assistant on the Google Home'],
title: 'Google Home',
description:
'Google Home is a voice-activated speaker powered by ' +
'the Google Assistant.',
image: new Image({
url: 'IMG_URL_GOOGLE_HOME.com',
alt: 'Google Home'
})
},
// Add third item to the carousel
SELECTION_KEY_GOOGLE_PIXEL: {
synonyms: ['Google Pixel XL', 'Pixel', 'Pixel XL'],
title: 'Google Pixel',
description: 'Pixel. Phone by Google.',
image: new Image({
url: 'IMG_URL_GOOGLE_PIXEL.com',
alt: 'Google Pixel'
})
}
}
})
);
});
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);