4/5 questions rdy
This commit is contained in:
parent
e959a4e94b
commit
1daaff0290
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@ -6,7 +6,7 @@
|
|||||||
"request": "launch",
|
"request": "launch",
|
||||||
"name": "Launch Chrome",
|
"name": "Launch Chrome",
|
||||||
"url": "http://localhost:8000",
|
"url": "http://localhost:8000",
|
||||||
"webRoot": "${workspaceFolder}"
|
"webRoot": "${workspaceFolder}/client"
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
1048
client/lebensmittel.txt
Normal file
1048
client/lebensmittel.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,23 +1,26 @@
|
|||||||
// web speech recognition api
|
// #region web speech recognition api
|
||||||
var SpeechRecognition = SpeechRecognition || webkitSpeechRecognition;
|
var SpeechRecognition = SpeechRecognition || webkitSpeechRecognition;
|
||||||
var SpeechGrammarList = SpeechGrammarList || webkitSpeechGrammarList;
|
var SpeechGrammarList = SpeechGrammarList || webkitSpeechGrammarList;
|
||||||
var SpeechRecognitionEvent = SpeechRecognitionEvent || webkitSpeechRecognitionEvent;
|
var SpeechRecognitionEvent = SpeechRecognitionEvent || webkitSpeechRecognitionEvent;
|
||||||
|
// #endregion
|
||||||
|
|
||||||
// state management
|
// #region state management
|
||||||
var state = '';
|
var state = '';
|
||||||
var question = 0;
|
var question = 0;
|
||||||
var rePrompt = false;
|
var rePrompt = false;
|
||||||
var partTwo = false;
|
var partTwo = false;
|
||||||
var count = 0;
|
var questionThreeCount = 0;
|
||||||
var strike = 0;
|
var strike = 0;
|
||||||
|
// #endregion
|
||||||
|
|
||||||
// Questions
|
// #region questions
|
||||||
const QUESTION_ONE = 'Ich werde Ihnen jetzt langsam eine Liste mit Worten vorlesen. Danach wiederholen Sie bitte möglichst viele dieser Worte. Auf die Reihenfolge kommt es nicht an.';
|
const QUESTION_ONE = 'Ich werde Ihnen jetzt langsam eine Liste mit Worten vorlesen. Danach wiederholen Sie bitte möglichst viele dieser Worte. Auf die Reihenfolge kommt es nicht an.';
|
||||||
const QUESTION_ONE_PT2 = 'Vielen Dank. Nun nenne ich Ihnen die gleichen 10 Worte ein zweites mal. Auch danach sollen Sie wieder möglichst viele Worte wiederholen';
|
const QUESTION_ONE_PT2 = 'Vielen Dank. Nun nenne ich Ihnen die gleichen 10 Worte ein zweites mal. Auch danach sollen Sie wieder möglichst viele Worte wiederholen';
|
||||||
const QUESTION_TWO = 'Nennen Sie mir bitte so viel Dinge wie möglich, die man im Supermarkt kaufen kann. Sie haben dafür eine Minute Zeit.';
|
const QUESTION_TWO = 'Nennen Sie mir bitte so viel Dinge wie möglich, die man im Supermarkt kaufen kann. Sie haben dafür eine Minute Zeit. Und Los';
|
||||||
const QUESTION_THREE = 'Ich werde Ihnen jetzt eine Zahlenreihe nennen, die Sie mir dann bitte in umgekehrter Reihenfolge wiederholen sollen. Wenn ich beispielsweise, vier - fünf sage, dann sagen Sie bitte, fünf - vier.';
|
const QUESTION_THREE = 'Ich werde Ihnen jetzt eine Zahlenreihe nennen, die Sie mir dann bitte in umgekehrter Reihenfolge wiederholen sollen. Wenn ich beispielsweise, vier - fünf sage, dann sagen Sie bitte, fünf - vier.';
|
||||||
|
// #endregion
|
||||||
|
|
||||||
// intents
|
// #region intents
|
||||||
const WELCOME_INTENT = 'Default Welcome Intent';
|
const WELCOME_INTENT = 'Default Welcome Intent';
|
||||||
const WELCOME_FOLLOWUP_YES = 'Default Welcome Intent - yes';
|
const WELCOME_FOLLOWUP_YES = 'Default Welcome Intent - yes';
|
||||||
const WELCOME_FOLLOWUP_NO = 'Default Welcome Intent - no';
|
const WELCOME_FOLLOWUP_NO = 'Default Welcome Intent - no';
|
||||||
@ -29,24 +32,48 @@ const FALLBACK_INTENT = 'Default Fallback Intent';
|
|||||||
const HELP_INTENT = 'Help Intent';
|
const HELP_INTENT = 'Help Intent';
|
||||||
const CHOOSE_QUESTION = 'Frage_Starten';
|
const CHOOSE_QUESTION = 'Frage_Starten';
|
||||||
const NEXT_QUESTION = 'Nächste Frage';
|
const NEXT_QUESTION = 'Nächste Frage';
|
||||||
|
// #endregion
|
||||||
|
|
||||||
// question one results
|
// #region questions and expected results
|
||||||
const QUESTION_ONE_ANSWERS = ['teller', 'hund', 'lampe', 'brief', 'apfel', 'apfelwiese', 'apfelwiese', 'apfelbaum', 'apfelbaum', 'und', 'hose', 'tisch', 'wiese', 'glas', 'baum'];
|
const QUESTION_ONE_ANSWERS = { 'teller': 1, 'hund': 1, 'lampe': 1, 'brief': 1, 'apfel': 1, 'apfelwiese': 2, 'apfelbaum': 2, 'und': 1, 'hose': 1, 'tisch': 1, 'wiese': 1, 'glas': 1, 'baum': 1 };
|
||||||
const QUESTION_ONE_QUESTIONS = ['teller', 'hund', 'lampe', 'brief', 'apfel', 'hose', 'tisch', 'wiese', 'glas', 'baum'];
|
const QUESTION_ONE_QUESTIONS = ['teller', 'hund', 'lampe', 'brief', 'apfel', 'hose', 'tisch', 'wiese', 'glas', 'baum'];
|
||||||
const QUESTION_TWO_ANSWERS = [''];
|
const QUESTION_TWO_ANSWERS = {};
|
||||||
const QUESTION_TWO_QUESTIONS = [''];
|
var QUESTION_TWO_QUESTIONS = [''];
|
||||||
const QUESTION_THREE_QUESTIONS_PT1 = ['7, 2', '4, 7, 9', '5, 4, 9, 6', '2, 7, 5, 3, 6', '8, 1, 3, 5, 4, 2'];
|
const QUESTION_THREE_QUESTIONS_PT1 = ['7, 2', '4, 7, 9', '5, 4, 9, 6', '2, 7, 5, 3, 6', '8, 1, 3, 5, 4, 2'];
|
||||||
const QUESTION_THREE_QUESTIONS_PT2 = ['8, 6', '3, 1, 5', '1, 9, 7, 4', '1, 3, 5, 4, 8', '4, 1, 2, 7, 9, 5'];
|
const QUESTION_THREE_QUESTIONS_PT2 = ['8, 6', '3, 1, 5', '1, 9, 7, 4', '1, 3, 5, 4, 8', '4, 1, 2, 7, 9, 5'];
|
||||||
const QUESTION_THREE_ANSWERS_PT1 = ['27', '974', '6945', '63572', '245318'];
|
const QUESTION_THREE_ANSWERS_PT1 = ['27', '974', '6945', '63572', '245318'];
|
||||||
const QUESTION_THREE_ANSWERS_PT2 = ['68', '513', '4791', '84531', '597214'];
|
const QUESTION_THREE_ANSWERS_PT2 = ['68', '513', '4791', '84531', '597214'];
|
||||||
|
LoadQuestionTwo();
|
||||||
|
function LoadQuestionTwo () {
|
||||||
|
var xmlhttp;
|
||||||
|
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
|
||||||
|
xmlhttp = new XMLHttpRequest();
|
||||||
|
} else { // code for IE6, IE5
|
||||||
|
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
|
||||||
|
}
|
||||||
|
xmlhttp.onreadystatechange = function () {
|
||||||
|
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
|
||||||
|
var text = xmlhttp.responseText.toLowerCase();
|
||||||
|
// Now convert it into array using regex
|
||||||
|
QUESTION_TWO_QUESTIONS = text.split('\r\n');
|
||||||
|
for (let word of QUESTION_TWO_QUESTIONS) {
|
||||||
|
QUESTION_TWO_ANSWERS[word] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
xmlhttp.open('GET', 'lebensmittel.txt', true);
|
||||||
|
xmlhttp.send();
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
// points
|
// #region points
|
||||||
var questionOnePoints = 0;
|
var questionOnePoints = 0;
|
||||||
var questionTwoPoints = 0;
|
var questionTwoPoints = 0;
|
||||||
var questionThreePoints = 0;
|
var questionThreePoints = 0;
|
||||||
var questionFourPoints = 0;
|
var questionFourPoints = 0;
|
||||||
var questionFivePoints = 0;
|
var questionFivePoints = 0;
|
||||||
var questionSixPoints = 0;
|
var questionSixPoints = 0;
|
||||||
|
// #endregion
|
||||||
|
|
||||||
// tokenization
|
// tokenization
|
||||||
const separators = [' ', '\\\+', '-', '\\\(', '\\\)', '\\*', '/', ':', '\\\?'];
|
const separators = [' ', '\\\+', '-', '\\\(', '\\\)', '\\*', '/', ':', '\\\?'];
|
||||||
@ -54,20 +81,19 @@ const separators = [' ', '\\\+', '-', '\\\(', '\\\)', '\\*', '/', ':', '\\\?'];
|
|||||||
// Timers
|
// Timers
|
||||||
var timerId;
|
var timerId;
|
||||||
|
|
||||||
// html elements
|
// #region html elements
|
||||||
var serverPara = document.querySelector('.server');
|
var serverPara = document.querySelector('.server');
|
||||||
var diagnosticPara = document.querySelector('.output');
|
var diagnosticPara = document.querySelector('.output');
|
||||||
var testBtn = document.querySelector('button');
|
var testBtn = document.querySelector('button');
|
||||||
var testBtn2 = document.getElementById('speechBtn');
|
var testBtn2 = document.getElementById('speechBtn');
|
||||||
var infoPara = document.getElementById('info');
|
var infoPara = document.getElementById('info');
|
||||||
var userPrompt = document.getElementById('query');
|
var userPrompt = document.getElementById('query');
|
||||||
|
// #endregion
|
||||||
console.log(window.location.host + window.location.pathname);
|
|
||||||
|
|
||||||
// websocket to communicate with the server
|
// websocket to communicate with the server
|
||||||
var ws = new WebSocket('ws://localhost:8000/ws');
|
var ws = new WebSocket('ws://' + window.location.host + window.location.pathname + 'ws');
|
||||||
|
|
||||||
// speech recognition
|
// #region speech recognition initialization
|
||||||
var recognition = new SpeechRecognition();
|
var recognition = new SpeechRecognition();
|
||||||
recognition.lang = 'de-DE';
|
recognition.lang = 'de-DE';
|
||||||
// recognition.interimResults = false;
|
// recognition.interimResults = false;
|
||||||
@ -75,12 +101,15 @@ recognition.maxAlternatives = 1;
|
|||||||
recognition.continuous = true;
|
recognition.continuous = true;
|
||||||
var answerQuery = '';
|
var answerQuery = '';
|
||||||
var skipRecording = false;
|
var skipRecording = false;
|
||||||
|
// #endregion
|
||||||
|
|
||||||
// speech synthesis
|
// #region speech synthesis initialization
|
||||||
var speechsynth = new SpeechSynthesisUtterance();
|
var speechsynth = new SpeechSynthesisUtterance();
|
||||||
var listSpeechsynth = new SpeechSynthesisUtterance();
|
var listSpeechsynth = new SpeechSynthesisUtterance();
|
||||||
var voices;
|
var voices;
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// #region speech events
|
||||||
window.speechSynthesis.onvoiceschanged = function () {
|
window.speechSynthesis.onvoiceschanged = function () {
|
||||||
voices = window.speechSynthesis.getVoices();
|
voices = window.speechSynthesis.getVoices();
|
||||||
voices.forEach(element => {
|
voices.forEach(element => {
|
||||||
@ -93,46 +122,29 @@ window.speechSynthesis.onvoiceschanged = function () {
|
|||||||
listSpeechsynth.rate = 0.7;
|
listSpeechsynth.rate = 0.7;
|
||||||
};
|
};
|
||||||
|
|
||||||
function startDemenzScreening () {
|
speechsynth.onend = function (event) {
|
||||||
console.log('button clicked');
|
switch (question) {
|
||||||
ws.send('starte demenz test');
|
case 1:
|
||||||
//
|
break;
|
||||||
// state = 'answer'
|
case 2:
|
||||||
// recognizeSpeech()
|
break;
|
||||||
|
case 3:
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!skipRecording) {
|
||||||
|
recognizeSpeech();
|
||||||
|
}
|
||||||
|
skipRecording = false;
|
||||||
|
diagnosticPara = '';
|
||||||
|
console.log('global speech end');
|
||||||
|
};
|
||||||
|
// #endregion
|
||||||
|
|
||||||
//
|
// #region websocket events
|
||||||
testBtn.disabled = true;
|
|
||||||
testBtn.textContent = 'Test in progress';
|
|
||||||
infoPara.textContent = 'wait...';
|
|
||||||
}
|
|
||||||
|
|
||||||
function speak (sentence) {
|
|
||||||
speechsynth.text = sentence;
|
|
||||||
window.speechSynthesis.speak(speechsynth);
|
|
||||||
}
|
|
||||||
|
|
||||||
function testSpeechOut () {
|
|
||||||
console.log('click');
|
|
||||||
// skipRecording = true
|
|
||||||
// let utterance = new SpeechSynthesisUtterance()
|
|
||||||
// utterance.voice = voices[2]
|
|
||||||
// // utterance.rate = 0.75
|
|
||||||
// utterance.text = QUESTION_THREE
|
|
||||||
// window.speechSynthesis.speak(utterance)
|
|
||||||
//
|
|
||||||
// question = 3;
|
|
||||||
// startQuestion(question);
|
|
||||||
// state = 'answer';
|
|
||||||
speechsynth.text = 'test 123';
|
|
||||||
speechsynth.volume = 1;
|
|
||||||
speechsynth.rate = 1;
|
|
||||||
console.log(speechsynth);
|
|
||||||
window.speechSynthesis.speak(speechsynth);
|
|
||||||
console.log(window.speechSynthesis);
|
|
||||||
// speak('Niko ist der größte hurn eu west');
|
|
||||||
}
|
|
||||||
|
|
||||||
// websocket events
|
|
||||||
ws.onopen = function () {
|
ws.onopen = function () {
|
||||||
serverPara.style.background = 'green';
|
serverPara.style.background = 'green';
|
||||||
serverPara.innerHTML = 'Server online';
|
serverPara.innerHTML = 'Server online';
|
||||||
@ -143,22 +155,26 @@ ws.onmessage = function (payload) {
|
|||||||
checkIntent(dialogflowResult);
|
checkIntent(dialogflowResult);
|
||||||
document.querySelector('h1').innerHTML = dialogflowResult.intent.displayName;
|
document.querySelector('h1').innerHTML = dialogflowResult.intent.displayName;
|
||||||
};
|
};
|
||||||
|
// #endregion
|
||||||
|
|
||||||
// INTENT HANDLING
|
// INTENT HANDLING
|
||||||
function checkIntent (result) {
|
function checkIntent (result) {
|
||||||
switch (result.intent.displayName) {
|
switch (result.intent.displayName) {
|
||||||
case QUIT_INTENT:
|
case QUIT_INTENT:
|
||||||
state = 'quit';
|
state = 'quit';
|
||||||
|
if (timerId !== undefined) {
|
||||||
|
clearTimeout(timerId);
|
||||||
|
}
|
||||||
skipRecording = true;
|
skipRecording = true;
|
||||||
speak('Okay, Danke fürs Benutzen.');
|
speak('Beende die Durchführung.');
|
||||||
break;
|
break;
|
||||||
case WELCOME_INTENT:
|
case WELCOME_INTENT:
|
||||||
state = 'detect';
|
state = 'detect';
|
||||||
// speak(result.fulfillmentText)
|
// speak(result.fulfillmentText)
|
||||||
speak('go?');
|
speak('go');
|
||||||
break;
|
break;
|
||||||
case WELCOME_FOLLOWUP_YES:
|
case WELCOME_FOLLOWUP_YES:
|
||||||
startQuestion(1);
|
startQuestion(2);
|
||||||
break;
|
break;
|
||||||
case WELCOME_FOLLOWUP_NO:
|
case WELCOME_FOLLOWUP_NO:
|
||||||
skipRecording = true;
|
skipRecording = true;
|
||||||
@ -195,25 +211,25 @@ function checkIntent (result) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #region question handling
|
||||||
function startQuestion (number) {
|
function startQuestion (number) {
|
||||||
question = number;
|
question = number;
|
||||||
state = 'answer';
|
state = 'answer';
|
||||||
handleQuestion();
|
handleQuestion();
|
||||||
}
|
}
|
||||||
|
|
||||||
// QUESTION HANDLING
|
|
||||||
function handleQuestion () {
|
function handleQuestion () {
|
||||||
switch (question) {
|
switch (question) {
|
||||||
case 1:
|
case 1:
|
||||||
readQuestionOne(QUESTION_ONE);
|
skipRecording = true;
|
||||||
|
speak(QUESTION_ONE);
|
||||||
|
readQuestionOne();
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
readQuestionTwo(QUESTION_TWO);
|
readQuestionTwo();
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
// skipRecording = true;
|
readQuestionThree();
|
||||||
// speak(QUESTION_THREE);
|
|
||||||
speak(QUESTION_THREE_QUESTIONS_PT1[0]);
|
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
break;
|
break;
|
||||||
@ -222,6 +238,52 @@ function handleQuestion () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function readQuestionOne () {
|
||||||
|
for (let i = 0; i < QUESTION_ONE_QUESTIONS.length; i++) {
|
||||||
|
let utterance = new SpeechSynthesisUtterance();
|
||||||
|
utterance.voice = voices[2];
|
||||||
|
utterance.rate = 0.75;
|
||||||
|
utterance.text = QUESTION_ONE_QUESTIONS[i];
|
||||||
|
window.speechSynthesis.speak(utterance);
|
||||||
|
if (i === 9) {
|
||||||
|
utterance.onend = function (event) {
|
||||||
|
recognizeSpeech();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function readQuestionTwo () {
|
||||||
|
let utterance = new SpeechSynthesisUtterance();
|
||||||
|
utterance.voice = voices[2];
|
||||||
|
utterance.text = QUESTION_TWO;
|
||||||
|
window.speechSynthesis.speak(utterance);
|
||||||
|
utterance.onend = function (event) {
|
||||||
|
window.setTimeout(
|
||||||
|
function () {
|
||||||
|
recognition.stop();
|
||||||
|
handleAnswer(answerQuery);
|
||||||
|
}, 6000);
|
||||||
|
recognizeSpeech();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function readQuestionThree () {
|
||||||
|
recognition = false;
|
||||||
|
speak('Dankeschön. Weiter geht es mit der nächsten Frage. ');
|
||||||
|
let utterance = new SpeechSynthesisUtterance();
|
||||||
|
utterance.voice = voices[2];
|
||||||
|
utterance.text = QUESTION_THREE;
|
||||||
|
window.speechSynthesis.speak(utterance);
|
||||||
|
utterance.onend = function (event) {
|
||||||
|
console.log('speach end');
|
||||||
|
speak(QUESTION_THREE_QUESTIONS_PT1[questionThreeCount]);
|
||||||
|
};
|
||||||
|
utterance.onerror = function (event) {
|
||||||
|
console.log('An error has occurred with the speech synthesis: ' + event.error);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function handleAnswer (query) {
|
function handleAnswer (query) {
|
||||||
switch (question) {
|
switch (question) {
|
||||||
case 1:
|
case 1:
|
||||||
@ -242,14 +304,18 @@ function handleAnswer (query) {
|
|||||||
|
|
||||||
function handleAnswerToFirstQuestion (answer) {
|
function handleAnswerToFirstQuestion (answer) {
|
||||||
var tokens = answer.split(new RegExp(separators.join('|'), 'g'));
|
var tokens = answer.split(new RegExp(separators.join('|'), 'g'));
|
||||||
questionOnePoints = calculatePoints(tokens, QUESTION_ONE_ANSWERS);
|
questionOnePoints += calculatePoints(tokens, QUESTION_ONE_ANSWERS);
|
||||||
if (partTwo) {
|
if (partTwo) {
|
||||||
partTwo = false;
|
partTwo = false;
|
||||||
|
skipRecording = true;
|
||||||
|
speak('Vielen Dank, nun geht es weiter mit der nächsten Frage');
|
||||||
startQuestion(2);
|
startQuestion(2);
|
||||||
// state = 'detect'
|
// state = 'detect'
|
||||||
} else {
|
} else {
|
||||||
rePrompt = false;
|
rePrompt = false;
|
||||||
|
skipRecording = true;
|
||||||
speak(QUESTION_ONE_PT2);
|
speak(QUESTION_ONE_PT2);
|
||||||
|
readQuestionOne(QUESTION_ONE);
|
||||||
partTwo = true;
|
partTwo = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -257,8 +323,6 @@ function handleAnswerToFirstQuestion (answer) {
|
|||||||
function handleAnswerToSecondQuestion (answer) {
|
function handleAnswerToSecondQuestion (answer) {
|
||||||
var tokens = answer.split(new RegExp(separators.join('|'), 'g'));
|
var tokens = answer.split(new RegExp(separators.join('|'), 'g'));
|
||||||
questionTwoPoints = calculatePoints(tokens, QUESTION_TWO_ANSWERS);
|
questionTwoPoints = calculatePoints(tokens, QUESTION_TWO_ANSWERS);
|
||||||
skipRecording = true;
|
|
||||||
speak('Sie haben ' + questionOnePoints + 'Punkte');
|
|
||||||
startQuestion(3);
|
startQuestion(3);
|
||||||
// state = 'detect'
|
// state = 'detect'
|
||||||
}
|
}
|
||||||
@ -274,11 +338,11 @@ function handleAnswerToThirdQuestion (query) {
|
|||||||
} else {
|
} else {
|
||||||
answerArray = QUESTION_THREE_ANSWERS_PT2;
|
answerArray = QUESTION_THREE_ANSWERS_PT2;
|
||||||
}
|
}
|
||||||
if (query === answerArray[count]) {
|
if (query === answerArray[questionThreeCount]) {
|
||||||
strike = 0;
|
strike = 0;
|
||||||
partTwo = false;
|
partTwo = false;
|
||||||
count++;
|
questionThreeCount++;
|
||||||
questionThreePoints = count + 1;
|
questionThreePoints = questionThreeCount + 1;
|
||||||
questionArray = QUESTION_THREE_QUESTIONS_PT1;
|
questionArray = QUESTION_THREE_QUESTIONS_PT1;
|
||||||
} else {
|
} else {
|
||||||
strike++;
|
strike++;
|
||||||
@ -286,7 +350,7 @@ function handleAnswerToThirdQuestion (query) {
|
|||||||
questionArray = QUESTION_THREE_QUESTIONS_PT2;
|
questionArray = QUESTION_THREE_QUESTIONS_PT2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strike === 2 || count === 5) {
|
if (strike === 2 || questionThreeCount === 5) {
|
||||||
speechsynth.rate = 1;
|
speechsynth.rate = 1;
|
||||||
skipRecording = true;
|
skipRecording = true;
|
||||||
speak('weiter geht es mit der Nächsten Frage');
|
speak('weiter geht es mit der Nächsten Frage');
|
||||||
@ -294,104 +358,63 @@ function handleAnswerToThirdQuestion (query) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
speak(questionArray[count]);
|
speak(questionArray[questionThreeCount]);
|
||||||
|
|
||||||
console.log('count: ' + count + ', strike: ' + strike + ', points: ' + questionThreePoints);
|
console.log('count: ' + questionThreeCount + ', strike: ' + strike + ', points: ' + questionThreePoints);
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// #region global functions
|
||||||
|
function startDemenzScreening () {
|
||||||
|
// ws.send('starte demenz test');
|
||||||
|
startQuestion(3);
|
||||||
|
testBtn.disabled = true;
|
||||||
|
testBtn.textContent = 'Test in progress';
|
||||||
|
infoPara.textContent = 'wait...';
|
||||||
|
diagnosticPara.textContent = 'detecting...';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Question specific functions
|
function speak (sentence) {
|
||||||
function readQuestionOne (text) {
|
speechsynth.text = sentence;
|
||||||
skipRecording = true;
|
window.speechSynthesis.speak(speechsynth);
|
||||||
speak(text);
|
|
||||||
for (let i = 0; i < QUESTION_ONE_QUESTIONS.length; i++) {
|
|
||||||
let utterance = new SpeechSynthesisUtterance();
|
|
||||||
utterance.voice = voices[2];
|
|
||||||
utterance.rate = 0.75;
|
|
||||||
utterance.text = QUESTION_ONE_QUESTIONS[i];
|
|
||||||
window.speechSynthesis.speak(utterance);
|
|
||||||
if (i === 9) {
|
|
||||||
utterance.onend = function (event) {
|
|
||||||
console.log('end of aufzählung' + i);
|
|
||||||
recognizeSpeech();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function readQuestionTwo (text) {
|
function testSpeechOut () {
|
||||||
let utterance = new SpeechSynthesisUtterance();
|
console.log('click');
|
||||||
utterance.voice = voices[2];
|
speechsynth.text = 'test 123';
|
||||||
utterance.text = text;
|
speechsynth.volume = 1;
|
||||||
window.speechSynthesis.speak(utterance);
|
speechsynth.rate = 1;
|
||||||
console.log('q 2 started');
|
console.log(speechsynth);
|
||||||
utterance.onend = function (event) {
|
window.speechSynthesis.speak(speechsynth);
|
||||||
window.setTimeout(
|
console.log(window.speechSynthesis);
|
||||||
function () {
|
|
||||||
recognition.stop();
|
|
||||||
handleAnswer(answerQuery);
|
|
||||||
}, 60000);
|
|
||||||
console.log('q 2 recognition started');
|
|
||||||
recognizeSpeech();
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function calculatePoints (tokens, array) {
|
|
||||||
let points = 0;
|
|
||||||
for (let i of array) {
|
|
||||||
for (let j of tokens) {
|
|
||||||
if (i === j) {
|
|
||||||
points++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return points;
|
|
||||||
}
|
|
||||||
|
|
||||||
speechsynth.onend = function (event) {
|
|
||||||
switch (question) {
|
|
||||||
case 1:
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!skipRecording) {
|
|
||||||
recognizeSpeech();
|
|
||||||
}
|
|
||||||
skipRecording = false;
|
|
||||||
console.log('global speech end');
|
|
||||||
};
|
|
||||||
|
|
||||||
function recognizeSpeech () {
|
function recognizeSpeech () {
|
||||||
if (state === 'answer') {
|
// if (state === 'answer') {
|
||||||
var arr;
|
// var arr;
|
||||||
switch (question) {
|
// switch (question) {
|
||||||
case 1:
|
// case 1:
|
||||||
arr = QUESTION_ONE_QUESTIONS;
|
// arr = QUESTION_ONE_QUESTIONS;
|
||||||
break;
|
// break;
|
||||||
case 2:
|
// case 2:
|
||||||
return;
|
// // arr = QUESTION_TWO_QUESTIONS;
|
||||||
case 3:
|
// break;
|
||||||
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
|
// case 3:
|
||||||
break;
|
// arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
|
||||||
case 4:
|
// break;
|
||||||
break;
|
// case 4:
|
||||||
case 5:
|
// break;
|
||||||
break;
|
// case 5:
|
||||||
}
|
// break;
|
||||||
|
// }
|
||||||
|
|
||||||
var grammar = '#JSGF V1.0; grammar colors; public <color> = ' + arr.join(' | ') + ' ;';
|
// // var grammar = '#JSGF V1.0; grammar colors; public <color> = ' + arr.join(' | ') + ' ;';
|
||||||
var speechRecognitionList = new SpeechGrammarList();
|
// // var speechRecognitionList = new SpeechGrammarList();
|
||||||
speechRecognitionList.addFromString(grammar, 1);
|
// // speechRecognitionList.addFromString(grammar, 1);
|
||||||
recognition.grammars = speechRecognitionList;
|
// // recognition.grammars = speechRecognitionList;
|
||||||
}
|
// }
|
||||||
recognition.start();
|
recognition.start();
|
||||||
console.log('reocgnition started');
|
console.log('reocgnition started. Question: ' + question);
|
||||||
|
|
||||||
recognition.onresult = function (event) {
|
recognition.onresult = function (event) {
|
||||||
var last = event.results.length - 1;
|
var last = event.results.length - 1;
|
||||||
@ -400,7 +423,7 @@ function recognizeSpeech () {
|
|||||||
diagnosticPara.textContent += speechResult + ' ';
|
diagnosticPara.textContent += speechResult + ' ';
|
||||||
|
|
||||||
// console.log('Confidence: ' + event.results[0][0].confidence)
|
// console.log('Confidence: ' + event.results[0][0].confidence)
|
||||||
|
console.log('process: ' + speechResult);
|
||||||
processSpeech(speechResult);
|
processSpeech(speechResult);
|
||||||
// testBtn.disabled = false
|
// testBtn.disabled = false
|
||||||
// testBtn.textContent = 'record...'
|
// testBtn.textContent = 'record...'
|
||||||
@ -427,6 +450,7 @@ function recognizeSpeech () {
|
|||||||
case 4:
|
case 4:
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
|
timeOut = 6500;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -505,5 +529,16 @@ function recognizeSpeech () {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function calculatePoints (tokens, dict) {
|
||||||
|
let points = 0;
|
||||||
|
for (let word of tokens) {
|
||||||
|
if (dict[word] !== undefined) {
|
||||||
|
points += dict[word];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return points;
|
||||||
|
}
|
||||||
|
// #endregion
|
||||||
|
|
||||||
testBtn.addEventListener('click', startDemenzScreening);
|
testBtn.addEventListener('click', startDemenzScreening);
|
||||||
testBtn2.addEventListener('click', testSpeechOut);
|
testBtn2.addEventListener('click', testSpeechOut);
|
||||||
|
596
lebensmittel.txt
596
lebensmittel.txt
@ -1,596 +0,0 @@
|
|||||||
Aalsuppe
|
|
||||||
Agavendicksaft
|
|
||||||
Ahornsirup
|
|
||||||
Ajvar
|
|
||||||
Ananas
|
|
||||||
Anis
|
|
||||||
Anona
|
|
||||||
Apfel
|
|
||||||
Apfelkompott
|
|
||||||
Apfelkraut
|
|
||||||
Apfelsine
|
|
||||||
Aprikose
|
|
||||||
Artischocke
|
|
||||||
Artischockenherz
|
|
||||||
Aubergine
|
|
||||||
Auflauf
|
|
||||||
Austernpilz
|
|
||||||
Avocado
|
|
||||||
Backaroma
|
|
||||||
Backfett
|
|
||||||
Backware
|
|
||||||
Backwerk
|
|
||||||
Baiser
|
|
||||||
Balsamessig
|
|
||||||
Balsamico
|
|
||||||
Banane
|
|
||||||
Basilikum
|
|
||||||
Bauernbrot
|
|
||||||
Bergkäse
|
|
||||||
Bienenstich
|
|
||||||
Birne
|
|
||||||
Biskuitteig
|
|
||||||
Bitterschokolade
|
|
||||||
Blattsalat
|
|
||||||
Blattspinat
|
|
||||||
Blaubeere
|
|
||||||
Blaukohl
|
|
||||||
Blaukraut
|
|
||||||
Blauschimmelkäse
|
|
||||||
Blätterteig
|
|
||||||
Blumenkohl
|
|
||||||
Blutorange
|
|
||||||
Blutwurst
|
|
||||||
Blütenhonig
|
|
||||||
Bockwurst
|
|
||||||
Bohne
|
|
||||||
Bohnenkraut
|
|
||||||
Bohnensuppe
|
|
||||||
Borschtsch
|
|
||||||
Boskop
|
|
||||||
Bouillon
|
|
||||||
Bouillonwürfel
|
|
||||||
Bratapfel
|
|
||||||
Bratwurst
|
|
||||||
Broccoli
|
|
||||||
Brokkoli
|
|
||||||
Brombeere
|
|
||||||
Brot
|
|
||||||
Brotaufstrich
|
|
||||||
Brotsuppe
|
|
||||||
Brotteig
|
|
||||||
Brunnenkresse
|
|
||||||
Brühwürfel
|
|
||||||
Buchweizen
|
|
||||||
Butter
|
|
||||||
Buttercreme
|
|
||||||
Buttergebäck
|
|
||||||
Butterkäse
|
|
||||||
Butterkeks
|
|
||||||
Butterpilz
|
|
||||||
Büchsenmilch
|
|
||||||
Béchamelsauce
|
|
||||||
Béchamelsoße
|
|
||||||
Calzone
|
|
||||||
Camembert
|
|
||||||
Cannelloni
|
|
||||||
Cashew
|
|
||||||
Cashewnuss
|
|
||||||
Cayennepfeffer
|
|
||||||
Champignon
|
|
||||||
Cheddarkäse
|
|
||||||
Chester
|
|
||||||
Chesterkäse
|
|
||||||
Chicorée
|
|
||||||
Chili
|
|
||||||
Chilisauce
|
|
||||||
Chilisoße
|
|
||||||
Chinakohl
|
|
||||||
Chorizo
|
|
||||||
Christstollen
|
|
||||||
Ciabatta
|
|
||||||
Citrusfrucht
|
|
||||||
Clementine
|
|
||||||
Consommé
|
|
||||||
Cookie
|
|
||||||
Corned beef
|
|
||||||
Cornflakes
|
|
||||||
Couscous
|
|
||||||
Cranberry
|
|
||||||
Croissant
|
|
||||||
Crème fraîche
|
|
||||||
Curry
|
|
||||||
Currypulver
|
|
||||||
Currysauce
|
|
||||||
Currysoße
|
|
||||||
Currywurst
|
|
||||||
Dattel
|
|
||||||
Dattelpflaume
|
|
||||||
Datteltraube
|
|
||||||
Dauerwurst
|
|
||||||
Delikatesse
|
|
||||||
Delikatessgurke
|
|
||||||
Delikatesssenf
|
|
||||||
Dessert
|
|
||||||
Diätzucker
|
|
||||||
Dickmilch
|
|
||||||
Dill
|
|
||||||
Dinkel
|
|
||||||
Dinkelmehl
|
|
||||||
Distelöl
|
|
||||||
Dominostein
|
|
||||||
Dosenfleisch
|
|
||||||
Dosenmilch
|
|
||||||
Dosensuppe
|
|
||||||
Dosenwurst
|
|
||||||
Döner
|
|
||||||
Dörrfleisch
|
|
||||||
Dörrgemüse
|
|
||||||
Dörrobst
|
|
||||||
Dörrpflaume
|
|
||||||
Dressing
|
|
||||||
Drops
|
|
||||||
Edamer
|
|
||||||
Edamer Käse
|
|
||||||
Edelpilzkäse
|
|
||||||
Ei
|
|
||||||
Eierkuchen
|
|
||||||
Eigelb
|
|
||||||
Einbrennsuppe
|
|
||||||
Eingemachtes
|
|
||||||
Eingetropftes
|
|
||||||
Eintopf
|
|
||||||
Eisbergsalat
|
|
||||||
Emmentaler
|
|
||||||
Ente
|
|
||||||
Entenklein
|
|
||||||
Erbse
|
|
||||||
Erbsensuppe
|
|
||||||
Erdbeere
|
|
||||||
Erdnuss
|
|
||||||
Erdnussbutter
|
|
||||||
Erdnussflip
|
|
||||||
Erdnussmus
|
|
||||||
Erdnussöl
|
|
||||||
Esrom
|
|
||||||
Essen
|
|
||||||
Essig
|
|
||||||
Essiggurke
|
|
||||||
Esskastanie
|
|
||||||
Esswaren
|
|
||||||
Estragon
|
|
||||||
Feige
|
|
||||||
Feinbackwaren
|
|
||||||
Feingebäck
|
|
||||||
Feinkost
|
|
||||||
Felchen
|
|
||||||
Feldbohne
|
|
||||||
Feldfrucht
|
|
||||||
Feldsalat
|
|
||||||
Fenchel
|
|
||||||
Feta
|
|
||||||
Fett
|
|
||||||
Fettuccine
|
|
||||||
Filet
|
|
||||||
Fisch
|
|
||||||
Fischfilet
|
|
||||||
Fischkonserve
|
|
||||||
Fischrogen
|
|
||||||
Fischstäbchen
|
|
||||||
Fischsuppe
|
|
||||||
Fladenbrot
|
|
||||||
Flammkuchen
|
|
||||||
Flädlesuppe
|
|
||||||
Flädlisuppe
|
|
||||||
Fleckerlsuppe
|
|
||||||
Fleischbrühe
|
|
||||||
Fleischkonserve
|
|
||||||
Fleischsuppe
|
|
||||||
Fliederbeere
|
|
||||||
Fliederbeersuppe
|
|
||||||
Florentiner
|
|
||||||
Foie gras
|
|
||||||
Frankfurter
|
|
||||||
Frischkäse
|
|
||||||
Frittatensuppe
|
|
||||||
Frozen Yoghurt
|
|
||||||
Frucht
|
|
||||||
Fruchtbonbon
|
|
||||||
Fruchteis
|
|
||||||
Fruchtjoghurt
|
|
||||||
Fruchtjogurt
|
|
||||||
Früchtebrot
|
|
||||||
Früchtequark
|
|
||||||
Frühlingsrolle
|
|
||||||
Frühlingssuppe
|
|
||||||
Frühlingszwiebel
|
|
||||||
Frühstücksbrot
|
|
||||||
Fufu
|
|
||||||
Garnele
|
|
||||||
Gebäck
|
|
||||||
Gehacktes
|
|
||||||
Gelee
|
|
||||||
Gemüsesuppe
|
|
||||||
Gemüsezwiebel
|
|
||||||
Gerste
|
|
||||||
Gerstensuppe
|
|
||||||
Gerstlsuppe
|
|
||||||
Getreide
|
|
||||||
Gewürz
|
|
||||||
Gewürzgurke
|
|
||||||
Gorgonzola
|
|
||||||
Gouda
|
|
||||||
Graupe
|
|
||||||
Graupensuppe
|
|
||||||
Greyerzer
|
|
||||||
Grieß
|
|
||||||
Grießbrei
|
|
||||||
Grießkloß
|
|
||||||
Grießklößchen
|
|
||||||
Grießknödel
|
|
||||||
Grießmehl
|
|
||||||
Grießnockerl
|
|
||||||
Grießpudding
|
|
||||||
Grießschmarren
|
|
||||||
Grießsuppe
|
|
||||||
Grünkohl
|
|
||||||
Gulasch
|
|
||||||
Gulaschsuppe
|
|
||||||
Gurke
|
|
||||||
Gyros
|
|
||||||
Hackepeter
|
|
||||||
Hackfleisch
|
|
||||||
Hafer
|
|
||||||
Haferflocken
|
|
||||||
Hagebutte
|
|
||||||
Haifischflossensuppe
|
|
||||||
Hartkäse
|
|
||||||
Harzer
|
|
||||||
Haselnuss
|
|
||||||
Hefe
|
|
||||||
Hefezopf
|
|
||||||
Heidelbeere
|
|
||||||
Hering
|
|
||||||
Heringssalat
|
|
||||||
Hibiskustee
|
|
||||||
Himbeere
|
|
||||||
Himbeereis
|
|
||||||
Hirse
|
|
||||||
Holunderblütensirup
|
|
||||||
Honig
|
|
||||||
Honigkuchen
|
|
||||||
Honigmelone
|
|
||||||
Hummer
|
|
||||||
Hummersuppe
|
|
||||||
Hummus
|
|
||||||
Hühnerfleisch
|
|
||||||
Igel
|
|
||||||
Ingwer
|
|
||||||
Instantsuppe
|
|
||||||
Jagdwurst
|
|
||||||
Jasmintee
|
|
||||||
Jägersuppe
|
|
||||||
Joghurt
|
|
||||||
Johannisbeere
|
|
||||||
Johannisbrot
|
|
||||||
Julienne
|
|
||||||
Juliennesuppe
|
|
||||||
Kakaopulver
|
|
||||||
Kaki
|
|
||||||
Kaltschale
|
|
||||||
Kandis
|
|
||||||
Kandiszucker
|
|
||||||
Karamell
|
|
||||||
Karamellbonbon
|
|
||||||
Kardamom
|
|
||||||
Karotte
|
|
||||||
Kartoffel
|
|
||||||
Kartoffelchip
|
|
||||||
Kartoffeln
|
|
||||||
Kartoffelsuppe
|
|
||||||
Käse
|
|
||||||
Käsebrötchen
|
|
||||||
Käsekuchen
|
|
||||||
Keks
|
|
||||||
Kirsche
|
|
||||||
Kiwi
|
|
||||||
Knoblauch
|
|
||||||
Knoblauchbutter
|
|
||||||
Knoblauchöl
|
|
||||||
Knoblauchpulver
|
|
||||||
Knoblauchsalz
|
|
||||||
Knoblauchsoße
|
|
||||||
Knoblauchwurst
|
|
||||||
Kohl
|
|
||||||
Kohlroulade
|
|
||||||
Koriander
|
|
||||||
Krakauer
|
|
||||||
Krankensuppe
|
|
||||||
Krapfen
|
|
||||||
Kraut
|
|
||||||
Kräuterbutter
|
|
||||||
Kräuterkäse
|
|
||||||
Krebsfleisch
|
|
||||||
Krebssuppe
|
|
||||||
Kreplach
|
|
||||||
Kreuzkümmel
|
|
||||||
Kuchen
|
|
||||||
Kurkuma
|
|
||||||
Kümmel
|
|
||||||
Kürbis
|
|
||||||
Kürbiskern
|
|
||||||
Kürbiskernbrot
|
|
||||||
Kürbissuppe
|
|
||||||
Labskaus
|
|
||||||
Lachs
|
|
||||||
Lammfleisch
|
|
||||||
Languste
|
|
||||||
Lauch
|
|
||||||
Lauchzwiebel
|
|
||||||
Lebensmittel
|
|
||||||
Leberwurst
|
|
||||||
Lebkuchen
|
|
||||||
Lebkuchengewürz
|
|
||||||
Limburger
|
|
||||||
Limette
|
|
||||||
Linguine
|
|
||||||
Linse
|
|
||||||
Linsensuppe
|
|
||||||
Lorbeerblatt
|
|
||||||
Magermilchpulver
|
|
||||||
Mais
|
|
||||||
Maisgrieß
|
|
||||||
Maiskolben
|
|
||||||
Maismehl
|
|
||||||
Majoran
|
|
||||||
Mandarine
|
|
||||||
Mandel
|
|
||||||
Mandelkern
|
|
||||||
Mango
|
|
||||||
Maniok
|
|
||||||
Maracuja
|
|
||||||
Margarine
|
|
||||||
Marmelade
|
|
||||||
Marmorkuchen
|
|
||||||
Marzipan
|
|
||||||
Mascarpone
|
|
||||||
Matcha
|
|
||||||
Meerrettich
|
|
||||||
Mehl
|
|
||||||
Melone
|
|
||||||
Mett
|
|
||||||
Mettwurst
|
|
||||||
Milchpulver
|
|
||||||
Milchsuppe
|
|
||||||
Mohn
|
|
||||||
Mohnbrötchen
|
|
||||||
Mozzarella
|
|
||||||
Möhre
|
|
||||||
Mus
|
|
||||||
Müsli
|
|
||||||
Nektarinen
|
|
||||||
Nockerl
|
|
||||||
Nockerlsuppe
|
|
||||||
Noisette
|
|
||||||
Noisetteschokolade
|
|
||||||
Nudeln
|
|
||||||
Nugat
|
|
||||||
Nuss
|
|
||||||
Nusskuchen
|
|
||||||
Nussschinken
|
|
||||||
Nussschokolade
|
|
||||||
Obst
|
|
||||||
Obstkuchen
|
|
||||||
Okroschka
|
|
||||||
Olive
|
|
||||||
Olivenöl
|
|
||||||
Omelett
|
|
||||||
Orange
|
|
||||||
Orangeat
|
|
||||||
Oregano
|
|
||||||
Pampelmuse
|
|
||||||
Panadelsuppe
|
|
||||||
Paprika
|
|
||||||
Paranuss
|
|
||||||
Parmesankäse
|
|
||||||
Pasta
|
|
||||||
Pastete
|
|
||||||
Pastinake
|
|
||||||
Pecannuss
|
|
||||||
Pekannuss
|
|
||||||
Peperoni
|
|
||||||
Persillade
|
|
||||||
Pesto
|
|
||||||
Petersilie
|
|
||||||
Pfannkuchen
|
|
||||||
Pfeffer
|
|
||||||
Pfefferkuchen
|
|
||||||
Pferdefleisch
|
|
||||||
Pfifferling
|
|
||||||
Pfirsich
|
|
||||||
Pflaume
|
|
||||||
Pilz
|
|
||||||
Pilzsuppe
|
|
||||||
Piment
|
|
||||||
Pinienkerne
|
|
||||||
Pistazie
|
|
||||||
Pita
|
|
||||||
Pitabrot
|
|
||||||
Pizza
|
|
||||||
Plätzchen
|
|
||||||
Polenta
|
|
||||||
Pommes frites
|
|
||||||
Porridge
|
|
||||||
Posaunensuppe
|
|
||||||
Potage
|
|
||||||
Preiselbeere
|
|
||||||
Puderzucker
|
|
||||||
Puffreis
|
|
||||||
Pumpernickel
|
|
||||||
Putenfleisch
|
|
||||||
Quark
|
|
||||||
Quarkbällchen
|
|
||||||
Quarktasche
|
|
||||||
Quiche
|
|
||||||
Quitte
|
|
||||||
Radicchio
|
|
||||||
Radieschen
|
|
||||||
Rahm
|
|
||||||
Rahmsuppe
|
|
||||||
Ramen
|
|
||||||
Ravioli
|
|
||||||
Räucherlachs
|
|
||||||
Reis
|
|
||||||
Reissuppe
|
|
||||||
Remoulade
|
|
||||||
Rettich
|
|
||||||
Rhabarber
|
|
||||||
Ricotta
|
|
||||||
Rindfleisch
|
|
||||||
Rindfleischsuppe
|
|
||||||
Roggen
|
|
||||||
Roggenbrot
|
|
||||||
Rohkost
|
|
||||||
Rohrzucker
|
|
||||||
Rollmops
|
|
||||||
Romadur
|
|
||||||
Rosenkohl
|
|
||||||
Rosine
|
|
||||||
Rosinenkuchen
|
|
||||||
Rosinenschnecke
|
|
||||||
Rosmarin
|
|
||||||
Rote Beete
|
|
||||||
Rotkohl
|
|
||||||
Rotkraut
|
|
||||||
Rotschimmelkäse
|
|
||||||
Rucola
|
|
||||||
Rumfordsuppe
|
|
||||||
Rumkugel
|
|
||||||
Rübe
|
|
||||||
Rübenkraut
|
|
||||||
Rübenzucker
|
|
||||||
Salami
|
|
||||||
Salatgurke
|
|
||||||
Salbei
|
|
||||||
Salz
|
|
||||||
Salzbrezel
|
|
||||||
Salzgurke
|
|
||||||
Salzstange
|
|
||||||
Sauerkraut
|
|
||||||
Sauermilch
|
|
||||||
Sauermilchquark
|
|
||||||
Sauerrahm
|
|
||||||
Schafskäse
|
|
||||||
Schalotte
|
|
||||||
Schildkrötensuppe
|
|
||||||
Schinken
|
|
||||||
Schleimsuppe
|
|
||||||
Schmorbraten
|
|
||||||
Schnittlauch
|
|
||||||
Schokolade
|
|
||||||
Schwalbennestersuppe
|
|
||||||
Schwarzbrot
|
|
||||||
Schwarzkümmel
|
|
||||||
Schwarzwurzel
|
|
||||||
Schweinefleisch
|
|
||||||
Seitan
|
|
||||||
Sellerie
|
|
||||||
Senf
|
|
||||||
Senfgurke
|
|
||||||
Sesam
|
|
||||||
Sesambrötchen
|
|
||||||
Sesamsauce
|
|
||||||
Soja
|
|
||||||
Sojasprossen
|
|
||||||
Soljanka
|
|
||||||
Sonnenblumenkern
|
|
||||||
Spaghetti
|
|
||||||
Spargel
|
|
||||||
Spargelsuppe
|
|
||||||
Spätzle
|
|
||||||
Spekulatius
|
|
||||||
Spinat
|
|
||||||
Spreewaldgurke
|
|
||||||
Spritzgebäck
|
|
||||||
Steinpilz
|
|
||||||
Sternanis
|
|
||||||
Stollen
|
|
||||||
Stracciatella
|
|
||||||
Stutenmilch
|
|
||||||
Suppenextrakt
|
|
||||||
Suppenfleisch
|
|
||||||
Suppengrün
|
|
||||||
Suppenhuhn
|
|
||||||
Suppenknochen
|
|
||||||
Suppenspargel
|
|
||||||
Suppenwürfel
|
|
||||||
Sushi
|
|
||||||
Süßkartoffel
|
|
||||||
Süßrahm
|
|
||||||
Süßrahmbutter
|
|
||||||
Tagessuppe
|
|
||||||
Tagliatelle
|
|
||||||
Tahin
|
|
||||||
Tamarinde
|
|
||||||
Tapioka
|
|
||||||
Teewurst
|
|
||||||
Tellerfleisch
|
|
||||||
Tempeh
|
|
||||||
Terrine
|
|
||||||
Tiefkühlkost
|
|
||||||
Tiefkühlpizza
|
|
||||||
Tilsiter
|
|
||||||
Tiramisu
|
|
||||||
Toast
|
|
||||||
Tofu
|
|
||||||
Tomate
|
|
||||||
Tomatenmark
|
|
||||||
Tomatensoße
|
|
||||||
Tomatensuppe
|
|
||||||
Topinambur
|
|
||||||
Tortellini
|
|
||||||
Traube
|
|
||||||
Traubenkernöl
|
|
||||||
Urbrot
|
|
||||||
Vanille
|
|
||||||
Vanillerostbraten
|
|
||||||
Vanillezucker
|
|
||||||
Vanillinzucker
|
|
||||||
Vollkornbrot
|
|
||||||
Vollkornmehl
|
|
||||||
Vollmilchpulver
|
|
||||||
Vollmilchschokolade
|
|
||||||
Vollrohrzucker
|
|
||||||
Walnuss
|
|
||||||
Wasabi
|
|
||||||
Wassersuppe
|
|
||||||
Weichkäse
|
|
||||||
Weihnachtsgebäck
|
|
||||||
Weintraube
|
|
||||||
Weißbrot
|
|
||||||
Weißkohl
|
|
||||||
Weißkraut
|
|
||||||
Weizen
|
|
||||||
Weizengrieß
|
|
||||||
Weizenmehl
|
|
||||||
Wirsing
|
|
||||||
Wurst
|
|
||||||
Wurstbrühe
|
|
||||||
Wurstsuppe
|
|
||||||
Zaziki
|
|
||||||
Ziegenkäse
|
|
||||||
Ziegenmilch
|
|
||||||
Zimt
|
|
||||||
Zimtstange
|
|
||||||
Zitronat
|
|
||||||
Zitrone
|
|
||||||
Zitronensaft
|
|
||||||
Zucker
|
|
||||||
Zuckerguss
|
|
||||||
Zuckerrübensirup
|
|
||||||
Zwiebel
|
|
||||||
Zwiebelkuchen
|
|
||||||
Zwiebelring
|
|
||||||
Zwiebelsuppe
|
|
||||||
Äpfel
|
|
||||||
Öl
|
|
58
server/package-lock.json
generated
58
server/package-lock.json
generated
@ -13,9 +13,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "6.1.1",
|
"version": "6.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz",
|
||||||
"integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ=="
|
"integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -630,9 +630,9 @@
|
|||||||
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
|
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
|
||||||
},
|
},
|
||||||
"dialogflow": {
|
"dialogflow": {
|
||||||
"version": "0.10.1",
|
"version": "0.10.2",
|
||||||
"resolved": "https://registry.npmjs.org/dialogflow/-/dialogflow-0.10.1.tgz",
|
"resolved": "https://registry.npmjs.org/dialogflow/-/dialogflow-0.10.2.tgz",
|
||||||
"integrity": "sha512-aULzboCRdREOBvSlMQH3XWkBAW2EPnLyjztup/K61UYY+L0KzjC1jzDOUPZD42yMlB1p1SX0X296LF8rYvsDIA==",
|
"integrity": "sha512-5E3+/TkAj5KlowsvhmaXxR26O+hC0LA0fj7pfhcwGDJbRWzEetWTnxNgV6pOpYd1NaI+GBVS6m34mJrL1L7biA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"google-gax": "^1.0.0",
|
"google-gax": "^1.0.0",
|
||||||
"protobufjs": "^6.8.0"
|
"protobufjs": "^6.8.0"
|
||||||
@ -1260,9 +1260,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gcp-metadata": {
|
"gcp-metadata": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-2.0.1.tgz",
|
||||||
"integrity": "sha512-BN6KUUWo6WLkDRst+Y7bqpXq1PYMrKUecNLRdZESp7oYtMjWcZdAM0UYvcip8wb0GXNO/j8Z8HTccK4iYtMvyQ==",
|
"integrity": "sha512-nrbLj5O1MurvpLC/doFwzdTfKnmYGDYXlY/v7eQ4tJNVIvQXbOK672J9UFbradbtmuTkyHzjpzD8HD0Djz0LWw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"gaxios": "^2.0.0",
|
"gaxios": "^2.0.0",
|
||||||
"json-bigint": "^0.3.0"
|
"json-bigint": "^0.3.0"
|
||||||
@ -1303,9 +1303,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"google-auth-library": {
|
"google-auth-library": {
|
||||||
"version": "4.2.2",
|
"version": "4.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-4.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-4.2.5.tgz",
|
||||||
"integrity": "sha512-PI8uGQMNIUgWL2upwsuDOjvJO1i9ON9MkvbZO44j7sIHeNmuUpwpP8YxKSGkmUh34L5V3xD9nS/0kgH0YY9qrQ==",
|
"integrity": "sha512-Vfsr82M1KTdT0H0wjawwp0LHsT6mPKSolRp21ZpJ7Ydq63zRe8DbGKjRCCrhsRZHg+p17DuuSCMEznwk3CJRdw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"arrify": "^2.0.0",
|
"arrify": "^2.0.0",
|
||||||
"base64-js": "^1.3.0",
|
"base64-js": "^1.3.0",
|
||||||
@ -1314,21 +1314,13 @@
|
|||||||
"gcp-metadata": "^2.0.0",
|
"gcp-metadata": "^2.0.0",
|
||||||
"gtoken": "^3.0.0",
|
"gtoken": "^3.0.0",
|
||||||
"jws": "^3.1.5",
|
"jws": "^3.1.5",
|
||||||
"lru-cache": "^5.0.0",
|
"lru-cache": "^5.0.0"
|
||||||
"semver": "^6.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"semver": {
|
|
||||||
"version": "6.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
|
|
||||||
"integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ=="
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"google-gax": {
|
"google-gax": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.1.3.tgz",
|
||||||
"integrity": "sha512-kl/7U5x0Db9TwY4qYKomyBjKAgy3ztb1iqpx/wC84CtUVMNa1JNyPVlVdjgJS2JgOUF0yxMp9z6amfvss6tSIA==",
|
"integrity": "sha512-IBfapyt7+yh2RsisL5EOLfJz2fiqnp9GF8lZdfgSfmIjEE3eoMdCaGGpM7EgHA1OqwTvT4ePqLqIFGOhUF2Zmw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@grpc/grpc-js": "^0.4.0",
|
"@grpc/grpc-js": "^0.4.0",
|
||||||
"@grpc/proto-loader": "^0.5.1",
|
"@grpc/proto-loader": "^0.5.1",
|
||||||
@ -1344,16 +1336,16 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "6.1.1",
|
"version": "6.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz",
|
||||||
"integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ=="
|
"integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"google-p12-pem": {
|
"google-p12-pem": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.1.tgz",
|
||||||
"integrity": "sha512-n8eGSKzWOb9/EmSBIh81sPvsQM939QlpHMXahTZDzuRIpCu09x3Oaqz+mXGjL4TeCvSbcnOC0YZRvjkJ9s9lnA==",
|
"integrity": "sha512-6h6x+eBX3k+IDSe/c8dVYmn8Mzr1mUcmKC9MdUSwaBkFAXlqBEnwFWmSFgGC+tcqtsLn73BDP/vUNWEehf1Rww==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"node-forge": "^0.8.0"
|
"node-forge": "^0.8.0"
|
||||||
}
|
}
|
||||||
@ -1364,9 +1356,9 @@
|
|||||||
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
|
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
|
||||||
},
|
},
|
||||||
"gtoken": {
|
"gtoken": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-3.0.2.tgz",
|
||||||
"integrity": "sha512-/bOZFfO6c+BC2IoOrvV+NKfEWQ1CCycrWG55Ix8ZfO/tTM0iGg9ojoQUWPbH5QS+vf+JoQYeTJ0zS+EDCP5M9w==",
|
"integrity": "sha512-BOBi6Zz31JfxhSHRZBIDdbwIbOPyux10WxJHdx8wz/FMP1zyN1xFrsAWsgcLe5ww5v/OZu/MePUEZAjgJXSauA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"gaxios": "^2.0.0",
|
"gaxios": "^2.0.0",
|
||||||
"google-p12-pem": "^2.0.0",
|
"google-p12-pem": "^2.0.0",
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dialogflow": "^0.10.0",
|
"dialogflow": "^0.10.2",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"ngrok": "^3.1.1",
|
"ngrok": "^3.1.1",
|
||||||
"path": "^0.12.7",
|
"path": "^0.12.7",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user