Вызвать другого игрока, когда один медиа-ответ (воспроизведение аудио) сделан - PullRequest
0 голосов
/ 04 октября 2019

У меня проблема.

Я выбираю диалоговое окно, пример действия Google (воспроизведение аудиофайла)

Я хочу создать несколько аудиофайлов.

Поэтому, когда медиа-ответ сделан, медиа-статус вызывается.

Итак, в это время я хочу автоматически воспроизвести следующий звук.

Пожалуйста, помогите мне. Мне нужна ваша любезная помощь.

Спасибо.

Это мой код.

'use strict';

const {
  dialogflow,
  SimpleResponse,
  Image,
  Suggestions,
  MediaObject,
} = require('actions-on-google');
const functions = require('firebase-functions');

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

app.intent('Media Response', (conv) => {
  if (!conv.surface.capabilities
    .has('actions.capability.MEDIA_RESPONSE_AUDIO')) {
      conv.ask('Sorry, this device does not support audio playback.');
      conv.ask('Which response would you like to see next?');
      return;
  }

  conv.ask('This is a media response example.');
  conv.ask(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',
    }),
  }));

  conv.ask(new Suggestions(['cancel']));
});

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.ask(response);
  conv.ask('Media ended successfully');
  conv.ask(new Suggestions(['exit']));
});

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

Я попытался вызвать другой ответ о намерении «Статус СМИ».

app.intent('Media Status', (conv) => {
      const mediaStatus = conv.arguments.get('MEDIA_STATUS');
      let response = 'Unknown media status received.';
      if (mediaStatus && mediaStatus.status === 'FINISHED') {
        conv.ask(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',
        }),
      }));

      conv.ask(new Suggestions(['cancel']));
    });
      }

    });

Затем произошла ошибка «Webhook не удалась: намерение: состояние носителя». Как мне решить эту проблему? Спасибо.

Error

1 Ответ

1 голос
/ 05 октября 2019

Все ответы, которые включают MediaObject, должны также включать SimpleResponse - обычно это просто какой-то текст, который перед носителем.

Например, в обработчике намерений "Media Response", когдавы отправляете свой первый MediaObject, у вас есть строка:

conv.ask('This is a media response example.');

Но такого рода строка отсутствует в обработчике намерений "Состояние носителя".

...