В прошлом я обнаружил, что такие запросы API будут засорены, потому что они не являются синхронными, как сказал Дэвид. Чтобы решить эту проблему, мне пришлось заправить запрос обещанием, чтобы он разрешился, что-то похожее на это в вашем случае:
Измените свою функцию, чтобы она содержала обещание:
function getData = function() {
const url = "https://api.nasa.gov/planetary/apod?api_key=<key>"
console.log("inside get data")
return new Promise(function(resolve, reject) {
request.get(url, function (error, response, body) {
if (err) {
reject(err);
}
if (body) {
resolve(JSON.parse(body));
}
});
});
}
Затем измените ваш обработчик намерений, чтобы использовать обещание:
//Entering our main, part finding function
'GetAPOD': function () {
getData()
.then(function(body) {
let speechOutput = body;
intent_context.response.speak(speechOutput).listen(speechOutput);
intent_context.emit(':responseReady');
}
Что-то в этом роде. Вам нужно будет немного поиграть с ним, чтобы убедиться, что результаты получаются в соответствии с вашими намерениями. Надеюсь это поможет.
D