2016-08-17 1 views
0

alors j'essaye de faire une compétence Alexa dans node.js - cependant, je n'arrive pas à comprendre comment définir un élément json. J'ai besoin de joindre tous les éléments, dans ce cas ce sont des titres d'une API de nouvelles. Je les ai tous console.logg'ed et cela fonctionne, mais tout ce que je dois faire est de comprendre comment faire de "title" une variable. Comment puis-je faire "title" une variable pour inclure tous les titres du fichier JSON. Voici mon code:Définir JSON dans node.js

var Alexa = require('alexa-sdk'); 
var request = require('request'); 

var APP_ID = "amzn1.ask.skill.36267067-d40c-460c-b07b-cc603b97be1b"; 
var url = "https://newsapi.org/v1/articles?source=googlenews&sortBy=top&apiKey=6e23e1ddb67e40cb93cf147718f18e36"; 


var handlers = { 
    'LaunchRequest': function() { 
     this.emit('NewsIntent'); 
    }, 

    // Get titles from JSON URL & Output it 
    'NewsIntent': function() { 

     request({ 
      url: url, 
      json: true 
     }, function (error, response, body) { 

      if (!error && response.statusCode === 200) { 
      console.log(body.articles[0].title); 
      console.log(body.articles[1].title); 
      console.log(body.articles[2].title); 
      console.log(body.articles[3].title); 
      console.log(body.articles[4].title); 
      console.log(body.articles[5].title); 
      console.log(body.articles[6].title); 
      console.log(body.articles[7].title); 
      console.log(body.articles[8].title); 
      console.log(body.articles[9].title); 

///// I need help here!!!!! ----> 
     /// need to define title, so I can speech emit it below. 

      this.emit(':tellWithCard', title.join('')); 

      } 
     }); 

    } 
}; 


exports.handler = function(event, context, callback) { 
    var alexa = Alexa.handler(event, context); 
    alexa.APP_ID = APP_ID; 
    alexa.registerHandlers(handlers); 
    alexa.execute(); 
}; 

Répondre

0

itérer sur le tableau articles avec map alors ils peuvent être rejoints plus tard.

var titles = body.articles.map(function(article) { 
    return article.title; 
}); 

Note: si l'un des titres sont non définie qui montrera dans la jointure.

MISE À JOUR: Basé sur l'essentiel dans votre commentaire, vous pourriez faire quelque chose comme:

var handlers = { 
    'LaunchRequest': function() { 
    this.emit('NewsIntent'); 
    }, 

    // Get titles from JSON URL & Output it 
    'NewsIntent': function() { 

    request({ 
     url: url, 
     json: true 
    }, function(error, response, body) { 
     var titles; 
     if (!error && response.statusCode === 200) { 
     console.log(body.articles[0].title); 
     console.log(body.articles[1].title); 
     console.log(body.articles[2].title); 
     console.log(body.articles[3].title); 
     console.log(body.articles[4].title); 
     console.log(body.articles[5].title); 
     console.log(body.articles[6].title); 
     console.log(body.articles[7].title); 
     console.log(body.articles[8].title); 
     console.log(body.articles[9].title); 

     titles = body.articles.map(function(article) { 
      return article.title; 
     }); 

     this.emit(':tellWithCard', titles.join('')); 
     } 
    }); 

    } 
}; 
+0

donc, ce travail ?? serait Merci pour votre aide https://gist.github.com/samayshamdasani/f6e2ce356c7ccd13fc0c8e3c919e929c –

+0

@SamayShamdasani Découvrez la mise à jour. –