首页 > 解决方案 > 我正在尝试执行 Alexa 技能,但她说请求的技能响应有问题

问题描述

我用 console.log(lojaMensagem) 在 cmd 上测试了命令并且正在工作,但是当我戴上 Alexa Skill 时它给了我一个错误,你能帮我吗?是的,我正确放置了 npm 包!抱歉,如果问题太明显了,我是 Alexa Skills 的新手

const LojaDoDiaHandler = {
canHandle(handlerInput) {
    return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
        && Alexa.getIntentName(handlerInput.requestEnvelope) === 'LojaDoDia';
},
handle(handlerInput) {
    const { get } = require('axios');

    (async handle => {
        const itemsName = []

        const shop = await get(
            'https://fortniteapi.io/v2/shop?lang=pt-BR',
            { headers: { Authorization: 'my api key' } }
        )

    for (const item of shop.data.shop)
        itemsName.push(item.displayName)

    const lojaMensagem = `Os itens da loja de hoje são ${itemsName.join('. ')}`
    console.log(lojaMensagem)
    return handlerInput.responseBuilder
            .speak(lojaMensagem)
            .reprompt('') // Se eu quiser resposta
            .getResponse
    })()
    
}`

标签: javascriptnode.jsalexaalexa-skills-kitalexa-skill

解决方案


您的handle方法没有返回任何内容 - 您只需调用您的函数(return 在其中),然后该handle方法返回undefined,这就是您听到有关响应问题的消息的原因。另一个问题是您不调用getResponse函数(缺少())。

顺便说一句,您可以使handle方法异步:

const LojaDoDiaHandler = {
canHandle(handlerInput) {
    return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
        && Alexa.getIntentName(handlerInput.requestEnvelope) === 'LojaDoDia';
},
async handle(handlerInput) {
    const { get } = require('axios');

    const itemsName = []

    const shop = await get(
        'https://fortniteapi.io/v2/shop?lang=pt-BR',
        { headers: { Authorization: 'my api key' } }
    )

    for (const item of shop.data.shop)
        itemsName.push(item.displayName)

    const lojaMensagem = `Os itens da loja de hoje são ${itemsName.join('. ')}`
    console.log(lojaMensagem)
    return handlerInput.responseBuilder
            .speak(lojaMensagem)
            .reprompt('') // Se eu quiser resposta
            .getResponse()
    
}

推荐阅读