Webhook有效负载结构

时间:2019-04-19 18:02:32

标签: dialogflow actions-on-google

Payload Comparison

大家好,我正在为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);

0 个答案:

没有答案