/call-forwarding-flask

A sample implementation of advanced call forwarding using Twilio and Flask.

Primary LanguagePythonMIT LicenseMIT

Twilio

Advanced Call Forwarding with Python, Flask, and Twilio

Flask

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:

  1. Clone this repository and cd into it.

  2. Create a new virtual environment with virtualenv:

    python3 -m venv venv
    source venv/bin/activate
  3. Install the requirements:

    pip install -r requirements.txt
  4. Activate Flask environment for development:

    export FLASK_ENV=development
  5. Run the migrations:

    python manage.py db upgrade
  6. 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.

  7. 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

  8. 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.