diff --git a/agc_2-X/trunk/UPGRADE b/agc_2-X/trunk/UPGRADE index 42f57bcd..bd3205c6 100644 --- a/agc_2-X/trunk/UPGRADE +++ b/agc_2-X/trunk/UPGRADE @@ -1,7 +1,58 @@ ################ UPGRADE -If you are upgrading to the 2.0 code tree from the 1.1 code tree there have been several changes made to the code base and to where some files are stored in the release as well as on your machine. +If you are upgrading to the 2.0 code tree from the 1.1 code tree there have been +several changes made to the code base and to where some files are stored in the +release as well as on your machine. +1. upgrade the MySQL Asterisk database: +mysql +use asterisk \. /path/from/root/extras/upgrade_2.0.1.sql +quit + +2. use the new installer for astguiclient-VICIDIAL files: perl install.pl + + +3. Make sure you have MySQL cli8entlibs installed: +Because all perl script now use DBI instead of Net::MySQL you need to make sure +that you have at least the MySQL client installed on all VICIDIAL servers even +if the MySQL server is installed on another machine. You can skip this step if +MySQL server is already on your VICIDIAL server: + Go to http://www.mysql.com/ and download the mysql package + - to install this directly on the command line type: + - cd /usr/local + - wget http://mirror.trouble-free.net/mysql_mirror/Downloads/MySQL-4.0/mysql-4.0.27.tar.gz + - gunzip mysql-4.0.27.tar.gz + - tar xvf mysql-4.0.27.tar + - cd mysql-4.0.27 + - groupadd mysql + - useradd -g mysql mysql + - "./configure --prefix=/usr/local/mysql --without-server --enable-shared=yes --with-readline" + - make + - make install + - you are done + + +4. New MySQL perl modules: +You will need to make sure that you have installed the following perl modules: +DBI (top-level Database interface module "install DBI") +DBD::mysql (MySQL-specific interface through DBI "force install DBD::mysql") + + +5. new predictive dialing crontab entry: +If you will be using the new predictive dialing functions you need to make sure +you have the keepalive for this function loaded in your crontab: +NOTE: this only needs to be on a single server if you are in a multiple +VICIDIAL server setup. +### keepalive script for VICIDIAL predictive script +* * * * * /home/cron/ADMIN_keepalive_AST_VDadapt.pl + + +6. other notes: +- there is a new DIAL METHOD field and several other new dial-control fields +in campaign modification page, please take a minute to read the help +documentation for these new features. + + diff --git a/agc_2-X/trunk/docs/CONF_Asterisk.txt b/agc_2-X/trunk/docs/CONF_Asterisk.txt deleted file mode 100644 index eeb61f7c..00000000 --- a/agc_2-X/trunk/docs/CONF_Asterisk.txt +++ /dev/null @@ -1,9 +0,0 @@ -Here is what you need to add to your Asterisk configuration by configuration filename: - -Notes: -- You do NOT have to have MusicOnHold enabled or mpg123 installed to use this -- it is assumed in the client app code that you need to dial a "9" to get an outside line -- Parking is really just sending a call to a a Playback file then doing a redirect to an extension - -***************************** DEPRICATED *************************************** -Look at the SCRATCH_INSTALL document for instructions on how to modify Asterisk conf files for astGUIclient operation \ No newline at end of file diff --git a/agc_2-X/trunk/docs/CONF_MySQL.txt b/agc_2-X/trunk/docs/CONF_MySQL.txt deleted file mode 100644 index 760fd990..00000000 --- a/agc_2-X/trunk/docs/CONF_MySQL.txt +++ /dev/null @@ -1,17 +0,0 @@ -### Create the following tables in your "asterisk" MySQL database - - -################################################################################ -################################################################################ -#### #### -#### THIS FILE IS DEPRICATED, LOOK AT THE MySQL_AST_CREATE_tables.sql #### -#### FILE FOR MORE INFO ON MYSQL DATABASE SETUP #### -#### #### -################################################################################ -################################################################################ - -### remember to prepopulate the conferencing table with meetme conferences defined -### remember to prepopulate the phones table with proper values -### remember to prepopulate the servers table with the asterisk servers' IP addresses -### remember to prepopulate the server_updater table with the asterisk servers' IP addresses - diff --git a/agc_2-X/trunk/docs/CONF_VICIDIAL_MySQL.txt b/agc_2-X/trunk/docs/CONF_VICIDIAL_MySQL.txt deleted file mode 100644 index 51a02a11..00000000 --- a/agc_2-X/trunk/docs/CONF_VICIDIAL_MySQL.txt +++ /dev/null @@ -1,12 +0,0 @@ -### to use VICIDIAL create these tables in your "asterisk" MySQL database - -################################################################################ -################################################################################ -#### #### -#### THIS FILE IS DEPRICATED, LOOK AT THE MySQL_AST_CREATE_tables.sql #### -#### FILE and the SCRATCH_INSTALL FILEFOR MORE INFO ON #### -#### MYSQL DATABASE SETUP #### -#### #### -################################################################################ -################################################################################ - diff --git a/agc_2-X/trunk/docs/LOAD_BALANCING.txt b/agc_2-X/trunk/docs/LOAD_BALANCING.txt index c06f8328..aba0d67e 100644 --- a/agc_2-X/trunk/docs/LOAD_BALANCING.txt +++ b/agc_2-X/trunk/docs/LOAD_BALANCING.txt @@ -21,6 +21,8 @@ NOTE: In a multi-server setup you may want to have your database and web server - AST_cleanup_agent_log.pl - ADMIN_adjust_GMTnow_on_leads.pl - AST_DB_optimize.pl + - ADMIN_keepalive_AST_VDadapt.pl + - AST_VDadapt.pl 2. The two servers need to be registered to each other as IAX2 friends: @@ -129,4 +131,6 @@ If you have any questions or problems please post to the astguiclient-users list - AST_cleanup_agent_log.pl - ADMIN_adjust_GMTnow_on_leads.pl - AST_DB_optimize.pl +- ADMIN_keepalive_AST_VDadapt.pl +- AST_VDadapt.pl diff --git a/agc_2-X/trunk/docs/PREDICTIVE.txt b/agc_2-X/trunk/docs/PREDICTIVE.txt index b30bddea..a08b2755 100644 --- a/agc_2-X/trunk/docs/PREDICTIVE.txt +++ b/agc_2-X/trunk/docs/PREDICTIVE.txt @@ -1,46 +1,131 @@ -PREDICTIVE Summary and Overview 2006-08-24 +PREDICTIVE Summary and Overview 2006-08-29 *** PREDICTIVE OUTBOUND CALLING FUNCTIONALITY WAS ADDED IN THE 2.0.1 RELEASE *** -This will outline the methods used to predictively dial outbound calling campaigns in VICIDIAL with the ADAPT dial methods. This is a description of the first versions of three different Predictive/Adaptive dialing algorithms used in VICIDIAL. As the need arises we will create more versions of different algorithms in the future. +This will outline the methods used to predictively dial outbound calling +campaigns in VICIDIAL with the ADAPT dial methods. This is a description of the +first versions of the Predictive/Adaptive dialing algorithms used in VICIDIAL. +As the need arises we will create more versions of different algorithms in the +future. The gathering of data to analyze: -In order to properly analyze calling trends and adapt to the current list that is being called we need to first gather a lot of data to analyze. +In order to properly analyze calling trends and adapt to the current list that +is being called we need to first gather a lot of data to analyze. -The first set of data we want to gather is the recent queue and agent statistics for each campaign. This information is gathered by the AST_VDauto_dial.pl script as it runs through each loop every 2.5-3.0 seconds. The data gathered in this script are all averages of the last 60 seconds of agent and queue activity: -1. The average number of agents that are logged into the campaign across one minute -2. The average number of calls waiting to be transferred to an agent across one minute -3. The average number of agents waiting for calls across one minute -4. The difference between the waiting calls and ready agents across one minute - This number if positive means that on average more agents were waiting for calls than calls waiting for agents in the last minute for that campaign. +The first set of data we want to gather is the recent queue and agent statistics +for each campaign. This information is gathered by the AST_VDauto_dial.pl script +as it runs through each loop every 2.5-3.0 seconds. This data is used only for +Blended CLOSER campaigns doing Predictive dialing and for the timeonVDADall +realtime campaign reports. The data gathered in this script are all averages of +the last 60 seconds of agent and queue activity: + 1. The average number of agents that are logged into the campaign across +one minute + 2. The average number of calls waiting to be transferred to an agent +across one minute + 3. The average number of agents waiting for calls across one minute + 4. The difference between the waiting calls and ready agents across one +minute + This number if positive means that on average more agents were +waiting for calls than calls waiting for agents in the last +minute for that campaign. -The second set of data to gather is dropped call information across several intervals. This information will be gathered by the actual AST_VDadapt.pl script that will also be the script actually changing the dial level when the predictive/adaptive dial method is activated. Once a minute this script will gather: -1. Total drops and total calls for the campaign since midnight -2. Total drops and total calls for the campaign in the past hour -3. Total drops and total calls for the campaign in the past half hour -4. Total drops and total calls for the campaign in the past five minutes -5. Total drops and total calls for the campaign in the past one minute -Also, the drop percentage is calculated and stored in the vicidial_campaign_stats table. +The second set of data to gather is dropped call information across several +intervals as well as faster agent and queue call statistics. This information +will be gathered by the actual AST_VDadapt.pl script that will also be the +script actually changing the dial level when the predictive/adaptive dial method +is activated. +Once a second this script will gather: + 1. The average number of agents that are logged into the campaign for +the last 15 seconds + 2. The average number of calls waiting to be transferred to an agent for +the last 15 seconds + 3. The average number of agents waiting for calls for the last 15 +seconds + 4. The difference between the waiting calls and ready agents for the +last 15 seconds +Once every 15 seconds this script will: + 1. Calculate the average dial level differential for the last 15 seconds + 2. Apply the campaign's adaptive_dl_diff_target + 3. Apply the campaign's adaptive_intensity setting + 4. Calculate the new desired dial_level + 5. Check the drop rate cap method(HARD_LIMIT, TAPERED, AVERAGE) + 6. If drop rate is over the limit the proper equation is used to figure +out new dial_level difference. + 7. Change the dial level for the campaign to the new suggested dial +level +Once a minute this script will gather: + 1. Total drops and total calls for the campaign since midnight + 2. Total drops and total calls for the campaign in the past hour + 3. Total drops and total calls for the campaign in the past half hour + 4. Total drops and total calls for the campaign in the past five minutes + 5. Total drops and total calls for the campaign in the past one minute + Also, the drop percentage is calculated and stored in the +vicidial_campaign_stats table. The settings in the campaign detail screen: -Dial Method - This field is the way to define how dialing is to take place. If MANUAL then the auto_dial_level will be locked at 0 unless Dial Method is changed. If RATIO then the normal dialing a number of lines for Active agents. ADAPT_HARD_LIMIT will dial predictively up to the dropped percentage and then not allow aggressive dialing once the drop limit is reached until the percentage goes down again. ADAPT_TAPERED allows for running over the dropped percentage in the first half of the shift(as defined by call_time selected for campaign) and gets more strict as the shift goes on. ADAPT_AVERAGE tries to maintain an average or the dropped percentage not imposing hard limits as aggressively as the other two methods. +Dial Method - This field is the way to define how dialing is to take place. If +MANUAL then the auto_dial_level will be locked at 0 unless Dial Method is +changed. If RATIO then the normal dialing a number of lines for Active agents. +ADAPT_HARD_LIMIT will dial predictively up to the dropped percentage and then +not allow aggressive dialing once the drop limit is reached until the percentage +goes down again. ADAPT_TAPERED allows for running over the dropped percentage in +the first half of the shift(as defined by call_time selected for campaign) and +gets more strict as the shift goes on. ADAPT_AVERAGE tries to maintain an +average or the dropped percentage not imposing hard limits as aggressively as +the other two methods. -Auto Dial Level - This is where you set how many lines VICIDIAL should use per active agent. zero 0 means auto dialing is off and the agents will click to dial each number. Otherwise VICIDIAL will keep dialing lines equal to active agents multiplied by the dial level to arrive at how many lines this campaign on each server should allow. +Auto Dial Level - This is where you set how many lines VICIDIAL should use per +active agent. zero 0 means auto dialing is off and the agents will click to dial +each number. Otherwise VICIDIAL will keep dialing lines equal to active agents +multiplied by the dial level to arrive at how many lines this campaign on each +server should allow. -Available Only Tally - This field if set to Y will leave out INCALL and QUEUE status agents when calculating the number of calls to dial when not in MANUAL dial mode. Default is N. +Available Only Tally - This field if set to Y will leave out INCALL and QUEUE +status agents when calculating the number of calls to dial when not in MANUAL +dial mode. Default is N. -Drop Percentage Limit - This field is where you set the limit of the percentage of dropped calls you would like while using an adaptive-predictive dial method, not MANUAL or RATIO. +Drop Percentage Limit - This field is where you set the limit of the percentage +of dropped calls you would like while using an adaptive-predictive dial method, +not MANUAL or RATIO. -Maximum Adapt Dial Level - This field is where you set the limit of the limit to the numbr of lines you would like dialed per agent while using an adaptive-predictive dial method, not MANUAL or RATIO. This number can be higher than the Auto Dial Level if your hardware will support it. Value must be a positive number greater than one and can have decimal places Default 3.0. +Maximum Adapt Dial Level - This field is where you set the limit of the limit to +the numbr of lines you would like dialed per agent while using an +adaptive-predictive dial method, not MANUAL or RATIO. This number can be higher +than the Auto Dial Level if your hardware will support it. Value must be a +positive number greater than one and can have decimal places Default 3.0. -Latest Target Timezone - This field is only used by the ADAPT_TAPERED dial method. You should select the current GMT offset value or timezone of the latest region that you will be calling. This allows the Tapered algorithm to decide how aggressively to dial by how long you have until you will be finished calling. NOTE- If you are calling in the USA and you have a very small amount of leads in Alaska or Hawaii but many leads in Pacific time zone, you should choose the pacific time zone for this field for the ADAPT_TAPERED dial method to work properly. +Latest Server Time - This field is only used by the ADAPT_TAPERED dial method. +You should enter in the hour and minute that you will stop calling on this +campaign, 2100 would mean that you will stop dialing this campaign at 9PM server +time. This allows the Tapered algorithm to decide how aggressively to dial by +how long you have until you will be finished calling. -Adapt Intensity Modifier - This field is used to adjust the predictive intensity either higher or lower. The higher a positive number you select, the greater the dialer will increase the call pacing when it goes up and the slower the dialer will decrease the call pacing when it goes down. The lower the negative number you select here, the slower the dialer will increase the call pacing and the faster the dialer will lower the call pacing when it goes down. Default is 0. This field is not used by the MANUAL or RATIO dial methods. +Adapt Intensity Modifier - This field is used to adjust the predictive intensity +either higher or lower. The higher a positive number you select, the greater the +dialer will increase the call pacing when it goes up and the slower the dialer +will decrease the call pacing when it goes down. The lower the negative number +you select here, the slower the dialer will increase the call pacing and the +faster the dialer will lower the call pacing when it goes down. Default is 0. +This field is not used by the MANUAL or RATIO dial methods. + +Dial Level Difference Target - This field is used to define whether you want to +target having a specific number of agents waiting for calls or calls waiting for +agents. For example if you would always like to have on average one agent free +to take calls immediately you would set this to -1, if you would like to target +always having one call on hold waiting for an agent you would set this to 1. +Default is 0. This field is not used by the MANUAL or RATIO dial methods. -To use adaptive dialing you must have the AST_VDadapt.pl script in your crontab running every minute. + +To use adaptive dialing you must have the ADMIN keepaliveAST_VDadapt.pl script +in your crontab running every minute: +### keepalive script for VICIDIAL predictive script +* * * * * /home/cron/ADMIN_keepalive_AST_VDadapt.pl + + +NOTE: With Predictive dialing the dial_level will never drop below 1.0. diff --git a/agc_2-X/trunk/docs/README.txt b/agc_2-X/trunk/docs/README.txt index 6b80a7f8..b1a72cfe 100644 --- a/agc_2-X/trunk/docs/README.txt +++ b/agc_2-X/trunk/docs/README.txt @@ -1,5 +1,5 @@ +------------------------------------------------------------------------------+ -| Asterisk GUI client - astguiclient - twenty-fifth public release 1.1.12 | +| Asterisk GUI client - astguiclient - twenty-sixth public release 2.0.1 | | created by astGUIclient group | | project started 2003-10-06 http://sourceforge.net/projects/astguiclient/ | +------------------------------------------------------------------------------+ @@ -29,15 +29,10 @@ to put astguiclient onto. - LOAD_BALANCING.txt - Instructions for multi-server installations - - TODO.txt - List of what has changed since last release including changes for future releases - - LICENSE.txt - The license for this release GPLv2 - - install_server_files.pl - perl script to put files in the right place on the -server. Run as "perl install_server_files.pl" - - - languages.txt - translations file for web-client scripts - - languages_admin.txt - translations fiel for admin pages + - install.pl - perl script to put files in the right place on the +server. Run as "perl install.pl" - start_asterisk_boot.pl - starts asterisk through a screen, good for system boot time startups of asterisk. @@ -711,3 +706,15 @@ UPGRADE NOTES: * if upgrading from older version you will need to run this query for each campaign in VICIDIAL in MySQL: (INSERT INTO vicidial_campaign_stats (campaign_id) values('campaignname');) + +2.0.1 - Twenty-Sixth public release - 2006-09-XX +- Changed all Perl script to use DBI instead of Net::MySQL +- Completely new interactive install script with new astguiclient.conf file +- Ability to turn off or on logging of server scripts +- Ability to redirect AGI output to file, STDERR, both or nowhere. +- Code and process optimization of many of the server-side scripts +- Added a Predictive outbound dialing algorithm with many user-defined settings +- Many other changes and bug fixes listed in the TODO Wiki webpage: + http://www.eflo.net/VICIDIALwiki/index.php/TODO:current +UPGRADE NOTES: + * if upgrading from 1.1.12 you need to follow instructions in the UPGRADE doc diff --git a/agc_2-X/trunk/docs/REQUIREMENTS.txt b/agc_2-X/trunk/docs/REQUIREMENTS.txt index 902528c4..41fcbfe5 100644 --- a/agc_2-X/trunk/docs/REQUIREMENTS.txt +++ b/agc_2-X/trunk/docs/REQUIREMENTS.txt @@ -3,7 +3,7 @@ recommended that you read the SCRATCH_INSTALL doc for more information on installing the package properly. Requirements for installing astGUIclient/VICIDIAL on an Asterisk server: -- Asterisk 1.2.10 recommended but will work with older versions +- Asterisk 1.2.11 recommended but will work with older versions - Zap trunks(T1/E1 or PSTN lines), IAX2 trunks or SIP trunks required - If using VOIP trunks and VICIDIAL auto-dial, you must have trunks registered - You must have a zaptel timer like a PSTN/T1/E1 card or ztdummy diff --git a/agc_2-X/trunk/docs/SCRATCH_INSTALL.txt b/agc_2-X/trunk/docs/SCRATCH_INSTALL.txt index 9de5c058..79654fef 100644 --- a/agc_2-X/trunk/docs/SCRATCH_INSTALL.txt +++ b/agc_2-X/trunk/docs/SCRATCH_INSTALL.txt @@ -2275,6 +2275,9 @@ AST_CRON_mix_recordings_BASIC.pl file in it's place) ### keepalive script for VICIDIAL remote agents * * * * * /home/cron/ADMIN_keepalive_AST_VDremote_agents.pl +### keepalive script for VICIDIAL predictive script +* * * * * /home/cron/ADMIN_keepalive_AST_VDadapt.pl + ### kill Hangup script for Asterisk updaters * * * * * /home/cron/AST_manager_kill_hung_congested.pl diff --git a/agc_2-X/trunk/docs/TODO.txt b/agc_2-X/trunk/docs/TODO.txt deleted file mode 100644 index 29ccfa07..00000000 --- a/agc_2-X/trunk/docs/TODO.txt +++ /dev/null @@ -1,116 +0,0 @@ -+------------------------------------------------------------------------------+ -| Asterisk GUI client - TODO v.2.0.1 | -| | -| TODO file is a list of what is new from previous version as well a list of | -| features that are planned to be completed for future releases. HIGH priority | -| items are usually going to be completed for the next release. This file is | -| kept updated on the project website by the developers and does not | -| necessarily reflect the status of features for the last release. If you are | -| reading this file from the release package, then it is accurate for the | -| version your downloaded. | -+------------------------------------------------------------------------------+ - -- HIGH add option to disable detailed logging for VICIDIAL and astGUIclient server apps. - -- HIGH add new ALLFORCE to recording method for campaigns. will force recording of all calls and disable the button for agents no matter their vicidial_users setting. - -- HIGH add a basic predictive/adaptive algorithm to VICIDIAL to automatically speed-up and slow-down dialing by altering the dial_level at regular intervals. Would need more settings in the vicidial_campaigns table for adaptive like maximum lines per agent, dropped call ratio, dropped call rule to guide the predictive app. Would also need to change dial_level to be a DOUBLE or VARCHAR field to allow for different fractional increments. The admin.php page would have to be altered to ignore auto_dial_level changes when adaptive dialing is activated. The minimum dial_level would be set to '1' for adaptive dialing - auto_dial_level VARCHAR(6), # allow for just about anything. precision decimal too - adaptive_dial_level ENUM('Y','N'), # turns on adaptive script and prevents dial_level admin changes - adaptive_maximum_level VARCHAR(6), # sets highest dial_level possible by adaptive app - adaptive_dropped_percentage SMALLINT(3), # percentage of accaptable dropped calls - adaptive_dropped_rule ENUM('HARD_LIMIT','TAPERED','AVERAGE'), # method for adhearing to % limit - -- HIGH room manager documentation - manual. Probably a free 2 chapter black and white manual and a full color print download available for sale. - -- HIGH fix lead recycling so that it will allow recycling of non-selectable leads - -- HIGH change minimum phone_number length in leadloader to 7 digits and note in documentation that country code is needed in phone_code field fro proper GMT coding. - - - - - -- MEDIUM add checkbox options for campaigns(Art Tarsha new feature) needs to be modified to be multi-campaign compliant: http://www.eflo.net/files/customer_checkboxes.zip - -- MEDIUM Add auto dial next number option to manual dialing in vicidial.php. With preview enabled this would allow for a preview timeout and would auto dial if the STOP DIALING checkbox was not checked on the dispo screen. - -- MEDIUM Try converting the call_log and/or VD_hangup scripts to FastAGI and see what the load difference would be. - -- MEDIUM Add buttons and selector box to script modification page to allow for insertion of field codes without having to manually type them. - -- MEDIUM Rewrite the inbound and closer call handling to allow for music on hold per in-group and a single queue app instead of multiple AGIs each running their own queries. Currently with large queues and long wait times a lot of load is generated with calls on hold in the queue. Switching to a central queue application would reduce the load and speed things up. - -- MEDIUM Add optional field to phones table to allow for different recording file names in astguiclient.php, Similar to vicidial options. - -- MEDIUM make 3rd party consultative transfers work for Local extensions, also for internal/local transfer to vicidial closers if possible. - -- MEDIUM Attempt to make some kind of holiday schedule function for national and state holidays that would be able block out states on specific no-call days. This is rather difficult because of the way some holidays are scheduled, I.E. Easter. - -- MEDIUM Add ChanSpy functionality to listen-in on VOIP channels in astguiclient.php. Maybe not since Chanspy can cause problems like crashing the Asterisk server. Need to do more testing. - -- MEDIUM Create a script to allow vicidial agents to dial into an AGI script that would ask for user/pass and then place them onto their vicidial.php-defined sessionid. - -- MEDIUM add link in astguiclient to login and logout from Asterisk Queues - -- MEDIUM add script to get "show queues" information and place in a DB table to be used to see who is in an Asterisk Queue. This would mostly be used to give a LOGGED-IN and LOGGED-OUT display for astguiclient.php and possibly add an Asterisk Queue display tab or popup for astguiclient.php. Info would be updated one to four times a minute so it would not be real-time. - -- MEDIUM add new tab to astguiclient.php script to show status of Asterisk queues - -- MEDIUM Convert all scripts to DBD::MySQL perl library in place of Net::MySQL. DBD::MySQL is faster because it uses the MySQL client libs on the machine. One problem is that you need the mysqlclientlibs installed on every -Asterisk server and the default installation of only the MySQL client libs will result in having to do a force install of cpan DBD::MySQL(because it tries to test with the local DB). Not to mention all of the code changes that would need to be made. There are also MySQL client licensing issues for certain installation circumstances(Net::MySQL doesn't use mysql client libs so it doesn't have those issues) but I really don't want to get into that discussion. We will start by converting at least one perl script for each release until we have converted then all, then we will no longer support Net::MySQL. This will probably take some time, but the scripts that are added to the DBI-scripts folder will be drop-in replacements for the Net versions that are installed by default. - -- MEDIUM Create a visual SQL builder for the filter SQL section. - -- MEDIUM add ability to call CLOSER campaigns "BLEND" or "INBND". would require many script changes from server side to client side, not set in stone yet, but considering it. - -- MEDIUM add some kind of intelligent call-routing to astguiclient so that you can auto-forward calls to another extension from within astguiclient.php instead of using your phone or something like Queues which can mess up other things. This will need it's own table in the DB and probably some extensions.conf entries and an AGI script or two to do the actual call routing. - -- MEDIUM add skills-based routing to give the ability for a manager to set an agent at a higher or lower level per campaign or in-group. Defaults to level 0 possible values will be -9 through 9 - -- MEDIUM add all possible fields to the SCRIPT tab to auto-populate like in-group for inbound/closer, campaign and others - -- MEDIUM add ability to scrub leads being imported in the lead loader against the vicidial_dnc list as they are being imported. - -- MEDIUM add ability upon vicidial.php login to take a number to dial as a password and a reserved word(something like MANUAL in all caps) that would allow the use of an EXTERNAL phone without setting it up as an asterisk.phones entry. - -- MEDIUM rebuild the vdremote.php remote agents pages to use AJAX(PHP/Javascript/XMLHTTPRequest) for real-time popups of call data. - -- MEDIUM allow custom audio welcome message for vicidial campaigns. This might be an app_conference only feature. - -- MEDIUM create a cron script and method for creating new extensions in the sip.conf/iax.conf files as well as dialplan entries(extensions.conf). This will require more fields in the phones table to account for variables available to the protocols. The conf files would need to be altered before to have a flag for the beginning and ending of the auto-generated content. This would also necessitate a TEXT area for the extensions.conf content(that would be default generated but could be manually altered). The cron script would be run every 5 minutes or so to see if any phones had altered content, and if so generate new auto-content and do a 'reload' on the asterisk server to activate the new content. - -- MEDIUM add a count-up-timer to active channels on the astguiclient MAIN screen(this may be an Asterisk 1.2+ required feature). - -- MEDIUM Change VICIDIAL autodialing configuration to allow dialing of alt_phone numbers as well as address3 phone numbers after dialing main number. It is already possible to dial an alternate phone number manually as an agent once the customer info is up on the screen, but this would be doing it in an automated fashion. Best way for this may be to reconfigure the called_since_last_reset field to allow N, 1, 2, Y. This would require reprogramming several server scripts and php pages. - -- MEDIUM Try a few of the frequently launched scripts as C programs(call_log.agi and the AST_send child scripts) to see if they reduce system load and/or speed up those processes. - -- MEDIUM Change the autodialing system around so that there can be dialing-out-only servers and agent-only servers in a multi-server load-balanced environment. This is suprisingly simple to do, but would require all servers to be controlled by a single instance of AST_VDauto_dial.pl running on one machine. Also, in the case of IAX2 channel native transfers, we would need to change the AGI scripts that route the calls and create a new script to alter the vicidial_auto_calls records to the agent server call_server_ip and channel name because the call would disappear from the originating server causing "customer hungup" warnings. - -- MEDIUM Add method of picking up astGUIclient parked calls by only dialing digits on a regular extension without using the astGUIclient. - -- MEDIUM admin/installer/maintainer documentation as well as troubleshooting guide - -- MEDIUM Run some lab-style load tests on VICIDIAL and show recommended configurations as well as "highest recommended" settings - - - -- LOW add the ability to run separate companies on the same VICIDIAL server. This will not be easy. All admin tasks as well asl user tasks and stats will need to have divisions so that nothing is accessible from the other groups. Also, the resources of the system(outbound trunks, hard drive space, other shared elements, etc...) so that one group cannot hog the shared resources of the the server. - -- LOW Making the server install script a customizable with installer prompts - -- LOW Create guidelines and suggestions for deactivating unused modules from Asterisk for astGUIclient users - -- LOW Revisit possibility of using something other than CallerIDname to tag a call process, probably a long shot without altering the Asterisk code, but that may be an option. - -- LOW add new method for capping the maximum number of attempts to try leads of a specific status. This would be set up like HotKeys are, per campaign where you would select the status and define the maximum number of attempts for that type of status for that campaign and the VDhopper wouldn't allow that kind of lead into the hopper if it was over the max value of call_count.(having filters reduced the priority of this item since you can do a lot of custom coding to duplicate this feature in vicidial_lead_filters) - -- LOW add a new script for using SoX to analyze the first 5 seconds of a ring-time recording within 15 minutes of the NA call ending and detecting if it has the SIT tone at the beginning of it so the lead can be taken out of the list as a DC. adding PRI hangup codes has reduced priority for this item. - -- ON-HOLD We are also looking at creating an inbound-agent-specific GUI that would ideally work with Asterisk queues but that is not very likely given the current lack of events being given off by queues(this is much less likely to be built now that VICIDIAL takes inbound calls) - -- ON-HOLD add a way of checking that there is no more than 1 channel in the meetme room with the agent before another call to that agent. Currently this happens less than 0.1% of the time(mostly on heavily loaded systems), but another check might change that to zero. - -- ON-HOLD Localization of each server based on Intl. dial codes and/or country codes. very difficult to do this based on dial-codes, if used in other country, best to not use the adjust_gmt script. - diff --git a/agc_2-X/trunk/docs/TODO_1.1.11.txt b/agc_2-X/trunk/docs/TODO_1.1.11.txt deleted file mode 100644 index a0f15e73..00000000 --- a/agc_2-X/trunk/docs/TODO_1.1.11.txt +++ /dev/null @@ -1,208 +0,0 @@ -+------------------------------------------------------------------------------+ -| Asterisk GUI client - TODO v.1.1.11 | -| | -| TODO file is a list of what is new from previous version as well a list of | -| features that are planned to be completed for future releases. HIGH priority | -| items are usually going to be completed for the next release. This file is | -| kept updated on the project website by the developers and does not | -| necessarily reflect the status of features for the last release. If you are | -| reading this file from the release package, then it is accurate for the | -| version your downloaded. | -+------------------------------------------------------------------------------+ - - -- DONE Add ability in AST_CRON_mix_recordings_BASIC.pl and AST_CRON_mix_recordings.pl to mix gsm in and out audio files - -- DONE Added deletion from hopper of inactive list leads. AST_VDhopper.pl - -- DONE Create AGI script for customer entering PIN number. very limited use and difficult to setup, internal project. agi-VDADlisten_DTMF.agi - -- DONE Change the phone_codes_GMT.txt file to reflect Indiana's move to adopting Daylight Savings Time - -- DONE Add to update.sql script changes in Indiana's timezone data in database, and send out announcement to change production systems as of 2006-04-02 - -- DONE Alter AST_manager_listen.pl to work with new SVN manager output that includes a Timestamp field - -- DONE change wording of vicidial.php disposition screen bottom phrases to be more clear - -- DONE Alter list_id to be BIGINT(14) to allow for timestamped list_ids - -- DONE Add notes to LOAD_BALANCING.txt file about which cron scripts only need to be run on one server. - -- DONE Add a vicidial.php variable at the top of the script to allow for the change in behaviour of pausing after dispositioning of a call, something like $dispo_check_all_pause =1; If set to 1 then it will stay the way it is and pause after every call if checked once. if set to 0 (which will be the default) it will only pause once and uncheck the box for subsequent calls. - -- DONE Add a WEB FORM submit link to the dispo screen that would dispo the call as well as open a web form link with the customer info and status dispod when clicked. - -- DONE Add notice to a call that was CALLBK on the agent screen next time it is called so agent knows it was a scheduled callback. Positioned to the right of the customer info header. - -- DONE Add link to the dispo screen to allow the agent to try to hangup the call again if it did not hangup. Only can click it once per call then it disappears. - -- DONE Add link to "noone is in your session" window to call agent back and update status to PAUSE. - -- DONE Add a Hangup Customer link on the "Customer has hungup" popup to reduce the steps to dispo. options would now be "back to Main" and "Disposition and finish call" - -- DONE Add display for agent status and number of calls being dialed to vicidial.php. $agentcallsstatus set to 1 activates the display below the SENDDTMF button, $campagentstatctmax sets the number of seconds delay between updates of that information - -- DONE Fixed bug in AST_update.pl test section that would crash script when ** came through as extension on Asterisk 1.2.6 in certain circumstances. - -- DONE Added status name to list modification screen in admin.php. Also consolidated called and not-called into one row for each status. Added status name to campaign dial_statuses select lists - -- DONE Second stage Scheduled-Callback functionality: add agent-specific callback status with date and time definition to vicidial.php. This second stage will allow a callback to be restricted to the specific agent that set the callback. There will need to be some other provisions in place on the vicidial.php to handle what are basically manual dial calls happening on an auto-dial session. Also, a counter on the vicidial.php page to show how many active or live callbacks the agent has and an interface for the agent to see and call back which callbacks are ready to be called back. - -- DONE Add the ability to manually dial a number from within vicidial.php. There will be an option to add the number as a new lead to the campaign the agent is logged into, or just call the number and go back to the main screen(the call would then need to be dropped from the CALLS IN THIS SESSION link at the bottom). This feature will only be enabled when the agent is paused and not on a call. - -- DONE Fix "waiting for ring" bug with manual dial override in vicidial.php. - -- DONE Fixed manual dial lead preview bug. caused by undefined function variable created for manual dial override, just defined the variable in all function calls to fix it. - -- DONE Add capability to allow manual dialing of an alt_phone or address3 phone number in vicidial.php in auto_dial mode. This required a lot of changes to the code where dial_level>0 for things to work correctly, but most of the changes were already done for the agent-only callbacks feature so it wasn't that difficult. - -- DONE Change the links at the top of the vicidial admin.php page to be color-coded sectional links with sub-link row below the main sections in the same color. This will make navigating the admin.php page easier. suggested by Mike Fedyk. - -- DONE Added script name to campaign and in-group modification screens in admin.php. - -- DONE add a field to vicidial_campaigns for alt_number_dialing. This would override the vicidial.php hard-coded variable and would allow it per campaign. The default will be to DISABLE alt_number_dialing. - -- DONE add a permission field to vicidial_campaigns for scheduled_callbacks to allow an agent to dispo a lead as a callback and choose a callback date/time. The default will be to DISABLE scheduled callbacks. Both this and the vicidial_users field must be enabled for and agent to leave scheduled callbacks. - -- DONE add a permission field to vicidial_users for scheduled_callbacks to allow an agent to dispo a lead as a callback and choose a callback date/time. The default will be to ENABLE scheduled callbacks. - -- DONE add a permission field to vicidial_users for agentonly_callbacks to allow an agent to set a callback as USERONLY as well as call that lead back. The default will be to DISABLE USERONLY callbacks. - -- DONE add a permission field to vicidial_users for agentcall_manual manual dialing within vicidial.php. The default will be to DISABLE manual dialing. - -- DONE add a permission field to vicidial_users to restrict recording in vicidial.php per user. Default would be to ENABLE recording - -- DONE add a permission field to vicidial_users to restrict transfers in vicidial.php per user. Default would be to ENABLE transfers - -- DONE Add a FILTERS section to the vicidial admin screen and a FILTERS feature that would operate a lot like how the lead filters work in the GnuDialer project. It would be a way of defining SQL subsets on leads that the campaign would be dialing. You would create new filters in the ADD NEW FILTER section and a vicidial_campaign can only have one active FILTER at any one time. The Filter modification page would have something like a SQL builder that would let you select a parameter field(like called_count, state, postal_code, etc...) and then a value set, or you could directly edit the SQL it generates. This feature could make it rather easy to mess up dialing for a campaign since it lets managers directly edit the SQL statement that is used to put leads into the hopper. The SQL would only be SELECT based and would not effect the order that the leads are selected in. would require a new table(vicidial_filters) as well as a new field in vicidial_campaigns(filter_id). - create table vicidial_filters ( - filter_id VARCHAR(10), - filter_name VARCHAR(30), - filter_comments VARCHAR(255), - filter_sqlTEXT); - -- DONE Add auto-hopper-insertion to triggered ANYONE callbacks. This will need to check on campaign and list status before insertion. This is an option at the top of the script that can be disabled if you do not want this functionality: insert_auto_CB_to_hopper - -- DONE For ANYONE callbacks, alter vdc_db_query.php script to update the vicidial_callback record to INACTIVE after it has been sent to an agent. - -- DONE Need to prevent launching of a manual dial call or callback when in alt-dial-mode before finishing lead. - -- DONE For USERONLY callbacks there will need to be an admin interface change necessary to be able to override this and a method to change a USERONLY callback to ANYONE. Allow the other-way-around as well. - -- DONE change PHP variable checking and definitions at the top of php scripts to isset/elseif for all php scripts. - -- DONE Fix alt_phone_dial disabled bug (no dispo when campaign alt_dial disabled and calling a callback or manual dial) - -- DONE Fix default park hold exten 8303 to 8301 and added 8303 to SCRATCH_INSTALL. - -- DONE end-user agent documentation - manual. Probably a free text-only manual and a full color print book available for sale as PDF and Hardcopy. Available at http://www.eflo.net/ - -- DONE Add "alter agent interface options" as option to vicidial_users table for admin.php permissions - -- DONE separate agent interface options from admin options in the vicidial_users modification portion of admin.php - -- DONE Add a closer blended default field to vicidial_users to allow setting the blended checkbox as checked upon CLOSER campaign login for a specific agent. - -- DONE Fix phone search bug in astguiclient/admin.php. - -- DONE Fix AST_VDauto_dial issue that causes continuous calls to be placed in blended campaigns if the closer campaign name didn't begin with CL. - -- DONE Fix vdc_db_query issue with manager override of in-group choices for CLOSER campaign Agents - -- DONE Fix VDAD inbound scripts to use status of "INBND" for new vicidial_list entries instead of "INBOUND" which is not compliant with the database schema. - - - - - - - - -- MEDIUM Add wrapup_seconds and wrapup_message fields to vicidial_campaigns along with a function to force a minimum wrapup time into vicidial.php after an Agent hangs up a call. The timer would start when the agent clicks on the HANGUP CUSTOMER button and if the agent dispositions the call before the wrapup time is up then they would see a screen blanking out the vicidial screen that would display the wrapup message until the timer ran out. If the wrapup timer runs out before the agent is finished dispositioning a call, nothing would happen, so the agent would not be able to move on to the next call until they selected a disposition. - -- MEDIUM Add internal DNC list of phone numbers(vicidial_dnc table) that would be scrubbed against by the AST_VDhopper.pl script while putting leads into the hopper to be dialed and it would kick the internal DNC matches out with a special status as DNCL(Do-Not-Call-Load) so they would be in the system but unable to be dialed. Would need to add a mechanism to add a lead to this list upon agent-dispo of a call as DNC within vicidial.php. Would need to create a new admin page section to manually add leads to DNC list. Also, would add a parameter to vicidial_campaigns(dnc_list_enabled ENUM('Y','N')) where a campaign could be exempted from the system's DNC list restrictions(would be active by default 'Y'). - -- MEDIUM add a basic predictive/adaptive algorithm to VICIDIAL to automatically speed-up and slow-down dialing by altering the dial_level at regular intervals. Would need more settings in the vicidial_campaigns table for adaptive like maximum lines per agent, dropped call ratio, dropped call rule to guide the predictive app. Would also need to change dial_level to be a DOUBLE or VARCHAR field to allow for different fractional increments. The admin.php page would have to be altered to ignore auto_dial_level changes when adaptive dialing is activated. The minimum dial_level would be set to '1' for adaptive dialing - auto_dial_level VARCHAR(6), # allow for just about anything. precision decimal too - adaptive_dial_level ENUM('Y','N'), # turns on adaptive script and prevents dial_level admin changes - adaptive_maximum_level VARCHAR(6), # sets highest dial_level possible by adaptive app - adaptive_dropped_percentage SMALLINT(3), # percentage of accaptable dropped calls - adaptive_dropped_rule ENUM('HARD_LIMIT','TAPERED','AVERAGE'), # method for adhearing to % limit - -- MEDIUM Add optional set of scripts for PRI system usage with VICIDIAL to automatically grab Busy and disconnect information from PRI call termincation codes and use those for NA dispositions. The problem with these is that they are not 100% accurate. - -- MEDIUM Add some sort of method to be able to auto-insert Busy/Ring-no-answer/other-NA calls back into the hopper after a certain timeout. Not sure on a method or formula yet. - -- MEDIUM Add optional field to phones table to allow for different recording file names in astguiclient.php, Similar to vicidial options. - -- MEDIUM make 3rd party consultative transfers work for Local extensions, also for internal/local transfer to closers if possible. - -- MEDIUM Add ChanSpy functionality to listen-in on VOIP channels in astguiclient.php. Maybe not since Chanspy can cause problems like crashing the Asterisk server. - -- MEDIUM Create a script to allow vicidial agents to dial into an AGI script that would ask for user/pass and then pass them onto their vicidial.php-defined sessionid. - -- MEDIUM add link in astguiclient to login and logout from Asterisk Queues - -- MEDIUM add script to get "show queues" information and place in a DB table to be used to see who is in an Asterisk Queue. This would mostly be used to give a LOGGED-IN and LOGGED-OUT display for astguiclient.php and possibly add an Asterisk Queue display tab or popup for astguiclient.php. Info would be updated one to four times a minute so it would not be real-time. - -- MEDIUM add new tab to astguiclient.php script to show status of Asterisk queues - -- MEDIUM Convert scripts to DBD::MySQL perl library in place of Net::MySQL. DBD::MySQL is faster because it uses the MySQL client libs on the machine. One problem is that you need the mysqlclientlibs installed on every -Asterisk server and the default installation of only the MySQL client libs will result in having to do a force install of cpan DBD::MySQL(because it tries to test with the local DB). Not to mention all of the code changes that would need to be made. There are also MySQL client licensing issues for certain installation circumstances(Net::MySQL doesn't use mysql client libs so it doesn't have those issues) but I really don't want to get into that discussion. - -- MEDIUM add ability to call CLOSER campaigns "BLEND" or "INBND". would require many script changes from server side to client side, not set in stone yet, but considering it. - -- MEDIUM add new method for capping the maximum number of attempts to try leads of a specific status. This would be set up like HotKeys are, per campaign where you would select the status and define the maximum number of attempts for that type of status for that campaign and the VDhopper wouldn't allow that kind of lead into the hopper if it was over the max value of call_count.(having filters reduced the priority of this item since you can do a lot of custom coding to duplicate this feature in vicidial_lead_filters) - -- MEDIUM add some kind of intelligent call-routing to astguiclient so that you can auto-forward calls to another extension from within astguiclient.php instead of using your phone or something like Queues which can mess up other things. This will need it's own table in the DB and probably some extensions.conf entries and an AGI script or two to do the actual call routing. - -- MEDIUM add a new script for using SoX to analyze the first 5 seconds of a ring-time recording within 15 minutes of the NA call ending and detecting if it has the SIT tone at the beginning of it so the lead can be taken out of the list as a DC - -- MEDIUM add skills-based routing to give the ability for a manager to set an agent at a higher or lower level per campaign or in-group. Defaults to level 0 possible values will be -9 through 9 - -- MEDIUM add all possible fields to the SCRIPT tab to auto-populate like in-group for inbound/closer, campaign and others - -- MEDIUM add ability to specify list_id in lead loader at time of picking fields - -- MEDIUM add ability upon vicidial.php login to take a number to dial as a password and a reserved word(something like MANUAL in all caps) that would allow the use of an EXTERNAL phone without setting it up as a aasterisk.phones entry. - -- MEDIUM rebuild the vdremote.php remote agents pages to use AJAX(PHP/Javascript/XMLHTTPRequest) for real-time popups of call data. - -- MEDIUM allow custom audio welcome message for vicidial campaigns. - -- MEDIUM change local_call_time to allow for variable time ranges instead of the presets that are available in the current version - -- MEDIUM create a cron script and method for creating new extensions in the sip.conf/iax.conf files as well as dialplan entries(extensions.conf). This will require more fields in the phones table to account for variables available to the protocols. The conf files would need to be altered before to have a flag for the beginning and ending of the auto-generated content. This would also necessitate a TEXT area for the extensions.conf content(that would be default generated but could be manually altered). The cron script would be run every 5 minutes or so to see if any phones had altered content, and if so generate new auto-content and do a 'reload' on the asterisk server to activate the new content. - -- MEDIUM add a count-up-timer to active channels on the astguiclient MAIN screen(this may be an Asterisk 1.2+ required feature). - -- MEDIUM Change VICIDIAL autodialing configuration to allow dialing of alt_phone numbers as well as address3 phone numbers after dialing main number. It is already possible to dial an alternate phone number manually as an agent once the customer info is up on the screen, but this would be doing it in an automated fashion. Best way for this may be to reconfigure the called_since_last_reset field to allow N, 1, 2, Y. This would require reprogramming several server scripts and php pages. - -- MEDIUM Try a few of the frequently launched scripts as C programs(call_log.agi and the AST_send child scripts) to see if they reduce system load and/or speed up those processes. - -- MEDIUM Change the autodialing system around so that there can be dialing-out-only servers and agent-only servers in a multi-server load-balanced environment. This is suprisingly simple to do, but would require all servers to be controlled by a single instance of AST_VDauto_dial.pl running on one machine. Also, in the case of IAX2 channel native transfers, we would need to change the AGI scripts that route the calls and create a new script to alter the vicidial_auto_calls records to the agent server call_server_ip and channel name because the call would disappear from the originating server causing "customer hungup" warnings. - -- MEDIUM Add method of picking up astGUIclient parked calls by only dialing digits on a regular extension without using the astGUIclient. - -- MEDIUM room manager documentation - manual. Probably a free text-only manual and a full color print book available for sale - -- MEDIUM admin/installer/maintainer documentation as well as troubleshooting guide - -- MEDIUM Run some lab-style load tests on VICIDIAL and show recommended configurations as well as "highest recommended" settings - - - -- LOW add the ability to run separate companies on the same VICIDIAL server. This will not be easy. All admin tasks as well asl user tasks and stats will need to have divisions so that nothing is accessible from the other groups. Also, the resources of the system(outbound trunks, hard drive space, other shared elements, etc...) so that one group cannot hog the shared resources of the the server. - -- LOW Making the server install script a customizable with installer prompts - -- LOW Create guidelines and suggestions for deactivating unused modules from Asterisk for astGUIclient users - -- LOW Revisit possibility of using something other than CallerIDname to tag a call process, probably a long shot without altering the Asterisk code, but that may be an option. - -- ON-HOLD We are also looking at creating an inbound-agent-specific GUI that would ideally work with Asterisk queues but that is not very likely given the current lack of events being given off by queues(this is much less likely to be built now that VICIDIAL takes inbound calls) - -- ON-HOLD add a way of checking that there is no more than 1 channel in the meetme room with the agent before another call to that agent. Currently this happens less than 0.1% of the time(mostly on heavily loaded systems), but another check might change that to zero. - -- ON-HOLD Localization of each server based on Intl. dial codes and/or country codes. very difficult to do this based on dial-codes, if used in other country, best to not use the adjust_gmt script. diff --git a/agc_2-X/trunk/docs/TODO_1.1.12.txt b/agc_2-X/trunk/docs/TODO_1.1.12.txt deleted file mode 100644 index 4408bbc7..00000000 --- a/agc_2-X/trunk/docs/TODO_1.1.12.txt +++ /dev/null @@ -1,489 +0,0 @@ -+------------------------------------------------------------------------------+ -| Asterisk GUI client - TODO v.1.1.12 | -| | -| TODO file is a list of what is new from previous version as well a list of | -| features that are planned to be completed for future releases. HIGH priority | -| items are usually going to be completed for the next release. This file is | -| kept updated on the project website by the developers and does not | -| necessarily reflect the status of features for the last release. If you are | -| reading this file from the release package, then it is accurate for the | -| version your downloaded. | -+------------------------------------------------------------------------------+ - -- DONE Fix several errors in the install script. moving -R to before -the chmod rwx settings. changing call_park_CID to park_CID. - -- DONE Added option to manual dialing to allow lookup of existing -vicidial_list lead by phone number. If found, would not insert a new lead. - -- DONE Add drop_call_seconds(TINYINT), safe_harbor_message(Y/N) and -safe_harbor_exten(VARCHAR) to the vicidial_campaigns table to allow for the -playing of the safe harbor message to outbound calls two seconds after customer -completes greeting(average of 5 seconds from call pickup[definable by the -safe_harbor_seconds variable]), also needs to be added to the -vicidial/admin.php. - -- DONE Modify all of the outbound AGI scripts to read the -drop_call_seconds and safe_harbor_ fields and use them for DROP timeout as well -as playing of the safe_harbor message if selected to do so. - -- DONE Add drop_call_seconds(SMALLINT), drop_message(Y/N) and -drop_exten(VARCHAR) to the vicidial_inbound_groups table to allow for the -playing of drop call message to inbound calls a set number of seconds after -customer calls in, also needs to be added to the vicidial/admin.php. - -- DONE Modify all of the inbound(and closer) AGI scripts to read the -drop_call_seconds and drop_ fields and use them for DROP timeout as well as -playing of the drop message if selected to do so. - -- DONE Fix agentonly_callback checkbox not-defined bug in scheduled -callbacks screen - -- DONE Fix alert message when transfer/conf is inactive for -vicidial_user and they go to disposition a call the warning shows up even if -they did not try to transfer/conf. - -- DONE Fix permissions issue in vicidial.php where -vicidial_campaigns.auto_dial_level=0 and vicidial_user.manual_dial=0 the manual -dial link still shows up. - -- DONE Fix recording filename display when the filename is longer than -the span supports. chop off the last few characters to make it fit should be -acceptable. If over 25 characters, it will chop off the end to 22 characters and -place ... at the end of the display filename. This does not effect the actualy -recording filename. - -- DONE Added AST_timeonVDADall_SIPmonitor.php from Angelito Manansala -that allows SIP listening of sessions through click on the campaign timeonVDAD -script. Added link from server_stats.php page as well. - -- DONE Add permissions to vicidial admin.php for admin interfaces to -restrict going into the call times and deleting the call times records: - -- DONE Add validation to only allow one state_call_times record per -state per call_times record - -- DONE Add method for disabling the showing of the -leads-able-to-be-dialed in the campaign screen of vicidial/admin.php. This will -help to reduce load time of the page and reduce load on the database for systems -with very large vicidial_list tables(several million records or more). This will -mean adding another field to the vicidial_campaigns table. Default is to display -the count. - -- DONE Add a popup link that would show the dialable leads count from -the campaigns screen if the dialable leads count has been hidden. - -- DONE Add link or form that would show the results and query of a -filter in the filter modification page without making it the active filter. - -- DONE Add state to the vicidial_hopper for compatibility with the new -local_call_times functions. - -- DONE Change local_call_time to allow for variable time ranges instead -of the presets that are available in the current version. Allow definitions by -days of the week as well as by state[state will be defined in another table and -referenced in a many-to-many relationship through the ct_state_call_times field -which will be pipe-delimited with a list of state_call_time_ids]. There would be -a default time scheme for all calls not covered by state. This will require -another new table and a new section under the vicidial/admin.php page. - -- DONE For the call_times and state_call_times include some presets for -records including several state restrictions on dialing hours and days in the -United States(USA). - -- DONE Fixed alt_number_dialing form element in admin.php campaign -screen - -- DONE Add wrapup_seconds and wrapup_message fields to -vicidial_campaigns along with a function to force a minimum wrapup time into -vicidial.php after an Agent hangs up a call. The timer would start when the -agent clicks on the HANGUP CUSTOMER button and if the agent dispositions the -call before the wrapup time is up then they would see a screen blanking out the -vicidial screen that would display the wrapup message until the timer ran out. -If the wrapup timer runs out before the agent is finished dispositioning a call, -nothing would happen, so the agent would not be able to move on to the next call -until they selected a disposition. Wrapup time would not be in effect if the -Agent uses HotKeys. - -- DONE Change all vicidial stats and reports scripts to use UTF-8 -instead of latin-english for multi-language support - -- DONE Fix admin pages SQL errors(vicidial campaign when no active -lists present and astguiclient phone searches) - -- DONE Rewrite the multi-language translations to use one file per -language and to allow translation to be done on a single file at a time. -es_language.txt and es_language_admin.txt would be the files used for Spanish. -Also, the order of the translated lines in the files would be unimportant -because the translation script would order the phrases by character length to -ensure that larger phrases that could contain parts of smaller phrases would be -translated correctly, this allows for comments to be placed in-line with new -sections of phrases for newer versions making it easier to find new un-verified -translations sections and submit changes to translations files. - -- DONE Create a table that will keep a current statistics cache for -items like drop count and percentages per campaign per day(and for the future: -last 1 minute/5 minutes/30 minutes) and dialable leads counts. - -- DONE Add number of leads in hopper, link to admin.php campaign modify -screen(and link from admin to this screen) and hopper and leads stats as well as -drops and drop percentage to the AST_timeonVDADall page. - -- DONE Convert the AST_VDhopper.pl script to DBD::MySQL perl library in -place of Net::MySQL. DBD::MySQL is faster because it uses the MySQL client libs -on the machine. One problem is that you need the mysqlclientlibs installed on -every Asterisk server and the default installation of only the MySQL client libs -will result in having to do a force install of cpan DBD::MySQL(because it tries -to test with the local DB). Not to mention all of the code changes that would -need to be made. There are also MySQL client licensing issues for certain -installation circumstances(Net::MySQL doesn't use mysql client libs so it -doesn't have those issues) but I really don't want to get into that discussion. -The reason for this change is that Net::MySQL is limiting in the capacity of the -queries that you can use because of how it's connection to MySQL is used. DBI -doesn't have those issues and is much better supported. This is the first script -to be converted to DBI, you can find the Net::MySQL version in the main -directory and the DBI(DBD::mysql) version in the new DBI-scripts directory. - -- DONE Test and package app_conference for beta usage with VICIDIAL as -a meetme replacement. This has many performance benefits including not having to -use a zaptel timer. Packaged and released on the project site. Tested in medium -to low capacity VICIDIAL server, some random infrequent bugs. In contact with -app_conference developers working on stabilizing code. Added instructions to -SCRATCH_INSTALL on how to get app_conferenc working with VICIDIAL. - -- DONE Add a link from the campaign-based reports pages to go back to -the campaign screen. - -- DONE Create a script to grab the login time stats from -vicidial_agent_log and create a day-by-day timesheet log each week -AST_agent_week.pl script. Add script to the cron instructions in SCRATCH_INSTALL -doc. - -- DONE Fix issues with ast_VDauto_dial script when you have two CLOSER -campaigns in Blended mode dialing at the same time. To fix this we need to -change many things in how the CLOSER campaigns work. We need to add a new field -to the vicidial_auto_calls table to denote whether the call is from inbound or -outbound(call_type ENUM('IN','OUT') default 'OUT'). For each CLOSER campaign, a -special field needs to be added to vicidial_campaigns for allowable inbound -groups. This will change what in-groups an agent logging into the campaign can -select from as well as changing how the auto_dial script calculates how many -calls to place on CLOSER campaigns in blended mode. the vicidial.php script -needs to be changed as well as several changes in the admin.php script. The -AST_VDauto_dial.pl script needs to be changed as well as all of the -agi-VDAD....closer.agi scripts. - -- DONE Fix active calls stats for multiple CLOSER campaigns in Realtime -Campaign screen. - -- DONE Add internal DNC list of phone numbers(vicidial_dnc table) that -would be scrubbed against by the AST_VDhopper.pl script while putting leads into -the hopper to be dialed and it would kick the internal DNC matches out with a -special status as DNCL(Do-Not-Call-Load) so they would be in the system but -unable to be dialed. Would need to add a mechanism to add a lead to this list -upon agent-dispo of a call as DNC within vicidial.php. Would need to create a -new admin page section to manually add leads to DNC list, ADD TO DNC link in the -LISTS section. Also, would add a parameter to -vicidial_campaigns(dnc_list_enabled ENUM('Y','N')) where a campaign could be -exempted from the system's DNC list restrictions if set to N(would not be active -by default 'N'). - -- DONE Add option for PRI T1 system usage with VICIDIAL outbound to -automatically grab Busy and Disconnect information from PRI call termincation -codes and use those for NA dispositions. VD_hangup.agi and AST_VDauto_dial.pl -modified. - -- DONE Remove gmt time validation of leads from AST_VDauto-dial because -AST_VDhopper already removes leads that are outside of the appropriate range of -GMT offsets when it is run every minute. Removing this redundancy should speed -up the dialing slightly. - -- DONE Fix VD_hangup to work with CLOSER transfer-from-fronter calls, -different log contents than from CLOSER inbound call. - -- DONE Add option for disposition-based lead recycling on an automated -and timed basis per campaign. It will be some sort of method to be able to -auto-insert Busy/Ring-no-answer/other-NA calls back into the hopper after a -certain timeout. there will be a minimum of 120 seconds before the lead will be -allowed to go back into the hopper and a lead can only go back into the hopper a -maximum of 10 times before the list would need to be reset. The -vicidial_list.called_since_last_reset field needs to be altered to allow for -counting of recycle attempts. All scripts need to be able to keep the state of -call_since_last_reset. A new table: vicidial_lead_recycle that will function -somewhat like HotKeys on the campaign screen. admin.php and AST_VDhopper.pl will -need to be modified. - -- DONE Change ADMIN_area_code_populate.pl script to ignore the header -row of the phone codes gmt file DB import - -- DONE Add database GMT lookup to the VICIDIAL_IN_new_leads_file.pl -lead loader lead import process. - -- DONE Change ADMIN_adjust_GMTnow_on_leads.pl script to use database -instead of flat text file. - -- DONE Fix display issues with LIST MODIFY page on admin.php for -statuses because of lead recycling and with GMT offset for positive GMT offsets. - -- DONE Add listID override feature to the VICIDIAL_IN_new_leads_file.pl -lead loader lead import process to force all leads being loaded into the same -list_id. - -- DONE Add listID override feature to the basic web-based lead loader -lead import process to force all leads being loaded into the same list_id. - -- DONE Add database GMT lookup to the basic web-based lead loader lead -import process. - -- DONE Add listID override feature to the super web-based lead loader -lead import process to force all leads being loaded into the same list_id. - -- DONE Add database GMT lookup to the super web-based lead loader lead -import process. This one is more difficult because of the many scripts and -sections used to parse and insert leads for the different formats and field -orders: listloader_super.pl, listloader.pl, new_listloader_superL.php - -- DONE standardize the query results variable in PHP scripts to $rslt. - -- DONE SECURITY FIX, filter all variables relating to SQL queries in -agc scripts(vicidial.php, astguiclient.php, etc...) This is for a SQL injection -vulnerability where a malicious user puts SQL fragments into a variable field in -order to manipulate or destroy the database. - -- DONE SECURITY FIX, filter all variables relating to SQL queries in -admin scripts(vicidial and astguiclient folders, admin.php, etc...) - -- DONE Change the admin_search_lead page to include multiple results. - -- DONE Add an AGI script to record audio for prompts with an 8-digit -filename that can be played by dialing the 8 digit filename. 85100001-85199999. -The AGI script would announce beginning of recording and to press pound when -done recording, then would say thank-you and announce the filename of the -recording. The recordings would be saved in GSM format and can be used in any of -the fields within VICIDIAL that call for a message exten like the survey script. -agi-record_prompts.agi script created. - -- DONE Add link from reports pages back to main reports page. - -- DONE fix MySQL errors on campaign modify and leads modify pages for -dialable leads when no active lists for campaign lists. - -- DONE Fix call_log entries for Zap client phones where call -information is in different places than if calls are placed from SIP or IAX -client phones. call_log and call_logCID AGI scripts. - -- DONE Finish rough German Admin pages translations - - - - - - - - - - -- MEDIUM add option to disable detailed logging for VICIDIAL and -astGUIclient server apps. - -- MEDIUM add new ALLFORCE to recording method for campaigns. will force -recording of all calls and disable the button for agents no matter their -vicidial_users setting. - -- MEDIUM add a basic predictive/adaptive algorithm to VICIDIAL to -automatically speed-up and slow-down dialing by altering the dial_level at -regular intervals. Would need more settings in the vicidial_campaigns table for -adaptive like maximum lines per agent, dropped call ratio, dropped call rule to -guide the predictive app. Would also need to change dial_level to be a DOUBLE or -VARCHAR field to allow for different fractional increments. The admin.php page -would have to be altered to ignore auto_dial_level changes when adaptive dialing -is activated. The minimum dial_level would be set to '1' for adaptive dialing - auto_dial_level VARCHAR(6), # allow for just about anything. -precision decimal too - adaptive_dial_level ENUM('Y','N'), # turns on adaptive script and -prevents dial_level admin changes - adaptive_maximum_level VARCHAR(6), # sets highest dial_level -possible by adaptive app - adaptive_dropped_percentage SMALLINT(3), # percentage of -accaptable dropped calls - adaptive_dropped_rule ENUM('HARD_LIMIT','TAPERED','AVERAGE'), # method -for adhearing to % limit - -- MEDIUM room manager documentation - manual. Probably a free 2 chapter -black and white manual and a full color print download available for sale. - -- MEDIUM Rewrite the inbound and closer call handling to allow for music -on hold per in-group and a single queue app instead of multiple AGIs each -running their own queries. Currently with large queues and long wait times a lot -of load is generated with calls on hold in the queue. Switching to a central -queue application would reduce the load and speed things up. - -- MEDIUM Add optional field to phones table to allow for different -recording file names in astguiclient.php, Similar to vicidial options. - -- MEDIUM make 3rd party consultative transfers work for Local extensions, -also for internal/local transfer to vicidial closers if possible. - -- MEDIUM Attempt to make some kind of holiday schedule function for -national and state holidays that would be able block out states on specific -no-call days. This is rather difficult because of the way some holidays are -scheduled, I.E. Easter. - -- MEDIUM Add ChanSpy functionality to listen-in on VOIP channels in -astguiclient.php. Maybe not since Chanspy can cause problems like crashing the -Asterisk server. Need to do more testing. - -- MEDIUM Create a script to allow vicidial agents to dial into an AGI -script that would ask for user/pass and then place them onto their -vicidial.php-defined sessionid. - -- MEDIUM add link in astguiclient to login and logout from Asterisk -Queues - -- MEDIUM add script to get "show queues" information and place in a DB -table to be used to see who is in an Asterisk Queue. This would mostly be used -to give a LOGGED-IN and LOGGED-OUT display for astguiclient.php and possibly add -an Asterisk Queue display tab or popup for astguiclient.php. Info would be -updated one to four times a minute so it would not be real-time. - -- MEDIUM add new tab to astguiclient.php script to show status of -Asterisk queues - -- MEDIUM Convert all scripts to DBD::MySQL perl library in place of -Net::MySQL. DBD::MySQL is faster because it uses the MySQL client libs on the -machine. One problem is that you need the mysqlclientlibs installed on every -Asterisk server and the default installation of only the MySQL client libs will -result in having to do a force install of cpan DBD::MySQL(because it tries to -test with the local DB). Not to mention all of the code changes that would need -to be made. There are also MySQL client licensing issues for certain -installation circumstances(Net::MySQL doesn't use mysql client libs so it -doesn't have those issues) but I really don't want to get into that discussion. -We will start by converting at least one perl script for each release until we -have converted then all, then we will no longer support Net::MySQL. This will -probably take some time, but the scripts that are added to the DBI-scripts -folder will be drop-in replacements for the Net versions that are installed by -default. - -- MEDIUM Create a visual SQL builder for the filter SQL section. - -- MEDIUM add ability to call CLOSER campaigns "BLEND" or "INBND". would -require many script changes from server side to client side, not set in stone -yet, but considering it. - -- MEDIUM add some kind of intelligent call-routing to astguiclient so -that you can auto-forward calls to another extension from within -astguiclient.php instead of using your phone or something like Queues which can -mess up other things. This will need it's own table in the DB and probably some -extensions.conf entries and an AGI script or two to do the actual call routing. - -- MEDIUM add skills-based routing to give the ability for a manager to -set an agent at a higher or lower level per campaign or in-group. Defaults to -level 0 possible values will be -9 through 9 - -- MEDIUM add all possible fields to the SCRIPT tab to auto-populate like -in-group for inbound/closer, campaign and others - -- MEDIUM add ability to scrub leads being imported in the lead loader -against the vicidial_dnc list as they are being imported. - -- MEDIUM add ability upon vicidial.php login to take a number to dial as -a password and a reserved word(something like MANUAL in all caps) that would -allow the use of an EXTERNAL phone without setting it up as an asterisk.phones -entry. - -- MEDIUM rebuild the vdremote.php remote agents pages to use -AJAX(PHP/Javascript/XMLHTTPRequest) for real-time popups of call data. - -- MEDIUM allow custom audio welcome message for vicidial campaigns. This -might be an app_conference only feature. - -- MEDIUM create a cron script and method for creating new extensions in -the sip.conf/iax.conf files as well as dialplan entries(extensions.conf). This -will require more fields in the phones table to account for variables available -to the protocols. The conf files would need to be altered before to have a flag -for the beginning and ending of the auto-generated content. This would also -necessitate a TEXT area for the extensions.conf content(that would be default -generated but could be manually altered). The cron script would be run every 5 -minutes or so to see if any phones had altered content, and if so generate new -auto-content and do a 'reload' on the asterisk server to activate the new -content. - -- MEDIUM add a count-up-timer to active channels on the astguiclient MAIN -screen(this may be an Asterisk 1.2+ required feature). - -- MEDIUM Change VICIDIAL autodialing configuration to allow dialing of -alt_phone numbers as well as address3 phone numbers after dialing main number. -It is already possible to dial an alternate phone number manually as an agent -once the customer info is up on the screen, but this would be doing it in an -automated fashion. Best way for this may be to reconfigure the -called_since_last_reset field to allow N, 1, 2, Y. This would require -reprogramming several server scripts and php pages. - -- MEDIUM Try a few of the frequently launched scripts as C -programs(call_log.agi and the AST_send child scripts) to see if they reduce -system load and/or speed up those processes. - -- MEDIUM Change the autodialing system around so that there can be -dialing-out-only servers and agent-only servers in a multi-server load-balanced -environment. This is suprisingly simple to do, but would require all servers to -be controlled by a single instance of AST_VDauto_dial.pl running on one machine. -Also, in the case of IAX2 channel native transfers, we would need to change the -AGI scripts that route the calls and create a new script to alter the -vicidial_auto_calls records to the agent server call_server_ip and channel name -because the call would disappear from the originating server causing "customer -hungup" warnings. - -- MEDIUM Add method of picking up astGUIclient parked calls by only -dialing digits on a regular extension without using the astGUIclient. - -- MEDIUM admin/installer/maintainer documentation as well as -troubleshooting guide - -- MEDIUM Run some lab-style load tests on VICIDIAL and show recommended -configurations as well as "highest recommended" settings - - - -- LOW add the ability to run separate companies on the same VICIDIAL -server. This will not be easy. All admin tasks as well asl user tasks and stats -will need to have divisions so that nothing is accessible from the other groups. -Also, the resources of the system(outbound trunks, hard drive space, other -shared elements, etc...) so that one group cannot hog the shared resources of -the the server. - -- LOW Making the server install script a customizable with installer -prompts - -- LOW Create guidelines and suggestions for deactivating unused -modules from Asterisk for astGUIclient users - -- LOW Revisit possibility of using something other than CallerIDname -to tag a call process, probably a long shot without altering the Asterisk code, -but that may be an option. - -- LOW add new method for capping the maximum number of attempts to try -leads of a specific status. This would be set up like HotKeys are, per campaign -where you would select the status and define the maximum number of attempts for -that type of status for that campaign and the VDhopper wouldn't allow that kind -of lead into the hopper if it was over the max value of call_count.(having -filters reduced the priority of this item since you can do a lot of custom -coding to duplicate this feature in vicidial_lead_filters) - -- LOW add a new script for using SoX to analyze the first 5 seconds of -a ring-time recording within 15 minutes of the NA call ending and detecting if -it has the SIT tone at the beginning of it so the lead can be taken out of the -list as a DC. adding PRI hangup codes has reduced priority for this item. - -- ON-HOLD We are also looking at creating an inbound-agent-specific GUI -that would ideally work with Asterisk queues but that is not very likely given -the current lack of events being given off by queues(this is much less likely to -be built now that VICIDIAL takes inbound calls) - -- ON-HOLD add a way of checking that there is no more than 1 channel in -the meetme room with the agent before another call to that agent. Currently this -happens less than 0.1% of the time(mostly on heavily loaded systems), but -another check might change that to zero. - -- ON-HOLD Localization of each server based on Intl. dial codes and/or -country codes. very difficult to do this based on dial-codes, if used in other -country, best to not use the adjust_gmt script. - diff --git a/agc_2-X/trunk/docs/VICIDIAL.txt b/agc_2-X/trunk/docs/VICIDIAL.txt index 9882ac6d..d69ab970 100644 --- a/agc_2-X/trunk/docs/VICIDIAL.txt +++ b/agc_2-X/trunk/docs/VICIDIAL.txt @@ -3,7 +3,7 @@ This system was initially created to fill the need of a customer service group being able to call up clients efficiently and without using a predictive dialer that would potentially lose calls and alienate clients. Since then we have added -the ability to do limited predictive dialing alongside the traditional +the ability to do predictive dialing alongside ratio dialing and the traditional one-call-at-a-time dialing as well as the ability to take inbound calls and set up campaigns to do blended inbound and outbound at the same time. @@ -11,6 +11,7 @@ Features: - Ability for an agent to call clients in succession from a database through a web-client - Ability to display a script for the agent to read with fields like name, address, etc. filled-in - Ability to set a campaign to auto-dial and send live calls to available agents +- Ability to dial predictively in a campaign with an adaptive dialing algorithm - Ability to dial on a single campaign across multiple Asterisk servers, or multiple campaigns on a single server - All calls are logged and statuses of calls are logged as well as agent time breakdowns - Ability to transfer calls with customer data to a closer on the local system or a remote Asterisk server @@ -69,8 +70,8 @@ This system is dependant on a MySQL server acting as the storage place of all data and settings for the system. This was done so that it would be very scalable and flexible. This application draws on a lot of the core scripting inside of the astGUIclient suite of applications and was built with flexibility -in mind. We have used VICIDIAL for over nine months now on up to 70 seats at -once across 4 separate Asterisk servers all using the same MySQL server and +in mind. We have used VICIDIAL for over two years now on up to 120 seats at +once across 6 separate Asterisk servers all using the same MySQL server and dialing on the same campaign. It is important to keep in mind that because VICIDIAL uses Asterisk meetme rooms for it's dialing that the Asterisk server will see an increased load as compared to a simple Zap/SIP-only calls. @@ -110,9 +111,13 @@ Process flow of an auto-dial call: - The lead hopper app(AST_VDhopper.pl) that is running every minute keeps the hopper for each campaign up to at least the minimum hopper lead size providing there are enough leads to fill it. - - The call center manager can either set the auto_dial_level (on the campaign -screen of the admin web page) to 0(zero) for no autodialing or any other choice -for a different number of lines-per-agent-logged-in. + - The predictive dialing control app(AST_VDadapt.pl) that is running constantly +analyzes the current status of calls and agents and calculates the dial level +that the campaign will need to be set at for the campaign's specific settings. + - The call center manager can either set the dial method (on the campaign +screen of the admin web page) to Manual for no autodialing, Ratio for fixed +lines-to-agent dialing or any of the Adapt predictive dialing models to use +Predictive dialing. - As soon as an agent logs into a campaign, the client app will look at the auto_dial_level setting of the campaign and determine whether - it will insert a record into the vicidial_live_agents table(and set @@ -125,11 +130,11 @@ button. - it will allow normal manual dialing operation - The auto_dial app(AST_VDauto_dial.pl) will: - count how many agents are READY,QUEUE,INCALL with updated -last_update_time in the last 5 seconds +last_update_time in the last 2.5 seconds. - look at the campaign's auto_dial_level to determine how many calls should be placed each specific campaign on each server. - update the vicidial_auto_calls records by searching for active -callerids in the vicidial_manager to see if they have hung up +callerids in the vicidial_manager to see if they have hung up. - count the number of active calls that are occuring(vicidial_auto_calls records with a status of SENT,RINGING or LIVE) @@ -168,8 +173,9 @@ lead_id and the uniqueid and callerID to proper values for the call] - if there are agents available[affected rows = 1](goto substep VII.) - if there are no agents available: - wait in 1 second increments and then checking substep IV. - - if no agent is available for 1 minute, the call is hung up -and logged as ABANDN in vicidial_log under user VDAD + - if no agent is available for the drop interval(usually 5 +seconds on outbound campaigns), the call is hung up and logged as DROP in +vicidial_log under user VDAD - grabs the agent info from the vicidial_live_agents[conf_exten] and does a redirect to the agent's meetme room. - agent's app checks the vicidial_live_agents record every second for