Advanced Call Forwarding with Python, Flask, and Twilio
Learn how to use Twilio to forward a series of phone calls to your state senators.
Local Development
This project is built using the Flask web framework, and runs on Python 2.7+ and Python 3.4+
To run the app locally, follow these steps:
-
Clone this repository and
cd
into it. -
Create a new virtual environment with virtualenv:
python3 -m venv venv source venv/bin/activate
-
Install the requirements:
pip install -r requirements.txt
-
Activate Flask environment for development:
export FLASK_ENV=development
-
Run the migrations:
python manage.py db upgrade
-
Seed the database with data:
python manage.py dbseed
This will load
senators.json
and US zip codes into your SQLite database. Please note: our senators dataset is likely outdated, and we've mapped senators to placeholder phone numbers that are set up with Twilio to read a message and hang up. -
Expose your application to the internet using ngrok. In a separate terminal session, start ngrok with:
ngrok http 5000
Once you have started ngrok, update your TwiML application's voice URL setting to use your ngrok hostname. It will look something like this in your Twilio console:
https://d06f533b.ngrok.io/callcongress/welcome
-
Start your development server:
python manage.py runserver
Once ngrok is running, open up your browser and go to your ngrok URL.
Run the Tests
Run the tests locally with coverage:
FLAKS_ENV=testing python manage.py test
You can then view the coverage results with coverage report
or build an HTML report with coverage html
.
Note: If coverage seems to run way too many files, you can omit directories by adjusting your coverage command to something like coverage run --omit=venv/* manage.py test
. See the coverage docs for more information.
Meta
- No warranty expressed or implied. Software is as is. Diggity.
- MIT License
- Lovingly crafted by Twilio Developer Education.