Как закрыть навык Alexa, который использует интерфейс AudioPlayer - PullRequest
0 голосов
/ 27 сентября 2018

В настоящее время я разрабатываю навык Alexa, в котором я использую интерфейс AudioPlayer для воспроизведения песни.

Когда вызывается намерение Отмена, я делаю:

'AMAZON.CancelIntent': function() {
this.emit(':tell', "Bye!");}

ПроблемаПосле того, как Алекса сказала «Пока», звук не был приостановлен, и навык все еще работает.

Как я могу закрыть навык из обработчика Intent?

1 Ответ

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

Вы должны отправить директиву AudioPlayer.Stop, чтобы остановить любой текущий воспроизводимый аудиопоток.

'AMAZON.CancelIntent': function() {
   this.response.speak('Bye').audioPlayerStop();
   this.emit(':responseReady');
}

В ask-sdk-v2 вы можете использовать:

return handlerInput.responseBuilder
      .addAudioPlayerStopDirective()
      .getResponse();

Обновление
Сервис Alexa будет отслеживать ваш навык аудиоплеера как навык, который воспроизводил последнее аудио и для любого встроенного намерения, Alexa создаст новую сессию и вызовет запрос к вашему навыку.

Когда ваш навык отправляет директиву Play, чтобы начать воспроизведение, сервис Alexa отправляет аудиопоток на устройство для воспроизведения.Как только сессия заканчивается нормально (например, если ваш ответ включал флаг shouldEndSession, установленный в значение true), Alexa помнит, что ваше умение начало воспроизведение, пока пользователь не выполнит одно из следующих действий:

  1. Запускает воспроизведение звукас другим навыком.
  2. Вызывает другую службу, которая передает потоковое аудио, например встроенную музыкальную службу или флэш-брифинг.
  3. Перезагружает устройство.

Проверьте эту документацию Встроенные элементы управления воспроизведением

Подробнее о директивах AudioPlayer здесь

...