2017-01-26 2 views
0

람다 함수에서 "http.get"요청을 작성했으며 응답을 사용하여 ASK로 답장을 보내고 있습니다.Alexa 기술 세트 - AWS lambda (nodejs)에서 실행되지 않는 context.succeed

아래 코드 인 스위치 케이스에서 "GetName"context.succeed는 스위치 케이스 "GetNameParameter"context.succeed가 성공적으로 실행되는 동안 호출되지 않습니다. "GetName"의 "http.get"요청으로 인한 문제가 있습니까? 이 문제를 해결하는 방법.

"http.get"요청을 추가 할 때마다 context.succeed 메서드가 작동하지 않으므로 알렉사가 작동하지 않습니다.

누구든지 문제 해결에 도움을 줄 수 있습니까?

var http = require('http'); 
exports.handler = (event, context, callback) => { 
    // TODO implement 
    if(event.session.new){ 
     console.log("NEW SESSION"); 
    } 
    switch(event.request.type){ 
     case "LaunchRequest": 
     console.log("LAUNCH REQUEST"); 

     context.succeed(
        generateResponse(
        buildSpeechletResponse("Welcome", true), 
        {} 
       ) 
       ); 

     break; 

     case "IntentRequest": 
     console.log("IntentRequest"); 

     switch(event.request.intent.name){ 

      case "GetName": 

       var endpoint = //endpoint 

      var body = "" 
      http.get(endpoint, (response) => { 
       response.on('data', (chunk) => { body += chunk }) 
       response.on('end',() => { 
       var data = JSON.parse(body) 
       var name = data.name 
       console.log("Name: "+name); 

       //Not getting executed 
       context.succeed(
        generateResponse(
        buildSpeechletResponse(`Name is ${data}`, true), 
        {} 
       ) 
       ) 
       }) 
      }) 
      break; 

      case "GetNameParameter": 

      context.succeed(
        generateResponse(
         buildSpeechletResponse("OK, Name is "+event.request.intent.slots.Name.value, true), 
         {} 
        ) 
       ); 
      break; 

     } 

     break; 

     case "SessionEndedRequest": 
     // Session Ended Request 
     console.log(`SESSION ENDED REQUEST`); 
     break; 

     default: 
     context.fail(`INVALID REQUEST TYPE: ${event.request.type}`); 
    } 
    callback(null, 'Hello from Lambda'); 
}; 

buildSpeechletResponse = (outputText, shouldEndSession) => { 

    return { 
    outputSpeech: { 
     type: "PlainText", 
     text: outputText 
    }, 
    shouldEndSession: shouldEndSession 
    }; 

}; 

generateResponse = (speechletResponse, sessionAttributes) => { 

    return { 
    version: "1.0", 
    sessionAttributes: sessionAttributes, 
    response: speechletResponse 
    }; 

}; 

답변

0

내가 그것을 가지고, 콜백 문제를 일으키는 : 다음

내 코드입니다.

"콜백 (null, 'Hello from Lambda');" 문제가 해결되었습니다.

관련 문제