Google 操作未部署

Google Action not deploying

我正在尝试让一个简单的音频流在 Google 动作云函数中播放。它不会部署,因为它说代码中有错误,但没有说在哪里。这是我的代码(请注意 *** 评论中的替代方案 - 令人困惑,因为我不确定我应该使用哪个,已经看到了两个!

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 and @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)

如果这仍然不起作用,您应该添加您在尝试部署时看到的错误。