Sometimes, you find yourself without Internet or data and really need to call a Lyft. Lyff lets you call a Lyft with just a quick phone call!
Users can call 1-888-970-LYFF, where an automated chatbot will guide them through the process of ordering a Lyft to their final destination. Users can simply look at the street name and number of the closest building to acquire their current location.
We used the Nexmo API from Vonage to handle the voice aspect, Amazon Lex to create a chatbot and parse the speech input, Amazon Lambda to implement the internal application logic, the Lyft API for obvious reasons, and Google Maps API to sanitize the locations.
- Python
- Google Maps Geocoder API
- Nexmo API
- Amazon Lex
- Amazon Lambda
- Lyft API
This app was built at PennApps Fall 2017 by Akash Levy, Zachary Liu, Selina Wang, and David Fan. Awarded Best Use of Vonage/Nexmo API! See our DevPost page: https://devpost.com/software/lyff
-
Clone this repository
-
Set up an S3 bucket:
-
Set up your Lyft developer app:
-
Set up your Amazon Lambda function for the chatbot logic:
-
Set up your Amazon Lex bot:
- Add a slot called "Status" with the following settings:
- Add a slot called "YesNo" with the following settings:
- Make your setup look like this:
- Click "Save Intent" then "Build"
- Click "Publish" and create a new alias (we called ours "Prod")
- Create AWS credentials for accessing this Lex bot and copy them into
nexmo/rootkey.csv
in the following format:AWSAccessKeyId=<ACCESS_KEY> AWSSecretKey=<SECRET_KEY>
-
Set up your Lex connector:
- Run the server provided by at a URL that is accessible to Nexmo. We used Amazon EC2 and configured the domain to be publicly accessible. Alternatively, once the fixes to lex-connector in Zach's fork are pulled into the , you can follow to use Nexmo's default connector to Amazon Lex.
- Modify the
uri
attribute innexmo/ncco.json
to look like this:wss://LEX_CONNECTOR_ENDPOINT/bot/BOTNAME/alias/PUBLISH_ALIAS/user/AWSServiceRoleForLexBots/content
- Leave the
AWS_KEY_HERE
andAWS_SECRET_HERE
in this file untouched
-
Set up your Amazon Lambda function for the dynamic NCCO fetcher:
- Go to
- Click on "Create Function"
- Click "Author from Scratch"
- Add an "API Gateway" trigger with default settings
- Setup your IAM role so your endpoint is accessible to Nexmo
- Pick a name, runtime environment should be Python 2.7, use
lambda_basic_execution
role - Confirm and create function
- Zip all the files in
lyff_lambda/
and upload this ZIP file as the Lambda function - Click "Save"
- Make the function publicly access
-
Set up Nexmo:
-
You're done! Try calling your phone number to make sure everything works!
- Support for booking through SMS
- Support for stateful calls
- Support for getting ride status
- Support for connecting to Lyft driver using Nexmo proxy