Motivation

After waiting for years for Notifications to arrive for Alexa, the reminders-api has finally been made available to developers. People have struggled to implement skills that notify the user with often a very poor user experience. This skill provides a very good user experience- it makes it look easy but under the covers it's still quite involved.

What it does

The user can add birthdays using the name of the birthday person and birthday date plus the time the alert should go off. Running the skill on a different echo device allows the user to add the alert optionally or not to that device. Adding a birthday with the same name results in the ability to update the date and time of an existing birthday. Every years a birthday has to be renewed and this is simply dealt with by the software. Every new user gets 5 free birthdays for life on any number of devices. If he/she wants to add more than 5 birthdays, then he/she can buy packs of 5 additional birthdays using a consumption ISP model.

How I built it

The skill is built using NodeJS and Dynamo DB with extensive use of both manual and auto delegation to collect the data from the user. It also uses APL for the display for echo devices with screens.

Challenges I ran into

The hardest part was dealing with multiple devices as the deviceIds are not contained in the ReminderAPI data structures. We therefore had to have another saved data structure to do the mapping between tokens, deviceIds and the birthday names. We also had problems with consistently recognising the names of the birthdays - because of this we used the dynamic slots feature which allows us to send the front end the list of possible names in the current birthday list.

Accomplishments that I'm proud of

I believe I've made the user interface very simple. You just say "add a birthday for a name on a date" and it's as simple as that. Under the covers the software gets very complicated dealing with multiple devices but all that is hidden from the user.

What I learned

I used to write Skills using Java. My last skill was a mixture of NodeJS and Java with my own backend. In this skill I've migrated in NodeJS only with DynamoDB for personalisation.

What's next for Birthday Alerts

In the next version I intend to add learning what time the user likes for the alert and offer that as an option rather than saying it explicitly every time as currently.

Built With

Share this project:

Updates