Step By Step Guide to Deploy IVR Platform

Pre Readings

  1. Signaling gateway component (Optional)

Pre Requisite of Deployment

Web server: Apache 2(or higher) or IIS-7(or higher)
Database Server:  MySQL-5.3
Other: php-5.3, php-mysql -5.3

Package Structure

  1. Callhandler Binary (callhandler) – should be executable
  2. Configuration file – vsdp.ini
  3. http.ini
  4. iufp.ini
  5. channelmap.ini
  6. Database


Directory Structure

TypeDirectory Location
CallhandlerIn Linux:
or,    /ismp/production/vsdp/callhandler/In Windows:
Or, D:ISMPProductionVSDP
VSDPservicesIn Linux:
Or, /ismp/production/vsdp/vsdpservices/In Windows:
Or, D:ISMPProductionVSDP
CDRIn Linux:
Or, /ismp/shared/production/cdrD:ISMPSharedProductionCDR
CallHandler LogsIn Linux:
Or, /ismp/shared/production/logs/vsdp/In Windows:
Or, D:ISMPSharedProductionLOGSVSDP
Common libraryIn Linux:
/ismp/production/lib/ In Windows:
D:ISMP Productionlib
PromptsIn Linux:
/ismp/shared/production/prompts/In Windows:
Or, D:ISMPSharedProductionPrompts
RecordingsIn Linux:
/ismp/shared/production/recordings/In Windows:
Or, D:ISMPSharedProductionRecordings

Deployment Steps


  1. Place all package elements in one folder and copy that folder & deploy in defined directory structured folder
  2. Set execution permission on required binary file(if necessary) so that it can run from that folder
  3. Make changes in required configuration files
    1. vsdp.ini located in Callhandler
    2. channelmap.ini located in Callhandler
    3. config.php located in vsdpservices
  4. Make aliases   of /vsdp_test  in webserver root with  /ismp/test/vsdp/ in Linux or D:ISMP ProductionVSDP in Windows  or  Make aliases   /vsdp  in webserver root with  /ismp/production/vsdp/ in Linux or D:ISMPProductionVSDP in Windows
  5. Create database with name vsdp_2_0_test or vsdp_2_0 and load the database script to database

Configure Callhandler

  1. Changes in vsdp.ini

6              //MACHINEID
xxx         //OPERATORCODE
0              //START_CHANNEL
1200       //END_CHANNEL
300         //BROD_START_CHANNEL
950         //BROD_END_CHANNEL
4              //NO_SIGNAL_CHANNEL
15 46 139 170 -1 -1 -1 -1 -1 -1
31           //timeslot
0              //VM_ENABLED
1              //LOG_ENABLED
0              //PATCH_ENABLED
0              //FILETRACK_ENABLED
1              //ENABLE_REL_CALL
1              //COT_ENABLED
0              //ADDR_COMP_PATCH
0              //PATCH_SELF
4224       //CRBT_SERVICE_NO
04476504000      //VM_SERVICE_NO
8              //RECORD_BIT_RATE
0              //skip_enable
3              //skip_key
9              //back_key
30000    //NO_VOICE_TIME
180000  //MAX_REC_TIME
/ismp/shared/production/cdr/                            //CDRPATH
SongTrack           //FILETRACK[200];
/ismp/shared/production/logs/vsdp/                 //LOG_DIRNAME[100];
/ismp/shared/production/nodelogs/                  //NODELOGS_DIRNAME
PatchStatusLog                                                                       //PATCH_DIRNAME[100]
X X X X                                                                       //HTTP_HOST_IP[4] WITHOUT “.”;
80                                                                               //HTTP_PORT
X.X.X.X                                                                      //HOST IP
0              //SECOND_RECV;
0              //DebugGetContent;
7              //LinesToSkip;
GET %s HTTP/1.1rnrnHOST: %s
/vsdp_test/vsdpservices/retrieveurl.php?ano=%s&bno=%s&oriani=%s&service=%s&calltype=%s //Callhandler call this URL with mentioned information(ano, bno….) to get flow manager information
//callhandler call this URL if callhandler run without /nooutdial to get available outdial number from outdialque table and initiate outbound call
//Callhandler call this URL after ending call and release URL check the release table to get what action will take
GET /voicemail/checkVMmCallReg.php?cmdid=CHECK_STATUS&cmdparam=%s|%s|%s| HTTP/1.1
GET /citycellmbox/CitycellmboxWebServices.php?cmdid=%s&cmdparam=%s HTTP/1.1 //Service_url
1714086512                         // Mobile or ANO which call log you want
1730372923                         // Mobile or ANO which call log you want
2580                                     // Mobile or ANO which call log you want
3440                                       //Command Listener Port
X X X X                                 //Charging GW IP
3888                                       //Charging Gateway Port
80                                           //Channel Utilize
1                                              //Rate Code Enabled
1                                             //CGW Enabled
1                                              //Parallel Charging Enabled
0                                              //Generate Air CDR – No Use
//callhandler use this URL to check how long call can be continued in a session
RTP                                          //MEDIA_SERVER
X.X.X.X                                    //IP of Media Server
X.X.X.X                                    //IP of Media Server
6                                                // 6 for a-law and 7 for u-law.
X.X.X.X                 // IP of the corresponding SIP server/client for BYE/INVITE requests
XXXX                     // Port of remote SIP server for BYE/INVITE requests
0                              // LogLevel: 4-INFO, 8-ERROR, 32-DEBUG_MAJOR
10                           // LogDestination: 2-FILE, 4-SERVER, 8-SCREEN
40                           // PlayFile sleep time in milliseconds
XXXX                     // SIP port where the application listens
1000                       // stack size (in KB) for network thread (bChRx)
1400                       // stack size (in KB) bChHandler and other threads
1                              // SDP_IPBCP_ENABLED                               — 0 for x-lite, 1 for GP
108                         // DEFAULT_PAYLOAD_TYPE_VOICE                       — both for x-lite and GP
101                         // DEFAULT_PAYLOAD_TYPE_DTMF                        — both for x-lite and GP
1                              // IUFP ENABLED FOR RTP                            — 0 for x-lite, 1 for GP
Ch2                                             //SNMP_INSTANCE_NAME
1                                                  //SNMP_ENABLED
X.X.X.X                                   //SNMP_MANAGER_HOST_IP
162                                         //SNMP_MANAGER_PORT_NO                                   //SNMP_LOCAL_IP
0                                             //SNMP_LOCAL_PORT
X.X.X.X                                   //SNMP_AGENT_IP
30000                                       // webserver socket time out in milisecond
1                                                 //NODELOG_ENABLED
10000                                   // RTP_MAX_GAP in milliseconds
0                              // RELEASE_ON_RTP_MAX_GAP
1                                               // RTP_GAP_FILLUP_ENABLE
29014                                       //SERIAL_NUM ACULAB
64                                              //STREAM ACULAB
128                                            //NUM_OF_CHANNELS_TO_ALLOCATE_PER_MODULE ACULAB
1                                                 //SEND_200OK_WITHOUT_IUFP AUDIOCODES
X.X.X.X                     //boardIP AUDIOCODES
X.X.X.X                    //TPNCPServerIPAddr AUDIOCODES
X.X.X.X                                    //LDB_IP AUDIOCODES
0                                                 //Error_PlayfileLog
0                                                 //ANSWERED_OBD_ENABLE
0                                               //PatchSleepTime
1                                                //onlyPatch in VCall
300                                        //BROD_START_CHANNEL for Video OBD
950                                       //BROD_END_CHANNEL for Video OBD
  1.  Changes in Channelmap.ini

1 1200 X.X.X.X 5061 //start_Channel    End_Channel    Corrosponding_Sip_Server_IP Corrosponding_Sip_Server_Port


  1. Changes configuration in config.php from vsdpservice folder

$CALLFLOWLIB=”../../lib/CallFlowLib.php”;$RATECODE_ENABLED = 1;
$NODELOG_ENABLED = 1;//to get node wise report for a flow


How to run Callhandler

From Linux Console

  1. Go to /ismp/test/vsdp/callhandler
  2. chmod 777 callhandler
  3. Type ./callhandler
  4. Press Enter

Check process

  1. Type ps –ef|grep callhandler
  2. Following output will be shown:

MGW1:[~]# ps -ef | grep callhandler
root     13306 13304 95 01:19 pts/0    16:21:59 ./callhandler
root     18826 18607  0 18:23 pts/1    00:00:00 grep callhandler
Here Green line shows that callhandler is running

From Webmin

  1. Create three custom button like following.

  1. Click Start >> Callhandler 75 button

Check process

  1. Click Status >> Callhandler 75 to show the process
  2. Following output will be shown:

From Windows console

  1. Go to the Application directory
  2. Double click on the callhandler.exe

Check process

From windows Task manager we can easily find out the callhandler status.

From AppMonitor

  1. Configure Callhandler in AppMonitor as follows:

  1. Click start

How to test IVR

  1. Draw a visio according to your service requirement
  2. Put the entry for service shortcode in geturl table at VSDP_2_0_test
  3. Upload the Visio in VSDP_2_0_test
  4. Put your service php in /ismp/test/vsdp/
  5. Configure x lite account. User password you can assign as your own wish.
  6. Dial your short code from xlite and you will hear your service welcome prompt.

Callhandler Logs

Callhanlder will generate logs according to Log enable number. Example log is attached.


7|21|1778412765|2008||4-21-2014 19:2:29|Initialize|GET /vsdp_test/vsdpservices/retrieveurl.php?ano=1778412765&bno=2008&oriani=&service=NA&calltype=audio HTTP/1.1

7|21|1778412765|2008||4-21-2014 19:2:29|Initialize|/vsdp_test/vsdpservices/flowmanager.php?service=2008_MobileDrama_7_4&
7|21|1778412765|2008||4-21-2014 19:2:29|StartProcess|GET /vsdp_test/vsdpservices/flowmanager.php?service=2008_MobileDrama_7_4&key=0&cs=0&ano=1778412765&bno=2008&oriani=&success=1&channel=21&stream=&mid=7&isFirsttime=1&usages=&fileid=0&pos=0&callid=702121042014190229&outdialid= HTTP/1.1


7|21|1778412765|2008||4-21-2014 19:2:29|StartProcess|OK+0|0|Silent+ZERO+1+Playfile+/ismp/shared/test/Prompts/2008_MobileDrama_7_4/Silent.wav
7|21|1778412765|2008||4-21-2014 19:2:29|sendANM|Sending ANM in Channel:21 OnlyPatch:0 bCh[ndx].mediaType: audio
7|21|1778412765|2008||4-21-2014 19:2:29|StartProcess|OnlyPatch:0 bCh[ndx].mediaType: audio
7|21|1778412765|2008||4-21-2014 19:2:29|PlayFileRTP|Start Play File /ismp/shared/test/Prompts/2008_MobileDrama_7_4/Silent.wav
7|21|1778412765|2008||4-21-2014 19:2:30|PlayFileRTP|Play File Done…. PlayFile returned 0
7|21|1778412765|2008||4-21-2014 19:2:30|StartProcess|File Name is NULL
7|21|1778412765|2008||4-21-2014 19:2:30|StartProcess|GET /vsdp_test/vsdpservices/flowmanager.php?service=2008_MobileDrama_7_4&key=0&cs=1&ano=1778412765&bno=2008&oriani=&success=0&channel=21&stream=&mid=7&isFirsttime=0&usages=&fileid=0&pos=0&callid=702121042014190229&outdialid= HTTP/1.1


7|21|1778412765|2008||4-21-2014 19:2:30|StartProcess|OK+4|4|welcomePrompt+Popivr+44+Playfile+/ismp/shared/test/Prompts/2008_MobileDrama_7_4/welcomePrompt.wav
7|21|1778412765|2008||4-21-2014 19:2:30|StartSession|appid=VSDP&apppass=NOPASS&cmdid=AUTH_CALL&cmdparam=1778412765|2008|0|Popivr|702121042014190229|0|0|
7|21|1778412765|2008||4-21-2014 19:2:30|Charging Request|702121042014190229 2001 0 SESSION_START 60
7|21|1778412765|2008||4-21-2014 19:2:30|StartSession|reservation time [60]
7|21|1778412765|2008||4-21-2014 19:2:30|PlayFileRTP|Start Play File /ismp/shared/test/Prompts/2008_MobileDrama_7_4/welcomePrompt.wav
7|21|1778412765|2008||4-21-2014 19:2:33|PlayFileRTP|Play File Done…. PlayFile returned 0
7|21|1778412765|2008||4-21-2014 19:2:33|StartProcess|File Name is NULL
7|21|1778412765|2008||4-21-2014 19:2:33|StartProcess|GET /vsdp_test/vsdpservices/flowmanager.php?service=2008_MobileDrama_7_4&key=0&cs=44&ano=1778412765&bno=2008&oriani=&success=0&channel=21&stream=&mid=7&isFirsttime=0&usages=&fileid=0&pos=0&callid=702121042014190229&outdialid= HTTP/1.1


7|21|1778412765|2008||4-21-2014 19:2:33|StartProcess|OK+5|5|MainBrowsingdirection+Popivr+55+Playfile+/ismp/shared/test/Prompts/2008_MobileDrama_7_4/directionBrowseReg.wav
7|21|1778412765|2008||4-21-2014 19:2:33|PlayFileRTP|Start Play File /ismp/shared/test/Prompts/2008_MobileDrama_7_4/directionBrowseReg.wav
7|21|1778412765|2008||4-21-2014 19:2:37|End Call|appid=VSDP&apppass=NOPASS&cmdid=END_CALL&cmdparam=1778412765|2008|0|Popivr|702121042014190229|1|7|
7|21|1778412765|2008||4-21-2014 19:2:37|bChHandler|[21]Call Released between 1778412765 and 2008
7|21|1778412765|2008||4-21-2014 19:2:41|EndSession|702121042014190229 2001 1 SESSION_STOP 60
7|21|1778412765|2008||4-21-2014 19:2:41|b[ 21]|Variables reset in channel 21 from b[ 21]

Further Readings

  1. IVR Service Development Fundamentals
  2. How to create custom webmin button
  3. How to configure AppMonitor to run an Application
[feather_share size="24" show="twitter, google_plus, facebook, linkedin, mail " hide="reddit, pinterest, tumblr"]

We love to hear from you