Have you ever missed the Ice Cream Truck as it passed by your house? No more! With Ice Cream Pronto, Alexa will notify you when the truck is near. You can also request to be added to their route or notify the truck while in route.
I drove an ice cream truck last summer for the first time with my kids and realized times have change since I was a kid. I noticed very few kids playing out in the street. In fact very few kids outside at all. While driving through a neighborhood, we found very few customers. Through my rear-view mirror as we would leave the neighborhood, I would notice customers walk out. There were customers, but it took them longer to come out. They had much less warning because they could not hear the Ice Cream Truck Music indoors until it was too late. The simple solution seemed to be circle the neighborhood to give them more time, but this also had the side effect of annoying those that didn't want to hear ice cream music. I my self have also fall victim to missing the Ice Cream Truck because the short notice.
There had to be a better way. And that's what inspired the creation of Ice Cream Pronto.
What it does
Ice Cream Pronto allows you to get a notification on your Alexa device when an Ice Cream Truck is near. You can also request the Ice Cream Truck to stop by your neighborhood. The notifications are like the traditional Ice Cream Truck music for the digital age at a personal level.
The Ice Cream Truck driver then can turn on broadcasting. The driver uses the web app with GPS enabled on a mobile device. When the truck drives near a house with an Alexa subscribed to the notification it will trigger their notification. The customer can also request that they be include in their route. This can also work to ping a truck that may have just passed by.
Say "Open Ice Cream Pronto". It will then ask if you want notification. It will ask for your address and confirm it, then ask if you want notifications. Once does it will send the data to the Ice Cream Truck to include them in their route.
How I built it
VS Code as the developer environment. I used node.js and the Alexa SDK. The dialog was controlled by Alexa Conversation API. Most of this work was done the the Alexa web console. After getting the dialog working, I refactored the code to listen to the Conversations API handler. This refactor from the traditional way with multiple intent handlers reduce my code base by 70%. The Alexa handler are coded in node.js and hosted using Alexa self hosting provided with new projects rather than a separate AWS project. This simplified the lambda setup process. The node.js code was coded in VS Code and push to production via git. The git repo was also set up by the Alexa dev web console. The db service to the Ice Cream Pronto is done in .net core and ms sql. The Conversation API handler called the back end service once the dialog was complete, rather than ever step of the dialog not using Conversation API.
Challenges I ran into
I planned on configuring everything in VS Code, but many parts of the config for Conversation API had to be done in the Alexa web console. It took a bit to understand how to set up a Conversation dialog so I just followed the lesson walk through they provide. After finishing it, it started to make much more sense, but until then I was walking blind.
The notifications also challenged this solution. The notifications are very structured in their wording not allowing free test for notifications. In the end I found a notification template that mostly fit my needs.
Accomplishments that I'm proud of
This is the first time I got notifications working on Alexa. I had something miss configured with the dialog conversation and it was talking out of order and repeating itself and I almost gave up. Once the dialog bugs were worked out, the flow seems turned out much smoother than I expected and it all made sense.
What I learned
Conversation API, Notifications (Alexa Proactive API), and a cleaner work flow using Alexa ASK CLI.
What's next for Ice Cream Pronto
Promoting Ice Cream Pronto to local Ice Cream Trucks.