簡體   English   中英

Alexa意圖不等待api響應

[英]Alexa intent is not waiting for the api response

我們正在使用alexa-app開發alexa技能,我們的目的之一是嘗試從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將針對此意圖說出“ Whatever”。

得到了解決我自己的問題:

代替這個:

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

您必須將其退回,例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM