MultiChannel Banking Helper - Python
This application will allow customers to check balance as well as obtain the due date for credit card payments via both voice and SMS.
What do I need to run this code?
View the full code on our Github here!
This guide uses the Python SignalWire SDK, for a guide on installation click here.
Flask will be needed to handle the web framework.
You will need a SignalWire phone number as well as your API Credentials (API Token, Space URL, and Project ID) which can all be found in an easily copyable format within the API tab of your SignalWire portal.

How to Run Application
Python Multichannel Banking Helper
To install prerequisites, run pip install -r requirements.txt
. Using a virtualenv is recommended.
To run the application, execute export FLASK_APP=app.py
then run flask run
.
Connecting to your development application
To test the application with SignalWire while running locally, we recommend using ngrok. The application runs on port 5000
by default.
If you don't already have one, you can purchase a new phone number in your SignalWire space.
Next, create two new Resources from the Resources section from the sidebar. For both, select a Script and choose type as cXML.
Set the primary script to "External URL". For one, point to your-ngrok-domain/voice
. For the other, point to your-ngrok-domain/sms
.
Name these resources accordingly to recognise them better later.

Then, open the phone number settings. In the Inbound Calls Settings
section, select the resource you created for voice. Similarly, in the Inbound Messaging Settings
section, select the resource you created for SMS.

Wrap up
This application example is a great starting point to create a bank service IVR driven by both voice and SMS
Required Resources:
- Github Repo
- Flask
- SignalWire Workshop: Cloud Case Studies - see a case study of this code in action!
Sign Up Here
If you would like to test this example out, create a SignalWire account and Space.
Please feel free to reach out to us on our Community Discord here or create a Support ticket if you need guidance!