2017-12-14 1 views
0

私は2つのスロットを関数に渡しています。私は以下のXMLで送信しています。スロット値に「未定義」が返ってきた(Alexa、nodejs、lambda)

ここにリクエストXMLがあります。コードの実行時に .....

"requestId": "amzn1.echo-api.request.[unique-value-here]", 
    "intent": { 
     "slots": { 
     "chapter": "4", 
     "shloka": "4" 
     }, 
..... 

はしかし、私も彼らがあると思ったスロットに対して未定義取得しています。 ここここコード

var intent = this.event.request.intent; 
    console.log('slots are -->'); 
    console.log(intent.slots); 
    var shloka = this.event.request.intent.slots.shloka.value; 
    var chapter = this.event.request.intent.slots.chapter.value; 
    console.log('chapter:' + chapter + ' shloka:' + shloka); 

コンソールログ です...スロットがある - > ... {章:4 ''、shloka:4 ''} ...章:未定義shloka:未定義

これを解決する方法はわかりません。

答えて

1

まず、shlokachapterの値にアクセスするためにvalueを使用する必要はありません。第二に、なぜあなたはとにかくintentを持っている場合(ライン1 - var intent = this.event.request.intent;)変数の内部で、this.event.request.intent 2倍を使用してアクセスして、この場合には、あなただけ書くことができます。

// Use this 
var shloka = intent.slots.shloka; 
var chapter = intent.slots.chapter; 

// Instead of this 
var shloka = this.event.request.intent.slots.shloka.value; 
var chapter = this.event.request.intent.slots.chapter.value; 

これは動作するはず期待通り:

var intent = this.event.request.intent; 
console.log('slots are -->'); 
console.log(intent.slots); 
var shloka = intent.slots.shloka; 
var chapter = intent.slots.chapter; 
console.log('chapter:' + chapter + ' shloka:' + shloka); 
+1

ありがとうございました。すべてのamazonの例には、スロットを取得するための.valueがあります。私はなぜそれが動作しないのだろうか。とにかくありがとう。 – user1544687

関連する問題