Я пытаюсь получить значения из mongo db и заполнить полученные значения в ответе симулятора alexa.
Используемая версия alexa sdk является последней версией v2.0, ask-sdk.
Тестирование проводилось как с использованием alexa-skill-local, так и с использованием лямбда-функции.
Приведенный ниже оператор возврата работает, как и ожидалось
return handlerInput.responseBuilder
.speak("test")
.reprompt("test")
.withSimpleCard('Innovation details', "test")
.getResponse();
Результат сприведенный выше оператор возврата показан ниже
{
"body": {
"version": "1.0",
"response": {
"outputSpeech": {
"type": "SSML",
"ssml": "<speak>test</speak>"
},
"card": {
"type": "Simple",
"title": "Innovation details",
"content": "test"
},
"reprompt": {
"outputSpeech": {
"type": "SSML",
"ssml": "<speak>test</speak>"
}
},
"shouldEndSession": false
},
"sessionAttributes": {},
"userAgent": "ask-node/2.3.0 Node/v8.12.0"
}
}
Я написал функцию ops (), которая будет извлекать значения из mongodb, размещенного в облачном атласе.Полученная строка будет использоваться в качестве речевого текста и повторного текста.Но так как javascript асинхронный, и в него вовлечены вызовы mongoose, я попытался написать функции async / await, а также функции обратного вызова и, наконец, обещать функции для возврата значения db.Вызовы db находятся внутри объекта обещания, а оператор return находится внутри .then (), как показано ниже.Операторы консоли заполняют правильные результаты в консоли при запуске с использованием alexa-skill-local, и об ошибке не сообщается в консоли.Запуск через лямбда-функцию также не приводит к ошибкам.
ops(handlerInput).then(function(data){
console.log("in promise then "+data.speechText);
var handlerInput=data.input;
return handlerInput.responseBuilder
.speak(data.speechText)
.reprompt(data.speechText)
.withSimpleCard('Innovation details', data.speechText)
.getResponse();
}) .catch(error => console.log(error));
Переданный объект разрешения:
var passer={
"input": handlerInput,
"speechText":speechText
};
При использовании alexa-skill-local операторы консоли работают должным образомно оператор return не возвращает значение симулятору alexa.Возвращается JSON как
{
"body": {
"version": "1.0",
"response": {},
"sessionAttributes": {},
"userAgent": "ask-node/2.3.0 Node/v8.12.0"
}
}
Пожалуйста, помогите мне вернуть значения в симулятор alexa