Структура полезной нагрузки Webhook - PullRequest
0 голосов
/ 19 апреля 2019

Payload Comparison

Привет всем, я разрабатываю веб-интерфейс для агентов 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);
...