How to – Use ViciDial’s AGI’s

How to – Use ViciDial’s AGI’s

AGI

How to – Use ViciDIal’s AGI’s


In the dynamic world of call centers, staying ahead of the curve requires constant innovation. One groundbreaking technology that’s been quietly shaping the industry is VICIdial AGI (Asterisk Gateway Interface). AGIs are the unsung heroes behind the scenes, making complex call center operations look seamless and effortless.
What is VICIdial AGI?
VICIdial, a popular open-source call center suite, employs AGI to interact with Asterisk, the underlying telephony platform. This interface empowers VICIdial to communicate with external systems and execute a wide range of tasks during live calls, offering call centers an unprecedented level of automation and customization.
The Power of Automation
VICIdial AGIs can automate repetitive and time-consuming tasks, such as call routing, data retrieval, and post-call actions. This automation significantly reduces the workload on agents, allowing them to focus on providing top-notch customer service.
Enhancing the Customer Experience
AGIs are the magic behind personalized customer experiences. They can pull up customer data in real-time, enabling agents to greet callers by name and access their history and preferences. This level of personalization can transform a routine call into a memorable interaction.
Unleashing Real-time Insights
VICIdial AGIs are adept at gathering and analyzing data during live calls. This real-time insight is invaluable for call center managers. It provides a window into agent performance, customer sentiment, and call outcomes, helping in immediate decision-making and performance optimization.
Customizing to Perfection
One of the greatest strengths of VICIdial AGIs is their ability to be tailored to meet the specific needs of a call center. From custom scripts to integration with external databases and applications, AGIs offer a world of possibilities.
Challenges and Expertise
While VICIdial AGIs offer immense potential, they do require a level of technical expertise to configure and maintain. Call centers often seek the support of experienced professionals who can harness the full power of AGIs.
The Future of VICIdial AGIs
As call centers continue to evolve, VICIdial AGIs are set to play an even more significant role. They are the driving force behind efficient, personalized, and data-driven customer interactions.
In conclusion, VICIdial AGIs are a true game-changer in the call center industry, providing automation, personalization, and real-time insights that redefine customer service. As businesses strive for excellence, AGIs are becoming a critical component in the pursuit of superior customer experiences.


In this article, I will just display some information from each AGI so there is a useful resource to see what each AGI’s function(s) are plus an example of how to use them. Keep in mind, these can all be changed within the source code to customize solutions you may be trying to accomplish. They can all be found here: /var/lib/asterisk/agi-bin/


agent-monitor.agi

# agent_monitor.agi      version 2.14
#
# NOTE! - To use this script you MUST have entries in the System Settings
#         "Custom Dialplan Entry" for this to work.
#         Read the AGENT_MONITOR.txt document for more information.
#
# This script is designed to allow managers to listen to agent sessions by
# dialing a phone exten number or user ID number. For this to work, the user ID
# or phone extension must be only digits. If you are using the phone extension,
# then all phone extensions on the system must be unique.
#
# user is prompted for a user ID or phone login then press #
# then the user is forwarded to monitor the active vicidial agent session
#
# ; settings for this script:
# ; 1. USER, PHONE, PLOGIN, REDIRECT or RANDOM, lookup by user id, phone extension or phone login (default is USER)
# ; 2. Y or N, log in api log (default is N)
# ; 3. BARGE or LISTEN, (default is LISTEN)
# ; 4. Prepopulated ID, for use in context by itself
# ; 5. Campaign limits, double-dash-delimited, i.e. "TEST--TEST2", (default is disabled)
# ; 6. Y or N, play user IDs to listen to (default is N)
#
# can be added as an AGI to a Call Menu, or just a direct extension transfer:
#
# ; call menu AGI with options:
#  agent_monitor.agi,USER---N---LISTEN------TEST--TEST2---N
#
# ; or as extension transfer to "up_monitor" context and "s" extension

agi-AGENT_dial_in.agi

# agi-AGENT_dial_in.agi      version 2.6
#
# This script is designed to allow agents the ability to dial in to an extension
# to establish the phone connection to their VICIDIAL session. The user login
# and password must be only digits and nothing but digits to use this utility.
#
# user is prompted for their user ID then press #
# user is prompted for their passcode then press #
# then the user is forwarded to the active vicidial agent session
#
# ; settings for this script:
# ; 1. allow user_id only login (disabled by default)
# ;     Y - allow user ID only with no password
# ;     CONTACTS - lookup the user ID as the 'office_num' field in the contact_information table
# ;     N or (blank) - require password (default)
# ; 2. forward to A or B within Call Menu instead of logging into an agent session
# ;     Y - forward to A option on valid user ID or B option on invalid user ID
# ;     N or (blank) - go to agent session (default)
#
# can be added as an AGI to a Call Menu, or as below:
# ;agent dial-in:
#exten => 2345,1,Answer         ; Answer the line
#exten => 2345,2,AGI(agi-AGENT_dial_in.agi)
#exten => 2345,3,Hangup
#
# ; call menu with options:
#       agi-AGENT_dial_in.agi,Y---Y

agi-AGENT_route.agi

# agi-AGENT_route.agi version 2.14
#
# for use with a Call Menu in the custom dialplan section or as an AGI route.
#
# ; settings for this script:
# ; 1. DID pattern to use for In-group initiation settings ('default' is default)
# ; 2. the agentdirect in-group to send the calls to ('AGENTDIRECT' is default)
# ; 3. transfer only to ACTIVE in the system agent or vicidial LOGGED_IN agent
# ;             ('ACTIVE' is default)
# ; 4. prompt for user ID, if this is filled in with a filename it will ask,
# ;             otherwise it will assume $extension is the user ID
# ; 5. number of digits required for user ID validation, X will allow anything,
# ;             this will only be enforced if "prompt for user ID" prompt is populated
# ; 6. audio filename for invalid selection, agent not available ('invalid' is default)
# ; 7. audio filename for invalid user id re-enter prompt, agent not available
# ; 8. number of retry attempts to enter a valid user ID
# ;             this will only be enforced if "prompt for user ID" prompt is populated
# ; 9. in-group to send the call to if there is no valid agent, if none is
# ;             defined, then the call will be directed to 's' exten
# ; 10. audio filename before sending call to no-agent route
# ; 11. audio filename before sending call to no-agent route if agent active but
# ;             not logged-in to vicidial
#
#; example in CallMenu AGI route with all options
# "agi-AGENT_route.agi,default---AGENTDIRECT---LOGGED_IN---if-u-know-ext-dial---X---invalid---please-try-again---3---TEST_IN3---pbxtransfer---outside-transf>
#; example with 4-digit agent IDs
# exten => _XXXX,1,AGI(agi-AGENT_route.agi,default---AGENTDIRECT---ACTIVE)

agi-CALLCARD_dial_in.agi

# agi-CALLCARD_dial_in.agi      version 2.6
#
# This script is designed to allow customers the ability to dial in to a DID and
# enter in a PIN number that would look up their account and send on to a
# specified in-group if pin is valid
#
# user is prompted for their PIN number only (no pound '#' required)
# then the user is forwarded to the active vicidial agent session
#
# can be added as an AGI to a Call Menu, or as below:
# Call Menu Entry: "agi-CALLCARD_dial_in.agi,en---3---callcard_pin_enter---callcard_pin_invalid---default"
# ;agent dial-in:
#exten => 2346,1,Answer         ; Answer the line
#exten => 2346,2,AGI(agi-CALLCARD_dial_in.agi,en---3---callcard_pin_enter---callcard_pin_invalid---default)
#exten => 2346,3,Hangup
#
# ; Below are the parameters needed for the script to be run properly
# ; 1. language
# ;     - en -                  English <default>
# ;     - es -                  Spanish
# ;     - fr -                  French, not fully supported
# ; 2. maximum attempts before hangup:
# ;     - 3        <default>
# ; 3. audio file enter pin number prompt:
# ;     - callcard_pin_enter        <default>
# ; 4. audio file invalid pin number prompt:
# ;     - callcard_pin_invalid      <default>
# ; 5. DID pattern to use for in-group forwarding settings:
# ;     - default      <default>
# ;         - USE-ORIGINATING-DID - this option will look up the DID the customer dialed in on and use those settings
#
# other audio files used:
# - pin-number-accepted
# - vm-youhave
# - callcard_minutes_left

agi-CANADA_PRI_CIDname.agi

# agi-CANADA_PRI_CIDname.agi version 0.1
#
# Runs after call goes through IAX loop to send out custom CallerIDname on
# Canadian PRIs that allow dynamic setting of CIDname with call initiation
#
# You need to have lines similar to those below in your extensions.conf file:
#
# ;outbound VICIDIAL calls:
#exten => _91NXXNXXXXXX,1,AGI(call_log.agi,${EXTEN})
#exten => _91NXXNXXXXXX,2,AGI(agi-CANADA_PRI_CIDname.agi,${EXTEN})
#exten => _91NXXNXXXXXX,3,Dial(${TRUNKX}/${EXTEN:1},55,tTo)
#exten => _91NXXNXXXXXX,4,Hangup

agi-DID_route.agi

# agi-DID_route.agi version 2.14
#
# runs when a call comes into an inbound context on a trunk. This script will
# send the calls to various places depending on the settings for each DID.
#
# You need to put a line similar to this below in your extensions.conf file in
# the context for where incoming calls go from your trunks (for example, the
# trunkinbound context which is present in the default dialplan):
#
#[trunkinbound]
# ;inbound DID catch-all:
#exten => _X.,1,AGI(agi-DID_route.agi)

agi-dtmf.agi

# agi-dtmf.agi - script for playing DTMF tones or signals received as the callerid field or in the command CLI
#
# DTMF sound files must be in /var/lib/asterisk/sounds for this to work
#
# Accepted values are: 1 2 3 4 5 6 7 8 9 0 # * ,
# comma means pause for 1 second (use 'S' for pause in CLI mode)
#
# exten => 8500998,1,Answer
# exten => 8500998,2,Playback(silence)
# exten => 8500998,3,AGI(agi-dtmf.agi)
#; exten => 8500998,3,AGI(agi-dtmf.agi,signalonly) ; optional signal only DTMF
# exten => 8500998,4,Hangup
#
# Can also be used in a Call Menu: agi-dtmf.agi,signalonly---12345   # optional signal only DTMF with CLI-defined DTMF values

agi-ingroup_survey.agi

# agi-ingroup_survey.agi version 2.14
#
# runs after a call gets transferred from an agent to ask a question, then
# optionally transfer to a call menu. Takes settings from an In-Group

agi-IVR_recording_verification.agi

# agi-IVR_recording_verification.agi      version 2.6
#
# This script is designed to function as a complete automated 3rd party
# verification IVR recording system. This script will work by optionally asking
# for a company ID and/or a customer phone number, then it will play through the
# listed prompts asking for a single digit press (i.e. 1 for a yes or a 3 for a
# no, hash/pound/star/zero/0 are not accepted only 1-9 is valid for these steps).
# All data for these calls will be logged to the vicidial_ivr table as well as
# optionally to a log file  in the standard astguiclient log file directory
# and/or STDERR output on the asterisk process. This script uses the
# /etc/astguiclient.conf file for database connection settings, logging data and
# for logfile path information only.
#
# With a modified VDAD agi transfer script, this script could also be used to do
# automated outbound surveys as well. Feature under development.
#
# ; 1. the DNIS or inbound number called
# ; 2. play the recording ID (Y|N) with prompt leading up to it
# ; 3. record this call(Y|N)
# ; 4. ask for a company code(Y|N) with the number of digits in that company code and the prompt
# ; 5. ask for a user code(Y|N) with the number of digits in that user code and the prompt
# ; 6. ask for the customer phone number(Y|N) with the number of digits in that phone number and the prompt (Y-10-85100001)
# ; 7. speak the current date (Y|N) with prompt announcing the date
# ; 8. a dash-delimited list of prompts that expect responses(85100002-85100003)
# ; 9. a "your recording ID is..." prompt (85100004)
# ; 10. logging/output (FILE|STDERR|BOTH|NONE)
#
# ;inbound IVR call:
#exten => 1234,1,Ringing        ; call ringing
#exten => 1234,2,Wait(1)        ; Wait 1 second for CID delivery from PRI
#exten => 1234,3,Answer         ; Answer the line
#exten => 1234,4,AGI(agi-IVR_recording_verification.agi,7274506620---Y-85100004---Y---Y-1-85100016---N---N---Y-85100007---85100009-600--85100012-30--8510001>
#exten => 1234,5,Hangup
#
# ;inbound IVR call from a VICIDIAL transfer:
#exten => _83002*.,1,Ringing            ; call ringing
#exten => _83002*.,2,Wait(1)            ; Wait 1 second for CID delivery
#exten => _83002*.,3,Answer             ; Answer the line
#exten => _83002*.,4,AGI(agi-IVR_recording_verification.agi,7275551234---N---Y---N---N---Y-10-85100001---N---85100002-85100003---85100004---BOTH)
#exten => _83002*.,5,Hangup

agi-LCR-Route.agi

# agi-LCR-Route.agi version 2.2.0
#
# This script looks up the NPANXX in the lcr table and sets
# the LCRTRUNK dialplan variable to the carrier string
# with the cheapest rate. If no carrier is found for this NPANXX
# the variable is unchanged so you should set it with the default
# previously.
#
# [globals]
# LCRTRUNK=SIP/provider1    ; default LCR trunk
#
# [default]
# ;outbound VICIDIAL calls:
# exten => _91NXXNXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
# exten => _91NXXNXXXXXX,n,AGI(agi-LCR-Route.agi,${EXTEN:2:6})
# exten => _91NXXNXXXXXX,n,Dial(${LCRTRUNK}/${EXTEN:2},,To)
# exten => _91NXXNXXXXXX,n,Hangup
#
# Here is the SQL to create the lcr table:
#
# create table if not exists lcr (
#        npanxx mediumint not null,
#        rate varchar(10) not null,
#        carrier_string varchar(20) not null
# );
# alter table lcr add unique index (npanxx, rate, carrier_string);
#
# A typical npanxx from this table should look like:
#
# mysql> select npanxx,rate,carrier_string from lcr where npanxx='734223';
# +--------+--------+----------------+
# | npanxx | rate   | carrier_string |
# +--------+--------+----------------+
# | 734223 | 0.0064 | SIP/provider1  |
# | 734223 | 0.0076 | SIP/provider2  |
# +--------+--------+----------------+
#
# Unfortunately these rate sheets are not in a standard format.
# You will have to write a custom loading script to populate this table.
# An exampe loading script is provided in the extras directory of the
# astguiclient source code called lcr_loader_example.pl

agi-NVA_recording.agi

# agi-NVA_recording.agi version 2.12
#
# This script is designed to give recording ability to agents not the using
# ViciDial agent screen
#
# ; 1. logging output (NONE|STDERR|FILE|BOTH)
# ; 2. the ViciDial user ID, if empty it defaults to accountcode(usually phone extension) or vicidial_live_agents user who launched the call
# ; 3. log this call in user_call_log (Y|N) default N
# ; 4. log this call in call_log (Y|N) default N, ONLY NEEDED FOR INBOUND AND INTERSYSTEM CALLS!!!
# ; 5. audio record this call (Y|N) default N
# ; 6. double-log this call in call_log (Y|N) default N, ONLY NEEDED FOR INBOUND CALLMENU FORWARDED CALLS!!!
# ; 7. play the recording ID of this call before recording starts
# ; 8. include the recording ID in the filename
# ; 9. search vicidial_list for phone number dialed (Y|N) default N, assumes 10 digit phone numbers
# ; 10. if 9 is Y, this is search method (ALLLISTS|PHONE) default ALLLISTS, search all lists, use phone setting, CURRENTLY DOES NOTHING
# ; 11. error out and end call if phone number is not found (Y|N) default N
# ; 12. run the phone entry's NVA Call URL (Y|N) default N
# ; 13. if 9 is Y, and phone number is not found, insert into phone's NVA List ID (Y|N) default N
# ; 14. if 13 is Y, override phone's NVA List ID with this list ID when lead is inserted
# ; 15. if 13 is Y, override phone's NVA Phone Code with this phone code when lead is inserted
# ; 16. if 13 is Y, override phone's NVA Status with this status when lead is inserted
#
#
# ;custom dialplan entry example: (similar to the defaultlog Call Menu)
#exten => _X.,1,AGI(agi-NVA_recording.agi,BOTH------Y---N---Y---N---N---N)
#exten => _X.,n,Goto(default,${EXTEN},1)
#exten => _X.,n,Hangup
#
# ;inbound to agent example:
#exten => 5678,1,AGI(agi-NVA_recording.agi,BOTH------Y---Y---Y---N---N---N)
#exten => 5678,n,Goto(vicidial-auto,5678,1)
#exten => 5678,n,Hangup
#
# ; example of dial prefix of 94 in System Settings Custom Dialplan to default log
#exten => _941NXXNXXXXXX,1,Goto(defaultlog,9${EXTEN:2},1)
#
# ; example of using as Call Menu prompt to record with playing of recording id
#agi-NVA_recording.agi,BOTH------Y---N---Y---N---Y---Y
#
# ; example of using as Call Menu prompt to record, search for phone number, run NVA call URL and error if not found
#agi-NVA_recording.agi,BOTH------Y---N---Y---N---N---N---Y---ALLLISTS---Y---Y
#
# ;custom dialplan entry example: (similar to the defaultlog Call Menu) with NVA options
#exten => _X.,1,AGI(agi-NVA_recording.agi,BOTH------Y---N---Y---N---N---N---Y---ALLLISTS---N---Y---Y)
#exten => _X.,n,Goto(default,${EXTEN},1)
#exten => _X.,n,Hangup

agi-NVA_recording_MIX.agi

# agi-NVA_recording_MIX.agi version 2.14
#
# This script is designed to give recording ability to agents not the using
# ViciDial agent screen. This version is designed for Asterisk 16 (MixMonitor)
#
# ; 1. logging output (NONE|STDERR|FILE|BOTH)
# ; 2. the ViciDial user ID, if empty it defaults to accountcode(usually phone extension) or vicidial_live_agents user who launched the call
# ; 3. log this call in user_call_log (Y|N) default N
# ; 4. log this call in call_log (Y|N) default N, ONLY NEEDED FOR INBOUND AND INTERSYSTEM CALLS!!!
# ; 5. audio record this call (Y|N) default N
# ; 6. double-log this call in call_log (Y|N) default N, ONLY NEEDED FOR INBOUND CALLMENU FORWARDED CALLS!!!
# ; 7. play the recording ID of this call before recording starts
# ; 8. include the recording ID in the filename
# ; 9. search vicidial_list for phone number dialed (Y|N) default N, assumes 10 digit phone numbers
# ; 10. if 9 is Y, this is search method (ALLLISTS|PHONE) default ALLLISTS, search all lists, use phone setting, CURRENTLY DOES NOTHING
# ; 11. error out and end call if phone number is not found (Y|N) default N
# ; 12. run the phone entry's NVA Call URL (Y|N) default N
# ; 13. if 9 is Y, and phone number is not found, insert into phone's NVA List ID (Y|N) default N
# ; 14. if 13 is Y, override phone's NVA List ID with this list ID when lead is inserted
# ; 15. if 13 is Y, override phone's NVA Phone Code with this phone code when lead is inserted
# ; 16. if 13 is Y, override phone's NVA Status with this status when lead is inserted
#
#
# ;custom dialplan entry example: (similar to the defaultlog Call Menu)
#exten => _X.,1,AGI(agi-NVA_recording_MIX.agi,BOTH------Y---N---Y---N---N---N)
#exten => _X.,n,Goto(default,${EXTEN},1)
#exten => _X.,n,Hangup
#
# ;inbound to agent example:
#exten => 5678,1,AGI(agi-NVA_recording_MIX.agi,BOTH------Y---Y---Y---N---N---N)
#exten => 5678,n,Goto(vicidial-auto,5678,1)
#exten => 5678,n,Hangup
#
# ; example of dial prefix of 94 in System Settings Custom Dialplan to default log
#exten => _941NXXNXXXXXX,1,Goto(defaultlog,9${EXTEN:2},1)
#
# ; example of using as Call Menu prompt to record with playing of recording id
#agi-NVA_recording_MIX.agi,BOTH------Y---N---Y---N---Y---Y
#
# ; example of using as Call Menu prompt to record, search for phone number, run NVA call URL and error if not found
#agi-NVA_recording_MIX.agi,BOTH------Y---N---Y---N---N---N---Y---ALLLISTS---Y---Y
#
# ;custom dialplan entry example: (similar to the defaultlog Call Menu) with NVA options
#exten => _X.,1,AGI(agi-NVA_recording_MIX.agi,BOTH------Y---N---Y---N---N---N---Y---ALLLISTS---N---Y---Y)
#exten => _X.,n,Goto(default,${EXTEN},1)
#exten => _X.,n,Hangup

agi-phone_monitor.agi

# agi-phone_monitor.agi      version 2.8
#
# NOTE! - To use this script you MUST have entries in the System Settings
#         "Custom Dialplan Entry" for this to work.
#         Read the AGENT_MONITOR.txt document for more information.
#
# This script is designed to allow managers to listen to agent sessions by
# dialing a phone exten number or user ID number. For this to work, the user ID
# or phone extension must be only digits. If you are using the phone extension,
# then all phone extensions on the system must be unique.
#
# user is prompted for a user ID or phone login then press #
# then the user is forwarded to monitor the active vicidial agent session
#
# ; settings for this script:
# ; 1. USER, PHONE or PLOGIN, lookup by user id, phone extension or phone login (default is USER)
# ; 2. Y or N, log in api log (default is N)
# ; 3. BARGE or LISTEN, (default is LISTEN)
# ; 4. Prepopulated ID, for use in context by itself
#
# can be added as an AGI to a Call Menu, or just a direct extension transfer:
#
# ; call menu AGI with options:
#  agi-phone_monitor.agi,USER---N---LISTEN---
#
# ; or as extension transfer to "up_monitor_exit" context and "s" extension

agi-record_prompts.agi

# agi-record_prompts.agi      version 2.12
#
# for recording prompts to GSM file over the phone
# Saves recordings with 8-digit filenames to be played when exten is dialed
#
#       ; prompts for recording AGI script, ID is 4321
#   ; first variable is format (gsm/wav)
#       ; second variable is timeout in milliseconds (default is 360000 [6 minutes])
#       exten => 8167,1,Answer
#       exten => 8167,2,AGI(agi-record_prompts.agi,wav-----360000)
#       exten => 8167,3,Hangup
#       exten => 8168,1,Answer
#       exten => 8168,2,AGI(agi-record_prompts.agi,gsm-----360000)
#       exten => 8168,3,Hangup
#
#       ; playback of recorded prompts
#       exten => _851XXXXX,1,Answer
#       exten => _851XXXXX,2,Playback(${EXTEN})
#       exten => _851XXXXX,3,Hangup
#
#       GSM Sound Files used:
#       - ld_welcome_pin_number
#       - ld_invalid_pin_number
#       - vm-rec-generic
#       - auth-thankyou
#       - vm-review
#       - vm-msgsaved
#       - vm-goodbye

agi-set_variables.agi

# agi-set_variables.agi version 2.14
#
# runs after a call_log before call is placed out the trunk and sets all
# vicidial_list fields as variables for the call
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ; VICIDIAL_auto_dialer transfer script AMD with Load Balanced:
# exten => _91NXXNXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
# exten => _91NXXNXXXXXX,n,AGI(agi-set_variables.agi,)
# exten => _91NXXNXXXXXX,n,Verbose("phone_code:${phone_code}, phone_number:${phone_number}, lead_id:${lead_id}")
# exten => _91NXXNXXXXXX,n,Dial(${TESTSIPTRUNK}/${EXTEN:2},,tTor)
# exten => _91NXXNXXXXXX,n,Hangup

agi-TILTX_SHAKEN.agi

# agi-TILTX_SHAKEN.agi version 2.14
#
# Runs before a call goes to a carrier for optional DNC/Disconnect check as well
# as CID check and STIR/SHAKEN SIP call Identity tagging through TILTX service
#
# You need to put lines similar to those below in your VICIdial carrier dialplan entry:
#
# exten => _91NXXNXXXXXX,n,AGI(/var/lib/asterisk/agi-bin/agi-TILTX_SHAKEN.agi,${EXTEN:-10}-----${CALLERID(num)}-----YES-----)
#
# CLI FLAG OPTIONS:
# 1. Phone number being called
# 2. CallerID number being sent with call
# 3. (YES/NO) whether to speak error messages or not, default 'NO'
# 4. Settings Container ID to use for TILTX API settings, default 'TILTX_SHAKEN_API_KEY'

agi-VDAD_ALL_inbound.agi

# agi-VDAD_ALL_inbound.agi version 2.14
#
# runs when a call comes in from an inbound call. This script will
# send the calls out to the closers that are logged in.
# ## THIS SCRIPT CONSOLIDATES THIRTEEN SEPARATE VDAD closer inbound SCRIPTS ##
#
#
# You need to put lines similar to those below in your extensions.conf file:
# ; Below are the parameters needed for the script to be run properly
# ; 1. the method of call handling for the script:
# ;     - CID -         CID received, add record with phone number
# ;     - CIDLOOKUP -   Lookup CID to find record in whole system
# ;     - CIDLOOKUPRL - Restrict lookup to one list
# ;     - CIDLOOKUPRC - Restrict lookup to one campaign's lists
# ;     - CIDLOOKUPALT -        Lookup CID to find record in whole system by phone number then alt_phone
# ;     - CIDLOOKUPRLALT -      Restrict lookup to one list by phone number then alt_phone
# ;     - CIDLOOKUPRCALT -      Restrict lookup to one campaign's lists by phone number then alt_phone
# ;     - CIDLOOKUPADDR3 -      Lookup CID to find record in whole system by phone number then address3
# ;     - CIDLOOKUPRLADDR3 -    Restrict lookup to one list by phone number then address3
# ;     - CIDLOOKUPRCADDR3 -    Restrict lookup to one campaign's lists by phone number then address3
# ;     - CIDLOOKUPALTADDR3 -   Lookup CID to find record in whole system by phone number then alt_phone then address3
# ;     - CIDLOOKUPRLALTADDR3 - Restrict lookup to one list by phone number then alt_phone then address3
# ;     - CIDLOOKUPRCALTADDR3 - Restrict lookup to one campaign's lists by phone number then alt_phone then address3
# ;     - CLOSER -      Closer calls from VICIDIAL fronters(and previous in-group calls)
# ;     - ANI -         ANI received, add record with phone number (based on RBS T1s)
# ;     - ANILOOKUP -   Lookup ANI to find record in whole system
# ;     - ANILOOKUPRL - Restrict lookup to one list
# ;     - ANILOOKUPRC - Restrict lookup to one campaign's lists
# ;     - VID -         Add record with Vendor Lead Code received as argument 12
# ;     - VIDLOOKUP -   Lookup Vendor Lead Code received as argument 12 to find record in whole system
# ;     - VIDLOOKUPRL - Restrict lookup to one list (argument 12)
# ;     - VIDLOOKUPRC - Restrict lookup to one campaign's lists (argument 12)
# ;     - VIDPROMPT -   Prompt Vendor Lead Code to User with IVR to add record with Vendor Lead Code
# ;     - VIDPROMPTLOOKUP -     Prompt Vendor Lead Code to User with IVR to find record in whole system
# ;     - VIDPROMPTLOOKUPRL -   Restrict lookup to one list
# ;     - VIDPROMPTLOOKUPRC -   Restrict lookup to one campaign's lists
# ;     - 3DIGITID -    Enter 3 digit code to go to agent
# ;     - 4DIGITID -    Enter 4 digit code to go to agent
# ;     - XDIGITID -    Enter X digit code to go to agent(variable, i.e. 9DIGITID, 12DIGITID, etc...)
# ; 2. the method of searching for an available agent:
# ;     - LO - Load Balance Overflow only (priority to home server)
# ;     - LB - <default> Load Balance total system
# ;     - SO - Home server only
# ; 3. the full name of the IN GROUP to be used in vicidial for the inbound call
# ; 4. the phone number that was called, for the log entry
# ; 5. the callerID or lead_id of the person that called(usually overridden)
# ; 6. the park extension audio file name if used
# ; 7. the status of the call initially(usually not used)
# ; 8. the list_id to insert the new lead under if it is new (and CID/ANI available)
# ; 9. the phone dialing code to insert with the new lead if new (and CID/ANI available)
# ; 10. the campaign_id to search within lists if CIDLOOKUPRC
# ; 11. the user to queue the call to for AGENTDIRECT in-group calls
# ; 12. vendor_lead_code if external mechanism like custom IVR is used to prompt user for ID
# ;              you can also set the vendor_lead_code variable instead if you are using VIDPROMPT
# ; 13. VID enter prompt filename to play if method is set to a VID* option
# ; 14. VID you-have-entered filename to play if method is set to a VID* option
# ; 15. VID confirm prompt filename to play if method is set to a VID* option
# ; 16. VID digit length validation to use if method is set to a VID* option, set to empty or X to disable
#
# ;inbound VICIDIAL calls:
#exten => 1234,1,Answer                  ; Answer the line
#exten => 1234,2,AGI(agi-VDAD_ALL_inbound.agi,CID-----LB-----INB-----7274515134-----Closer-----park----------999-----1-----OUTB)
#exten => 1234,3,Hangup
#
# ;inbound with removal of first digit of callerID on all calls:
#exten => 1234,1,Answer                  ; Answer the line
#exten => 1234,n,set(CALLERID(num)=${CALLERID(num):1})
#exten => 1234,n,AGI(agi-VDAD_ALL_inbound.agi,CID-----LB-----INB-----7274515134-----Closer-----park----------999-----1-----OUTB)
#exten => 1234,n,Hangup
#
#; inbound VICIDIAL transfer calls [can arrive through PRI T1 crossover, IAX or SIP channel]
#exten => _90009.,1,Answer                  ; Answer the line
#exten => _90009.,2,AGI(agi-VDAD_ALL_inbound.agi,CLOSER-----LB-----CL_TESTCAMP-----7275551212-----Closer-----park----------999-----1)
#exten => _90009.,3,Hangup
#exten => _990009.,1,Answer                  ; Answer the line
#exten => _990009.,2,AGI(agi-VDAD_ALL_inbound.agi,CLOSER-----LB-----CL_TESTCAMP-----7275551212-----Closer-----park----------999-----1)
#exten => _990009.,3,Hangup
#; DID forwarded calls
#exten => _99909*.,1,Answer
#exten => _99909*.,2,AGI(agi-VDAD_ALL_inbound.agi)
#exten => _99909*.,3,Hangup

agi-VDAD_ALL_outbound.agi

# agi-VDAD_ALL_outbound.agi version 2.14
#
# runs when an outbound call is answered. This script will
# send the calls out to the agents that are logged in.
# ## THIS SCRIPT CONSOLIDATES EIGHT SEPARATE VDAD outbound transfer SCRIPTS ##
#
#
# You need to put lines similar to those below in your extensions.conf file:
# ; Below are the parameters needed for the script to be run properly
# ; 1. the method of call handling for the script:
# ;     - NORMAL -              <default> Standard outbound routing to agent
# ;     - TEST -                For performance testing only
# ;     - BROADCAST -   For no-agent broadcast dialing
# ;     - SURVEY -              For survery question then on to agent
# ;     - SURVEYCAMP -  For survery question using campaign settings
# ;     - SURVEYCAMPCEP - Survery question, campaign settings, cepstral name
# ;     - REMINDER -    Reminder campaign
# ;     - REMINDX -             Reminder with transfer to agent
# ; 2. the method of searching for an available agent: (agent_search_method)
# ;     - LB - <default> Load Balance total system
# ;     - LO - Load Balance Overflow only (priority to home server)
# ;     - SO - Home server only
# ; 3. The Connected Line Name to solve CID Name change issues.
# ; 4. the sound file to play when doing a SURVEY, REMINDER, REMINDX campaign
# ; 5. the acceptible dtmf digits for a SURVEY
# ; 6. the out-opt digit for a SURVEY (must be in the digit map)
# ; 7. the sound file to play for a SURVEY when transfering to an agent
# ; 8. the sound file to play for a SURVEY when DNCing the call
# ; 9. OPTIN or OPTOUT: if OPTIN call is only sent to agent with button press
# ;     if OPTOUT call is sent to agent if no button press at all
# ; 10. the status that is use for a SURVEY when someone opts out
# ;     if the status is DNC it will also add them to the internal dnc table
#
#; VICIDIAL_auto_dialer transfer script Load Balanced:
#exten => 8368,1,AGI(agi://127.0.0.1:4577/call_log)
#exten => 8368,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB-----${CONNECTEDLINE(name)})
#exten => 8368,n,Hangup()
#
# ;outbound VICIDIAL SURVEY calls:
#exten => 8366,1,AGI(agi://127.0.0.1:4577/call_log)
#exten => 8366,2,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact----->
#exten => 8366,3,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact----->
#exten => 8366,4,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact----->
#exten => 8366,5,Hangup

agi-VDAD_ALL_outboundBETA2.agi

# agi-VDAD_ALL_outboundBETA2.agi version 2.14
#
# runs when an outbound call is answered. This script will
# send the calls out to the agents that are logged in.
# ## THIS SCRIPT CONSOLIDATES EIGHT SEPARATE VDAD outbound transfer SCRIPTS ##
#
#
# You need to put lines similar to those below in your extensions.conf file:
# ; Below are the parameters needed for the script to be run properly
# ; 1. the method of call handling for the script:
# ;     - NORMAL -              <default> Standard outbound routing to agent
# ;     - TEST -                For performance testing only
# ;     - BROADCAST -   For no-agent broadcast dialing
# ;     - SURVEY -              For survery question then on to agent
# ;     - SURVEYCAMP -  For survery question using campaign settings
# ;     - SURVEYCAMPCEP - Survery question, campaign settings, cepstral name
# ;     - REMINDER -    Reminder campaign
# ;     - REMINDX -             Reminder with transfer to agent
# ; 2. the method of searching for an available agent:
# ;     - LB - <default> Load Balance total system
# ;     - LO - Load Balance Overflow only (priority to home server)
# ;     - SO - Home server only
# ; 3. the sound file to play when doing a SURVEY, REMINDER, REMINDX campaign
# ; 4. the acceptible dtmf digits for a SURVEY
# ; 5. the out-opt digit for a SURVEY (must be in the digit map)
# ; 6. the sound file to play for a SURVEY when transfering to an agent
# ; 7. the sound file to play for a SURVEY when DNCing the call
# ; 8. OPTIN or OPTOUT: if OPTIN call is only sent to agent with button press
# ;     if OPTOUT call is sent to agent if no button press at all
# ; 9. the status that is used for a SURVEY when someone opts out
# ;     if the status is DNC it will also add them to the internal dnc table
#
# ;outbound VICIDIAL calls:
#exten => 8368,1,AGI(agi://127.0.0.1:4577/call_log)
#exten => 8368,2,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB)
#exten => 8368,3,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB)
#exten => 8368,4,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB)
#exten => 8368,5,Hangup
#
# ;outbound VICIDIAL SURVEY calls:
#exten => 8366,1,AGI(agi://127.0.0.1:4577/call_log)
#exten => 8366,2,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact----->
#exten => 8366,3,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact----->
#exten => 8366,4,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact----->
#exten => 8366,5,Hangup

agi-VDAD_ALL_outboundBETA.agi

# agi-VDAD_ALL_outboundBETA.agi version 2.14
#
# runs when an outbound call is answered. This script will
# send the calls out to the agents that are logged in.
# ## THIS SCRIPT CONSOLIDATES EIGHT SEPARATE VDAD outbound transfer SCRIPTS ##
#
#
# You need to put lines similar to those below in your extensions.conf file:
# ; Below are the parameters needed for the script to be run properly
# ; 1. the method of call handling for the script:
# ;     - NORMAL -              <default> Standard outbound routing to agent
# ;     - TEST -                For performance testing only
# ;     - BROADCAST -   For no-agent broadcast dialing
# ;     - SURVEY -              For survery question then on to agent
# ;     - SURVEYCAMP -  For survery question using campaign settings
# ;     - SURVEYCAMPCEP - Survery question, campaign settings, cepstral name
# ;     - REMINDER -    Reminder campaign
# ;     - REMINDX -             Reminder with transfer to agent
# ; 2. the method of searching for an available agent:
# ;     - LB - <default> Load Balance total system
# ;     - LO - Load Balance Overflow only (priority to home server)
# ;     - SO - Home server only
# ; 3. the sound file to play when doing a SURVEY, REMINDER, REMINDX campaign
# ; 4. the acceptible dtmf digits for a SURVEY
# ; 5. the out-opt digit for a SURVEY (must be in the digit map)
# ; 6. the sound file to play for a SURVEY when transfering to an agent
# ; 7. the sound file to play for a SURVEY when DNCing the call
# ; 8. OPTIN or OPTOUT: if OPTIN call is only sent to agent with button press
# ;     if OPTOUT call is sent to agent if no button press at all
# ; 9. the status that is used for a SURVEY when someone opts out
# ;     if the status is DNC it will also add them to the internal dnc table
#
# ;outbound VICIDIAL calls:
#exten => 8368,1,AGI(agi://127.0.0.1:4577/call_log)
#exten => 8368,2,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB)
#exten => 8368,3,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB)
#exten => 8368,4,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB)
#exten => 8368,5,Hangup
#
# ;outbound VICIDIAL SURVEY calls:
#exten => 8366,1,AGI(agi://127.0.0.1:4577/call_log)
#exten => 8366,2,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact----->
#exten => 8366,3,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact----->
#exten => 8366,4,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact----->
#exten => 8366,5,Hangup

agi-VDADautoREMINDER.agi

# agi-VDADautoREMINDER.agi      version 2.6
#
# runs when a call comes in from the VICIDIAL auto_dialer. This script will
# send the calls out to specified voicemail boxes in if called person presses key.
# The voicemail box is defined per-lead in the vicidial_list.security_phrase field
# This campaign does not send calls to live agents.
#
#   Call statuses from this script:
#       N- Call was picked up, didn't finish initial message
#       MP- Initial message was played
#       VM- call was sent to voicemail
#       CALLBK- customer selected to be called back
#
# It is recommended that you run this campaign at a dial level of 1.0
# It is recommended that you use remote_agents for activation of this script
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ;VICIDIAL_auto_dialer transfer script:
# exten => 8372,1,AGI(call_log.agi,${EXTEN})
# exten => 8372,2,AGI(agi-VDADautoREMINDER.agi,${EXTEN})


agi-VDADautoREMINDERxfer.agi

# agi-VDADautoREMINDERxfer.agi      version 2.6
#
# runs when a call comes in from the VICIDIAL auto_dialer. This script will
# send the calls out to specified voicemail boxes or specified extensions if
# called person presses specified key(1,2,3).
# The voicemail box is defined per-lead in the vicidial_list.security_phrase field
# The exten xfer number is defined per-lead in the vicidial_list.comments field
#
#   Call statuses from this script:
#       N- Call was picked up, didn't finish initial message
#       MP- Initial message was played
#       VM- call was sent to voicemail
#       XFER- call was sent to specified extension
#       CALLBK- customer selected to be called back
#
# It is recommended that you run this campaign at a dial level of 1.0
# It is recommended that you use remote_agents for activation of this script
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ;VICIDIAL_auto_dialer transfer script:
# exten => 8372,1,AGI(call_log.agi,${EXTEN})
# exten => 8372,2,AGI(agi-VDADautoREMINDERxfer.agi,${EXTEN})

agi-VDADfixCXFER.agi

# agi-VDADfixCXFER.agi      version 2.6
#
# runs when a Consultative transfer is released by the vicidial fronter as the
# call arrives on another channel so that the vicidial_live_agents record is
# updated to be accurate.
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ;VICIDIAL Consultative Xfer fix script:
# exten => _8600XXX*.,1,AGI(agi-VDADfixCXFER.agi)
# exten => _010*010*010*015*8600XXX*.,1,AGI(agi-VDADfixCXFER.agi)

agi-VDAD_inbound_calltime_check.agi

# agi-VDAD_inbound_calltime_check.agi   version 2.14
#
# Runs when a call comes in from an inbound call. This script will check the
# settings of the defined calltime scheme in VICIDIAL and either send the call
# to the after-hours method for the defined IN-GROUP or exit to let the call
# continue. This script is also used by Call Menus.
#
# You need to put lines similar to those below in your extensions.conf file:
# ; Below are the parameters needed for the script to be run properly
# ; 1. the in-group to take settings from
# ; 2. whether to log the call into the vicidial_auto_calls table:
# ;             - YES - insert the call as status IVR
# ;             - NO  - do not insert call into vac table
# ; 3. note to put in the comment_b field when record inserted into the
# ;    live_inbound_log table, no spaces in this field, use underscore '_'
# ;    default if not populated is NONE
# ; 4. call time scheme override
# ; 5. call route after hours override
# ; 6. call route value after hours override
# ; 7. call route context after hours override
# ; 8. vicidial_list query qualification (YES/NO, default is NO)
# ;    * only works with lead_id-populated calleridname phone calls.
# ;    This option allows you to specify a SQL fragment used to do a count(*)
# ;    against the vicidial_list table for the lead and other field values
# ;    This feature will look for the qualify_sql in the call menu record
# ; 9. play sip-silence audio, YES/NO, default is YES
# ;
# ;inbound calls check calltime:
#exten => 1234,1,Answer                  ; Answer the line
#exten => 1234,2,AGI(agi-VDAD_inbound_calltime_check.agi,INBOUND-----YES-----START-----24hours-----EXTENSION-----101-----default-----NO-----YES)
#exten => 1234,3,Hangup

agi-VDADinbound_NI_DNC_CIDlookup.agi

# NOTE: IT IS RECOMMENDED THAT YOU USE cm_dnc.agi THROUGH A CALL MENU INSTEAD!
#
# agi-VDADinbound_NI_DNC_CIDlookup.agi version 2.0.5   *DBI-version*
#
# runs when a call comes in from an inbound call. This script will
# play a message and take input to automatically change customer lead to NI or DNC.
#  *** This version detects inbound callerID over PRI ***
#
# Flag Options:
# 1- default to insert into the vicidial_dnc table for DNC selections (Default=YES)
# 2- campaign to take dnc settings from(overrides option 1)
#
# ;inbound call from outbound CID callbacks from VICIDIAL calls:
#exten => 1234,1,Ringing                 ; call ringing
#exten => 1234,2,Wait(1)                 ; Wait 1 second for CID delivery from PRI
#exten => 1234,3,Answer                  ; Answer the line
#exten => 1234,4,AGI(agi-VDADinbound_NI_DNC_CIDlookup.agi,YES-----TESTCAMP)
#exten => 1234,5,Hangup

agi-VDADlisten_DTMF.agi

# agi-VDADlisten_DTMF.agi version 2.0.5   *DBI-version*
#
# To be initiated by an agent so during a call. Agent will click a PIN NUMBER
# link on a web form webpage that will Originate a new call to this script
#
# This script plays a beep and waits for entry of 4 digits then inserts record
#
# ***** THIS SCRIPT ONLY WORKS WITH A CROSSOVER T1 CABLE FROM ONE T1 PORT *****
# ***** TO ANOTHER T1 PORT WHETHER ON THE SAME SERVER OR DIFFERENT ONE    *****
#
# IN THE CAMPAIGN OR IN-GROUP NUMBER PRESET FIELD:
# AXFER83009
#
# ON THE SERVER ORIGINATING THE CALL:
#;outbound DTMF VICIDIAL calls:
#exten => _983009.,1,AGI(call_log.agi,${EXTEN})
#exten => _983009.,2,Dial(${TRUNKY}/${EXTEN:1},60)
#exten => _983009.,3,Hangup
#
# ON THE SERVER THAT HAS THIS SCRIPT:
#;inbound DTMF VICIDIAL calls:
#exten => _83009.,1,AGI(agi-VDADlisten_DTMF.agi,${EXTEN})
#exten => _83009.,2,Hangup

agi-VDAD_local_optimize.agi

# agi_VDAD_local_optimize.agi
#
# This script looks up the Local channel in the cid_channels_recent table
# and redirects the actual channel to the current extension with the first
# two digits stripped off. IE 138368 -> 8368. This is to overcome the change
# to Local channels in Asterisk 12 and later.

agi-VDAD_pin_IVR.agi

# agi-VDAD_pin_IVR.agi version 2.0.5   *DBI-version*
#
# At the end of a call, the agent transfers customer to this script
#
# This script plays a beep then plays the first portion of the message
# then logs the portion as listened to in the vicidial_list_pins table
# then plays second portion and hangs up.
#
# IN THE CAMPAIGN OR IN-GROUP NUMBER PRESET FIELD:
# AXFER83209
#
# ON THE SERVER ORIGINATING THE CALL:
#;outbound IVR play VICIDIAL calls:
#exten => _983209.,1,AGI(call_log.agi,${EXTEN})
#exten => _983209.,2,Dial(${TRUNKY}/${EXTEN:1},60)
#exten => _983209.,3,Hangup
#
# ON THE SERVER THAT HAS THIS SCRIPT:
#;inbound IVR play VICIDIAL calls:
#exten => _83209.,1,Answer
#exten => _83209.,2,AGI(agi-VDAD_pin_IVR.agi,${EXTEN})
#exten => _83209.,3,Hangup

agi-VDAD_RINGALL.agi

# agi-VDAD_RINGALL.agi version 2.8
#
# NOTE: this script is used for on-hook agents to be connected to customer calls
# when they answer their ringing phones
#
# In the default dialplan context, this is set to the following:
# ; these are used for the ring_all function in VICIDIAL
# exten => _8331*.,1,Playback(sip-silence)
# exten => _8331*.,n,AGI(agi-VDAD_RINGALL.agi,${EXTEN})
# exten => _8331*.,n,AGI(agi-VDAD_RINGALL.agi,${EXTEN})
# exten => _8331*.,n,Hangup

agi-VDADselective_CID.agi

# agi-VDADselective_CID.agi version 0.1   *NO DB Connection*
#
# Runs before a call is placed outbound to filter outgoing callerIDnumber
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ;outbound VICIDIAL calls:
#exten => _91NXXNXXXXXX,1,AGI(call_log.agi,${EXTEN})
#exten => _91NXXNXXXXXX,2,AGI(agi-VDADselective_CID.agi,${EXTEN})
#exten => _91NXXNXXXXXX,3,Dial(${TRUNKX}/${EXTEN:1},55,tTo)
#exten => _91NXXNXXXXXX,4,Hangup

agi-VDADselective_CID_hangup.agi

# agi-VDADselective_CID_hangup.agi      version 2.6
#
# Will hangup a call if it is not within the specified area codes
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ;outbound VICIDIAL calls:
#exten => 8352,1,AGI(agi-VDADselective_CID_hangup.agi,${EXTEN})
#exten => 8352,2,Playback(85100001)
#exten => 8352,3,Hangup

agi-VICIrecGateway.agi

# agi-VICIrecGateway.agi version 2.14
#
# Designed to work on a stand-alone Asterisk server and record calls in stereo
#
# You need to put a line similar to this below in your extensions.conf file in
# the context for where incoming calls go from your trunks (for example, the
# trunkinbound context which is present in the default dialplan):
#
#[handler]
#exten => addheader,1,Set(PJSIP_HEADER(add,X-VICIrecGatewayID)=${VICIrecGatewayID})
#exten => addheader,n,Return()
#
#[stereo-rec-inbound]
#exten => _X.,1,Progress()
#exten => _X.,n,Noop(${CALLERID(num)})
#exten => _X.,n,AGI(agi-VICIrecGateway.agi)
#exten => _X.,n,Noop(${CARRIER_FILENAME})
#exten => _X.,n,Noop(${DIALER_FILENAME})
#exten => _X.,n,MixMonitor(,r(${CARRIER_FILENAME})t(${DIALER_FILENAME})S)
#exten => _X.,n,Dial(PJSIP/${EXTEN}@pjdial147,,Tob(handler^addheader^1))
#
#[stereo-rec-outbound]
#exten => _X.,1,Progress()
#exten => _X.,n,Noop(${CALLERID(num)})
#exten => _X.,n,AGI(agi-VICIrecGateway.agi)
#exten => _X.,n,Noop(${CARRIER_FILENAME})
#exten => _X.,n,Noop(${DIALER_FILENAME})
#exten => _X.,n,MixMonitor(,t(${CARRIER_FILENAME})r(${DIALER_FILENAME})S)
#exten => _X.,n,Dial(PJSIP/${EXTEN}@pjsgw1,,To)

call_inbound.agi

# call_inbound.agi      version 2.6
#
# runs at the beginning and ending of every inbound call received
#
# You need to put lines similar to those below in your extensions.conf file:
#
# parameters for call_inbound.agi (7 fields separated by five dashes "-----"):
# 1. the extension of the phone to ring as defined in the asterisk.phones table
# 2. the phone number that was called, for the live_inbound/_log entry
# 3. a text description of the number that was called in
# 4-7. optional fields, they are also passed as fields in the GUI to web browser
#
# ;inbound calls:
#exten => _*NXXNXXXXXX*3429,3,AGI(call_inbound.agi,spa2000-----8005553429-----Inbound 800-----x-----y-----z-----w)

cepstral_generate.pl

# cepstral_generate.pl    version 2.2.0
#
# Text-To-Speech files will be cached for later use.
#
# Call this script like this:
# /var/lib/asterisk/agi-bin/cepstral_generate.pl --debug --voice=Allison-8kHz --dialog=Hello\ There

cm.agi

# cm.agi   version 2.14
#
# Used by Call Menus to log digit presses if enabled in the settings. You should
# not need to manually use this script, it is used by the dialplan builder.
#
# You need to put lines similar to those below in your extensions.conf file:
# ; Below are the parameters needed for the script to be run properly
# ; 1. the in-group to take settings from
# ; 2. digit pressed
# ; 3. field(in vicidial_list) to update with DTMF pressed (only if lead_id populated)
# ; 4. alt-log(enable alternate logging)
# ; 5. question number used if alt-logging is enabled
# ;
# ;inbound calls check calltime:
#exten => 1,1,AGI(cm.agi,INBOUND-----1-----province----------)
#exten => 1,2,...
#
# ;to allow for multi-digit entries, put similar entry in the Custom Dialplan Entry:
#exten => _XXXXX,1,AGI(cm.agi,INBOUND-----${EXTEN}-----postal_code)
#exten => _XXXXX,n,Goto(next_callmenu_here,s,1)

cm_areacode.agi

# cm_areacode.agi version 2.12
#
# Designed to work with Call Menus to allow searching of the areacode of the
# caller ID phone number the customer called in on, to be searched within the
# vicidial_phone_codes table to gather the state, then search the
# vicidial_inbound_dids table for that state in the did_carrier_description
# field and send the call on to the did that matches.
#
# If areacode is not found call will go to the 'D' option in the call menu
# If state DID is not found call will go to the 'C' option in the call menu
#
# Flag Options:
# 1- Country code to search the areacode within, default 1
# 2- Length of areacode in digits, default 3
# 3- DID prefix to filter by in searching for DIDs, default 999
#
# example of what to set in the Call Menu:
# Set the prompt to "sip-silence"
# Set the Timeout to 1 second
# Option: "Timeout" Route: "AGI" AGI: "cm_areacode.agi,1---3---999"

cm_cid_change.agi

# cm_cid_change.agi version 2.14
#
# Designed to allow you to change the CID of a call to either a fixed number or
# a combination of CUSTOMER, CLOSER just like the in-group Action Transfer CID
# feature. Script is designed to handle calls already assigned to leads, not
# new inbound calls that only have a phone number.
#
# Flag Options:
# 1- Fixed CID number, or CUSTOMER or CUSTOMERCLOSER
#
# example of what to put in the AGI entry for a Call Menu AGI route:
# cm_cid_change.agi,CUSTOMERCLOSER

cm_date.agi

# cm_date.agi   version 2.6
#
# Can be used in a call menu prompt to play a date string as defined by the settings below
#
# ; Below are the parameters needed for the script to be run properly
# ; the "SAY DATETIME" parameters for what to say separated by three dashes
# ; 1. offset from current epoch in seconds, positive or negative
# ;             1 hour is 3600
# ;             1 day is 86400
# ;             1 week is 604800
# ;             30 days is 2592000
# ;             1 year is 31536000
# ; 2. format of the date to say, i.e. "ABdY":
# ;     A: Day of the week
# ;     B: Month (Full Text)
# ;     m: Month (Numeric)
# ;     d: Day of the month
# ;     Y: Year
# ;     I: Hour (12-hour format)
# ;     H: Hour (24-hour format)
# ;     M: Minutes
# ;     P: AM/PM
# ;     Q: Shorthand for Today, Yesterday or ABdY
# ;     R: Shorthand for HM
# ;     S: Seconds
# ;     T: Timezone
#
# ;inbound calls check calltime:
# ;   (this example is for yesterday and says "Monday March 25th 2013")
# cm_date.agi,-86400---ABdY

cm_dnc.agi

# cm_dnc.agi version 2.14
#
# Designed to work with Cell Menus to allow setting of a number as DNC or NI
# This script is meant as a replacement for the agi-VDADinbound_NI_DNC_CIDlookup.agi
# script. It is designed to work easily in the Call Menu framework, it plays no
# audio itself, and it has more options.
#
# Flag Options:
# 1- run as DNC status or NI status (Default=NI)
# 2- default to insert into the vicidial_dnc table for DNC selections (Default=YES)
# 3- campaign to take dnc settings from(overrides option 2)
# 4- call menu option to send the call to after executing (Default=B)
# 5- if option 3 is used, search for lead in campaign lists or whole system(CAMP or SYS) (Default=SYS)
#
# example of what to put in the AGI entry for a Call Menu AGI route:
# cm_dnc.agi,DNC---YES---TESTCAMP---B---CAMP

cm_dnc_new.agi

# cm_dnc_new.agi version 2.12
#
# Designed to work with Cell Menus to allow setting of a number as DNC or NI
# This script is meant as a replacecment for the agi-VDADinbound_NI_DNC_CIDlookup.agi
# script. It is designed to work easily in the Call Menu framework, it plays no
# audio itself, and it has more options.
#
# Flag Options:
# 1- run as DNC status or ANY OTHER status (Default=NI)
# 2- default to insert into the vicidial_dnc table for DNC selections (Default=YES)
# 3- campaigns to take dnc settings from(overrides option 2) multiple campaigns separated by single dash
# 4- call menu option to send the call to after executing (Default=B)
# 5- if option 3 is used, search for lead in campaign lists or whole system(CAMP or SYS) (Default=SYS)
# 6- optional audio store file to play
#
# example of what to put in the AGI entry for a Call Menu AGI route:
# cm_dnc_new.agi,DNC---YES---TESTCAMP---B---CAMP---auth-thankyou

cm_fpg.agi

# cm_fpg.agi version 2.14
#
# Designed to work with Cell Menus to allow the entry of a CID number into a
# Filter Phone Group. It is designed to work easily in the Call Menu framework,
# it plays no audio itself, and it has more options.
#
# Flag Options:
# 1- Filter Phone Group ID to insert into
# 2- call menu option to send the call to after executing (Default=B)
# 3- (optional) number to enter instead of CIDnumber
#
# example of what to put in the AGI entry for a Call Menu AGI route(CID method):
# cm_fpg.agi,TEST_FPG---B
#
# example of what to put in the Custom Dialplan Entry of a Call Menu (caller entry of number method):
# exten => _XXXXXXXXXX,1,cm_fpg.agi,99test---C---${EXTEN}

cm_lookup.agi

# cm_lookup.agi version 2.6
#
# for use with a Call Menu in the custom dialplan section.
#
# ; settings for this script:
# ; 1. The vicidial_list field to do a lookup on ('vendor_lead_code' is default)
# ; 2. Type of lookup to do: (default is SYSTEM)
# ;     SYSTEM will search the entire system
# ;     CAMPAIGNLISTS will search inside all of the active lists within the campaign
# ;     CAMPLISTSALL will search inside all of the active and inactive lists within the campaign
# ;     LIST will search only within the specified List ID
# ; 3. If CAMPAIGN or LIST is used above, this is the campaign_id or list_id to be used
# ; 4. TTS confirmation of name (1 for yes, 2 for no) put in TTS prompt ID
# ; 5. Update the vicidial_list record phone number with the callerID of the caller:
# ;     Y - update the record with the phone number
# ;     N - Do nothing (default)
# ; 6. Update lead's address3 field to the uniqueid of the call
# ;     Y - update the record with the uniqueid
# ;     N - Do nothing (default)
# ; 7. Update the lead's record with the call's agent_user_id variable
# ;     Y - update the lead record's 'user' field with the agent_user_id variable
# ;     COMMENTS - update the lead record's 'comments' field with the agent_user_id variable
# ;     N - Do nothing (default)
# ; 8. Update the lead's record with the call's title variable
# ;     Y - update the lead record's 'title' field with the call's title variable
# ;     N - Do nothing (default)
#
# Found entries will send the call to the 'A' option in the source call menu
# Not-Found entries will send the call to the 'B' option in the source call menu
#
#; example with 8-digit vendor lead codes
# exten => _XXXXXXXX,1,AGI(cm_lookup.agi,vendor_lead_code---CAMPLISTSALL---TESTCAMP---lastname_oneyestwono---N---N---Y---N)
#
#; example with 8-digit vendor lead codes
# exten => _XXXXXXXX,1,AGI(cm_lookup.agi,vendor_lead_code---CAMPLISTSALL---TESTCAMP---lastname_oneyestwono---N---N---Y---N)

cm_phonesearch.agi

# cm_phonesearch.agi version 2.14
#
# Designed to work with Call Menus to allow searching of the caller ID phone
# number the customer called in with against the vicidial_list table, and
# finding the list of the most recent match, the campaign tied to that list and
# the default transfer in-group of that campaign, then transferring the call to
# that in-group
#
# If phone number is not found, call will go to the 'D' option in the call menu
# If default in-group is not found, call will go to the 'C' option in the call menu
# If default in-group is found, call will go to the 'B' option in the call menu
#    (NOTE: you MUST set the In-Group to DYNAMIC_INGROUP_VAR for 'B' option)
#
# Flag Options:
# 1- Country code to search the areacode within, default 1
# 2- Match lead order, default: "entry_newest"
#          entry_newest, entry_oldest, modify_newest, modify_oldest, call_newest, call_oldest, rank_highest, rank_lowest
# example of what to set in the Call Menu:
# Set the prompt to "sip-silence"
# Set the Timeout to 1 second
# Option: "Timeout" Route: "AGI" AGI: "cm_phonesearch.agi,1---entry_newest"
#    OR JUST
# Set the prompt to "sip-silence|cm_phonesearch.agi,1---entry_oldest"

cm_postal.agi

# cm_postal.agi version 2.12
#
# Designed to work with Cell Menus to allow searching of the number entered by
# the customer to be searched within the vicidial_postal_codes table to gather
# the state, then search the vicidial_inbound_dids table for that state in the
# did_carrier_description field and send the call on to the did that matches.
#
# If postal code is not found call will go to the 'D' option in the call menu
# If state DID is not found call will go to the 'C' option in the call menu
#
# Flag Options:
# 1- minimum number of digits allowed in postal code, default 5
# 2- DID prefix to filter by in searching for DIDs, default 999
#
# example of what to put in the Custom Dialplan entry for a Call Menu:
#exten => _XXXXX,1,AGI(cm_postal.agi,5---999)

cm_sc_areacode.agi

# cm_sc_areacode.agi version 2.14
#
# Designed to work with Call Menus to allow searching of the areacode of the
# caller ID phone number the customer called in with to be searched within the
# vicidial_phone_codes table to gather the state, or use the lead_id of the
# already-established call, then use the settings container ID to gather the
# state routing parameters to find the destination for that state
#
# If areacode is not found, call will go to the 'D' option in the call menu
# If destination is not found, call will go to the 'C' option in the call menu
#
# Flag Options:
# 1- Country code to search the areacode within, default 1
# 2- Length of areacode in digits, default 3
# 3- container_id for settings container with state and routing parameters
#
# example of what to set in the Call Menu:
# Set the prompt to "sip-silence"
# Set the Timeout to 1 second
# Option: "Timeout" Route: "AGI" AGI: "cm_sc_areacode.agi,1---3---east_west"
#
# example of what to put in settings container:
# NOTE: if you want any state non-matches to go to a destination, put that line FIRST
#<destination type>|<destination>|<states list separated by spaces>
#DID|9998881111|--NOMATCHES--
#DID|9998882222|FL TX NY CA
#EXTEN|919998887112|AL MS MO TN KY
#CALLMENU|test_menu|IL MN WI MI IA

cm_sc_ccc_lookup_insert.agi

# cm_sc_ccc_lookup_insert.agi version 2.14
#
# Designed to work with Call Menus to send a URL defined in a Settings Container
# for a call with a call_id associated with it for calls coming from an external
# VICIdial system on a private IAX trunk so that the lead information can be
# copied to this destination cluster.
#
# If container is not found, call will go to the 'C' option in the call menu
# If call_id is not defined, call will go to the 'D' option in the call menu
# If lead is not found on external system, call will go to the 'B' option in the call menu
# If lead is found on external system, call will go to the 'A' option in the call menu
#
# Flag Options:  (separated by triple-pipe: "---")
# 1- container_id for settings container with URL to send
# 2- local list_id to insert lead into(if not populated, will use external list_id)
#
# example of what to set in the Call Menu:
# Set the prompt to "wait-moment|cm_sc_ccc_lookup_insert.agi,ccc_test---8199"

cm_sc_send_url.agi

# cm_sc_send_url.agi version 2.14
#
# Designed to work with Call Menus to send a URL defined in a Settings Container
# for a call with a lead_id associated with it(use CUSTOMERCLOSER in the In-Group
# Action Transfer CID field!).
#
# If container is not found, call will go to the 'C' option in the call menu
# If lead_id is not defined, call will go to the 'D' option in the call menu
# After URL is sent, call will go to the 'B' option in the call menu
#
# Flag Options:
# 1- container_id for settings container with URL to send
#
# example of what to set in the Call Menu:
# Set the prompt to "sip-silence|cm_sc_send_url.agi,test_cm_url"
#
# The URL that you define in the Settings Container can use most of the
# variables you can use in the Dispo Call URL fields. The 'user' and 'status'
# fields as well as the talk_time, talk_time_min and ivr_time fields that are
# also available will all use the last vicidial_agent_log entry for it's values.

cm_sc_send_url_status.agi

# cm_sc_send_url_status.agi version 2.14
#
# Designed to work with Call Menus to send a URL defined in a Settings Container
# for a call with a lead_id associated with it(use CUSTOMERCLOSER in the In-Group
# Action Transfer CID field!).
#
# If container is not found, call will go to the 'C' option in the call menu
# If lead_id is not defined, call will go to the 'D' option in the call menu
# After URL is sent, call will go to the 'B' option in the call menu
#
# Flag Options: (separated by 3 dashes '---')
# 1- container_id for settings container with URL to send
# 2- GET or POST (send URL method, defaults to GET)
# 3- status to change lead to <optional>
#
# example of what to set in the Call Menu Prompt:
# Set the prompt to "sip-silence|cm_sc_send_url_status.agi,test_cm_url---POST---BGOOD"
#
# example of what to set in a Call Menu AGI option:
# Set the prompt to "cm_sc_send_url_status.agi,test_cm_url---POST---BGOOD"
#
# The URL that you define in the Settings Container can use most of the
# variables you can use in the Dispo Call URL fields. The 'user' and 'status'
# fields as well as the talk_time, talk_time_min and ivr_time fields that are
# also available, it will all use the last vicidial_agent_log entry for it's values.

cm_speak_var.agi

# cm_speak_var.agi version 2.14
#
# runs after a call has lead_id assigned to it, speaks letters/numbers
#
# You need to put lines similar to those below in your Custom Dialplan:
#
# exten => 8412,1,Answer
# exten => 8412,n,AGI(cm_speak_var.agi,say_digits---security_phrase---DB)
# exten => 8412,n,Hangup
#
# CLI FLAG OPTIONS:
# 1. function: (say_digits, say_number, say_alpha, say_datetime, say_phonetic, stream_file)
# 2. field: (any vicidial_list field)
# 3. variable type: DB(default) or DP(Asterisk Dialplan Variable)

cm_status_dial.agi

# cm_status_dial.agi   version 2.14
#
# Used as a Call Menu AGI option route to alter status of a lead before dialing.
# The lead is only updated if the call is tagged with a lead_id before this script.
#
# You need to put lines similar to those below in your extensions.conf file or
# a Custom Dialplan entry:
# ; Below are the parameters needed for the script to be run properly
# ; 1. the status to change the lead to
# ; 2. the phone number or extension to dial
# ; 3. the context to dial in
# ;
# ;inbound calls check calltime:
#cm_status_dial.agi,XFER-----917275551212-----default

cm_VID_SPECIAL.agi

# cm_VID_SPECIAL.agi version 2.14
#
# runs when a call comes from a Call Menu VIDPROMPTSPECIAL... INGROUP option.
# This script will send calls to various In-Groups or Call Menu options based
# on settings in a Settings Container and results of a lead search.
#
#
# You need to put lines similar to those below in your extensions.conf file:
# ; Below are the parameters needed for the script to be run properly
# ; 1. the method of call handling for the script:
# ;     - VIDPROMPTSPECIALLOOKUP -      Prompt Vendor Lead Code to User with IVR to find record in whole system
# ;     - VIDPROMPTSPECIALLOOKUPRL -    Restrict lookup to one list
# ;     - VIDPROMPTSPECIALLOOKUPRC -    Restrict lookup to one campaign's lists
# ; 2. the method of searching for an available agent:
# ;     - LO - Load Balance Overflow only (priority to home server)
# ;     - LB - <default> Load Balance total system
# ;     - SO - Home server only
# ; 3. the list_id to insert the new lead under if it is new (and CID/ANI available)
# ; 4. the phone dialing code to insert with the new lead if new (and CID/ANI available)
# ; 5. the campaign_id to search within lists if CIDLOOKUPRC
# ; 6. VID enter prompt filename to play if method is set to a VID* option
# ; 7. VID you-have-entered filename to play if method is set to a VID* option
# ; 8. VID confirm prompt filename to play if method is set to a VID* option
# ; 9. VID digit length validation to use if method is set to a VID* option, set to empty or X to disable
# ; 10. Settings Container to use for settings for this script, must be CM_VIDPROMPT_SPECIAL container type
#
# ;inbound VICIDIAL calls:
#exten => 1234,1,Answer                  ; Answer the line
#exten => 1234,2,AGI(cm_VID_SPECIAL.agi,VIDPROMPTSPECIALLOOKUP---LB---999---1---TESTCAMP---x---y---z---X---VID_special_test)
#exten => 1234,3,Hangup

cm_wait.agi

# cm_wait.agi version 2.14
#
# Designed to make a call wait for X milliseconds before exiting
#
# Flag Options:
# 1- milliseconds to wait, default 1000
#
# example of what to set in the Call Menu:
# Set the prompt to "cm_wait.agi,1000"

debug_speak.agi

# debug_speak.agi version 2.0.5
#
# runs during any extension and speaks the extension sent to it while
# printing the extension as well as lots of info about the call to STDERR
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ;inbound errors with speaking of extension:
#exten => _XXXX,1,AGI(debug_speak.agi,${EXTEN})
#exten => _XXXX,3,Hangup

getAGENTchannel.agi

# getAGENTchannel.agi by Omar Rodriguez  www.ItContinental.com
# Copyright (C) 2016  Matt Florell <vicidial@gmail.com>    LICENSE: AGPLv2
# This script is able to return the name of the channel that belongs to the agent,
# to allow administrators to whisper to the agents
# Has been made using Vicidial code as Base

invalid_speak.agi

# invalid_speak.agi version 2.0.5
#
# runs during an invalid extension and speaks the extension sent to it while printing to STDERR
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ;inbound errors with speaking of extension:
#exten => _XXXX,1,AGI(invalid_speak.agi,${EXTEN})
#exten => _XXXX,2,Playback(invalid)
#exten => _XXXX,3,Hangup
#
#exten => _*XXXXXXXXXX*XXXX,1,AGI(invalid_speak.agi,${EXTEN})
#exten => _*XXXXXXXXXX*XXXX,2,Playback(invalid)
#exten => _*XXXXXXXXXX*XXXX,3,Hangup
#
#exten => _*XXXXXXXXXX*XXXX*,1,AGI(invalid_speak.agi,${EXTEN})
#exten => _*XXXXXXXXXX*XXXX*,2,Playback(invalid)
#exten => _*XXXXXXXXXX*XXXX*,3,Hangup
#
#exten => _**XXXX,1,AGI(invalid_speak.agi,${EXTEN})
#exten => _**XXXX,2,Playback(invalid)
#exten => _**XXXX,3,Hangup
#
#exten => _**XXXX*,1,AGI(invalid_speak.agi,${EXTEN})
#exten => _**XXXX*,2,Playback(invalid)
#exten => _**XXXX*,3,Hangup

park_call_IVR_cf_collect.agi

# park_call_IVR_cf_collect.agi version 2.12
#
# NOTE: this script is to be used with the Park Call IVR feature in campaigns.
# The purpose of this script is to allow the agent to park a call on this IVR
# and have the customer enter in sensitive numbers. This script should not
# require any modification to work.
#
# Defined in the Park Call AGI IVR field of a campaign, this script will ask
# customer for their ID and then populate it in the custom fiels defined in the
# variable below and then send the call back to the agent. If the customer
# enters nothing X number of times then the call can be kicked out to a separate
# in-group
#
# Here is a list of the variables that you can set:
#  1.  Language - default: en (English), other options are es-Spanish, fr-French
#  2.  First prompt - default: please_enter_id_number
#  3.  You-Entered prompt - default: you-entered
#  4.  Confirmation prompt - default: confirm_id_number
#  5.  Thank you prompt - default: auth-thankyou
#  6.  Invalid prompt - default: buzz
#  7.  Attempts before kick-out - default: 2
#  8.  Kick-out prompt - default: outside-transfer
#  9.  Kick-out In-Group
#  10. Custom Field to populate
#
# Example Park Call AGI IVR field:
# park_call_IVR_cf_collect.agi,en---please_enter_id_number---you-entered---confirm_id_number---auth-thankyou---buzz---2---outside-transfer---TEST_IN---test2

park_call_IVR_example.agi

# park_call_IVR_example.agi version 2.4
#
# NOTE: this script is an example of how you can use a custom AGI script with
# the new Park Call IVR feature in campaigns. You will most likely need to
# significantly alter this script to suit your specific needs
#
# Defined in the Park Call AGI IVR field of a campaign, this script will ask
# customer for their ID and then populate it in the vicidial_list table and then
# send the call back to the agent. If the customer enters nothing X number of
# times then the call can be kicked out to a separate in-group
#
# Here is a list of the variables that you can set:
#  1.  Language - default: en (English), other options are es-Spanish, fr-French
#  2.  First prompt - default: please_enter_id_number
#  3.  You-Entered prompt - default: you-entered
#  4.  Confirmation prompt - default: confirm_id_number
#  5.  Thank you prompt - default: auth-thankyou
#  6.  Invalid prompt - default: buzz
#  7.  Attempts before kick-out - default: 2
#  8.  Kick-out prompt - default: outside-transfer
#  9.  Kick-out In-Group
#
# Example Park Call AGI IVR field:
# park_call_IVR_example.agi|en---please_enter_id_number---you-entered---confirm_id_number---auth-thankyou---buzz---2---outside-transfer---TEST_IN
#
# NOTE: For Asterisk 1.8 and higher, use a comma instead of a pipe in the Park Call AGI IVR field

park_CID.agi

# park_CID.agi version 2.14
#
# runs before the park extension to populate the parked_channels entry with the channel's callerid
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ;outbound dialing:
# exten => 8301,1,Answer
# exten => 8301,2,AGI(park_CID.agi)
# exten => 8301,3,Playback(park)
# exten => 8301,4,Hangup

phone_alt_CID.agi

# phone_alt_CID.agi
#
# Changes the CID number on calls that pass through it to the Alternate defined
# in the 'phones' record for the phone that placed the call
#
# You need to have lines similar to those below in your Custom Dialplan:
#
#;use alternate CID, if defined:
#exten => _91NXXNXXXXXX,1,AGI(phone_alt_CID.agi,${EXTEN})
#exten => _91NXXNXXXXXX,n,Goto(default,${EXTEN},1)
#
# The easiest way to set this up for a phone is to create a new Call Menu and
# then put the above Custom Dialplan into it, then set the Phone's
# 'phone context' to the call menu ID that you just created.

timer_rebeep.agi

# timer_rebeep.agi
#
# This script is designed to be launched from the in-group/campaign timer
# setting to set another trigger event for the next X seconds. Often used for
# calls that need to have a periodic beep signifying that the call is being
# recorded
#
# Just add the following to the System Settings Custom Dialplan Entry
# and set rebuild conf=Y
# exten => 8399,1,Answer
# exten => 8399,n,Wait(1)
# exten => 8399,n,Playback(beep)
# exten => 8399,n,AGI(timer_rebeep.agi,20---D1_DIAL_QUIET)
# exten => 8399,n,Hangup
#
# ; Below are the parameters needed for the script to be run properly
# ; 1. seconds delay before next trigger goes
# ; 2. timer action to launch
#
# Then set the in-groups/campaigns that you want to have this enabled
#   "Timer Action" = D1_DIAL_QUIET
#   "Timer Action Seconds" = 20
#   "Transfer Conf Number 1" = 8399

VD_amd.agi

# VD_amd.agi version 2.14
#
# runs after a call goes through AMD in extensions.conf to send the call on to
# it's proper destination, or when agent sends to VM message
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ; VICIDIAL_auto_dialer transfer script AMD with Load Balanced:
# exten => 8369,1,AGI(call_log.agi,${EXTEN})
# exten => 8369,2,(AMD),AMD
# exten => 8369,3,AGI(VD_amd.agi,${EXTEN}-----NO)
# exten => 8369,4,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
# exten => 8369,5,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
# exten => 8369,6,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
# exten => 8369,7,Hangup
#
# exten => 8320,1,AGI(VD_amd.agi,${EXTEN}-----YES)
# exten => 8320,2,Hangup
# exten => _8320*.,1,AGI(VD_amd.agi,${EXTEN}-----YES)
# exten => _8320*.,2,Hangup

VD_auto_post_VERIFY.agi

# VD_auto_post_VERIFY.agi version 2.0.5   *DBI-version*
#
# NOTE: This script is only used with auto-message campaigns with dynamic data
#
# runs after a call is answered
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ; VICIDIAL_auto_dialer transfer script AMD with Load Balanced:
#exten => 8320,1,WaitForSilence(2000,2) ; wait for 2 seconds of silence
#exten => 8320,2,AGI(VD_auto_post_VERIFY.agi,${EXTEN})
#exten => 8320,3,Hangup

VDL_CID_lookup.agi

# VDL_CID_lookup.agi      version 2.6
#
# runs after a call goes through AMD in extensions.conf to send the call on to
# it's proper destination
#
# You need to put lines similar to those below in your extensions.conf file:
#
# ; VICIDIAL_auto_dialer transfer script AMD with Load Balanced:
# exten => 8369,1,Ringing
# exten => 8369,2,Wait(1)
# exten => 8369,3,Answer
# exten => 8369,4,AGI(VDL_CID_lookup.agi)
# exten => 8369,5,AGI(agi-VDAD_ALL_inbound.agi,CID-----LB-----IN_TEST-----7275551212-----Closer-----park----------999-----1)
# exten => 8369,6,Hangup
# exten => 8369,7,AGI(call_logCID.agi,${EXTEN}-----${CALLERID}-----${CALLERIDNUM}-----${CALLERIDNAME})
# exten => 8369,8,AGI(agi-VDADinbound_NI_DNC_CIDlookup.agi)
# exten => 8369,9,Hangup

Leave a Reply