1 - System Overview
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.
The module will detect and work with both Issabel and FreePBX backends. It can be made to work with other type of Asterisk systems but requires manual configuration for some needed assets (recordings and valid destinations) via a functions-custom file that is open for modifications.
For Text to Speech there are also some requirements that must be met for them to work, that we will see on the next step.
2 - Enabling Text to Speech
The module comes with an AGI script that will use Google translate engine. This should be using for staging/testing, not for production. In any case, for it to work some packages need to be installed on your system. If using Issabel or FreePBX, run the following command in the system command line to install the needed packages:
yum -y install perl-LWP-Protocol-https perl-Digest-MD5 mpg123
3 - Installing the module
You must have FOP2 installed and working. If you already have it, log into your FOP2 Manager page, usually located at https://your.server/fop2/admin
Once there, select the Plugins menu option:
Once in the plugins section, search for the "IVR FLow" plugin in the list and click the "Install" button.
Once installed, you will see a new menu option in the left vertical menu bar in the FOP2 Manager selection bellow the Settings option.
But wait! Before using it, you must restart FOP2 in order for the plugin to work, that must be done from the command line, it is not possible to restart via web, to do so log into your PBX via ssh or similar and use run this to restart FOP2:
service fop2 restart
4 - Licensing
The module is commercial, as such it requires a license in order to be used. You can request a 30 days trial license in order to test the software and see if it fits your needs without the need to pull the trigger right away.
If you do not have a license in place, you will see the page with a link to our online store to purchase one on the top left panel (1), another form down below to enter the activation code that you will receive once you purchase the license (2), or a big panel on the right with a small form to request a 30 days trial license that will be retrieved and activated right away (3)
Once you have either a puchased license or a trial one, you will be able to use the software.
Licenses cost $150 US dollars and are valid for one year after purchase for the server it is used on. Once the year passes, any flow or IVR you have created will continue to work without restrictions, but you won't be able to make modifications or create new flows using the visual editor.
If using a trial license, after the trial period ends, the flows or IVR created on your PBX will also cease to work, after entering a purchased license, they will start working again.
In order to continue using the IVR Flow visual editor, you need to purchase the annual software maintenance for it, at 20% the standard license price ($30).
5 - Creating a Simple IVR
To create your first IVR 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:
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:
To the left you have a toolbar where you can select block categories: Destination, Input, Integration, Playback and Variables & Conditions. You also have a trashcan and buttons to save, close or clear your flow.
At the right you have the main diagram area where you automatically will have a Start block in place. You can create your own flow by dragging blocks from the left panel into the drawing area, placing the block touching their "parent" and dropping it there. Connections between blocks will be done automagically.
6 - First blocks
For this very short tutorial, we will create a very short IVR with one option. Click on the "Input" category and drag the "Options Menu" block over the main diagram area, mouse over the Start block and you will see an indicator when they connect, at that 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:
As you can see, both blocks (Menu and the Chosen Menu Option) are marked as incomplete. We need to set some parameters/configuration for each block.
7 - Block properties
Let's complete our menu block properties, just click on it for the Properties popup to appear:
For our IVR Menu we can select an audio file (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.
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 via 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.
Once configured we will see the diagram without incomplete warnings:
However, you do have more properties to set. In the Timeout and Invalid blocks you can define separate audios for when that branch is taken. For brevity we will leave those empty for now, but in real like you will want to set those options and add some actions afterward.
Notice also that the option 1 has no children, so, if the user presses 1, nothing will happen. Actually something will happen, the call will end. Any "leaf" node (node without a child) will incude an invisible Hangup/Terminate Call node included. So you can expect all leaf nodes to end the call unless they explicitly send the caller somewhere else (you can do so with Destination blocks).
8 - Final Destination
We want our user to go to a system queue when he presses one, for that we need to add a Destination block into it:
After placing the block, we click on it to set its properties. From there we chose a queue destination:
And we are done for this very simple tutorial. 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.