2016-07-26 25 views
0

Ich bin folgende Funktion in der Lambda-Funktion aufrufen, die eine andere Funktion mit Callback aufruft. Innerhalb des Callbacks scheint das Antwortobjekt nicht korrekt behandelt zu werden, da es einen ungültigen Antwortfehler im Alexasimulator gibt. Funktion sieht aus wieLambda-Funktion Responde-Objekt wird nicht behandelt

function handleFirstEventRequest(intent, session, response) { 
    var repromptText = "With History Buff, you can get historical events for any day of the year. For example, you could say today, or August thirtieth. Now, which day do you want?"; 

    var sessionAttributes = {}; 
    var cardContent = ""; 

    var cardTitle = "Events on "; 
    //response.tell("There is an issue here vik"); 
    getJsonEventsFromWikipedia(function (events) { 
     var speechText = ""; 
     sessionAttributes.text = events; 
     session.attributes = sessionAttributes; 
     if (events.length == 0) { 
      speechText = "There is a problem connecting to Wikipedia at this time. Please try again later."; 
      cardContent = speechText; 
      response.tell(speechText); 
     } else{ 
       console.log("vik::::::::::::: wikipedia response received"); 
       console.log("values are:" + events); 
      var speechOutput = { 
      speech: "hi how are you", 
      type: AlexaSkill.speechOutputType.PLAIN_TEXT 
     }; 
     var repromptOutput = { 
      speech: "hi how are you", 
      type: AlexaSkill.speechOutputType.PLAIN_TEXT 
     }; 
      console.log("before response"); 
      response.ask(speechOutput, repromptOutput); 
      console.log("after response"); 
     } 
    }); 
} 

jedoch außerhalb der getJsonEventsFromWikipedia Antwort perfekt funktioniert gut. Ich bin mir nicht sicher, was hier falsch läuft. Lambda-Funktion Protokolle zeigt keine Fehler usw.

Antwort

0

Quoten sind, dass Ihre Antwort ungültig ist. Wenn Sie es im Simulator aufrufen, welche JSON sehen Sie zurück? Du hast oben nicht angegeben. Wenn Sie es aufrufen, was kommt in den Lambda-Protokollen vor? Das hast du auch nicht angegeben. Haben Sie versucht, Ihre Lambda-Funktion mit einem SessionStart-Event zu testen? Ich denke, wenn Sie diese versuchen, sollten Sie in der Lage sein, den Fehler in Ihrem Code oder Setup zu finden.

0

Schwer zu sagen, ohne vollen Kontext. Aber angenommen, dass Sie alexa Fähigkeit auf eine nicht sehr ungewöhnliche Art und Weise verwenden, wahrscheinlichste Ursache ist:

getJsonEventsFromWikipedia ist async. Ihre Funktion wird erfolgreich beendet, bevor Sie Ihren Callback ausführen, und die Lambda Callback-Funktion wird von einem anderen Pfad im Code aufgerufen oder überhaupt nicht aufgerufen, bevor die Lambda-Eingabefunktion zurückkehrt. Die Lösung besteht darin, auf Ihren Aufruf von getJsonEventsFromWikipedia zu warten, um zu antworten, und Ihre Funktion erst zu beenden, nachdem Sie sichergestellt haben, dass Sie sie bearbeitet haben.