When I saw the example Alexa conversations skill on Devpost, I was really inspired by that. The pizza ordering seemed like talking to a real person and asking for a pizza. At that time, I decided that I'll also make something where user will get an experience of talking with a real person.
What it does
When we go to bakery, there are few things common that we do like looking whats available, looking at the prices, then shortlisting what we want, then further deciding what type we want of the item that we shortlisted. We then take things one by one. We may also decide to remove something from our bucket that we took. In the end we checkout.
At "Say It Bakery", you get all that experience without going to bakery. Whats more? You have freedom of asking whatever you want multiple times without the hesitation of asking same question again and again. Currently, in the skill, cash on delivery is the only way to pay for the order.
How I built it
I built it by mostly using "Alexa Conversations" (also default dialog manager). Its Alexa hosted skill with node.js back-end using S3 Persistent Storage as a database. Different API are called for operations like adding a specific item to cart, removing items from cart, listening to the menu, etc. Alexa gathers required attributes (if required) and call appropriate API, which then return relevant response and Alexa speaks that out.
Challenges I ran into
There were many. Understanding how the alexa skill works (as I didn't have alexa skill development experience before) was the first challenge. Its worth to mention that tutorials and specially pizza reference skill helped me a lot to understand how skills work. I was also confused what are dialog managers, what we mean by delegating to other dialog manager but all that got cleared with time. One more challenge was decided how to keep data even after the session. Then found S3-Persistent storage and used it as DB where I had to manually write code to search through the document and find/add/update/remove the relevant entity. Finding a way to make sure that only valid slot values are passed was also a challenge. So, made different slots, api etc and was able to achieve that somehow. There were many more :)
Accomplishments that I'm proud of
I am proud of making what I initially thought of. Though it might not have all those features I thought of initially (also because of Alexa Communication limitations) but I have pretty much achieved the main features. that will add fun plus productivity. Ordering just by saying will not only save people time but also make the experience enjoyable.
What I learned
Learning was one of the reason I participated in this Hackathon. Having no experience of Alexa Skill development, I thought its a good time to jump in. I learned about differences between intent based and conversation based skills, learned about S3-Persistence technique to use it as a database. Also learned some node.js. Overall, there were many things to learn.
What's next for Say and Bake
More features can be added to this. For example giving discounts to customer if order total amount exceeds a specific value, asking users about the feedback, adding more items, recommending things to user, providing details about different items etc.