2017-08-15 2 views
0

J'essaie de faire une compétence Alexa et je me suis coincé en faisant le code backend dans AWS lambda. Fondamentalement j'ai une liste de villes et si l'utilisateur dit une des villes qui est sur la liste à Alexa elle est censée répondre cela, cette ville est valide. Ci-dessous j'ai ma liste de villes et aussi la méthode qui devrait être trier dans la liste pour trouver une correspondance.Liste de recherche dans nodejs pour la compétence Alexa

var data = [ 
    "San Mateo.", 
    "San Francisco.", 
    "Palo Alto.", 
    "Redwood City.", 
    "New York.", 
    "Boston.", 
    "Chicago.", 
    "La Jolla.", 
    "San Diego.", 
    "San Carlos.", 
    "San Bruno." 
]; 

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

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

    'GetNewFactIntent': function() { 
      var cityName = this.event.request.intent.slots.value; 
      var factArr = data; 

      for(var i = 0; i < factArr.length; i++){ 
       if(cityName.equals(factArr[i].value)){ 
       this.emit(":tell", LYFT_IS_AVALIABLE); 
       } 
      } 

      this.emit(":tell", LYFT_NOT_AVALIABLE); 
     } 
} 

Répondre

0

Alors juste une astuce rapide que vous ne demandez pas vraiment une question, vous venez de coller un code et dit ce que vous vouliez réaliser, c'est pourquoi quelqu'un signifie que vous downvoted.

Donc ce que vous êtes après est la notation par points en supposant le tableau que vous avez là la liste que vous pouvez faire:

var data = [ 
    "San Mateo.", 
    "San Francisco.", 
    "Palo Alto.", 
    "Redwood City.", 
    "New York.", 
    "Boston.", 
    "Chicago.", 
    "La Jolla.", 
    "San Diego.", 
    "San Carlos.", 
    "San Bruno." 
]; 

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

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

    'GetNewFactIntent': function() { 
     var cityName = this.event.request.intent.slots.value; 

     // this is like doing data['San Mateo.'] 
     if(typeof data[cityName] !== 'undefined'){ 

      this.emit(":tell", LYFT_IS_AVALIABLE); 

     } else { 
      this.emit(":tell", LYFT_NOT_AVALIABLE); 
     } 
    } 
} 

Vous pouvez également utiliser console.log (somevariable) dans Lambda et d'examiner le résultat en CloudWatch Logs - FYI Vos villes ont besoin du '.' à la fin?