web-dev-qa-db-fra.com

Alexa Skill ARN - Le point de terminaison distant n'a pas pu être appelé ou la réponse renvoyée était non valide.

J'ai créé une fonction Lambda simple pour appeler une page Web. Cela fonctionne correctement lorsque je la teste à partir de la page des fonctions. Toutefois, lorsque vous essayez de créer une compétence pour appeler cette fonction, je me retrouve avec " la réponse qu'il a renvoyée était invalide. " Erreur.

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

Le code de l'événement de test ressemble à ceci:

{
  "url": "http://mywebsite.co.uk"
}

et j'ai ajouté un déclencheur pour le "Alexa Skills Kit".

L'ARN de cette fonction s'affiche comme suit:

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

Alexa Skill (portail de développeur)

J'ai ensuite créé une compétence avec une intention simple:

{
 "intents": [
   {
 "intent": "CustomFunction"
   }
 ]
}

et créé un énoncé comme:

CustomFunction execute my custom function

Dans la section Configuration de ma compétence, j'ai sélectionné l'option "AWS Lambda ARN (nom de ressource Amazon)" et entré l'ARN dans la zone Amérique du Nord.

Dans la section Test -> Service Simulator, j'ai ajouté "exécuter ma fonction personnalisée" en tant que texte, ce qui modifie la demande Lambda pour afficher:

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

mais lorsque je lance le test, l'erreur suivante apparaît:

Le point de terminaison distant n'a pas pu être appelé ou la réponse renvoyée n'était pas valide.

Quelqu'un a-t-il une idée sur la raison pour laquelle la compétence ne peut pas se connecter à la fonction?

Merci

8
ca8msm

Le simulateur de service intégré à la console du développeur Amazon Alexa a connu des problèmes. Essayez de copier le JSON généré par le simulateur et de le coller dans l'événement de test de votre fonction lambda. Pour accéder aux événements de test de lambda, commencez par trouver le bouton bleu «Test». En regard de ce bouton, sélectionnez le menu déroulant (Actions) -> (Configurer un événement test) -> Collez le code JSON fourni dans la zone de code -> (Enregistrer et tester). Les fonctionnalités de test intégrées de Lambda sont beaucoup plus fiables que celles d'Alexa.

Si cela ne résout pas le problème, l'événement de test de lambda renvoie une pile complète et des codes d'erreur. Il devient beaucoup plus facile de dépanner lorsque chaque erreur n'est pas "Le système d'extrémité distant ne peut pas être appelé ou la réponse renvoyée n'était pas valide."

{
  "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
Caleb Gates

Lors du téléchargement de .Zip, ne compressez pas le dossier dans .Zip.

Au lieu de cela, allez dans le dossier, sélectionnez package.json, index.js et node modules & puis comprimez-les, puis téléchargez le .Zip.

3
Arshima

Ce message d'erreur est très large et peut impliquer beaucoup de problèmes différents. Je recevais cette erreur et dans mon cas, c'était un problème de délai d'attente. Combien de temps faut-il pour que ce site Web réponde? Le délai d'attente ne semble pas être correctement documenté, consultez ma question initiale ici: Résolution des problèmes liés au kit de compétences Alexa (ASK) d'Amazon d'Amazon

0
Josep Valls