1

Ich versuche, eine Fähigkeit zu machen, wo nach der LaunchRequest, eine anfängliche Willkommensnachricht in der Funktion StartGame der Benutzer für ihre Schule gefragt wird, und dann sagt der Benutzer ihre Schule in der SetSchool Absicht, und dann sagt die Fähigkeit eine Nachricht. Momentan gibt es im letzten Teil einen Bug, und ich weiß nicht, wie ich ihn debuggen soll.Alexa ASK Lambda Bug

Der Fehler: enter image description here

Mein Code:

/* eslint-disable func-names */ 
/* eslint-disable dot-notation */ 
/* eslint-disable new-cap */ 
/* eslint quote-props: ['error', 'consistent']*/ 
/** 
* This sample demonstrates a simple skill built with the Amazon Alexa Skills 
* nodejs skill development kit. 
* This sample supports en-US lauguage. 
* The Intent Schema, Custom Slots and Sample Utterances for this skill, as well 
* as testing instructions are located at https://github.com/alexa/skill-sample-nodejs-trivia 
**/ 

'use strict'; 

const Alexa = require('alexa-sdk'); 
const questions = require('./question'); 

const ANSWER_COUNT = 4; // The number of possible answers per trivia question. 
const GAME_LENGTH = 10; // The number of questions per trivia game. 
const GAME_STATES = { 
    TRIVIA: '_TRIVIAMODE', // Asking trivia questions. 
    START: '_STARTMODE', // Entry point, start the game. 
    HELP: '_HELPMODE', // The user is asking for help. 
}; 
const APP_ID = undefined; // TODO replace with your app ID (OPTIONAL) 

const languageString = { 
    'en': { 
     'translation': { 
      'QUESTIONS': questions['HS_QUESTIONS_EN_US'], 
      'GAME_NAME': 'Science Bowl', 
      'HELP_MESSAGE': 'I will ask you %s multiple choice questions. Respond with the number of the answer. ' + 
       'For example, say one, two, three, or four. To start a new game at any time, say, start game. ', 
      'REPEAT_QUESTION_MESSAGE': 'To repeat the last question, say, repeat. ', 
      'ASK_MESSAGE_START': 'Would you like to start playing?', 
      ... 
     }, 
    }, 
}; 

const newSessionHandlers = { 
    'LaunchRequest': function() { 
     this.handler.state = GAME_STATES.START; 
     this.emitWithState('StartGame', true); 
    }, 
    'SetSchool': function() { 
     this.handler.state = GAME_STATES.START; 
     this.emitWithState('School', true); 
    }, 
    'AMAZON.StartOverIntent': function() { 
     this.handler.state = GAME_STATES.START; 
     this.emitWithState('StartGame', true); 
    }, 
    'AMAZON.HelpIntent': function() { 
     this.handler.state = GAME_STATES.HELP; 
     this.emitWithState('helpTheUser', true); 
    }, 
    'Unhandled': function() { 
     const speechOutput = this.t('START_UNHANDLED'); 
     this.emit(':ask', speechOutput, speechOutput); 
    }, 
}; 

... 

const startStateHandlers = Alexa.CreateStateHandler(GAME_STATES.START, { 
    'StartGame': function (newGame) { 
     let speechOutput = newGame ? this.t('NEW_GAME_MESSAGE', this.t('GAME_NAME')) + this.t('WELCOME_MESSAGE', GAME_LENGTH.toString()) : ''; 

     this.handler.state = GAME_STATES.START; 
     this.emit(':ask', speechOutput, speechOutput); 
    }, 
    'School': function(newGame) {   
     this.handler.state = GAME_STATES.START; 
     this.response.speak('test'); 
     this.emit(':responseReady'); 
    } 
}); 

exports.handler = function (event, context) { 
    const alexa = Alexa.handler(event, context); 
    alexa.appId = APP_ID; 
    // To enable string internationalization (i18n) features, set a resources object. 
    alexa.resources = languageString; 
    alexa.registerHandlers(newSessionHandlers, startStateHandlers, triviaStateHandlers, helpStateHandlers); // these were defined earlier 
    alexa.execute(); 
}; 

ich die meisten der Code ausgeschlossen, so dass es hier passen würde. Ich möchte versuchen, es zu debuggen, aber ich weiß nicht einmal, wie die Fehlermeldungen angezeigt werden. Was mache ich?

+0

überprüfen Sie Ihre Fragen.js. Hat irgendwas von deiner Frage. am Ende? So einen Fehler bei der Verarbeitung von JSON gesehen ... Capture und Upload von Logs aus Cloudwatch –

Antwort

0

Wenn Sie auf AWS hosten, können Lambda-Protokolle in CloudWatch gefunden werden. Öffnen Sie in der AWS-Konsole cloudwatch und klicken Sie dann im linken Menü auf den Link Protokolle. Sie sollten Ihren Lambda-Service von dort finden können.

Das sagte Ihr Problem scheint ein Problem der Absicht Definition von Staat sein. Sie haben den Status bereits auf START gesetzt, aber die startStateHandlers hat nicht den SetSchool Intent definiert.

Um das Problem zu beheben, müssen Sie dem startStateHandlers entweder eine SetSchool-Intent-Definition hinzufügen ODER den Zustand auf einen zurücksetzen, der die SetSchool Absicht enthält, bevor Sie Ihre Antwort im StartGame-Handler ausgeben.

+0

Für Cloudwatch, muss ich etwas Besonderes erstellen, um es zu verwenden? Ich sehe nur eine der vier Lambda-Funktionen, die ich dort habe. –

Verwandte Themen