Создайте массив карточек в Alexa Skill и покажите их - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь составить список с помощью 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 для каждого найденного товара?

1 Ответ

1 голос
/ 12 марта 2020

withSimpleCard здесь вам не поможет, поскольку возвращает только один элемент, и вы хотите отобразить список.

Вместо этого вам следует использовать Показать шаблон . Убедитесь, что вы соответствуете всем ограничениям, указанным в документации.

Дополнительную информацию можно найти в соответствующей статье на Alexa Blog .

И чтобы упростить задачу - отобразить директиву sample из alexa-cookbook (они провели некоторый рефакторинг в репозитории, а ссылки в статье переходят на страницу 404).

...