Невозможно использовать результаты вызова API в разговоре - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь использовать результаты вызова API в разговоре, но не смог передать результаты, чтобы я мог использовать их в conv.ask.В приведенном здесь примере я могу записать «wind inside», но когда я пытаюсь использовать его в conv.ask, я получаю «undefined».Я знаю, что это масштабная проблема, но я не смог ее решить.Спасибо!

app.intent('weather', (conv) => {

  var url = "http://api.wunderground.com/api/"+apiKey+"/yesterday/q/55417.json";

  var request = http.get(url, function (response)  {

    var buffer = "",
      data,
      history;

    response.on("data", function (chunk) {
      buffer += chunk;
    });

    response.on("end", function (err) {

      console.log(buffer);
      console.log("\n");
      data = JSON.parse(buffer);
      history = data.history;

      var wind = (history.dailysummary[0].maxwspdi);

      console.log("wind inner: ", wind);//this works

    });
  });

  conv.ask("the wind speed is" + wind + "miles per hour");

  //unable to get the wind variable to be defined ouside the api call

});

1 Ответ

0 голосов
/ 29 октября 2018

Вы должны использовать Обещание для возврата асинхронных ответов.Кроме того, обязательно дождитесь получения данных ответа для генерации текста в речь.Вот фрагмент кода, который должен работать.

app.intent('weather', (conv) => {
  return new Promise((resolve, reject) => {
    const url = "http://api.wunderground.com/api/"+apiKey+"/yesterday/q/55417.json";
    const request = http.get(url, function (response)  {
      var buffer = "",
        data,
        history;

       response.on("data", function (chunk) {
         buffer += chunk;
       });

       response.on("end", function (err) {
         console.log(buffer);
         console.log("\n");
         data = JSON.parse(buffer);
         history = data.history;
         const wind = (history.dailysummary[0].maxwspdi);
         console.log("wind inner: ", wind);//this works
         conv.ask("the wind speed is" + wind + "miles per hour");
         resolve();
      });
    });
  });
});
...