I enjoy using the Devpost hacks to learn new things. One thing I've never done before is try to integrate an API with Alexa. The FordConnect API is in early development, so it doesn't have a bunch of features yet like vehicle health or push notifications; so many of my ideas weren't possible. When I thought about the features available from the API, almost all of them fit nicely into being integrated into voice automation.

What it does

The "My Ford" skill is an Alexa skill that communicates with the FordConnect API to automate your vehicle. Just say "Alexa, open My Ford", and the skill we will reply with "Welcome to My Ford. How can I help?" Then say what you want to do:

  • "Start vehicle.", "Cool the car", etc. will start the vehicle (the API doesn't let us cool it, but hopefully the car will be smart enough to automatically cool if its hot once the engine is on.)
  • "Lock the doors on my Ford."
  • "Unlock car."
  • "Find the vehicle." or "Where is the truck?" finds the GPS coordinates then it figures out what address it is.
  • "Is the tank empty?"
  • "Is the car plugged in?"
  • "When will my car be charged?" tells you the current charging schedule.
  • "Begin charging." will start charging now, instead of waiting for the schedule.
  • "Good night" will let you sleep comfortably -- knowing the doors are shut, the alarm is on, the car is plugged in or remind you how much fuel is in your tank so you know if you need to get up early and swing by the gas station.

How we built it

There are two components to this project.

  • The first component is an Alexa skill (my-ford-skill) which registers a bunch of voice commands and ends up invoking the second component to do the heavy lifting.
  • The second component is an Express server built in Nodejs (my-ford-service) which listens for intents and then invokes the FordConnect API.

Challenges we ran into

Alexa has a non-configurable timeout of 10 seconds, so you have to respond before then. The APIs can be sluggish at times, so I had to try to tune the retry timeouts and make multiple calls in parallel to complete within my 8 second SLA.

Accomplishments that we're proud of

It works! You can control the vehicle with your voice.

I learned how to make an Alexa skill, which was surprisingly easy. A also learned a little about AWS in general, as I poked around to understand the components that were deployed.

What we learned

I learned about Alexa skills and lambda functions.

What's next for My-Ford (Alexa powered Ford)

Add multiple users.

Share this project:


posted an update

I used my step-brother's (Mr. Austin) Ford Ranger to make this short demo video...

I know it's technically the same thing, but for some reason I think it is super cool to see Alexa actually work on a vehicle instead of just console output. I deployed a second copy of the "My Ford" skill named "Austin Powers" skill which sends the Alexa data intents to a different copy of the my-ford-service which has his actual vehicle registered with the account.

I really wish Alexa didn't have a "10 second rule" for interactions! This code is running right on the edge of that timing, so it sometimes times out and you have to run the skill again. I registered for the one day Amazon conference which happens to be this Wednesday, so hopefully I can learn how to make this Alexa skill production quality and handle when the FordConnect API is a couple seconds slower than its typical response time.

Log in or sign up for Devpost to join the conversation.