gpt4 book ai didi

javascript - Amazon Alexa - 未定义的语音响应

转载 作者:行者123 更新时间:2023-12-03 02:20:50 25 4
gpt4 key购买 nike

我正在尝试使用 Alexa 事实技能蓝图调用“SetLanguageIntent”中的“AskQuestion”来构建向用户的语音。

'SetMyLanguageIntent': function() {
this.attributes['language'] = this.event.request.intent.slots.languages.value;
var language = this.attributes['language'];

this.response
.speak('Okay, I will ask you some questions about ' +
language + '. Here is your first question.' +
this.AskQuestion).listen(this.AskQuestion);
this.emit(':responseReady');
},

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

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

这是服务器的响应:

{
"version": "1.0",
"response": {
"outputSpeech": {
"ssml": "<speak> Okay, I will ask you some questions about undefined. Here is your first question.undefined </speak>",
"type": "SSML"
},
"reprompt": {
"outputSpeech": {
"ssml": "<speak> undefined </speak>",
"type": "SSML"
}
},

Alexa 在回复中说出了“未定义”一词,以下是对话:“好吧,我会问你一些有关未定义的问题。这是你的第一个问题。未定义”

为什么响应是“未定义”?以及如何解决这个问题?

这是完整的代码:

'use strict';

var Alexa = require('alexa-sdk');

var flashcardsDictionary = [{
question: 'how do you find the length of a string?',
rubyAnswer: 'length',
pythonAnswer: 'Len',
javascriptAnswer: 'length'
},
{
question: 'how do you print to the console or terminal?',
rubyAnswer: 'puts',
pythonAnswer: 'print',
javascriptAnswer: 'console.log'
},
{
question: 'are boolean terms capitalized or not capitalized?',
rubyAnswer: 'not capitalized',
pythonAnswer: 'capitalized',
javascriptAnswer: 'not capitalized'
}
];

var DECK_LENGTH = flashcardsDictionary.length;

var handlers = {
// Open Codecademy Flashcards
'LaunchRequest': function() {
this.attributes['language'] = '';
this.attributes['numberCorrect'] = 0;
this.attributes['currentFlashcardIndex'] = 0;

this.response
.listen('Welcome to Flashcards. In this session, do you want to test' +
' your knowledge in Ruby, Python, or Javascript?').speak(
'Which language would you like to practice?');
this.emit(':responseReady');
},

'SetMyLanguageIntent': function() {
this.attributes['language'] = this.event.request.intent.slots.languages.value;
var language = this.attributes['language'];

this.response
.speak('Okay, I will ask you some questions about ' +
language + '. Here is your first question.' +
this.AskQuestion).listen(this.AskQuestion);
this.emit(':responseReady');
},

// User gives an answer
'AnswerIntent': function() {
var userAnswer = this.event.request.intent.slots.answer.value;
var language = this.attributes['language'];
var languageAnswer = language + userAnswer;
var correctAnswer = flashcardsDictionary[this.attributes['currentFlashcardIndex']][languageAnswer];


if (userAnswer === correctAnswer) {
this.attributes['numberCorrect']++;
var numberCorrect = this.attributes['numberCorrect'];

this.response
.speak('Nice job! The correct answer is ' + correctAnswer + '. You ' +
'have gotten ' + numberCorrect + ' out of ' + DECK_LENGTH + ' ' +
language + ' questions correct.' + this.AskQuestion)
.listen(this.AskQuestion);


} else {
var numberCorrect = this.attributes['numberCorrect'];

this.response
.speak('Sorry, the correct answer is ' + correctAnswer + '. You ' +
'have gotten ' + numberCorrect + ' out of ' + DECK_LENGTH + ' ' +
language + ' questions correct. Here is your next question.' +
this.AskQuestion).listen(this.AskQuestion);
}

this.attributes['currentFlashcardIndex']++;

this.emit(':responseReady');
},

// Test my {language} knowledge
'AskQuestion': function() {
var language = this.attributes['language'];
var currentQuestion = flashcardsDictionary[this.attributes['currentFlashcardIndex']].question;

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

// Stop
'AMAZON.StopIntent': function() {
this.response.speak('Ok, let\'s play again soon.');
this.emit(':responseReady');
},

// Cancel
'AMAZON.CancelIntent': function() {
this.response.speak('Ok, let\'s play again soon.');
this.emit(':responseReady');
}
};

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

最佳答案

使用 this.AskQuestion() 而不是 this.AskQuestion,因为 AskQuestion 是一个函数而不是一个对象。

关于javascript - Amazon Alexa - 未定义的语音响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49165508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com