IVR builder
Author Image

By: Aivis Olsteins

In News



Announcing IVR Builder

It is finally here: easy to use yet powerful IVR building service for everyone

After almost a year of works we are very happy to say that IVR Builder - an intelligent, graphically scriptable IVR system is finally live.

With lots of focus recently of automation base on Artificial Intelligence, chat bots and so on, we felt that there is lot to do to get these things to the real world, so they are reachable to everyone, and not only the biggest companies with very large resources. Learning of every new API or programming language requires time and resources and takes away focus from more important things. So we decided to take an area which we knew the best - telecommunications and add tools which would translate highly specialized services like speech recognition, speech synthesis, text analysis, etc into easy to use building blocks that one can use to build their own intelligent voice response system.

Our goal was not only to build an IVR system, but to build it to be both powerful and easy to understand. We wanted to build a tool which can be used to quickly assemble the flow of the call, how the various sound files are played, touch tones recognized, speech captured, interpreted, and speech synthesized. There would be a need for some data flowing into each call, conditions (IF, THEN), loops (WHILE ...) and so on. So the natural choice was to use a programming language. We started to work on that initially: we too Javascript - a popular high level programming language and decided to build Javascript parser which would allow users to write their scripts. This initial concept is covered in some of my earlier blogs if one is interested to view history: Building Script Driven Telephony Engine and  Usecase: Phone Based Donation Service. However, we quickly came the conclusion that this was too complicated for an average user: we do not want to ask him to learn full syntax and structure of the programming language.

So we settled on a compromise: we will keep Javascript as the basis, but will use graphical drag and drop interface with blocks which would each represent either a command of the language, a structure, or a predefined function. So for example, if one is to build a very easy voice mail system, he would need just couple blocks to place in a sequence like this:


As you can see there are language written in the blocks. Putting into javascript, it would become this:

text_to_speech('Hi. We are not home at the moment. Press leave a message','english-male');
var file = record_media(120,'#','vm');

The first line is just a function called whenever call come sto the IVR system. We do not need to worry about it now.

The second line is a built in function which synthesizes spoken text. It is built in the IVR Builder and can be used whenever necessary to speak something in the call. So the first argument is the message to speak, its just a text. The second one is text to speech profile, we can select from the list of available languages and personalities, there are quite few of them. Behind the scenes we use Amazon Polly, if somebody is interested in details.

And finally the last line is again a built-in function for recording a voice of the caller. The first argument limits maximum duration in seconds, which we have set to 2 minutes here. The next one is stop symbol, which is pound (or hash) key # in our case. The last argument is file name prefix, so the files will be written with names starting with 'vm', like 'vm-2345abc.wav' , 'vm-a5647cd.wav' and so on.

Quite simple, isn't it? Well, I know there are some simplifications and shortcuts from the pure Javascript point of view. But for starting that should be enough.

Just one more example before we go. Wanted to show you a simple conditional branching.

Say we want to know if user wants to leave an urgent message, so we are alerted about it via SMS or email. Here is how one would do it in Javascript:

text_to_speech('Hi. We are not home at the moment. Press 1 to leave an urgent message or any other key for regular message','english-male');
var urgent = dtmf_get_digit();

text_to_speech('Please speak after the tone','english-male');

var file = record_media(120,'#','vm');

if (urgent == 1) {

email_send('you@address.com','me@address.com', 'VM', 'There is an urgent voicemail for you', file)

And in our IVR builder that would look like this:


Few more new things here:

1. Built in function to collect keypress (dtmf_get_digit)

2. IF statement which only fires if the condition is true

3. and another built-in function for sending email. it even takes recording as an argument and will send it in email attachment.

I hope I was able to explain IVR Builder easy enough so that anyone can start with it. Please, if you have interest, look at the few examples we have built- they are bit more complex than I have put here, but nevertheless they took less than an hour to build, each. There is a WebRTC phone on side at the demo page, please feel free to use it to dial into those demos (make sure you allow your browser to use microphone- it is necessary for those demos with speech recognition).

If you would like to start building your own IVR scripts, please use this link to have an account with us - it is completely free.

Leave a comment
About Author
Author Image
My name is Aivis Olsteins and I am owner of DataTechLabs. My experience in Telecoms started in early 1990's and I have worked in multiple technical positions in mobile, messaging and data networks. My expertise lies in telecom networks, database systems, distributed processing and large data analysis. These posts are my attempt to share my knowledge with everyone who might find it useful.

Get in Touch

If you have something to say, please use the contact form below to get in touch with us. We will get back to you as soon as possible.

Mail Us

DataTechLabs SIA, Muzikas str 12A
Jurmala, LV-2008, Latvia.

Call Us

+371 67 66 09 01
+ 1 202 499 1550

E-mail Us