Alexa не вызывает намерение

avatar
Xonshiz
7 апреля 2018 в 22:12
1654
1
0

Я пытался создать навык Alexa, основанный на фактическом навыке чертежа Alexa. Я создал собственное намерение с именем «myIntent», которое имеет переменную «{myName}» или тип слота «myNameSlot». Я добавил несколько значений, таких как "Dhruv,User,My User" (все это отдельные значения).

Итак, я попытался запустить свой навык Alexa в тесте через симулятор. Он отлично запускает все встроенные намерения. Однако, когда я пытаюсь запустить свой собственный Intent, он не запускается. Я написал те же самые высказывания, однако он не вызывается.

Вот код моей лямбда-функции: https://pastebin.com/7CrdMffW

/* eslint-disable  func-names */
/* eslint quote-props: ["error", "consistent"]*/
/**
 * This sample demonstrates a simple skill built with the Amazon Alexa Skills
 * nodejs skill development kit.
 * This sample supports multiple lauguages. (en-US, en-GB, de-DE).
 * 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-fact
 **/

'use strict';
const Alexa = require('alexa-sdk');

//=========================================================================================================================================
//TODO: The items below this comment need your attention.
//=========================================================================================================================================

//Replace with your app ID (OPTIONAL).  You can find this value at the top of your skill's page on http://developer.amazon.com.
//Make sure to enclose your value in quotes, like this: const APP_ID = 'amzn1.ask.skill.bb4045e6-b3e8-4133-b650-72923c5980f1';
const APP_ID = undefined;

const SKILL_NAME = 'Space Facts';
const GET_FACT_MESSAGE = "Here's your fact: ";
const HELP_MESSAGE = 'You can say tell me a space fact, or, you can say exit... What can I help you with?';
const HELP_REPROMPT = 'What can I help you with?';
const STOP_MESSAGE = 'Goodbye!';

//=========================================================================================================================================
//TODO: Replace this data with your own.  You can find translations of this data at http://github.com/alexa/skill-sample-node-js-fact/data
//=========================================================================================================================================
const data = [
    'A year on Mercury is just 88 days long.',
    'Despite being farther from the Sun, Venus experiences higher temperatures than Mercury.',
    'Venus rotates counter-clockwise, possibly because of a collision in the past with an asteroid.',
    'On Mars, the Sun appears about half the size as it does on Earth.',
    'Earth is the only planet not named after a god.',
    'Jupiter has the shortest day of all the planets.',
    'The Milky Way galaxy will collide with the Andromeda Galaxy in about 5 billion years.',
    'The Sun contains 99.86% of the mass in the Solar System.',
    'The Sun is an almost perfect sphere.',
    'A total solar eclipse can happen once every 1 to 2 years. This makes them a rare event.',
    'Saturn radiates two and a half times more energy into space than it receives from the sun.',
    'The temperature inside the Sun can reach 15 million degrees Celsius.',
    'The Moon is moving approximately 3.8 cm away from our planet every year.',
];

//=========================================================================================================================================
//Editing anything below this line might break your skill.
//=========================================================================================================================================

const handlers = {
    'LaunchRequest': function () {
        // this.emit('myIntent');
        this.emit(':tell', '2 Hello, what would you like to do?');
    },
    'myIntent': function () {
        const factArr = data;
        const factIndex = Math.floor(Math.random() * factArr.length);
        const randomFact = factArr[factIndex];
        const speechOutput = GET_FACT_MESSAGE + randomFact;

        this.response.cardRenderer(SKILL_NAME, randomFact);
        this.response.speak('Halo ' + speechOutput);
        this.emit(':responseReady');
    },
    'AMAZON.HelpIntent': function () {
        const speechOutput = HELP_MESSAGE;
        const reprompt = HELP_REPROMPT;

        this.response.speak(speechOutput).listen(reprompt);
        this.emit(':responseReady');
    },
    'AMAZON.CancelIntent': function () {
        this.response.speak(STOP_MESSAGE);
        this.emit(':responseReady');
    },
    'AMAZON.StopIntent': function () {
        this.response.speak(STOP_MESSAGE);
        this.emit(':responseReady');
    },
};

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

Я не понимаю, что здесь происходит.

EDIT: Это информация о моем намерении и пользовательском слоте:

Имя намерения: myIntent.

Высказывания:

1.) расскажите мне о {data_of_intent}

2.) каков краткий обзор {data_of_intent}

Слоты намерений (1): data_of_intent типа my_custom_type.

Значения типов пользовательских слотов:

1.) одна деталь

2.) Цветочная мечта

3.) Канай кун

4.) Дождь прекратился?

Источник
Jay A. Little
8 апреля 2018 в 07:22
0

Вы сказали: «Я написал те же высказывания...», Какие именно высказывания вы написали для myIntent?

Xonshiz
9 апреля 2018 в 09:58
0

Я отредактировал свой вопрос и добавил дополнительную информацию о нем.

Ответы (1)

avatar
Xonshiz
9 апреля 2018 в 11:36
0

Я дважды проверил JSON, который я получил при первом обращении. Проблема заключалась в том, что для shouldEndSession было установлено значение true, потому что в NodeJS для shouldEndSession установлено значение true в :tell, и его нельзя переопределить.

Я использовал :

this.emit(':tell', '2 Hello, what would you like to do?');.

Я изменил его на :

this.emit(':ask', '2 Hello, what would you like to do?');

и это сработало.

Есть ветка Github для того же: https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs/issues/64