Announcing IVR Builder
Back to Articles
News Payment Processing Voice Mail Javascript IVR Call Centers

Announcing IVR Builder

February 22, 2019 5 min
Aivis Olsteins

Aivis Olsteins

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:

{$image1}

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

begin();
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:

begin();
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:

{$image2}

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.

Share this article

Aivis Olsteins

Aivis Olsteins

An experienced telecommunications professional with expertise in network architecture, cloud communications, and emerging technologies. Passionate about helping businesses leverage modern telecom solutions to drive growth and innovation.

Related Articles

Case Study: Global Communications Company

Case Study: Global Communications Company

A leading communications company used our cloud Voice platform to send 30 million OTP calls per month to their customers, resulting in cost reduction and incrased conversion

Read Article
Bridging The Delay Gap in Conversational AI: The Backpressure Analogy

Bridging The Delay Gap in Conversational AI: The Backpressure Analogy

Conversational AI struggles with the time gap between text generation and speech synthesis. A “backpressure” mechanism, akin to network data flow control, could slow text generation to match speech synthesis speed, improving user interaction.

Read Article
How Voice AI Agents Can Automate Outbound Calls and Unlock New Opportunities for Businesses: A Deeper Dive

How Voice AI Agents Can Automate Outbound Calls and Unlock New Opportunities for Businesses: A Deeper Dive

AI voice agents transform healthcare scheduling by reducing costs, administrative tasks, and no-shows. They offer 24/7 service, multilingual support, proactive reminders, and valuable insights, improving efficiency and patient experiences.

Read Article
How to Fix Your Context: Mitigating and Avoiding Context Failures in LLMs

How to Fix Your Context: Mitigating and Avoiding Context Failures in LLMs

Larger context windows in LLMs cause poisoning, distraction, confusion, and clash. Effective context management (RAG, pruning, quarantine, summarization, tool loadouts, offloading) remains essential for high-quality outputs.

Read Article

SUBSCRIBE TO OUR NEWSLETTER

Stay up to date with the latest news and updates from our telecom experts