![Payload Comparison](https://i.stack.imgur.com/mw3lX.png)
Привет всем, я разрабатываю веб-интерфейс для агентов Dialogflow.У меня есть вопрос о полезных нагрузках webhook, доставляемых с помощью пакета actions-on-google с веб-крюком выполнения Dialogflow.
Мое изображение показывает сравнение полезной нагрузки Dialogflow для карусели, созданной в намерении, и полезной нагрузки дляКарусель создается с помощью пакета actions-on-google и отправляется с помощью Dialhoflow Webhook.Я приложу код, который использовал для создания этой полезной нагрузки ниже.Я могу отображать карусели без проблем, если они следуют формату слева, и было очень легко отобразить данные.
Как вы видите, полезная нагрузка справа очень сложна и вложена.Могу ли я использовать библиотеку actions-on-google для декодирования или деструктурирования этого JSON и извлечения данных из него?В частности, простой текст ответа или заголовки карусельных карт, изображения и т. Д.
Кроме того, планируется ли стандартизировать этот формат в будущем?Кажется, что Dialogflow и Actions в Google обновляют свои документы и технологии довольно регулярно.Определенно возможно сопоставить полезную нагрузку 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);