2017-09-27 84 views
0

我的Alexa技能中有一個隨機數函數,它使用AMAZON.NUMBER插槽類型,以下顯示的意圖模式。使用用戶輸入時,Javascript函數返回[object Object]

"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它們都顯示爲[對象對象]這意味着我不能做任何與他們的計算,結果將始終爲NaN。

{ 
    "version": "1.0", 
    "response": { 
    "shouldEndSession": true, 
    "outputSpeech": { 
     "type": "SSML", 
     "ssml": "<speak> [object Object][object Object] </speak>" 
    } 
    }, 
    "sessionAttributes": {} 
} 

有沒有辦法解決這個問題,因此Num1和Num2有數字值?

+0

您無法將對象轉換爲數字。你將不得不看看這些對象是否包含數字並提取它們。此外,插槽是一個數組,您似乎試圖通過* name *訪問它?這沒有什麼意義... –

+0

請添加日誌以獲取事件json並分享它。在提供解決方案之前,要查看Json結構。 –

+0

響應應該是** this.emit(':tell',speechOutput)**,而不是你有什麼結果。 –

回答

1

我離開了一段時間,有一個思考問題,發現所有我需要做的是

var Num1 = this.event.request.intent.slots.NumOne.value; 

這種變化

var Num1 = this.event.request.intent.slots.NumOne; 

了從插槽中的價值和不僅僅是插槽類型(這是對象因此爲什麼返回對象Object)。

相關問題