async function nextQuestion()

in chat-bot/bot/bot.js [79:126]


async function nextQuestion(intentRequest) {
    var sessionAttributes = intentRequest.sessionAttributes;
    var score = parseInt(sessionAttributes.currentScore, 10);
    var currentQuestionId = parseInt(sessionAttributes.currentQuestion, 10);
    var currentSlot = numToWords.toWords(currentQuestionId);

    const currentQuestionData = await getQuestion(currentQuestionId);

    var nextQuestionId = currentQuestionId + 1;
    var nextSlot = numToWords.toWords(nextQuestionId);

    // Check the answer, add to score if correct
    var isCorrect = false;
    var userAnswer = intentRequest.currentIntent.slots[currentSlot];
    // null user answer means a string response did not match any of the sample utterances
    if (userAnswer) {
        const answerData = await answerQuestion(currentQuestionId, userAnswer);
        console.log(answerData.data);
        isCorrect = answerData.data.result;
    }

    var messageContent = "";

    if (isCorrect) {
        score += currentQuestionData.data.points;
        messageContent += `That is correct! The answer is "${currentQuestionData.data.answer}". New score is ${score} points! `;
    } else {
        messageContent += `Incorrect! The correct answer is "${currentQuestionData.data.answer}". `;
    }

    const newQuestionData = await getQuestion(nextQuestionId);
    if (currentQuestionData.data.category != newQuestionData.data.category) {
        messageContent += `Moving on the "${newQuestionData.data.category}" category. `
    }
    messageContent += `For ${newQuestionData.data.points} points: ${newQuestionData.data.question}`;

    var message = {
        contentType: 'PlainText',
        content: messageContent
    };

    sessionAttributes.currentQuestion = nextQuestionId;
    sessionAttributes.currentSlot = nextSlot;
    sessionAttributes.currentScore = score;

    return elicitSlot(sessionAttributes, intentRequest.currentIntent.name,
        intentRequest.currentIntent.slots, nextSlot, message);
}