【问题标题】:I'm trying to do a Alexa Skill, but she says There was a problem with the requested Skill's response我正在尝试执行 Alexa 技能,但她说请求的技能响应有问题
【发布时间】:2021-05-12 23:57:15
【问题描述】:

我在 cmd 上使用 console.log(lojaMensagem) 测试了命令并且正在运行,但是当我使用 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
    })()
    
}`

【问题讨论】:

    标签: javascript node.js alexa alexa-skills-kit alexa-skill


    【解决方案1】:

    您的 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()
        
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 1970-01-01
      • 2019-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 2019-09-27
      相关资源
      最近更新 更多