Home

Awesome

Sample Phrases

Alexa, tell Uber to pick me up.

Alexa, ask Uber how far away the nearest car is.

Alexa, ask Uber where my car is.

Alexa, ask Uber if it is using sandbox. (Debugging Info)

Setup

  1. All configuraton and user-specific variables are handled inside of config/default.json. Copy config/sample.json to config/default.json and fill out the appropriate fields. You will need to provide all of your API keys. For Uber, you will need a valid token from oAuth2.0 which is currently up to you (see below in the README for how to do this). Optionally add a Forecast.io weather API key (Weather.api-key).
{
  	"Uber": {
		"client_id": "required",
		"client_secret": "required",
		"server_token": "required",
		"redirect_uri": "optional",
		"access_token":"required",
		"sandbox" : true
	},
    "Alexa": {
		"location": { "latitude": required, "longitude": required },
		"lambda-arn" : "required"
    },
    "Weather" : {
    	"api-key" : "optional"
    }
}
  1. Create a new Alexa skill and use the provided info in interaction-model.txt for your Intent Schema and Sample Utterences, as well as Custom Slot Types.

  2. Upload code to your lambda function. gruntFile.js has been configured to upload to you Lambda function. You can deploy to Lambda using grunt deploy. See https://github.com/Tim-B/grunt-aws-lambda for more info

  3. Configure lambda function. Make sure you set the handler to skill.handler and add an Alexa Skills Kit event source.

Uber Authentication

Uber requires authentication using OAuth2 which is a pain to deal with. I was able to get my auth credentials using a blog post from a Hackathon of theirs. They link to sample code on GitHub for a Python OAuth library, but there is a bug in their code where they do not ask for the request permission which is needed to call an Uber. Until my pull request is accepted, you might want to run my fork of the library.

Getting your Uber auth token

  1. Follow steps in their tutorial to get the Python app running. Note that on step 2 of their instructions, we want the request permission in addition to the history and profile.
  2. Visit http://localhost:7000 in your web browser, which will re-direct you to the Uber auth page and then re-direct you back to the localhost server.
  3. Once authenticated with Uber, you will see an auth token in the browser. This is what you need to use in the Alexa skill in order for Alexa to speak with the Uber API.

Making this easier

This server could be shared with everyone wishing to use this skill. Perhaps someone can set it up on Heroku.

Notes