2017-12-27 30 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" 식별 한 슬롯 정의 "Item"로 확인 된 슬롯 번호가 존재하지 않기 때문에

는 해당 itemSlot 변수가 정의되지
"slots": { 
    "Heading": { 
     "name": "Heading", 
     "value": "eastbound" 
    } 

을 상기 다른 조건을 평가한다.

당신이 "항목"라는 말에는 슬롯이없는 경우는 단순히 그렇게처럼 제목 슬롯을 참조하는 데 의미가 있습니다

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

을 당신이 "항목"라는 슬롯이있는 경우 귀하의 시뮬레이터가 "항목"없이 차이 발화를 확인하고 대신 사용했을 가능성이 있습니다. 발언과 시뮬레이터에 대한 샘플 요청을 확인하여 예상대로 라우팅되는지 확인하여 문제를 해결할 수 있습니다. 또한 this.event.request.intent.slots을 검사하여 람다에서 슬롯을 수신하고 있는지 확인할 수 있습니다.