8

ウェブページを呼び出す単純な 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"
}

しかし、テストを実行すると、次のエラーが発生します。

リモート エンドポイントを呼び出せなかったか、返された応答が無効でした。

スキルが関数に接続できない理由について誰か考えがありますか?

ありがとう

4

3 に答える 3