Я работаю над навыком Alexa. В одном из своих намерений я делаю запрос get, используя библиотеки запросов.Я передаю функцию обратного вызова для обработки ответа, однако, если я делаю responsebuilder.speak внутри функции обратного вызова, это не работает.Если я помещу responsebuilder.speak за пределы обратного вызова, он будет работать, но он будет выполнен до того, как мой ответ будет готов.
При этом я получаю ошибку ниже: "message": "SpeechletResponse was null" Это имеет смысл, так как я думаю, что это должно быть за пределами функции обратного вызова, но как я могу заставить alexa говорить ответ на вызов после его завершения, если я не могу сделать это в рамках обратного вызова, я пробовал подобное выше, используя .then по запросу-обещанию.
const myTestIntent_Handler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest' && request.intent.name === 'getPsGames' ;
},
handle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
const responseBuilder = handlerInput.responseBuilder;
let sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
let say = 'Hola desde prueba ';
var finalstr = '';
req(options2, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(error + ' ' + response.statusCode);
say = 'response valido';
return responseBuilder
.speak('response valido desde callback')
.reprompt('try again, ' + say)
.getResponse();
console.log('final del callback');
}
})
}
};