ウェブページを呼び出す単純な Lambda 関数を作成しました。関数ページからテストすると問題なく動作しますが、この関数を呼び出すスキルを作成しようとすると、「リモート エンドポイントを呼び出せませんでした、または返された応答は無効でした。」エラー。
ラムダ関数
var http = require('http');
exports.handler = function(event, context) {
console.log('start request to ' + event.url)
http.get(event.url, function(res) {
console.log("Got response: " + res.statusCode);
context.succeed();
}).on('error', function(e) {
console.log("Got error: " + e.message);
context.done(null, 'FAILURE');
});
console.log('end request to ' + event.url);
}
テスト イベントのコードは次のようになります。
{
"url": "http://mywebsite.co.uk"
}
「Alexa Skills Kit」のトリガーを追加しました。
この関数の ARN は次のように表示されます。
arn:aws:lambda:us-east-1:052516835015:function:CustomFunction
Alexa スキル (開発者ポータル)
次に、単純なインテントを持つスキルを作成しました。
{
"intents": [
{
"intent": "CustomFunction"
}
]
}
そして発話を次のように作成しました。
CustomFunction execute my custom function
スキルの設定セクションで、「AWS Lambda ARN (Amazon リソースネーム)」オプションを選択し、北米のボックスに ARN を入力しました。
Test -> Service Simulator セクションで、テキストとして「execute my custom function」を追加しました。これにより、Lambda リクエストが次のように変更されます。
{
"session": {
"sessionId": "SessionId.a3e8aee0-acae-4de5-85df-XXXXXXXXX",
"application": {
"applicationId": "amzn1.ask.skill.XXXXXXXXX"
},
"attributes": {},
"user": {
"userId": "amzn1.ask.account.XXXXXXXXX"
},
"new": true
},
"request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.445267bd-2b4a-45ef-8566-XXXXXXXXX",
"locale": "en-GB",
"timestamp": "2016-11-27T22:54:07Z",
"intent": {
"name": "RunWOL",
"slots": {}
}
},
"version": "1.0"
}
しかし、テストを実行すると、次のエラーが発生します。
リモート エンドポイントを呼び出せなかったか、返された応答が無効でした。
スキルが関数に接続できない理由について誰か考えがありますか?
ありがとう