Я пытаюсь составить список с помощью SimpleCard () элементов, которые получает мой API, но я ничего не нашел в inte rnet, говоря, что это возможно.
Что мне удалось сделать Alexa говорит обо всех найденных мной вещах.
Следуйте моему коду.
const ProcuraProdutoIntentHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'ProcuraProduto';
},
async handle(handlerInput) {
let speakOutput = "This is the default message.";
let totalResult = 0;
let slotValue = handlerInput.requestEnvelope.request.intent.slots.produto.value;
const titleCard = `Procurando por ${slotValue}, aguarde...`
let names = '';
await axios.get(`https://myapi.com/search=${slotValue}`).then((response) =>{
if(response.data.length === 0){
totalResult = `Não encontrei nenhum resultado.`
//Se encontrar apenas 1 resultado
} else if(response.data.length === 1){
response.data.map(item => {
names += item.name;
});
console.log("Produtos ", names);
totalResult = `Eu encontrei ${response.data.length} resultado.`
//Se encontrar mais de 1 resultado
} else {
response.data.map(item => {
names += `${item.name} <break time="2s"/>, `;
});
console.log("Produtos ", names);
totalResult = `Eu encontrei ${response.data.length} resultados.`
}
}).catch((erro) =>{
speakOutput = 'Ocorreu um erro. Tente novamente.';
})
const speechText = `<speak> Os produtos que encontrei foram: <break time="1s"/> ${names}</speak>`;
return handlerInput.responseBuilder
.speak(speechText)
.withSimpleCard('Pesquisa concluída!', totalResult)
//.reprompt('add a reprompt if you want to keep the session open for the user to respond')
.getResponse();
}
};
Как бы вы * oop создали карточку withSimpleCard для каждого найденного товара?