Привет всем, мне трудно реализовать воспроизведение звука. Вот документы
То, что я действительно хочу сделать, кажется довольно простым, но оказалось очень запутанным, где все должно происходить.
Я хочу иметь возможность сказать команду. Алекса ответит немного outputSpeech, а затем перейдет к воспроизведению небольшой аудиодорожки в формате mp3, которую я предоставлю. Я не против загрузить его локально (когда я заархивирую файлы и импортирую их в функцию lamda) или с помощью S3 Buckets SDK для потоковой передачи файла mp3. Что для вас проще, ребята.
Вот что у меня получилось.
С помощью приведенных ниже кодов я могу заставить Alexa отвечать как голос и выводить речь.
Я использую IntentRequest только для уменьшения количества кодов для вас, ребята.
- Я скажу: «Алекса, открой мое приложение и включи мою музыку»
- "play my music" - это команда, которую я укажу как свое высказывание, когда я настрою свой навык в консоли разработчика alexa.
exports.handler = (event, context, callback) => {
try {
if (event.request.type === 'IntentRequest') {
onIntent(event.request,
event.session,
(sessionAttributes, speechletResponse) => {
callback(null, buildResponse(sessionAttributes, speechletResponse));
});
}
} catch (err) {
callback(err);
}
};
Моя функция, которая будет вызываться при выполнении запроса о намерении
- Мое намеренное имя будет PlayMyMusic.
function onIntent(intentRequest, session, callback) {
console.log(`onIntent requestId=${intentRequest.requestId}, sessionId=${session.sessionId}`);
const intent = intentRequest.intent;
const intentName = intentRequest.intent.name;
if (intentName === 'PlayMyMusic') {
PlayMyMusic(intent, session, callback);
} else if (intentName === 'AMAZON.StopIntent' || intentName === 'AMAZON.CancelIntent') {
handleSessionEndRequest(callback);
} else {
throw new Error('Invalid intent');
}
}
Это выходное сообщение
function PlayMyMusic(intent, session, callback) {
const repromptText = null;
const sessionAttributes = {};
let shouldEndSession = true;
let speechOutput = '';
speechOutput = `I'm Alexa and I will output speech in this area. After I'm done talking I will play an audio track`;
callback(sessionAttributes,
buildSpeechletResponse(intent.name, speechOutput, repromptText, shouldEndSession));
}
Это моя простая схема намерений
{
"intents": [
{
"intent": "PlayMyMusic"
},
{
"intent": "AMAZON.HelpIntent"
}
]
}
Примеры высказываний
PlayMyMusic play my music
На данный момент все работает, когда Amazon может поговорить со мной и завершить сеанс.
How would I be able to have Amazon responds to me and then play some audio? The docs are kind of not working for me.