Google Action未部署

问题描述

我正在尝试在Google Action云功能中播放简单的音频流。它不会部署,因为它说代码中有错误,但不是在哪里。这是我的代码(请注意***注释中的替代方法-混淆了,因为我不确定我应该使用哪一种,见过两者!

const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');
const { MediaObject,SimpleResponse } = require('actions-on-google');

const app = actionssdk() // *** or 'const app = conversation()' ?
app.handle("playStream",conv => { // *** or 'app.intent(...' ?
    conv.ask(new SimpleResponse("Playing stream"));
    conv.ask(new MediaObject({
        name: 'My stream',url: 'https://stream.redacted.url',description: 'The stream',icon: new Image({
            url: 'https://image.redacted.url',alt: 'Media icon',}),}));
});

exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

解决方法

您似乎混合使用了actions-on-google@assistant/conversation库。您只能使用一个或另一个,具体取决于您使用的平台。

如果您使用原始的Actions SDK,则应使用actions-on-google。如果您使用的是新的Actions SDK或Actions Builder,则应使用@assistant/conversation

区别是不同的,但是会导致问题。 actionssdk具有intent方法,但没有handle方法,对于conversation则相反。这可能会导致语法错误。另外,请确保已导入所有内容,包括Image

const functions = require('firebase-functions')
const {
  conversation,Media,Image,} = require('@assistant/conversation')

const app = conversation()
app.handle("playStream",conv => {
    conv.add("Playing stream");
    conv.add(new Media({
      mediaObjects: [{
        name: 'Media name',description: 'Media description',url: 'https://actions.google.com/sounds/v1/cartoon/cartoon_boing.ogg',image: {
          large: new Image({
            url: 'https://image.redacted.url',alt: 'Media icon',}),}
      }],mediaType: 'AUDIO',optionalMediaControls: ['PAUSED','STOPPED']
  }));
})

exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app)

如果仍然无法解决问题,则应添加在尝试部署时看到的错误。