Как вызвать намерение с помощью response.speak () в node.js? - PullRequest
0 голосов
/ 10 мая 2018
this.response.speak('Okay, I will ask you some questions about ' +language + 
'. Here is your first question.' + this.AskQuestion);

Если я введу Python в качестве языка, на симуляторе Alexa я получу вывод как

«Хорошо, я задам вам несколько вопросов о питоне. Вот ваш первый вопрос. Не определено»

AskQuestion выглядит так:

'AskQuestion': function() {
 var language = this.attributes['language'];

var currentQuestion=flashcardsDictionary
[this.attributes['currentFlashcardIndex']].question;

return 'In ' + language +', ' + currentQuestion;
}

Почему AskQuestion возвращает неопределенное значение?

1 Ответ

0 голосов
/ 15 июня 2018

Я предполагаю, что AskQuestion - еще один обработчик. В примере sdk в конце элемента приведен пример вызова другого обработчика в том же состоянии.

const handlers = {
    'LaunchRequest': function () {
        this.emit('HelloWorldIntent');
    },

    'HelloWorldIntent': function () {
        this.emit(':tell', 'Hello World!');
    }
};

, так что вы не можете просто так. Задавайте вопрос, потому что его там нет, alexa sdk скрывает функции в другом скрытом наборе ключей внутри объекта. То, что вы могли бы сделать, это переслать намерение AskQuestion и обработать все, что есть

this.response.speak('AskQuestion');

и затем в AskQuestion

'AskQuestion': function() {
    var language = this.attributes['language'];

    var currentQuestion=flashcardsDictionary
    [this.attributes['currentFlashcardIndex']].question;

    this.response.speak("Yes everything is alright");
    this.emit(':responseReady');
}
...