As the novel coronavirus continues to affect the world, instrumental businesses are facing alarmingly high call volumes that they’re not used to. The calls are so frequent that many people can’t even get through.
Canadian airline WestJet has a 10 hour call waiting time for customers looking to change their travel plans. Over 16 million people in the US have been filing for unemployment and the odds of ever reaching a human representative are very low. Most calls drop before getting to an IVR and those who make it through are told to call back later because no representatives are available. Madison, Wisconsin’s Department of Workforce Development has seen over 1.5 million calls in a single week, that’s 160 calls per second at a 6,208% call volume increase. Banks are also sporting much higher wait times than usual; one Citigroup Inc. customer found themselves on hold for 3 hours and never got to talk to a representative. So how can we help?
A callback feature is as simple as it sounds. Callers are given an option to be placed in a queue, and can hang up and receive an automatic callback when a representative is free instead of having them waiting on hold for hours. Adding a callback feature to your IVR is one way to make sure that your lines aren’t overwhelmed with people waiting to get through to an agent and saves your customers valuable time. SMS integration takes this a step further, allowing customers to request a callback via text without ever having to make an initial call.
Below, we will show you how to add this feature to your own system. The snippet itself is hosted here: https://github.com/signalwire/snippets-queue-request-callback Want to try it out? We have a demo hosted with phone number: +1 (864) 936-1337. Simply call or text to see how it works!
So how does everything work? If you text the provisioned phone number, it will add your number to a queue to be called back. If you call the provisioned number, it will put you in a queue, and then if you press 1 it will send you a text, and hangup. It will then call you back when it is your turn.
Please note: for this demo, the call backs are driven by timers to give an idea of how it works.
You will need a machine with Python installed, the SignalWire SDK, a provisioned SignalWire phone number, and optionaly Docker if you decide to run it in a container.
For this demo we will be using Python, but more languages may become available.
- SignalWire SDK
- SignalWire Phone Number
- Docker (Optional)
Running the Snippet - How It Works
Methods and Endpoints:
Endpoint: /text_request_call Methods: GET OR POST Endpoint to accept incoming text messages from SignalWire space. Endpoint: /enter_queue Methods: GET OR POST Endpoint to place callers into queue. Endpoint: /wait_url Methods: GET OR POST Endpoint to handle people on hold in queue. Endpoint: /request_callback Methods: GET OR POST Endpoint to process request call back. Endpoint: /connect_agent Methods: GET OR POST Endpoint to connect agent to caller.
Setup Your Environment File:
- Copy from example.env and fill in your values
- Save new file callled .env
Your file should look something like this
## This is the full name of your SignalWire Space. e.g.: <a target="_blank" delay="150" aria-describedby="slack-kit-tooltip" href="http://example.signalwire.com/" rel="noopener noreferrer">example.signalwire.com</a> SIGNALWIRE_SPACE= # Your Project ID - you can find it on the `API` page in your Dashboard. SIGNALWIRE_PROJECT= #Your API token - you can generate one on the `API` page in your Dashboard SIGNALWIRE_TOKEN= # The phone number you'll be using for this Signal. Must include the `+1` , e.g.: <a target="_blank" delay="150" aria-describedby="slack-kit-tooltip" href="tel:+15551234567" rel="noopener noreferrer">+15551234567</a> SIGNALWIRE_NUMBER=
Build and Run on Docker:
Use our pre-built image from Docker Hub:
For Python: docker pull signalwire/snippets-queue-request-callback:python
Or build your own image:
docker build -t snippets-queue-request-callback .
- Run your image:
docker run --publish 5000:5000 --env-file .env snippets-queue-request-callback
- The application will run on port 5000
Build and Run Natively
1. Replace enviroment variables 2. From command line run, python3 app.py