我的目标是开发一种可以播放三个可用曲目之一的动作。但是我得到这个错误:格式错误的响应Expected_inputs [0] .input_prompt.rich_initial_prompt.items [1] .media_response:协议必须为http或https。
这是index.js:
'use strict';
const functions = require('firebase-functions');
const {dialogflow , Permission, Suggestions, MediaObject,Image} = require('actions-on-google');
const app = dialogflow({debug : true});
app.intent('Default Welcome Intent', (conv) => {
const name = conv.user.storage.userName;
if(!name)
{
conv.ask(new Permission({
context : 'Dear user , to become acquainted',
permissions : 'NAME',
}));
}
else
{
conv.ask(`Which track would you like to play ${name}?`);
conv.ask(new Suggestions('First One','Second one','Third one'));
}
});
app.intent('actions_intent_PERMISSION', (conv, params, permissionGranted) => {
if (!permissionGranted) {
conv.ask(`Okay, no worries. Which track would you like to play?`);
conv.ask(new Suggestions('First one','Second one','Third one'));
} else {
conv.user.storage.userName = conv.user.name.display;
conv.ask(`Thanks, ${conv.user.storage.userName}. Which track would you like to play?`);
conv.ask(new Suggestions('First one','Second one','Third one'));
}
});
app.intent('play-media', (conv) => {
if (!conv.surface.capabilities
.has('actions.capability.MEDIA_RESPONSE_AUDIO')) {
conv.close('Sorry, this device does not support audio playback.');
return;
}
conv.ask('Here is the track :');
conv.ask(whichTrack());
conv.ask(new Suggestions(['Stop', 'Start Over' , 'Choose another track']));
});
app.intent('media-status', (conv) => {
const mediaStatus = conv.arguments.get('MEDIA_STATUS');
let response = 'Unknown media status received.';
if (mediaStatus && mediaStatus.status === 'FINISHED') {
response = `Hope you enjoyed the tune , ${conv.user.storage.userName}`;
}
conv.ask(response);
conv.ask(`Which track would you like to play ?`);
conv.ask(new Suggestions('First one','Second one','Third one'));
});
const whichTrack = () => {
const media = new MediaObject({
items: {
'first one': {
name: 'Jazz in Paris',
url: 'https://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3',
description: 'A funky Jazz tune',
icon: new Image({
url: 'https://storage.googleapis.com/automotive-media/album_art.jpg',
alt: 'Album cover of an ocean view',
}),
},
'second one': {
name: 'HAYDN',
url: 'http://www.hochmuth.com/mp3/Haydn_Cello_Concerto_D-1.mp3',
description: 'Concerto D-Major',
icon: new Image({
url: 'http://www.hochmuth.com/images/picture2small.jpg',
alt: 'Album cover of the pianist',
}),
},
'third one': {
name: 'BEETHOVEN',
url: 'http://www.hochmuth.com/mp3/Beethoven_12_Variation.mp3',
description: 'Variations',
icon: new Image({
url: 'https://www.audiophileusa.com/covers400water/144063.jpg',
alt: 'Album cover of beethoven.',
}),
},
},
});
return media;
};
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
我要去哪里错了?我提供的链接是http或https。
似乎您正在使用MediaObject
字段创建一个items
,这不是有效的参数。您需要更新对象以提供单个对象。
const media = new MediaObject({
name: 'Jazz in Paris',
url: 'https://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3',
description: 'A funky Jazz tune',
icon: new Image({
url: 'https://storage.googleapis.com/automotive-media/album_art.jpg',
alt: 'Album cover of an ocean view',
}),
});