2017-07-07 2 views
3

UPDATE: Ich hatte einen Fehler auf meinem HTTP-Anfrage-Endpunkt. Ich hatte die entsprechenden Authentifizierungsoptionen nicht eingestellt, so dass viele dieser Fehler möglicherweise behoben wurden.Node.js Lambda-Funktion "Antwort ist ungültig" Amazon Alexa

Meine Frage ist ähnlich wie ein hier:

Node.js Lambda function returns "The response is invalid" back to Alexa Service Simulator from REST call

jedoch die Lösung auf diese Frage nicht mein Problem nicht lösen. Also mache ich eine HTTP-Anfrage an einen xsjs-Dienst in der Hana-Cloud. Ich erhalte die Fehlermeldung "Antwort ist ungültig". Ich kann nicht sehen warum. Hier ist meine Funktion ist:

// Create a web request and handle the response. 
function httpGet(query, callback) { 

    console.log("/n QUERY: "+ query); 

    var host = 'datacloudyd070518trial.hanatrial.ondemand.com'; 
    var path = '/LocationInformation/getLocationInfo.xsjs?location='; 
    var hostname = 'https://' + host + path + query; 


    var auth = 'user1:D1anafer'; 

    var req = http.request({'hostname': hostname, 
          'auth': auth 
         }, (res) => { 

    var body = ''; 

     res.on('data', (d) => { 
      body += JSON.stringify(d); 
     }); 

     res.on('end', function() { 
      callback(body); 
     }); 

    }); 


    req.end(); 

    req.on('error', (e) => { 
     console.error(e); 
    }); 


} 

Und die Funktion, die es nennt:

'getNewsIntent': function() { 

    //self = this; 

    httpGet(location, function (response) { 

     // Parse the response into a JSON object ready to be formatted. 
     //var output = JSON.parse(response); 
     //output = output['change']; 
     var output = response; 

     var cardTitle = location; 
     var cardContent = output; 

     alexa.emit(':tellWithCard', output, cardTitle, cardContent); 

    }); 

}, 

Danke -Diana

Antwort

2

In Ihrem Konto AWS gehen Sie zu Ihrem Lambda Funktion und klicken Sie auf die Registerkarte monitoring , wo Sie "Logs in Cloudwatch anzeigen" in der rechten Ecke sehen sollten. Wenn Sie auf diesen Link klicken, sollten die angezeigten Fehler angezeigt werden.

Sie können auch console.log() verwenden, um alle von Ihrer REST-API zurückgegebenen Informationen zu protokollieren, die in cloudwatch protokolliert werden und Ihnen dabei helfen, Ihre Fehler zu erkennen.

0

Dies ist nur eine Vermutung von der Spitze meines Kopfes. Um wirklich etwas ausführlicher zu helfen, wäre eine Fehlermeldung wie erwähnt erforderlich.

Aber nur eine Vermutung: Ihre http.request() verwendet die http module (https://nodejs.org/api/http.html) und Sie greifen auf eine https-Ressource. Wenn ja, gibt es ein https (https://nodejs.org/api/https.html) Modul oder verwenden Sie etwas wie Axios https://www.npmjs.com/package/axios oder requestjs (https://github.com/request/request) dies wird beides behandeln.

Wie ich schon sagte nur eine blinde Vermutung ohne detaillierte Fehlermeldung und sehen Sie Ihre erfordern Aussagen, aber ich bin glücklich, tiefer zu tauchen, wenn Sie Details haben.

HTH

0

Ihr Rückruf aus dem Lambda hat einen gültigen Statuscode und Körper zurückzukehren. Wie folgt aus:

let payload = { 
    statusCode: 400, 
    body: JSON.stringify('body'), 
    headers: {"Access-Control-Allow-Origin": "*"} 
}; 
callback(null, payload); 

Obendrein, zu nennen dies von Client-Seite Code, müssen Sie wieder die CORS-Header übergeben.

Verwandte Themen