Alexa is a voice interface, and a pretty good one at that. I use it primarily for home automation and it works pretty well for that. There is not much intelligence behind it in that regard, but it's very good at recognizing commands, which is what is needed.
I'm not sure how common the knowledge is around making an Alexa skill, but I made one as a side project so I might have some insight.
You define a bunch of variables, and describe what form they are likely to come in (number, data, US city, list of strings). It's not strictly bound to any enumeration you use. Then you list out a bunch of phrases that people are expected to say to activate a function. You can pepper the variables into these phrases. Then you link these phrases to functions, which receive the variables as parameters. What you do from there is up to you.
I would say it's a clever way of gradually reducing the complexity, but it does result in putting the "conversation" complexity on the developer. There is no "state" or compound queries unless the developer thought of the conversation going that way.