Получение сообщений об ошибках при попытке воспроизвести MP3 эпизода подкаста с помощью Media Response Fulfillment - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь воспроизвести эпизод моего подкаста в формате mp3 и включить рисунок в соответствии с инструкциями на этой странице, касающимися ответов СМИ. https://developers.google.com/actions/assistant/responses#media_responses

Ошибки связаны с облачной функцией (см. Ниже).

    The deployment of your Cloud Function failed:
    Function load error: Code in file index.js can't be loaded.
    Is there a syntax error in your code?
    Detailed stack trace: ReferenceError: conv is not defined
    at Object.<anonymous> (/user_code/index.js:8:6)
    at Module._compile (module.js:577:32)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)
    at getUserFunction (/var/tmp/worker/worker.js:391:24)
    at loadUserCode (/var/tmp/worker/worker.js:447:18)

Я новичок в Действиях в Google и не знаю, с чего начать устранение неполадок. Насколько я понимаю, я могу позвонить и воспроизвести этот файл с помощью встроенного редактора в Fulfillment.

Ниже приведен код, который у меня есть в Inline Editor.

Очень ценю любые отзывы о том, куда идти отсюда. Спасибо Дуг

'use strict';

const {dialogflow} = require('actions-on-google');
const functions = require('firebase-functions');

const app = dialogflow({debug: true});

if (!conv.surface.capabilities.has('actions.capability.MEDIA_RESPONSE_AUDIO')) {
  conv.ask('Sorry, this device does not support audio playback.');
  return;
}
conv.ask(new MediaObject({
  name: 'The Wiggins Personality Model',
  url: 'https://storage.googleapis.com/voicemarketing-assets02/v01/media/Ep001-VoiceMarketing-WigginsPersonalityModel.mp3',
  description: 'How Clifford Nass used the Wiggins Personality Model for voice.',
  icon: new Image({
    url: 'https://storage.googleapis.com/voicemarketing-assets02/v01/media/Ep001-VoiceMarketing-EpKeyart-1400x933-brain.png',
    alt: 'Media icon',
  }),
}));


app.intent('play.episode', (conv) => {
  const mediaStatus = conv.arguments.get('MEDIA_STATUS');
  let response = 'Unknown media status received.';
  if (mediaStatus && mediaStatus.status === 'FINISHED') {
    response = 'Hope you enjoyed the tunes!';
  }
  conv.ask(response);
});

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

1 Ответ

0 голосов
/ 17 сентября 2018

Как показано в трассировке стека:

Detailed stack trace: ReferenceError: conv is not defined

conv, поскольку объект существует только в области действия вашего app.intent, как объект, который является частью обратного вызова.

Вы делаете звонки на conv.ask вне этой области, как часть начальной настройки webhook. Любые разговорные биты должны быть инкапсулированы в app.intent, чтобы они выполнялись только в том случае, если задано заданное намерение. Здесь вы можете видеть, что ваш фрагмент был перемещен в обработчик намерений.

app.intent('play-media', conv => {
    if (!conv.surface.capabilities.has('actions.capability.MEDIA_RESPONSE_AUDIO')) {
      conv.ask('Sorry, this device does not support audio playback.');
      return;
    }
    conv.ask(new MediaObject({
        name: 'The Wiggins Personality Model',
         url: 'https://storage.googleapis.com/voicemarketing-assets02/v01/media/Ep001-VoiceMarketing-WigginsPersonalityModel.mp3',
         description: 'How Clifford Nass used the Wiggins Personality Model for voice.',
         icon: new Image({
           url: 'https://storage.googleapis.com/voicemarketing-assets02/v01/media/Ep001-VoiceMarketing-EpKeyart-1400x933-brain.png',
           alt: 'Media icon',
         }),
     }));
})
...