Inbound VDAC IVR process				  2008-05-25


NOTE: the Call Menu feature has been recently added in 2.2.0 that enables you to create and maintain IVRs, such as those mentioned in this document, using only the web-based Administration interface. For more information about Call Menus, take a look at the In-Groups -> Call Menu section of the Administration website or look at the ASTERISK_CONF-GEN.txt document



This doc goes over the addition of the IVR status to the vicidial_auto_calls table and how calls that are not yet in an in-group(queue) can still be counted as active calls. This allows your system to show a tally of inbound calls that are still navigating menus before finding an in-group(queue) to be put into.

The agi-VDAD_inbound_calltime_check.agi script does a check for the calltime scheme of the defined in-group(queue) as well as using the after-hours method for that in-group and the associated after-hours message if defined. Also, this script can place a record in the vicidial_auto_calls status in the IVR status. Calls in this status do not affect the dial ratios of blended campaigns, but they will display in the AST_timeonVDADall.php real-time status pages.

A log of the calls going into this agi-VDAD_inbound_calltime_check.agi script is also inserted into the live_inbound_log table.

The agi-VDAD_inbound_calltime_check.agi script can also be used to log the progression of a call through an IVR if you place it at major points in your IVR dialplan. The third field that you can define allows you to set a note or comment that is placed into the database when the call goes through that step.

Now included in the vicidial web directory is the AST_IVRstats.php report which can show you the statistics on the progression of customers through an Asterisk dialplan-based IVR using tracking with this script.


The example below shows how to do a very simple IVR before sending to a queue asking if the caller wants English, Spanish, French or German language service.

The "test_in_menu" audio file would have something like the following script:

"Hello, thank you for calling ACME Service Inc. For English press one, para el 
español, prensa dos, pour le Français, presse trois, für Deutsche Presse vier."



extensions.conf additions:


; First, in the default context you will put a line sending the inbound calls 
; for this number into a context named the same as the first in-group(queue), 
; in this case "TEST_IN". There are also 3 other in-groups(queues) for the
; non-English in-groups(queues):
;    TEST_IN - English - option 1
;    TEST_IN_ES - Spanish - option 2
;    TEST_IN_FR - French - option 3
;    TEST_IN_DE - German - option 4

[default]
exten => 7275551111,1,Goto(TEST_IN,s,1)


[TEST_IN]
exten => s,1,AGI(agi-VDAD_inbound_calltime_check.agi,TEST_IN-----YES-----START)
exten => s,2,Background(test_in_menu)
exten => s,n,WaitExten(10)
exten => s,n,Background(test_in_menu)
exten => s,n,WaitExten(10)
exten => s,n,Playback(vm-goodbye)
exten => s,n,hangup

exten => 1,1,AGI(agi-VDAD_ALL_inbound.agi,CIDLOOKUP-----LB-----TEST_IN-----7275551111-----Closer-----park----------999-----1-----OUTB)
exten => 1,n,Hangup

exten => 2,1,AGI(agi-VDAD_ALL_inbound.agi,CIDLOOKUP-----LB-----TEST_IN_ES-----7275551111-----Closer-----park----------999-----1-----OUTB)
exten => 2,n,Hangup

exten => 3,1,AGI(agi-VDAD_ALL_inbound.agi,CIDLOOKUP-----LB-----TEST_IN_FR-----7275551111-----Closer-----park----------999-----1-----OUTB)
exten => 3,n,Hangup

exten => 4,1,AGI(agi-VDAD_ALL_inbound.agi,CIDLOOKUP-----LB-----TEST_IN_DE-----7275551111-----Closer-----park----------999-----1-----OUTB)
exten => 4,n,Hangup

exten => #,1,Goto(s,2)
exten => i,1,Goto(s,2)
exten => t,1,Goto(s,2)
exten => h,1,DeadAGI(agi://127.0.0.1:4577/call_log--HVcauses--PRI-----NODEBUG-----${HANGUPCAUSE}-----${DIALSTATUS}-----${DIALEDTIME}-----${ANSWEREDTIME})

