As we age, it becomes much more difficult to take care of our pets. Between making sure your pets are well fed, to walking the dog and even grooming, we could all use a little help with taking care of our furry friends. Pet Help is an Amazon Alexa skill that will help you find a dog walker, a new toy for your cat, and even help take your pet in to see a doctor in the event of an emergency by calling you an Uber to the nearest vet. It's the perfect companion for pet owners 55 and over.
What it does
Pet Help can help with the following tasks and duties in order to keep you supported as an aging pet owner:
- Find a groomer in your zip code: "Alexa, tell Pet Help to find me a groomer."
- Find the nearest vet: "Alexa, tell Pet Help to find me a veterinarian."
- Find the closest dog walker: "Alexa, tell Pet Help to find me a dog walker."
- Find someone to clean pet messes: "Alexa, tell Pet Help my dog made a mess."
- Help you order cat litter from Amazon: "Alexa, tell Pet Help my cat needs litter."
- Recommend dog & cat food: "Alexa, tell Pet Help my dog is hungry."
- Find a new toy for your furry friend: "Alexa, tell Pet Help my dog needs a new toy."
- Call you an Uber to the nearest vet: "Alexa, tell Pet Help my cat is having an emergency."
- Remind you to walk the dog: "Alexa, ask Pet Help to remind me to walk the dog in 3 hours."
Pet Help requests permissions to 1) set reminders on your behalf 2) know your device's address 3) access your phone number on file. These permissions are necessary so that the skill can perform many steps all in one invocation.
How we built it
Because I wanted all of the invocations to be done in one step for ease of use, the skill depends on getting permission to know the device location (to obtain zip code) and customer phone number. Within one command, I wanted the user to be able to find the highest rated business/person for to help with each task.
For the "pet emergency" invocation ("Alexa, tell Pet Help my cat/dog is having an emergency"), it only requires one command which does many things in the background in order to setup an Uber ride request for the user. For example, when you call this intent:
Pet Help gathers user contact/device location info -> use the Yelp API to find the top rated vet within a few miles max -> create an Uber ride request using the Uber API -> leverage the Twilio API to send the user this link to their phone as a text message.
Pet Help uses APIs from Uber, Yelp, and Twilio to pack all of the necessary features into this skill.
Need new cat litter? Pet Help can add this to your cart as well.
When you ask Pet Help to find a new toy for your cat or dog ("tell Pet Help my dog needs a new toy"), the skill will randomly choose out of a list of highly-rated toys and present you an option. You then have the ability to choose whether to add it to your cart. The intent that allows you to add cat food and dog food to your cart functions in a similar way.
Lastly, the skill can also remind you to walk the dog. Alexa already has a nice default reminders functionality built-in, but I wanted to add this feature as a "shorthand". For example, you can specify a time in hours or omit this for the skill to default to a reminder in 1 hour.
"Alexa, tell Pet Help to remind to walk the dog in 3 hours" "Alexa, tell Pet Help to remind to walk the dog" (This will create reminder in 1 hour by default).
Challenges we ran into
I wanted to use the pre-defined tasks listed in the Alexa documentation, but it appears that they are unfortunately only available to pre-approved developers. Coming across the AMAZON.ScheduleTaxi Reservation inspired me to come up with the idea of calling an Uber ride to the vet in case of emergency. This pre-defined task could open a whole new world of possibilities, but I had to find a workaround to accomplish this idea since I couldn't get access to use this feature. I wanted as little friction as possible when it came to this feature of the skill. I didn't want to have the skill ask for the user's phone number either, because it created an extra step. So, if you tell the skill, "Alexa, tell Pet Help my cat/dog is having an emergency", it will do the following behind the scenes:
- Query the Customer Profile API to find your phone number (this requires permission).
- Get the Device Address (once permission is granted).
- Send the zip code to the PHP script I wrote that returns the highest rated vet in the area using the Yelp API.
- Gather the vet's address info and use the Uber API to generate a ride request link that is sent using the Twilio API to send an SMS to the phone number found in the Customer Profile.
Accomplishments that we're proud of
I spent a lot of time on the development of this. I struggled initially to figure out the best approach and even tried using the "Alexa Conversations" feature to implement these ideas, but had to start over a few times in frustration. Another week's worth of work, and I was ready to submit.
What we learned
I learned a lot about using the Developer Console provided by Amazon for Alexa development. I found many of the features and documentations quite helpful in the development process. I also spent some time at the beginning of this idea reading about the needs of the aging population and how they can be best served.
What's next for Pet Help - Pet Chores Made Easy!
I'd like to implement the pre-defined AMAZON.ScheduleTaxi Reservation task which appears to be an even easier way to send a ride request to the Uber app, if I understand correctly.
I'd also like to expand on some of the product ordering capabilities of the skill. More options and more variation.
And finally, I'd like to incorporate user feedback on any essential chores that may be able to be handled by Pet Help. I'd like to make this the most in-demand skill, especially for pet owners over 55 in age.
Try it Out
The skill has been submitted for certification and I expect it to be available soon to the public. Alternatively, you can download the skill source from one of the "Try it Out" links below, which can be imported in the Alexa Developer Console.