2017-01-26 3 views
0

Я сделал «http.get» запрос от лямбда-функции, и я с помощью ответа для построения ответа обратно ASK.Alexa Skill Set - не context.succeed получения выполняется из AWS лямбды (nodejs)

В нижеследующем коде - в случае коммутатора «GetName» context.succeed никогда не вызывается, а в случае коммутатора успешно выполняется контекст «GetNameParameter» context.succeed. Есть ли какая-то проблема из-за запроса «http.get» в «GetName»? Как это решить.

Всякий раз, когда я добавить «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

Я получил его, обратный вызов вызывает проблемы.

комментарии "обратный вызов (нуль, 'Привет из Lambda');" и проблема была решена.

Смежные вопросы