В Alexa Response Builder, как прослушать ответ пользователя после директивы .addAudioPlayerPlayDirective ()? - PullRequest
0 голосов
/ 23 октября 2018

В построителе ответов alexa, как прослушать ответ пользователя после .addAudioPlayerPlayDirective ()?

return handlerInput.responseBuilder
  .speak(speechText)
  .addAudioPlayerPlayDirective(
    "REPLACE_ALL",
    "https://firebasestorage.googleapis.com/v0/b/quizzfilm.appspot.com/o/Bientot-lepoque-viendra-ou-les-Hobbits-determineront-le-destin-de-tous.mp3?alt=media&token=7e5f570a-4e99-48a4-a473-e052d579ddcb",
    "12345"
  )
  .withShouldEndSession(false)
  .getResponse();

1 Ответ

0 голосов
/ 24 октября 2018

Вы не можете начать воспроизведение и ждать ответа пользователя.Даже во время воспроизведения пользователь может запускать только встроенные намерения управления воспроизведением.


Когда вы отправляете директиву AudioPlayer.Play с playBehavior="REPLACE_ALL", Alexa начинает воспроизведение указанного потока и заменяет текущий и поставленный в очередь потоки.При отправке директивы Play вы обычно устанавливаете флаг shouldEndSession в объекте ответа на true, чтобы завершить сеанс.Если для этого флага установлено значение false, Alexa отправляет поток на устройство для воспроизведения, а затем немедленно приостанавливает поток для прослушивания ответа пользователя.

В ask-nodejs-sdk shouldEndSession флаг устанавливается автоматическиfalse, если вы включите reprompt().В результате, как только Alexa получает этот ответ, он говорит speech и reprompt и ждет ответа пользователя (shouldEndSession=false).Если ответа нет, он завершит сеанс как обычно, и поток никогда не будет воспроизведен .

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

Если вы хотите, чтобы пользователь угадал музыку, которая была воспроизведена, вы можете использовать audio тег SSML.Таким образом, после воспроизведения звука он будет ожидать ответа пользователя.

<speak>
    Guess this music 
    <audio src="https://yoursoundsource.com/path/to/music.mp3" /> 
</speak> 

Примечание: Длина аудиофайла не может превышать девяносто (90) секунд.

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

...