2017-07-07 21 views
3

更新:私のhttp要求エンドポイントで間違いがありました。私は適切な認証オプションを設定していないので、この特定の可能性のある多くのエラーが修正されました。Node.jsラムダ関数 "応答が無効です" Amazon Alexa

私の質問は、ここでは1のようになります。

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

その質問に対する解決策は、私の問題を解決していませんが。そこで、私はHanaクラウドのxsjsサービスへのhttpリクエストコールを行います。私は '応答が無効です'エラーメッセージが表示されています。なぜ私は見ることができません。ここに私の機能は次のとおりです。

// 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); 
    }); 


} 

そして、それを呼び出す関数:

'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); 

    }); 

}, 

は、AWSアカウント内には -Diana

答えて

2

をありがとう、あなたのLambda機能に移動し、monitoringタブをクリックします右側のコーナーにある「Cloudwatchのログを見る」が表示されます。そのリンクをクリックすると、生成されているエラーが表示されます。

console.log()を使用して、REST APIから返された情報をログに記録することもできます。これは、cloudwatchに記録され、エラーのどこにあるかを確認するのに役立ちます。

0

これは私の頭の上からの推測です。上記のように、詳細なエラーメッセージが必要になります。

あなたのhttp.request()はhttp modulehttps://nodejs.org/api/http.html)を使用しており、httpsリソースにアクセスしています。もしそうなら、https(https://nodejs.org/api/https.html)モジュールがあるか、Axios https://www.npmjs.com/package/axiosやrequestjs(https://github.com/request/request)のようなものを使ってください。これは両方を扱います。

私は、詳細なエラーメッセージが表示されずに必要な文が表示されていないと盲目的に推測しましたが、詳細があると深く掘り下げて喜んでいます。

HTH

0

ラムダからのコールバックは、有効なステータスコードと本文を返す必要があります。このように:

これに加えて、クライアントサイドコードからこれを呼び出すには、CORSヘッダーを戻す必要があります。

関連する問題