question

newuser-a3e2d01e-8a8a-44e8-a38c-155d0ce73e81 avatar image

How to link my alexa flash briefing to my S3 folder

I'm completely new at this. i'm creating an alexa flash briefing skill and under configuration i'm trying to link the URL for my mp3 file thats stored in my bucket on the amazon S3. My problem is I'm not familiar with creating an RSS or JSON feed. Can anyone point me in the right direction or give me the steps do this. greatly appreciate any help. Thank you

alexa skills kitflash briefing
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

Brian@Amazon avatar image
Brian@Amazon answered

So broadly you need to create something that complies to this interface: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/flash-briefing-skill-api-feed-reference

If you just need one file and you're uploading new ones into an s3 bucket, a great way to do this would be to use a lambda function that is triggered by s3 uploads. Use something like boto3 or the node aws-sdk to create and upload a file based upon the file name of the latest file. I'd recommend using json. Make sure to set your content header type to Content-Type:application/json Also make sure your date is in the proper format.

Once it creates the file it uploads it to the s3 endpoint which you refer to in your feed, updating it with a fresh date, content, and mp3 url.

3 comments
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hey Brian, I have tried this approach and set my bucket to public, however, when my lambda writes the json file, it doesn't write it with public permissions and my flash briefing cannot access it. Any docs on managing IAM policies for Alexa?

0 Likes 0 ·
Jamie Grossman avatar image Jamie Grossman ♦♦ newuser-1e4ed01b-50f8-4cd3-a7b4-be77037f18f6 ·

Did you solve this one? Otherwise, I'd suggest posting a new thread with more info specific to your issue.

0 Likes 0 ·
Robert G Schaffrath avatar image Robert G Schaffrath newuser-1e4ed01b-50f8-4cd3-a7b4-be77037f18f6 ·

You do not need to make the bucket public (which is not a good idea anyhow). When you upload your object to S3, you need to set the "ACL" field of the upload parameters object to "public-read":

  const params = {
    Bucket: bucket,
    Key: key,
    Body: body,
    ACL: "public-read"
  };

The documentation at https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property is very good.

0 Likes 0 ·