Search code examples
alexa-skills-kit

Read from external file into variable for this.response.speak


I have the following intent for an Alexa Skill and I need to read a .txt file from an external URL into a variable for Alexa to say it. This is what I have so far...

 'PlayVoice': function() {
    var url = "https://example.com/myfile.txt";
    var output = 'Okay, here is the text file' + url;
    this.response.speak(output);
    this.emit(':responseReady');
  },

Obviously, the only thing it does now is to read the actual URL.

I have tried using fs.readFile but I just get an error in the Alexa Skill. This is the code I tried:

  'PlayVoice': function() {
    var content;
    fs.readFile('https://example.com/myfile.txt', function read(err, data) {
    content = data;
    this.response.speak(content);
    }
    this.emit(':responseReady');
  },

Any help on how to simply read a text file into a variable I can get Alexa to speak via this.response.speak?


Solution

  • You can use request package.

    something like this should help.

    var request = require('request');
    request('url/of/the/file', function (error, response, body) {
      console.log('error:', error); // Print the error if one occurred
      console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
      console.log('body:', body); // contents of your file.
    });
    

    source : https://www.npmjs.com/package/request#super-simple-to-use

    Also you'll need to add the package request to your skill's lambda. To do that install the request package in the folder where your code is (lambda_function.js and all other files). Then create a zip of all the files (not the folder in which your files are) and upload it to your aws lambda.