aws-lambdaalexa-skills-kitalexa-voice-serviceamazon-echo

Amazon alexa skill development


I am creating a custom skill for Alexa Echo with my existing service.
The service has lots of functionality in it which serves a different purpose.
I want my skill to serve all these functionalities.

All the services are HTTPS POST service which accepts JSON RAW body request and provides result in JSON.

Q1. Can I use each functionality from my skill like a separate intent?
Q2. Should I use Lambda or I can directly hit my services?
Q3. If Lambda is used, can I construct the desired payload and send to my service and fetch and parse my response?
Q4. Using Lambda a paid service?
Q5. Can same be done directly without using Lambda? If yes how?
Q6. Are there any video tutorials for both approaches?


Solution

  • Q1. Can I use each functionality from my skill like a separate intent?

    An intent is a spoken phrases. It it makes sense for each function of your service to be asked for separately, then sure, split it up that way. You should really come up with your audio model first. Then fit your service to the audio model. That will give you the most intuitive design.

    Q2. Should I use Lambda or I can directly hit my services?

    Read the docs. Alexa can talk to a Lambda endpoint or a HTTPS endpoint. If your services has a HTTPS endpoint with the rather specific requirements Alexa has, you can use it directly if you follow their protocol. Since their requirements are rather cryptic, most people use Lambda to proxy to their services.

    Q3. If Lambda is used, can I construct the desired payload and send to my service and fetch and parse my response?

    Lambda is just code. You can do anything in it that you can do with code. So, sure, you call call into anything. However, you do have a strict time budget. Whatever you do need to return before Alexa times out. You only have about 6-8 seconds, so you need to manage what you do carefully.

    Q4. Using Lambda a paid service?

    Lambda has a very generous free tier. Something like 100,000 requests. Alexa tends to be very low volume. If you get a few hundred requests a day you are doing well. So you are unlikely to blow through your free tier.

    Q5. Can same be done directly without using Lambda? If yes how?

    It doesn't matter if you use Lambda or HTTPS. Both have the same interface. It's just that you control your hardware back end for HTTPS and have more flexability.

    Q6. Are there any video tutorials for both approaches?

    It's not really the sort of thing that lends itself well to video. But here is a video I've done of a presentation on general design and development for Alexa.