Alexa намерение не ждет ответа API

Мы развиваем навык Alexa с помощью alexa-app, в одном из наших намерений мы пытаемся получить альбомы из Facebook, и в случае успеха/неудачи мы хотим, чтобы Alexa реагировала соответствующим образом. Но намерение не в ожидании завершения вызова FB. Ниже приведен фрагмент кода, который мы используем:

function fetchAlbums(){
  return new Promise(resolve =>{
   FB.api("/me/albums", function (res) {
    if (res && !res.error) {
        // If we have data
        if (res.data) {
            resolve("Got Albums");
        } else {
            // REPORT PROBLEM WITH PARSING DATA
            resolve("Error getting albums");
        }
    } else {
        // Handle errors here.
        resolve("Error hitting endpoint");
    }
  });
 });
}

alexaApp.intent("readFeedIntent", {
  "utterances": [
    "read my facebook feed", "read facebook feed", "read feed"
  ]
},
function(request, res1) {
  // Again check if we have an access token
  if(request.hasSession() && !accessToken){
   accessToken = request.data.session.user.accessToken;
   FB.setAccessToken(accessToken);
  }
  if (accessToken) {
    var session = request.getSession();
    fetchAlbums().then(function(data){
        console.log(data);
        res1.say(data);
    });
  } else {
    res1.say(noAccessToken, tryLaterText).send();
  }
});

Он не выдает никаких ошибок, но Alexa ничего не говорит, где я могу увидеть ответ в журналах консоли.

Если я добавлю: res1.say("Whatever!") в конце функции, то Alexa будет говорить «Что угодно» в ответ на это намерение.


person Hamza Arshad    schedule 11.10.2017    source источник


Ответы (1)


Решил сам:

вместо этого:

fetchAlbums().then(function(data){
      console.log(data);
      res1.say(data);
})

вы должны вернуть его, например:

return fetchAlbums().then(function(data){
      console.log(data);
      res1.say(data);
})
person Hamza Arshad    schedule 11.10.2017