Как воспроизвести аудиофайл из S3 Bucket в функции AWS Lambda с помощью Node.js?

У меня есть 12 коротких (3-х секундных) аудиофайлов, хранящихся в ведре S3. Я пытаюсь разработать приложение Alexa, в котором вы можете сказать «play (название звука)», и оно будет воспроизводить один из этих аудиофайлов. Я уже создал свое приложение alexa, я создал свою лямбда-функцию aws, однако я не уверен, как получить и воспроизвести аудиофайл из моей корзины S3 с помощью моей лямбда-функции AWS. Есть ли у кого-нибудь идеи, как это сделать? Я новичок в Node.js, AWS, S3 Buckets.


person Robert Pelican    schedule 18.12.2018    source источник
comment
Если содержимое вашей корзины S3 является общедоступным, вы можете просто использовать URL-адрес элемента на S3 напрямую. Если содержимое вашей корзины не является общедоступным и запрос необходимо каким-либо образом проверить, вы можете подписать URL-адрес частного элемента на S3 и перенаправить на него клиента. В любом случае, не извлекайте его и не отправляйте клиенту ... пусть S3 позаботится об этом за вас.   -  person Brad    schedule 18.12.2018
comment
@Brad Спасибо за ответ! Мои корзины S3 общедоступны. Я понимаю, что могу использовать URL-адрес элемента, но знаете ли вы, как именно я могу сделать этот запрос? Как мне создать клиента в моем коде, чтобы сделать этот запрос? Извините, я новичок в Node.js и пишу лямбда-функции ... Еще раз спасибо!   -  person Robert Pelican    schedule 18.12.2018
comment
Я не понимаю, при чем тут Лямбда.   -  person Brad    schedule 18.12.2018
comment
@Brad Я проигрываю звук через лямбда-функцию. Мой навык alexa вызывает мою лямбда-функцию.   -  person Robert Pelican    schedule 19.12.2018
comment
@Brad У меня просто проблемы с получением / воспроизведением звука, потому что я не знаю синтаксиса node.js и, похоже, нигде не могу его найти.   -  person Robert Pelican    schedule 19.12.2018


Ответы (2)


Вы указываете свои речевые ответы на s3 uri, который, как упоминалось в комментариях, должен иметь открытый доступ, тогда вы создадите звук воспроизведения ответов, и ваш ответ будет использовать теги ssml.

    <speak> <audio src="   "</speak> 

ваш s3 url звукового клипа между "". Документация, если вы застряли, находится здесь: https://developer.amazon.com/docs/custom-skills/speech-synthesis-markup-language-ssml-reference.html#audio

person Chuck LaPress    schedule 18.12.2018
comment
Куда бы мне добавить эти ssml-теги? Не в лямбда-функции, верно? - person Robert Pelican; 20.12.2018
comment
developer.amazon. com / docs / custom-skills / Прочтите раздел, используя sank в своем ответе, и если вам нужно или нет использовать теги ‹speak›, и да, вы предоставляете ответы ssml в своем лямбда-коде. Это то, что возвращается в запрос или высказывание пользователя. - person Chuck LaPress; 20.12.2018
comment
Роберт, это видео также может прояснить это для вас. m.youtube.com/watch?v=FucapfzyVKM - person Chuck LaPress; 20.12.2018

Вот документация к аудиоплееру:

https://developer.amazon.com/docs/custom-skills/audioplayer-interface-reference.html

Как сказал Брэд, если он общедоступен, вы можете использовать URL-адрес в соответствии с инструкциями в этой документации. Есть встроенные намерения для обработки таких вещей, как «пропустить» и «остановить», и вы можете использовать методы AudioPlayer для обработки фактического воспроизведения звука:

AudioPlayer.Play: отправляет Alexa команду для потоковой передачи аудиофайла, идентифицированного указанным audioItem.

AudioPlayer.Stop: останавливает любой воспроизводимый в данный момент аудиопоток.

AudioPlayer.ClearQueue: очищает очередь от всех аудиопотоков.

По сути, вы напишете некоторую логику в своей лямбда-функции, чтобы направить сеанс в желаемый обработчик намерений, и использовать эти методы вместе с объектом, указывающим на ваш URL-адрес.

person dillon.harless    schedule 18.12.2018