问题描述
我正在尝试在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)
如果仍然无法解决问题,则应添加在尝试部署时看到的错误。