Although not required, if you choose to host your Alexa Voice Skill with AWS, you are already probably already familiar with Lambda functions. As you learn them, you realize they are powerful yet sometimes feel like they are missing something. There is a reason for this. Lambda functions are meant to provide computing power efficiently without having to worry about scalability. That is it! There are other services available to help round out additional services we might need.
Every service in AWS is super focused on one feature. There are many other AWS services that can be used from your Alexa Voice Skill. There are storage services, database services, messaging services and even a set of artificial intelligence services. You only need to use the ones your Alexa Skill needs.
True, sometimes the huge number of services available make it difficult to know exactly where to start. Let's take a look at the important ones.
Alexa Skills have the built in ability for text to speech, where your skill returns text which is then heard from the device. Using a special markup language called SSML, you can embed references to digital audio files that will be played along with the spoken text. The example will show you how to write the code. It does not go into detail about hosting the digital audio through S3, but you can find that here. You will likely need to use Audacity (free) to convert the audio into the correct format. This gives your skill something different. Maybe you just want some custom sounds. Maybe you would like to use pre-recorded audio to create a different sounding voice.
You can do this. To add your own sound effects you can use the S3 storage solution (which is short for Simple Storage Service) to store the digial audio file. The TidePooler example demonstrates how to use S3 to store your audio files and how to reference them from SSML.
Storing Session State
Another AWS service you might want to use is DynamoDB. This is a NoSQL database service for storing key-value pairs. A Lambda function has no way of keeping track of a user between invocations. As a result, if you want the ability for a user to come back to a skill at some time later and pick up where they left off, you need some way to persist that data. The ScoreKeeper example shows how to use the DynamoDB service to store data between sessions, so that users can resume where they left off.
Calling Web Services
Another useful feature sometimes necessary in an Alexa Voice Skill is the abilty to call a web service. This applies to calling anything on the web, not just AWS. You might have a skill that wants to pull the latest weather information. Or, you want the skill to pull the information from your own web site. There are a couple of examples, including History Buff (calls Wikipedia), Savvy Consumer (communicates with Amazon associates API), and Tide Pooler (returns tide information from National Oceanic and Atmospheric Administration REST web service). Reviewing the examples shows you how you could do someting similar in your Alexa Skill.
Over time, you'll see how AWS is designed to be an incredibly distributed system that you can make use of in many ways. It is pretty cool that Alexa Voice Skills can leverage this power.