Alexa node js (alexa-app-server) response.say не выводит речь

У меня возникли проблемы с попыткой вывести речь после получения данных с использованием запроса-ответа и их обработки. По какой-то причине в функции обратного вызова он не выводит текст. console.log(prompt) работает, а response.say(prompt).shouldEndSession(false).send() - нет. Если у вас есть какие-либо идеи, это будет очень признательно.

test.getNumberStatus(number, function(err, message) {
    console.log("In callback outside if statement");
    if (err == null) {
      console.log(message);
      response.say(message).shouldEndSession(false).send();
    } else {
      console.log("Error");
      rresponse.say(message).shouldEndSession(false).send();
    }
  });

stopInfo.prototype.getStopStatus = function(stopNumber, callback) {
  var options = {
  method: 'GET',
  uri: ENDPOINT + '?stopid=' + stopNumber + '&maxresults=1&format=json',
  json: true
};

requestPromise(options).then(function(stopStatusObject) {
if (true) { // check if error from dublin bus
  console.log(stopStatusObject);

  var template = _.template('busstopinfo <%= error %>');
  var message = template({
      'error': 'test'
  });
  callback(null, message);
}
}).catch(function(err) {
var message = "I didn\'t have data for stop number " + stopNumber;
callback(err, message);
});
};

person james    schedule 01.05.2017    source источник
comment
С помощью тестового примера я обнаружил, что когда используется запрос-обещание, он не работает, но если я его убираю, он работает, но я все еще не знаю, как это исправить.   -  person james    schedule 01.05.2017


Ответы (1)


У меня была аналогичная ситуация, и я обнаружил, что разрешение автоматически отправляет ваш вывод, который работает для синхронизации, но не для асинхронности. Поместите add response.resolve в свою проблемную функцию, чтобы увидеть, установлено ли значение true до send(). Если вы уже использовали обещание. Я исправил свой, поместив return перед именем функции, следуя разделу примеров асинхронных обработчиков из здесь

person David Ricciardelli    schedule 25.05.2017