8

Webページを呼び出すための単純なラムダ関数を作成しましたが、これは機能ページからテストするとうまくいきますこの機能を呼び出すためのスキルを作成します。「リモートエンドポイントを呼び出すことができなかったか、返された応答が無効でした。エラー。Alexa Skill ARN - リモートエンドポイントを呼び出せなかったか、返されたレスポンスが無効でした

ラムダ関数

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のスキルキット" のトリガーを追加しました。

としてこの関数のARNが表示されている:

{ 
"intents": [ 
    { 
"intent": "CustomFunction" 
    } 
] 
} 
:私は、単純な意図を持ってスキルを作成しました

arn:aws:lambda:us-east-1:052516835015:function:CustomFunction

Alexaのスキル(開発者向けポータル)

を作成し、発話を次のように作成しました。

CustomFunction execute my custom function 

私のスキルの設定セクションでは、「AWS Lambda ARN(Amazonリソース名)」オプションを選択し、北アメリカのボックスにARNを入力しました。

テストで

- >サービスシミュレータのセクション、私はテキストとして「私のカスタム関数を実行する」と、これが表示するラムダ要求を変更追加しました:

{ 
    "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" 
} 

が、私は私が手にテストを実行次のエラー:

The remote endpoint could not be called, or the response it returned was invalid.

スキルが機能に接続できない理由については、誰にも分かりませんか?

おかげ

+0

クラウドウォッチのラムダのログを見ると、 – Tom

答えて

0

このエラーメッセージは非常に幅広く、さまざまな問題の多くを意味し得ます。私はこのエラーを受けていましたが、私の場合はタイムアウトの問題でした。応答するためにpingしているウェブサイトはどのくらいの期間ですか?タイムアウトが適切に文書化されていないようです。私のオリジナルの質問はここにあります。Troubleshooting Amazon's Alexa Skill Kit (ASK) Lambda interaction

4

Amazon Alexaデベロッパーコンソールに組み込まれているサービスシミュレータには既知の問題があります。 Simulatorで生成されたJSONをコピーし、ラムダ関数のテストイベントに貼り付けてみてください。ラムダのテストイベントにアクセスするには、まず青色の「テスト」ボタンを見つけます。そのボタンの横にある(アクションドロップダウンメニュー) - >(テストイベントの設定) - >提供されたJSONをコードエリアに貼り付け - >(保存してテストする)を選択します。ラムダのテスト機能は、Alexaのものよりはるかに信頼性の高いものです。

これで問題が解決しない場合、ラムダのテストイベントは完全なstackTraceとエラーコードを返します。すべてのエラーが「リモートエンドポイントを呼び出すことができなかったか、返された応答が無効だった」ときに、トラブルシューティングがはるかに簡単になりました。

{ 
    "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" 
} 
+0

これは私のために働くか、成功するまで試行し続けることができます! –

+1

スキルページ - >テスト - >サービスシミュレータ - >テキストタブ→Ente赤い発話とヒット "Skill Name"ボタンを押し、 "Service Request"テキストエリアで、リンクされたアカウントアクセストークンを含むリクエストを生成しました。しかし、 "Service Response"では "リモートエンドポイントを呼び出すことができなかったか、返された応答が無効でした"というメッセージが表示されます。 "Service Request"からJSONをコピーし、JSONタブに切り替え、コピーしたJSONを "Json Request"テキストエリアに貼り付け、 "Ask Skill Name"を押して、 "Service Response"で期待されるJSONを得ました。 これは奇妙ですが、今は私にとっては受け入れられます。 –

3

.zipをアップロードしている間」、それらを圧縮し、その後.zipをアップロードし、その後&、代わりに。.zipファイルに

をフォルダを圧縮フォルダに移動し、package.jsonを選択し、index.jsnode modulesません。

関連する問題