使用变量来查找值。 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(下面的代码)正确打印了用户给出的名字,问题是这样的:
我知道如何调用该文件中的数字值 (typecharts) 就像 Werewolf 或 Alien 让 alexa 通过这样做来说话:.speak(typecharts.Alien) 它说 98,
但我需要放置存储用户给定的怪物名称的变量,以便它查找我们想要的怪物,像这样 .speak(typecharts.这里有变种怪物)所以她要找typecharts.whathevertheusersaid,外星狼人或草药
我尝试创建这个变量 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 { ... }
嗨,我正在制作一个简单的 Alexa 技能,要求输入怪物名称并告诉你速度
我向用户询问怪物名称,然后用户的怪物名称存储在:handlerInput.requestEnvelope.request.intent.slots.name.value
我将它保存到变量 monster(下面的代码),这样它就保存了用户给出的名称。
我还有一个名为 typecharts 的文件,其中包含与怪物速度相关的数字。
类型图表文件:
module.exports = {
Werewolf: '60',
Alien: "98",
Herb: "10",
};
so variable monster(下面的代码)正确打印了用户给出的名字,问题是这样的:
我知道如何调用该文件中的数字值 (typecharts) 就像 Werewolf 或 Alien 让 alexa 通过这样做来说话:.speak(typecharts.Alien) 它说 98,
但我需要放置存储用户给定的怪物名称的变量,以便它查找我们想要的怪物,像这样 .speak(typecharts.这里有变种怪物)所以她要找typecharts.whathevertheusersaid,外星狼人或草药
我尝试创建这个变量 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 { ... }