Javascript Alexa 函数 returns [object Object] 接受用户输入时
Javascript Alexa function returns [object Object] when taking user input
我的 Alexa 技能中有一个随机数函数,它使用 AMAZON.NUMBER 插槽类型,意图模式如下所示。
"slots": [
{
"name": "NumOne",
"type": "AMAZON.NUMBER"
},
{
"name": "NumTwo",
"type": "AMAZON.NUMBER"
}
],
我得到了用户要使用的数字,分别放入Num1和Num2中,如下面我的函数所示。
var Num1 = this.event.request.intent.slots.NumOne;
var Num2 = this.event.request.intent.slots.NumTwo;
var result = Math.floor(Math.random() * (Num2 - Num1) + Num1);
// Create speech output
//var speechOutput = "The random number is: " + result;
var speechOutput = Num1 + Num2;
var cardTitle = "Random Number between " + Num1 + "and " + Num2;
//response.tellWithCard(speechOutput, cardTitle, speechOutput);
this.emit(':tell', speechOutput, cardTitle, speechOutput);
然而,当我打印 Num1 和 Num2 时,它们都显示为 [object Object],这意味着我无法对它们进行任何计算,因为结果始终为 NaN。
{
"version": "1.0",
"response": {
"shouldEndSession": true,
"outputSpeech": {
"type": "SSML",
"ssml": "<speak> [object Object][object Object] </speak>"
}
},
"sessionAttributes": {}
}
有没有办法解决这个问题,使 Num1 和 Num2 具有数值?
我搁置了一段时间,想了想这个问题,发现我需要做的就是改变
var Num1 = this.event.request.intent.slots.NumOne;
至
var Num1 = this.event.request.intent.slots.NumOne.value;
这从插槽中获取了值,而不仅仅是插槽类型(这是对象,因此返回了对象对象)。
我的 Alexa 技能中有一个随机数函数,它使用 AMAZON.NUMBER 插槽类型,意图模式如下所示。
"slots": [
{
"name": "NumOne",
"type": "AMAZON.NUMBER"
},
{
"name": "NumTwo",
"type": "AMAZON.NUMBER"
}
],
我得到了用户要使用的数字,分别放入Num1和Num2中,如下面我的函数所示。
var Num1 = this.event.request.intent.slots.NumOne;
var Num2 = this.event.request.intent.slots.NumTwo;
var result = Math.floor(Math.random() * (Num2 - Num1) + Num1);
// Create speech output
//var speechOutput = "The random number is: " + result;
var speechOutput = Num1 + Num2;
var cardTitle = "Random Number between " + Num1 + "and " + Num2;
//response.tellWithCard(speechOutput, cardTitle, speechOutput);
this.emit(':tell', speechOutput, cardTitle, speechOutput);
然而,当我打印 Num1 和 Num2 时,它们都显示为 [object Object],这意味着我无法对它们进行任何计算,因为结果始终为 NaN。
{
"version": "1.0",
"response": {
"shouldEndSession": true,
"outputSpeech": {
"type": "SSML",
"ssml": "<speak> [object Object][object Object] </speak>"
}
},
"sessionAttributes": {}
}
有没有办法解决这个问题,使 Num1 和 Num2 具有数值?
我搁置了一段时间,想了想这个问题,发现我需要做的就是改变
var Num1 = this.event.request.intent.slots.NumOne;
至
var Num1 = this.event.request.intent.slots.NumOne.value;
这从插槽中获取了值,而不仅仅是插槽类型(这是对象,因此返回了对象对象)。