It’s 3am, and I’m abruptly woken up from my deep sleep. The light from my phone’s screen is so bright I can barely read it to see who is calling. I notice it’s from the Google Voice number. It’s a nurse calling our GALS (Giving Austin Labor Support) hotline asking if a volunteer doula (a birth partner) is available for a birth. I’m barely able to comprehend what is going on so I listen intently to the nurse and repeat what she says to make sure I get the message. After our call ends, I rub my eyes and hope someone has signed up to be on-call tonight. I go online to our group calendar, and nope no one is on-call. Then I send out a group text asking if anyone is available to go the hospital. Remember it’s 3am and a few replies trickle in, but no one is available yet. If the text was sent in the middle of the day, I’d get a lot more replies, but the night is always a shot in the dark.
One by one I call each volunteer asking if she is available to volunteer right now. This process is time-consuming and repetitive and did I mention it’s the middle of the night? I am one of the dispatchers, and I noticed I was repeating the same message over and over again to each person until I find one person who can go out to the hospital. This is where Tropo comes to the rescue. I’m creating an application using Tropo’s API to send out calls to volunteers asking for immediate help. With a click of a button I make the app send out phone calls that will play a text-to-speech script and include IVR prompts to transfer the call back to me. This means that the app makes the calls for me, and I get called if the volunteer indicates she is available.
Note: I’m not finished writing the application and there are some kinks to work out, so this blog post is part 1 of a series so you can see how I write the script from start to finish.
Part 1: Write an application that will call one volunteer, and ask if they are available to help.
Part 2: Update the application to call multiple volunteers
Creating the application
After I registered for an account on Tropo.com, I created a new Python application. Below is the script I used to initiate the call. You can see that I have 3 parameters that I’ve passed in – the volunteer’s name and phone number, as well as the name of the hospital requesting a volunteer. I’m using the following Tropo Scripting API’s:
- Say() – uses text-to-speech to say a message to the caller
- Ask() – asks the volunteer if they can go to the hospital or not
- Log() – logs the call events and the volunteer’s decision
- Transfer() – transfers the call to the dispatcher
I found the API methods super easy to use and fun to play with. For instance, you can change the voice of the text-to-speech audio to a British speaker. Instead of using text-to-speech you could use a recording of your own voice.
Executing the application
So when I put it all together, I use the command prompt to run the python script above:
From the screenshot you can see I get a 200 OK response, which means the request was sent successfully to my Tropo app. Then Tropo runs my app and dials the volunteer’s number. The volunteer answers the call and can then enter the number 1 to be transferred to the dispatcher (me) or enter the number 2 to log her as unavailable.
Now that my app can make one phone call to a volunteer, my next step is to have it make multiple phone calls. I could either make it call everybody at once, or call each person one at a time. If I choose to do the former then, then I could end up with several people calling my phone at the same time. This would not be an ideal situation for me. Therefore, I think it makes more sense to have the app call each person one at a time until someone indicates they are available. What do you think my next steps should be?