Nodejs alexa-sdk возвращает сообщение об ошибке

Я продолжаю получать следующую ошибку при загрузке моего почтового индекса в Lambda.

{
  "errorMessage": "RequestId: 890bda68-7b8d-11e7-be27-9f13acbc6057 Process exited before completing request"
}

Я посмотрел учебник и создал свой собственный код, который вызвал ту же ошибку, поэтому вместо этого я скопировал и вставил код из видео. Я попытался загрузить и создать службу Lambda, чтобы попытаться бороться с этим. В загруженном zip-архиве есть библиотеки index.js, package.json и режимов.

Ниже приведен код:

'use strict';

//App Variables
var Alexa = require('alexa-sdk');
var APP_ID = ""; //We'll come back to this later
var SKILL_NAME = 'Mirror Mirror';

//List of compliments to be later given in a random order
var COMPLIMENT_LIST = [
    "Damn son, you're looking mighty fine today.",
    "Wow! You made an Alexa Skill. You're smarter than I thought!",
    "If you were a food, you'd be an endless supply of Cheesecake.",
    ];

//Setup
exports.handler = function(event, context, callback) {
    var alexa = Alexa.handler(event, context);
    alexa.APP_ID = APP_ID;
    alexa.registerHandlers(handlers);
    alexa.execute();
};

//Intent handlers that can be triggered.
var handlers = {
    'LaunchRequest': function () {
        this.emit('GetMirrorMirror');
    },
    /*
        When a user says a recognised phrase to Alexa the GetMirrorMirrorIntent is triggered
        This picks a random compliment from the array above and emits the :tellWithCard event.
        This event shows a card within the Amazon Echo app, and outputs the speech from speechOutput.
    */
    'GetMirrorMirrorIntent': function () {
        this.emit('GetMirrorMirror');
    },
    'GetMirrorMirror': function () {
        // Get a random compliment from the COMPLIMENTS_LIST array
        var complimentIndex = Math.floor(Math.random() * COMPLIMENT_LIST.length);
        var randomCompliment = COMPLIMENT_LIST[complimentIndex];

        // Output
        var speechOutput = "Your compliment: " +  randomCompliment;

        this.emit(':tellWithCard', speechOutput, SKILL_NAME, randomCompliment)
    },
    'AMAZON.HelpIntent': function () {
        var speechOutput = "You can say give me a compliment, or, you can say exit... What can I help you with?";
        var reprompt = "What can I help you with?";
        this.emit(':ask', speechOutput, reprompt);
    },
    'AMAZON.CancelIntent': function () {
        this.emit(':tell', 'Goodbye!');
    },
    'AMAZON.StopIntent': function () {
        this.emit(':tell', 'Goodbye!');
    }
};

person Stephen    schedule 07.08.2017    source источник
comment
Когда вы загружаете свой код в Lambda, вы можете проверить журнал в Cloud Watch. Интерфейс должен быть довольно интуитивным — вам понадобятся сообщения журнала, потому что ваша проблема может быть чем угодно, от незначительной опечатки до отсутствующей зависимости. IIRC сообщение об ошибке в основном говорит о том, что ваш код вызвал внутреннюю ошибку. Однако у меня есть дикая догадка: убедитесь, что вы заархивировали отдельные файлы, а не весь каталог проекта.   -  person spicypumpkin    schedule 09.08.2017


Ответы (1)


1) *** В строке 5 "APP_ID" пусто. Вам нужно будет заменить его идентификатором навыка, который находится в консоли разработчика Alexa рядом с названием вашего навыка.

Например:

var APP_ID = "amzn1.ask.skill.058ff9ec-2f5e-47c1-99fd-914581e9a41f";

2) Кроме того, вы запускали узел для установки зависимостей. В вашем сообщении говорится, что у вас есть библиотеки "mode". Это эквивалентно папке node_modules? Если вы впервые используете Alexa-SDK, вам нужно запустить узел для загрузки зависимостей.

3) Еще мысль. Если вы загружаете в лямбда, будет запущено тестовое событие, если вы скажете сохранить и протестировать. Вам нужно будет настроить это тестовое событие в раскрывающемся списке рядом с синей тестовой кнопкой. Используя инструменты тестирования в консоли разработчика Alexa, введите выражение для создания объекта JSON. Затем вы можете скопировать JSON в тестовое событие в лямбда. Примечание. Этот JSON будет содержать идентификатор приложения навыка Alexa, возвращая нас к возможной ошибке № 1. Lambda будет выполняться только для запросов из данного приложения, чтобы другие программисты не могли вызвать вашу функцию.

person Caleb Gates    schedule 09.08.2017