Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to store the data for the Alexa skill I am developing?

I am currently developing an Alexa skill based on health care. So I need to store information about diseases, their diagnosis and symptoms. I have made a basic skill including information about one disease in a file, made a zip file, uploaded it to AWS Lambda and got certified by Amazon. Now I need to make this more extensive where I need to have information about many diseases. Where can I store this huge data and how to retrieve it from my Lambda function? If using DynamoDB is the right way, then how to retrieve data from there from my Lambda function? Or Is there any other better way?

like image 507
Sankaranarayanan G Avatar asked Jun 17 '16 06:06

Sankaranarayanan G


People also ask

How is Alexa data stored?

The Alexa system is connected directly to Amazon's massive private servers. The servers are equipped with state-of-the-art technology that allows every individual Alexa customer to have their own account with their own files. The data about your grocery list is saved next to your favorite music.

Where is Alexa information stored?

By default, Alexa records everything you say, and those commands are stored on your Alexa account.


2 Answers

You'll likely need to set up account linking on your skill first. It can be a bit of a process, but check out this page here. I would suggest using Google or Amazon as your OAuth provider.

Account linking allows you to associate a particular user and their echo with an entry in a database you own. So after you have a user linked up with your database, you have two options.

Option 1 is (I believe) you can query your database directly from the Lambda service using any of the available languages.

Option 2, set up a web service that can get and set information in the database using some sort of RESTful service, and then make calls to that service instead.

It's not easy to get this kind of thing done, but It's very possible.

Edit: In addition, if you're looking to provide information on a lot of diseases, consider researching if there is an already available database of diseases, and if APIs exist to access it. This could save a lot of time for you.

like image 96
master565 Avatar answered Oct 03 '22 17:10

master565


DynamoDB seems to be the easiest way. Just add the aws-java-sdk-dynamodb dependency and interact with the database using AmazonDynamoDBClient if you are using Java. You can just define the tables that you want using @DynamoDBTable annotations. Go to https://console.aws.amazon.com/iam/home?#roles and create a role and add permission AmazonDynamoDBFullAccess permission and you are all set.

like image 45
Vishnu Avatar answered Oct 03 '22 17:10

Vishnu