我在试着做一个小测验。一般来说,它工作得很好,但测验不能识别答案,也不能正确计算分数。我不知道在哪里找到代码中的错误,以及如何更改它。
我在测验中使用了以下指令和代码:https://github.com/alexa/skill-sample-nodejs-trivia
如果有人能帮助我,我会很高兴的。
发布于 2020-02-11 16:22:10
对于您所说的,这可能是交互模型和后端逻辑的问题。如果可以,请共享代码:)
发布于 2020-02-12 03:35:05
这是交互模型的代码:
{
"interactionModel": {
"languageModel": {
"invocationName": "teach me",
"intents": [
{
"name": "AnswerIntent",
"slots": [
{
"name": "Answer",
"type": "AMAZON.NUMBER"
}
],
"samples": [
"die Antwort ist {Answer}",
"meine Antwort ist {Answer}",
"ist die Antwort {Answer}",
"{Answer} ist meine Antwort",
"{Answer}"
]
},
{
"name": "DontKnowIntent",
"slots": [],
"samples": [
"weiß ich nicht",
"weiß nicht",
"überspringen",
"das weiß ich nicht",
"wer weiß",
"diese Frage weiß ich nicht",
"die weiß ich nicht",
"keine Ahnung"
]
},
{
"name": "AMAZON.StartOverIntent",
"samples": [
"Spiel starten",
"neues Spiel",
"starten",
"neues Spiel starten"
]
},
{
"name": "AMAZON.RepeatIntent",
"samples": [
"bitte wiederholen",
"noch einmal",
"wiederholen"
]
},
{
"name": "AMAZON.HelpIntent",
"samples": [
"Ich brauche Hilfe",
"Hilfe"
]
},
{
"name": "AMAZON.YesIntent",
"samples": []
},
{
"name": "AMAZON.NoIntent",
"samples": []
},
{
"name": "AMAZON.StopIntent",
"samples": []
},
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.NavigateHomeIntent",
"samples": []
}
],
"types": []
}
}}
我认为后端的问题可能出在代码的以下部分:
function isAnswerSlotValid(intent) {
const answerSlotFilled = intent
&& intent.slots
&& intent.slots.Answer
&& intent.slots.Answer.value;
const answerSlotIsInt = answerSlotFilled
&& !Number.isNaN(parseInt(intent.slots.Answer.value, 10));
return answerSlotIsInt
&& parseInt(intent.slots.Answer.value, 10) < (ANSWER_COUNT + 1)
&& parseInt(intent.slots.Answer.value, 10) > 0;
}
function handleUserGuess(userGaveUp, handlerInput) {
const { requestEnvelope, attributesManager, responseBuilder } = handlerInput;
const { intent } = requestEnvelope.request;
const answerSlotValid = isAnswerSlotValid(intent);
let speechOutput = '';
let speechOutputAnalysis = '';
let aplFirstPageSpeechOutput = '';
let aplSecondPageSpeechOutput = '';
const sessionAttributes = attributesManager.getSessionAttributes();
const gameQuestions = sessionAttributes.questions;
let correctAnswerIndex = parseInt(sessionAttributes.correctAnswerIndex, 10);
let currentScore = parseInt(sessionAttributes.score, 10);
let currentQuestionIndex = parseInt(sessionAttributes.currentQuestionIndex, 10);
const { correctAnswerText } = sessionAttributes;
const requestAttributes = attributesManager.getRequestAttributes();
const translatedQuestions = requestAttributes.t('QUESTIONS');
if (answerSlotValid
&& parseInt(intent.slots.Answer.value, 10) ===
sessionAttributes.correctAnswerIndex) {
currentScore += 1;
speechOutputAnalysis = requestAttributes.t('ANSWER_CORRECT_MESSAGE');
} else {
if (!userGaveUp) {
speechOutputAnalysis = requestAttributes.t('ANSWER_WRONG_MESSAGE');
}
speechOutputAnalysis += requestAttributes.t(
'CORRECT_ANSWER_MESSAGE',
correctAnswerIndex,
correctAnswerText
);
}如果您需要更多的后端逻辑代码,请让我知道谢谢您的帮助:)
https://stackoverflow.com/questions/60149037
复制相似问题