使用变量来查找值。 JSON Alexa 技能

Using a variable to look for a value. JSON Alexa skill

嗨,我正在制作一个简单的 Alexa 技能,要求输入怪物名称并告诉你速度

我向用户询问怪物名称,然后用户的怪物名称存储在:handlerInput.requestEnvelope.request.intent.slots.name.value

我将它保存到变量 monster(下面的代码),这样它就保存了用户给出的名称。

我还有一个名为 typecharts 的文件,其中包含与怪物速度相关的数字。

类型图表文件:

module.exports = {

    Werewolf: '60',
    Alien: "98",
    Herb: "10",
}; 

so variable monster(下面的代码)正确打印了用户给出的名字,问题是这样的:

我尝试创建这个变量 const spe = (typecharts.monster) 但它失败了,因为它没有寻找用户说的名字 (保存在 "monster" 变量),它会查找 "monster",而不是变量中的名称,我怎样才能让它查找存储在 monster 中的文本?。

要修复的代码:

    canHandle(handlerInput) {

        return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
            && Alexa.getIntentName(handlerInput.requestEnvelope) === 'CompareIntent';
                            },

    handle(handlerInput) {

        const monster = handlerInput.requestEnvelope.request.intent.slots.name.value
        const spe = (typecharts.monster) // <- i need to fix this to do what i need.

        return handlerInput.responseBuilder

            .speak("you said "+ monster +" with speed " + spe ) // <- alexa speech output
            .reprompt("tell me more")
            .getResponse();

    }

使用括号语法通过变量访问对象键(否则,它会尝试查找您没有的名为 "monster" 的键)。

handle(handlerInput) {

    const monster = handlerInput.requestEnvelope.request.intent.slots.name.value
    const spe = typecharts[monster]

    return handlerInput.responseBuilder

        .speak("you said "+ monster +" with speed " + spe ) // <- alexa speech output
        .reprompt("tell me more")
        .getResponse();

}

注意处理找不到怪物的情况,即

if (!spe) { ... } else { ... }