Please note that the service providers and contact information featured by the app is not real; it is simulated data. As such, please do not use the data provided by AngieBot to contact service providers.
At Angie's List, where our team works, we mainly focus on helping people find quality service providers in their area. Enabling this experience through chat seems like a natural evolution of user experience in our current world, and one that would make finding a quality service provider in your area even easier.
What it does
AngieBot is a chatbot created for the AWS Lex Chatbot Challenge. The chatbot attempts to replicate the user experience offered on Angie's List, an application for finding local home services professionals. Users can request a plumber, are prompted for a zip code, and are then given service provider to contact. The bot was designed for and tested on Slack.
How we built it
The architecture of the app is as follows:
- A chatbot was created using AWS Lex.
- AWS Lex calls a function written in Python to conduct database lookups based on information submitted by the user in the chatbot. The code that rests on AWS Lambda can be found in the testfunction6.py file in this repository.
- The function in testfunction6.py depends on the pymysql library to conduct a parameterized SQL query against a MySQL database.
Challenges we ran into
We ran into some challenges learning how to incorporate our Python code into AWS Lambda; debugging code in the Lambda environment was probably the most time-consuming part of creating the app.
Accomplishments that we're proud of
We got a simple demonstration app working; now that we've done that, we think we can more easily add other types of lookup functionality.
What we learned
The power of AWS Lambda coupled with the Lex framework was an eye opener.
What's next for AngieBot
Share this with our team internally at Angie's List. Expand this to show real service provider listings, and allow people to book appointments with service providers. Add natural language processing to allow for more natural conversations.