FOP2 IVR Flow module allows you to create interactive voice response systems (IVR) or other type of call flows and interactions using a simple drag and drop interface. It can interface with external APIs to gather data and select branches based on logic conditions, time conditions, selected options or spoken words via asterisk speech capabilities.

To do so, it has a pallette of block types you can drag and drop into the canvas so you can construct call flows and logic visually and in a simple manner.

What you'll learn

What you'll need

To create your first IVR log into the FOP2 Manager (usually on https://your.server/fop2/admin) and click on the "IVR Flow" icon on the left sidebar, then click the "Add" button at the top toolbar.

You will have the option to set a name, a description and optionally assign an extension/feature code that you can dial from any phone to reach your flow, as shown:


For this tutorial we will set these values:

Name: Simple IVR
Extension: 2100

We will asume that extension 2100 is free on your PBX, if its not, chose another one so you can later dial it to test it out.

Once entered, you will see it added into the Flows list from where you can enter the visual editor by clicking the corresponding action button:


That will give you access to the visual editor main canvas, that looks like this:


To the left you have a sidebar where you can select block categories: Destination, Input, Integration, Playback and Variables & Conditions. When the category is clicked, the block types for that category will be shown and the ones from the other categories will be hidden. You also have a trashcan and buttons to save, close or clear your flow.

At the right you have the main canvas area where you automatically will see a Start block in place. You can create your flow by dragging blocks from the left panel into the canvas, placing the block touching its "parent" and dropping it there. Connections between blocks will be done automagically.

For this tutorial we will create a very short IVR with two options. Click on the "Input" category on the left sidebar to displays the block types within, and then drag the "Options Menu" block over the main canvas area just over the Start block. You will see a blue circle/indicator when the blocks connect with each other. At this point you can drop it into place by releasing your mouse/trackpad button.


We want to do something when the user presses one, so we will now add a "Chosen Menu Option" block into our newly created menu:


If you pay attention, you will notice that both the Options Menu as well as the Chosen Menu Option are marked as incomplete. We need to configure some properties to our IVR to remove that warning and make an usable IVR menĂº. We will see that on the next step.

Most blocks have properties that need to be configured. If they are missing, you will see the block with a glaring red/yellow border and sometimes the Incomplete phrase inside.

In order to complete properties, you must click on the block. So, go ahead on click on the Options Menu block on the canvas to open the Properties window.


The Options Menu is one of the blocks with most properties to set. You must set:

So, lets select an audio file to play back to the user when entering the menu (that should be made available before hand using your PBX recordings options)

You can enable or disable the ability to directly dial your PBX extensions from the menu and configuring retries for invalid or timeout options as well as defined the time in seconds to be considered a timeout.

As every selection on the IVR will be stored on a table for reporting, you can chose a reporting name for this particular menu. If none selected, the audio file name will be used instead.

Once done click Save

Now click on the Chosen Menu Option block to open its properties:


Here we can define what we expect the user to press on the phone. We can also use Asterisk patterns here, like _X if we expect just one digit from 0-9. Standard Asterisk pattern matching rules apply.

We can also select a word or phrase we expect the user to say. This will work providing you have speech services enabled and working on your Asterisk setup. Issabel supports this with Asterisk 16 or higher and installing the Vosk packages that are readily available in several languages (spanish, english, portuguese and farsi). If we leave that empty, then no speech capabilitites will be used.

For the option we can optionally set a reporting tag/name that will be used when running IVR reports with Asternic Call Center Stats PRO.

Once configured we will see the diagram without incomplete warnings, as below:


Notice that option 1 has no children, so if the user presses 1, the call will be terminated as there is nowhere to go to.

To complete this IVR and tutorial we want the user to be sent somewhere when they chose option 1 from the menu. For doing so we need to drag a Go To block from the Destinations category, as shown:


After placing the block, we click on it to set its properties. From there we chose a queue destination:


Done! We will need to click on the Save button in order to save our changes and make the flow/ivr available on our PBX to use.


Once saved, the IVR will be ready to be tested. You can dial the extension you entered when adding the IVR in the first place (in this tutorial we used extension 2100).

There are many block types with their own properties, with them you can create complex flows, consulting remote APIs, local SQL tables, Asterisk database entries or variables, use Text to Speech, etc.

Congratulations! You have created your first IVR! You can now dial the extension number 2100 to test it out.

Further reading