IVR Service Development Fundamentals


  1. IVR Platform Components
  2. Charging Gateway Product Note
  3. Content Management System – CMS Product Note

Setting up Development Environment

To develop IVR Service, development environment needs to be set up first in the Developer’s Laptop/PC. The required items are given below:

  1. Installation of PHP, MySQL
  2. Installation and configuration of Callhandler (in PC/Laptop) – this may not enable testing OBD and Call Patching
  3. Installation and configuration of X-Lite – this is a softphone to test the development
  4. Installation and Configuration of Callhandler around Asterisk (at a central place) for common development environment – this will cover OBD and Call Patching as well
  5.  Installation of CGW (using dummy prepaid and postpaid) and SMS GW (can be used by some 3rd party SMPP connection or just up to SMS Outbox) for development environment

Directory Structure and How Call-handler components and web services interacts

There is a fixed set of Directory Structure. VSDP is first implemented in Test Environment and after some period, it is implemented in Production Environment. All contents are shared in one folder which generally is mapped to all callHandler Server(s). Specific folder path is given in VSDP configuration file.

Following is the Directory Structure:

VSDP Server



– CDR (here all CDR files are generated by Call Handler)

– LOG (here all log files are generated by Call Handler)

Drive:Shared Test


– CDR (here all CDR files are generated by Call Handler)

– LOG (here all log files are generated by Call Handler)

Application Server


– VSDP (IIS Virtual Directory for VSDP Production)

– VSDPServices

– VoiceChat etc. (IVR Services are kept here. If any new service is to be deployed, another folder is       created)

– callHandler

– Database

– VSDP_x_x


– VSDP (IIS Virtual Directory for VSDP Production)

– VSDPServices

– VoiceChat etc. (IVR Services are kept here. If any new service is to be deployed, another folder is       created)

– callHandler

– Database

– VSDP_x_x

Table Structures of VSDP Database

The following is a list of important tables of VSDP Databases

Table Name Purpose
cdr All call information are stored here. Ano, Bno, call start time, call end time, and cause value of any call
geturl It contains ano, bno, flow-manager url with service id. Incoming/Outgoing call, specific service url is called for matching ano, bno number
ivrmenu Any IVR service call flow is inserted in this table. From this table, flow-manager picks the current state of any node of a call flow and interacts with callHandler
nodelogs This table contains the details of time spent at each node of a call-flow within a single call. Ano, BNo, Start time, End time, current state, next state, every details are captured here
outdialque This table contains the queue for out-dial call. Related content information are kept here
releaseurl For specific ano, bno combination, an URL is defined which is called to release any call
serviceurl This table contains Service Name, Calling Type and URL containing out-dial service url
storedata When user presses any key during any call, that temporary key are stored in this table


i. Incoming/Outgoing IVR

For any Incoming/outgoing IVR call, 3 tables – getURL, ivrmenu, releaseurl are mainly effected.

Table geturl

For any Incoming/outgoing call, ano, bno are found from the call. From geturl table, flow-manager url is picked against matching ano and bno. Status is Active to execute this entry in table. There is ProvisionEndDate, after that the url is not picked if Status is Provision.

From ivrmenu table, Service row is picked up that is found from geturl table url fields service variable. And whole call flow is executed according to ivrmenu table entires.

Table releaseurl

After any call, that call sometimes need to be released.  For any ano & bno, url is defined which will release that call. Status is Active and ProvisionEndDate is also here to set an end limit.


ii. Outdial from Outdial Que

Outdialque table contains outdial information.

MSISDN contains mobile numbers of users to whom outdial will happen

DisplayAno, OriginalAno there is some cases where Ano is changed and shown to user other than original Ano.

ServiceId contains the Service Name which is then matched with serviceurl table and corresponding url is picked for outdial.

OutdialStatus contains the outdial status information, it can be Delivered or Failed. If the status is Failed, it will try again.

RetryCount is the count numbers of outdial attempts.

OutdialTime is the time of outdial.

TimeSlotId is the exact time information for any outdial call. There is startTime, endTime, activeStart, activeEnd. It can be 24 hours slot or any specific time slot and other than this slot, outdial will not be attempted. allowedTime table contains these time details.

There is another table blockList, it contains the list of users to whom NO outdial call is allowed.

Charging Integration

Charging Integration is handled while drawing visio, Registration Service using registration php or service/rate configuration in CGW.

a.      Session Based Charging, this can be done by drawing visio and putting rate code. Charging will be done according to that

b.      Subscription – Register and De-register has to be taken care of by Call Flow. There are some web-services to handle these, Register.php, Deregister.php and chkReg.php

Notification SMS (through Renew Application), this part is going to be taken care of by Renew Application.

Node Log and CDR

Generating and Analyzing Node Logs

Node log is the details of time spent at each node of a call flow within a single call. While developing a call flow in visio, developer can put Node Name, whenever a user goes through a specific Node, the usage duration is captured in Node Log. Node Log can be turned ON or OFF in Callhandler. It is a global feature i.e. either it will be generated for all calls or it will not be generated at all.

When many Content Providers are involved in any IVR Service, revenue share is analyzed using Node Logs i.e. which content is listened to how many times, time spent on each content on node.

Analyzing Raw CDR and Node Log

Raw CDR contains ano, bno, start & end time. For any row in CDR, there can be multiple rows in Node Log, user can listen to any node multiple times.

CMS and SMS Integration

To listen to any Content, CMS Web Service is called while drawing a call-flow using visio. It can be used in PlayFile or BrowseList.

For SMS sending, SMS Web Service is called at particular node.

Release Call URL

In many cases, IVR Services need a notification to perform cleanup process upon call release e.g. we need to mark users as ‘Free’ after the call is released for Voice Chat. BBC Janala needs to track lessons for which they also need this. There are many such places where we need real time notification of call release for IVR services to take care of Service Logics.

In Health Line Service, say there are 5/6 doctors. When any call is landed to any doctor if and when the doctor is free and, upon call disconnection, that doctor’s channel needs to mark ‘free’ again by releasing URL so that another call can come in.

Visio Call Flow – The IVR Service

The IVR Service that is developed in visio call flow visually using some predefined shapes. There are some predefined shapes and parameters using which an IVR Service can be developed within short time.

This is the main skill that anyone has to acquire to develop IVR service. And IVR Service means call flow – visio tool makes this call flow.

Reference: The IVR Platform Component Document for high-level understanding and Call Flow Development using Visio Tool training for details.

Web Services for the Call Flow – the detail business logic

To develop any Call Flow, different web services is used based on business logic.

Further Readings & Certification

  • Develop Call Flow using Visio Tool
  • Become a Certified IVR Service Developer
[feather_share size="24" show="twitter, google_plus, facebook, linkedin, mail " hide="reddit, pinterest, tumblr"]

We love to hear from you