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?
Hi all i am using JNC to manage device . Trying to delete specific node on basis of node value which is key to list .
I am trying to use markdelete(Str Path) to delete my node but node able to get correct path for my node with node-name value as getting p...
we have a we-c3560x-24p switch with version 12.2 (55) SE5 that was off our network for a few years and we connected it back up to the network but it shows that there are a few devices connected to it but there is only 1 SFP connected in the G1/1. An...
Hi Experts, We are making a rest call to NSO, as part of the reply, NSO will return a response similar to the below with a Etag value: HTTP/1.1 100 ContinueServer:Allow: GET, POST, OPTIONS, HEADContent-Length: 0HTTP/1.1 201 CreatedServer:Locatio...
Hi,I am unable to divert a call to some destination.I am giving this XML response to the CUCM <Response><Result><Decision>Permit</Decision><Obligations><Obligation FulfillOn="Permit" ObligationId="divert.simple">&l...