Using API’s to automate Cisco Unity Connection Call Handlers
A few years back, a former colleague of mine introduced me to a neat cloud product from Google, simply named Cloud Text-to-Speech. It was an API that would synthesize text into a variety of voices and languages and return high-fidelity audio. Immediately after his demo, the wheels in my head started turning on the different ways I could potentially use this. Being that I’m a VoIP engineer my initial reaction was to use this in one of our IVR applications. The quality and accuracy of the audio was great. Plus the WaveNet voices sounded life-like and could provide audio in many different languages!
Like most, we’d prefer to have a live person record our greetings. However this becomes a challenge if we need to offer alternative greetings in different languages. With Google’s API we could easily look up the translation and then convert it to audio and away we go!
I didn’t just want to stop there, I thought of other examples. Like what if you needed to record a message for an emergency or closure? We have many manufacturing plants and occasionally we need to close them for the safety of our employees. I wanted to use the Google API to translate text and upload it to our Cisco Unity Connections automatically. This way our employees could use our IVR system to get updates. I also wanted it to be easy and accessible on the go for the administrators of our system. I achieved this by incorporating a couple of other API into the process.
The next API comes from Twilio. Using Twilio I could give administrators a phone number that they could text at any time. This number was then tied via a web-hook to a particular Unity Connections greeting. Whenever a SMS would come in I’d could have Google’s API convert it to audio, upload it to our IVR and then set that greeting to be live.
On the backend I set up a web server and exposed it to the outside world via Ngrok. Ngrok allowed me to have a public url that could receive messages from Twilio and then forward them to my internal web server. My web server would then offer API’s of its own to do various functions plus a mobile app for administrators.
Lastly I used the Weather.gov API to periodically check for severe weather updates for a given area. I set the interval to check every fifteen minutes and update a Weather IVR with the current status. This could be customize to offer a greeting that facilities are closed during a tornado warning as an example.
Hopefully someone finds this useful! For a guide to implementing this check out my Github.
If you would like to support my work and the time I put in creating the code, you can click this link to get me a coffee. I would really appreciate it (but is not required).
Thanks!