2017-12-27 9 views
0

私の要求がある:私は活性化発話を供給した後スロットが届かないのはなぜですか?次のように

"request": { 
"type": "IntentRequest", 
"requestId": "EdwRequestId.0941c2f8-30b3-4001-aa05-1cec3a715b05", 
"intent": { 
    "name": "Buses", 
    "slots": { 
    "Heading": { 
     "name": "Heading", 
     "value": "eastbound" 
    } 
    } 
}, 
"locale": "en-US", 
"timestamp": "2017-12-27T02:45:22Z" 
} 

上記はサービスシミュレータによって生成されました。

'Buses': function() { 
    const itemSlot = this.event.request.intent.slots.Item; 
    let heading; 
    if (itemSlot && itemSlot.value) { 
     console.log(itemSlot.value); 
     heading = itemSlot.value.toLowerCase(); 
    } 
    else 
     console.log("No slots!"); 

No slots!は、コンソールに出力された:

マイAWSラムダ関数は、次があります。

答えて

2

書かれているように、あなたのリクエストとあなたのコードは、彼らがすべきことをしています。例として、サービスシミュレータ要求を使用して、リクエストのみ"Heading"として識別された1つのスロット定義:"Item"として同定ないスロットが存在しないので

"slots": { 
    "Heading": { 
     "name": "Heading", 
     "value": "eastbound" 
    } 

を、あなたitemSlot変数が未定義であり、他の条件を評価します。

あなたは「アイテム」と呼ばれる自分の発言に何のスロットを持っていない場合、あなたは、単にそのような見出しのスロットを参照することを意図していることがあります。

this.event.request.intent.slots.Heading; 

あなたに「アイテム」と呼ばれるスロットを持っている場合シミュレータが "Item"のない発声の違いを特定し、それを代わりに使用する可能性があります。あなたの発話とシミュレータへのサンプル要求をチェックして、期待通りにルーティングしていることを確認することで、この問題のトラブルシューティングを行うことができます。また、デバッグしてthis.event.request.intent.slotsを検査して、ラムダ内にスロットがまったく届いていることを確認することもできます。

関連する問題