+------------------------------------------------------------------------------+ | 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.