initial 2.0 tree trunk

git-svn-id: svn://192.168.202.10@18 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
root
2006-07-07 15:57:03 +00:00
commit ff91d93a2d
992 changed files with 317439 additions and 0 deletions
+94
View File
@@ -0,0 +1,94 @@
+------------------------------------------------------------------------------+
| Asterisk GUI client - astguiclient - fourth public release 0.9.2 |
| Description of the Asterisk Central Queue System |
| created by Matt Florell <mattf@vicimarketing.com> <info@eflo.net> |
| project started 2003-10-06 http://sourceforge.net/projects/astguiclient/ |
+------------------------------------------------------------------------------+
This suite of programs is designed to work with the Asterisk Open-source PBX
(http://www.asterisk.org) as a cross-platform GUI client and the supporting
server side applications necessary for the features of the GUI application to
work with Asterisk.
Scripts that are involved with the ACQS backend are:
- AST_SERVER_conf.pl - file where you define your variables for the server apps
+ Must be present in the /home/cron/ directory
- AST_manager_listen.pl - listener for the Asterisk Central Queue System (ACQS)
+ Must be present in the /home/cron/ directory
+ Requires Net::Telnet, Net::MySQL and Time::HiRes perl Modules
- AST_manager_send.pl - send-spawn for the ACQS
+ Must be present in the /home/cron/ directory
+ Requires Net::Telnet, Net::MySQL and Time::HiRes perl Modules
- AST_send_action_child.pl - blind-send for the ACQS
+ Must be present in the /home/cron/ directory
+ Requires Net::Telnet, Net::MySQL perl Modules
- ADMIN_keepalive_AST_send_listen.pl - checks to see that ACQS is running
+ Must put entry for this script in the cron as "* * * * * /path/script"
- ADMIN_restart_roll_logs.pl - rolls logs over datestamp upon restart
+ put this script in your machine's startup routine
DESCRIPTION:
This set of programs was created to reduce the risk of deadlocks that occur when
the manager interface connection from a remote machine to the Asterisk server
becomes severed or backlogged in some way resulting in a buffer-overflow of the
manager interface on the Asterisk box and a deadlock of the Asterisk PBX. The
probability of this happening is rare on a system where you may have 100 or less
action commans being executed a day, but when the action commands rise to the
level of 3000+ per server across 30 machines you will have at least 1 deadlock
per day if not one per hour. That's why we needed to find a way to still issue
manager Actions but not have to maintain a connection with the Asterisk Manager
interface. Here is a rundown of how the ACQS works:
There is a simple database table where the action information with unique IDs is
stored and where each action's information is updated by the listener. The table
I use is called vicidial_manager and is detailed in the CONF_MySQL.txt file in
this distribution.
1. First, the GUI client application inserts a record into the table as a NEW
action and includes a unique callerID for REDIRECT and ORIGINATE commands(the
callerID field is how the listener will update the record in the DB)
INSERT INTO vicidial_manager values('','','2004-01-30
17:22:53','NEW','N','10.10.11.12','','Originate','DL40130172253cc160','Channel:
local/8600011@demo','Context: default','Exten: 917274515135','Priority:
1','Callerid: DL40130172253cc160','','','','','');
2. Second, there is a constantly running application on the Asterisk box that
selects queues from the database to be processed, and launches a new child
script to send the action to the database, then marks the action as SENT.
3. Third, each child process logs into the manager interface and sends the
action immediately, then stays open for 10 seconds to not cause any problems,
clears it's buffer and then logs out and exits.
4. Fourth, the listener app is constantly connected on the Asterisk box to the
manager interface and parses all output from the manager interface. Every time a
"Newstate Ringing" event is seen an update statement is sent to the DB based
upon the callerid of the call filling in the channel that the call is on and the
uniqueID of the call and sets the record to "UPDATED"
5. Fifth, the listener also listens for "Hangup" events and sends an update to
the DB with a "DEAD" status keyed by the call's uniqueID.
The above process is executed extremely fast and actually has suprisingly little
effect on the load of the Asterisk box. Because each action is sent through it's
own child process there is no risk of the system deadlocking because of a single
bad action thread.
NOTES:
This started out as a desperate quick fix that evolved into a system that has
been up and running reliably on two separate Asterisk servers. Since we
implemented ACQS we haven't had a single deadlock on either of these servers.
If anyone has suggestions/praises/criticisms I would love to hear them.
To use, install the scripts listed above and set the $QUEUE_ACTION_enabled
variable in the client's libs/AST_VICI_conf.pl configuration file to 1
+86
View File
@@ -0,0 +1,86 @@
VICIDIAL and app_conference
(1.2 tree) EXPERIMENTAL!!!
app_conference offers the plusses of being able to do conferencing
without any zaptel hardware or timers as well as doing native codec
streaming, meaning no manditory downsampling to slin like meetme.
These two features alone mean a rather significant performance boost
to companies who only use VOIP for agents and trunks as well as not
requiring the cost of zaptel hardware or the nightmare of getting
ztdummy to work on some systems.
As of right now, I have a test system fully up and running using
app_conference with VICIDIAL on Asterisk 1.2.8. I have made several
modifications to the app_conference code to make it more of a drop-in
replacement for meetme so that it does not require any changes to the
VICIDIAL codebase. I have added entry and exit sounds(slightly
different from meetme's) as well as "only one in this conference"
message in addition to changing the default member type to speaker(S).
So far I have tested with IAX and SIP channels only and everything
works just like on meetme but I have not done any capacity testing or
tested it in production yet.
If you want to use app_conference instead of meetme for VICIDIAL then follow these instructions:
cd /usr/src/asterisk
wget http://www.eflo.net/files/VD_app_conference_0.6.zip
unzip VD_app_conference_0.6.zip
cd app_conference
make clean
make
make install
In your extensions.conf file you would replace these lines:
exten => 8600051,1,Meetme,8600051
exten => 8600052,1,Meetme,8600052
...continue through 8600100...
exten => 78600051,1,Meetme,8600051|q
exten => 78600052,1,Meetme,8600052|q
...continue through 78600100...
exten => 68600051,1,Meetme,8600051|mq
exten => 68600052,1,Meetme,8600052|mq
...continue through 68600100...
with these lines:
exten => 8600051,1,Conference(8600051)
exten => 8600052,1,Conference(8600052)
...continue through 8600100...
exten => 78600051,1,Conference(8600051|q)
exten => 78600052,1,Conference(8600052|q)
...continue through 78600100...
exten => 68600051,1,Conference(8600051|Lq)
exten => 68600052,1,Conference(8600052|Lq)
...continue through 68600100...
NOTES:
Here are the possible feature flags for this version of app_conference:
o M: Moderator (presently same as speaker) [default]
o S: Speaker
o L: Listener
o T: "Telephone caller" (just for stats?).
o V: Do VAD on this caller
o D: Use Denoise filter on this caller.
o d: Send manager events when DTMF is received.
o q: Do not play enter or exit sounds.
o i: use inband dtmf broadcast.
o t: use rfc dtmf signal broadcast.
COMPILE NOTES:
Some Makefile alterations may be necessary for your system:
From Alek Barkley:
I am running FC4 with latest updates ( 2.6.16 kernel )
My CPU is AMD K6 and GCC 4.0.2.
I edited Makefile in app_conference distribution.
To enter CPU architecture in my case -march=k6
========================================================
PROC = k6
# this is fun for x86
#CFLAGS += -march=pentium3 -msse -mfpmath=sse,387
CFLAGS += -march=k6
===========================================================
+98
View File
@@ -0,0 +1,98 @@
CALLBACK proces flow 2006-01-05
***** FULL CALLBACKS FUNCTIONALITY WAS ADDED IN THE 1.1.11 RELEASE *****
This will outline the process I have thought through in my head for a call-back
process in VICIDIAL. I have received suggestions for methodologies of how many
people think that call-backs should work and I think I've finally come to a
conclusion of how I may build it into VICIDIAL that incorporates most of these
suggestions.
The Agent Side:
When an Agent dispositions a call as CALLBK, a popup frame will appear that will
allow selecting a date from a calendar window(with option to go forward by month
up to 1 year) and a pull-down list that will show hours(in 30 minute increments
defaulting to current half hour). After the agent selects a day and time, they
must check a box to denote that only they should be able to get this Callback.
If the box is unchecked, anyone will be able to call this lead after it's
callback_time elapses. The lead will be entered as vicidial_list.status CBHOLD
in the system and will not be able to be dialed or selected as a dial status in
the admin screen.
If the agent checks the box that they will be the only one that can callback the
lead and it is time to call that lead again(vicidial.php will check at login and
every 30 minutes to see if there are any agent-specific leads that need to be
called back by that agent) then when the agent is paused they will be able to
click on the "CALLBACK" button on the bottom of the screen and select which lead
that they want to callback. The call will proceed as a normal call and will be
dispositioned as normal. The callback button will probably be able to flash or
gently strobe like the astguiclient.php voicemail button does when callbacks are
available to be called for that logged-in agent.
If the agent does not check that they are the only ones to be able to call that
specific lead back, then it will be updated by the AST_VDhopper.pl script once
it's callback date/time has been reached the status will be changed to CALLBK
and will be available for calling if that status is selected in the dial
statuses for the campaign and if the list is active.
If the managr has given the agent permission to set USERONLY callbacks, then
the agent will be able to call those customers back by clicking on the CALLBACK
count link below the comments field of vicidial.php once they are logged in.
From here they can see the listing of their callbacks and their settings, and
can call the customer back by clicking on the callback record.
The Admin Side:
In the admin.php web page will be a callback viewer. Admin users will be able to
search and sort by campaign, list, user, status and time-range to see summary
lists of the Callbacks in the vicidial_callbacks table. Callbacks will be
alterable through the modify lead screen.
The Server Side:
The vicidial_callbacks table will look like this:
CREATE TABLE vicidial_callbacks (
callback_id INT(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
lead_id INT(9) UNSIGNED,
list_id INT(8) UNSIGNED,
campaign_id VARCHAR(8),
status VARCHAR(10),
entry_time DATETIME,
callback_time DATETIME,
modify_date TIMESTAMP,
user VARCHAR(20),
recipient ENUM('USERONLY','ANYONE'),
comments VARCHAR(255),
index (lead_id),
index (status),
index (callback_time)
);
The status field will probably have the following possible values: ACTIVE, LIVE,
ARCHIVE and all old callback entries will be kept for archival purposes,
anthough not viewable by the agent.
The AST_VDhopper.pl script will do a select every minute(before it does it's
hopper filling run) for callbacks that need to be placed back in CALLBK status.
Something like this query:
SELECT lead_id from vicidial_callbacks where callback_time < '2006-01-06
10:02:03' and status='ACTIVE';
AST_VDhopper.pl will then:
- set these leads to vicidial_list.status of CALLBK
- set the called_since_last_reset to N
- insert the lead into the vicidial_hopper under the campaign it was originally
set if it is an ANYONE callback
- change the vicidial_callbacks.status to LIVE.
At the time of a hangup of a callback call, the vicidial.php script will set the
vicidial_callbacks.status to ARCHIVE. The leads that designate the recipient as
USERONLY will not be altered in any way by AST_VDhopper.pl.
+9
View File
@@ -0,0 +1,9 @@
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
+17
View File
@@ -0,0 +1,17 @@
### 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
+12
View File
@@ -0,0 +1,12 @@
### 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 ####
#### ####
################################################################################
################################################################################
+278
View File
@@ -0,0 +1,278 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
+123
View File
@@ -0,0 +1,123 @@
VICIDIAL - LOAD BALANCING setup.
This document is meant to summarize the capabilities and setup of VICIDIAL in a multi-server environment.
Why Load Balance?
The primary reason to do load balancing, or clustering of multiple VICIDIAL servers, is to spread the calls taken in or the answered calls on an outbound campaign across all of the agents that are logged into a campaign no matter what server they are on. For instance, on an outbound campaign, you have 2 servers, server one has 20 agents logged in on a campaign and the other server(two) has 5 agents logged in on the same campaign. Lets say that the campaign is set to a dial_level of 3.0 so there are 60 active calls being placed on server one and 15 active calls being placed on server two. Then 23 of the calls on server one answer meaning that there are three calls too many for the agents available on that server. Under a load-balancing-overflow setup those three calls can travel over an IAX2 trunk directly to the agents on that server that are still available. This increased efficiency in both inbound and outbound environments as well as reducing on-hold times for customers and equalizing wait times for agents across all servers for a campaign.
Another reason for load balancing is the ability to use cheaper hardware on the server side. It is much cheaper and more fault-tolerant to buy four P4 2.0GHz 1U servers for $800 a piece than it is to buy a single 4U quad Xeon 3.2GHz server. The four 1U servers will have more total capacity, can be easily scaled and if one fails you've only lost 25% of capacity instead of everything. This philosophy has serverd our call center very well over the last two years.
How do I set up load balancing on my two server VICIDIAL setup?
These steps are taken directly from the SCRATCH_INSTALL document, but they are all put together here to give a better idea of what is needed all in one place. It is assumed that you already have VICIDIAL up and running on both servers.
NOTE: In a multi-server setup you may want to have your database and web server on a separate machine from your Asterisk/VICIDIAL servers. Simply copy the web page directories to your new database/web server and set the AST_SERVER_conf.pl files on your VICIDIAL servers to point to that new database server. You can also have several web servers(or even load-balancing web servers) if you have more than 70 seats in one installation you may want to do that. For the web pages you just need to make sure the dbconnect.php files are configured for your database server. We have had 9 VICIDIAL servers and 2 web servers using a single database server with no problems.
1. The VICIDIAL/Asterisk servers need to have all of the perl scripts and cron jobs installed on them, except these which only need to be on one of the servers:
- AST_VDhopper.pl
- AST_cleanup_agent_log.pl
- ADMIN_adjust_GMTnow_on_leads.pl
- AST_DB_optimize.pl
2. The two servers need to be registered to each other as IAX2 friends:
SERVER ONE(ASTtest1-10.10.10.15)
iax.conf:
register => ASTtest1:test@10.10.10.16
[ASTtest2]
type=friend
accountcode=IAXtrunk2
context=default
auth=plaintext
host=dynamic
permit=0.0.0.0/0.0.0.0
secret=test
qualify=yes
SERVER TWO(ASTtest2-10.10.10.16)
iax.conf:
register => ASTtest2:test@10.10.10.15
[ASTtest1]
type=friend
accountcode=IAXtrunk1
context=default
auth=plaintext
host=dynamic
permit=0.0.0.0/0.0.0.0
secret=test
qualify=yes
3. The two servers need to have wildcard extensions assigned to the other server in the dialplan:
SERVER ONE(ASTtest1-10.10.10.15)
extensions.conf:
[globals]
TRUNKIAX2=IAX2/ASTtest1:test@10.10.10.16
[default]
exten => _010*010*010*016*8600XXX,1,Dial(${TRUNKIAX2}/${EXTEN:16},55,o)
exten => _010*010*010*016*8600XXX,2,Hangup
SERVER TWO(ASTtest2-10.10.10.16)
extensions.conf:
[globals]
TRUNKIAX1=IAX2/ASTtest2:test@10.10.10.15
[default]
exten => _010*010*010*015*8600XXX,1,Dial(${TRUNKIAX1}/${EXTEN:16},55,o)
exten => _010*010*010*015*8600XXX,2,Hangup
4. For BOTH servers the VDAD extens need to be setup there as well for the Load-Balance and Load-Balance-Overflow AGI scripts, as well as setting up the closer and inbound extens if needed:
; VICIDIAL_auto_dialer transfer script Load Balance Overflow:
exten => 8367,1,AGI(call_log.agi,${EXTEN})
exten => 8367,2,AGI(agi-VDAD_LO_transfer.agi,${EXTEN})
exten => 8367,3,AGI(agi-VDAD_LO_transfer.agi,${EXTEN})
exten => 8367,4,AGI(agi-VDAD_LO_transfer.agi,${EXTEN})
exten => 8367,5,Hangup
; VICIDIAL_auto_dialer transfer script Load Balanced:
exten => 8368,1,AGI(call_log.agi,${EXTEN})
exten => 8368,2,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8368,3,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8368,4,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8368,5,Hangup
; parameters for agi-VDAD_LB_closer.agi (2 fields separated by five dashes "-----"):
; 1. the full extension formatted by VICIDIAL for internal transfers * separated
; 2. the word START to denote the beginning of the acceptance of the transfer
; inbound VICIDIAL transfer calls [INTERNAL TRANSFER]
exten => _90009.,1,Answer ; Answer the line
exten => _90009.,2,AGI(agi-VDAD_LB_closer.agi,${EXTEN}-----START)
exten => _90009.,3,Hangup
; parameters for agi-VDAD_LO_closer.agi (2 fields separated by five dashes "-----"):
; 1. the full extension formatted by VICIDIAL for internal transfers * separated
; 2. the word START to denote the beginning of the acceptance of the transfer
; inbound VICIDIAL transfer calls [LOCAL TRANSFER]
exten => _990009.,1,Answer ; Answer the line
exten => _990009.,2,AGI(agi-VDAD_LO_closer.agi,${EXTEN}-----START)
exten => _990009.,3,Hangup
; inbound VICIDIAL call with prompt for 4-digit fronter code
exten => 1234,1,Answer ; Answer the line
exten => 1234,2,AGI(agi-VDAD_LO_closer_inbound.agi,CL_GALLERIA-----7275555134-----Closer-----park----------999-----1)
exten => 1234,3,Hangup
5. Reload both Asterisk servers and for outbound change the VDAD exten to 8367 or 8368 and kill the AST_VDauto_dial.pl scripts on both servers so they can restart and you can now look at the AST_timeonVDADall.php page(per campaign time-on-VDAD available from the STATS and REPORTS link on the vicidial admin screen) that will allo you to see the server_ip of the agent and the server_ip of the call per campaign across all campaigns.
If you have any questions or problems please post to the astguiclient-users list(link available on the project website)
6. For multi-server VICIDIAL/astGUIclient installations these cron scripts only need to be set up and run on one of the servers:
- AST_VDhopper.pl
- AST_cleanup_agent_log.pl
- ADMIN_adjust_GMTnow_on_leads.pl
- AST_DB_optimize.pl
+713
View File
@@ -0,0 +1,713 @@
+------------------------------------------------------------------------------+
| Asterisk GUI client - astguiclient - twenty-fifth public release 1.1.12 |
| created by astGUIclient group <astguiclient@eflo.net> |
| project started 2003-10-06 http://sourceforge.net/projects/astguiclient/ |
+------------------------------------------------------------------------------+
This suite of programs is designed to work with the Asterisk Open-source PBX
(http://www.asterisk.org) as a cross-platform GUI client and the supporting
server side applications necessary for the features of the GUI application to
work with Asterisk. The client-side GUI apps are available now as web pages
running AJAX scripted web pages(Firefox recommended)
***** Description, Notes and Changelog below *****
Included in this distribution of the Asterisk GUI client are:
- README.txt - this file
- SCRATCH_INSTALL.txt - detailed instructions of how to fully install Asterisk
with astguiclient from scratch. Also you could use this doc to install from
PHASE 6 of the document if you have an existing Asterisk installation you want
to put astguiclient onto.
- ACQS.txt - Readme file describing the Asterisk Central Queue System
- VICIDIAL.txt - Readme file describing the VICIDIAL auto-dialing system
- REQUIREMENTS.txt - Basic requirements for running astGUIclient/VICIDIAL
- 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
- start_asterisk_boot.pl - starts asterisk through a screen, good for system
boot time startups of asterisk.
- MySQL_AST_CREATE_tables.sql - used to create tables for astguiclient and
vicidial in your MySQL database
- astLEADLOADER.pl - client perl/Tk GUI for loading leads into the vicidial_list
+ same application run specs as the AST_WINphoneAPP above
### SOON TO BE DEPRICATED AND UNSUPPORTED ### see the web lead loader
- ADMIN_area_code_populate.pl - run once to update phone codes to database
- AST_VICI_conf.pl - file where you define your variables for the client app
+ Must be present in one of the libs_path folders
- AST_update.pl - command line DB updater
+ Ideally is run on the Asterisk server locally
+ Requires Net::Telnet, Net::MySQL and Time::HiRes perl Modules
- AST_vm_update.pl - command line DB voicemail count updater
+ Ideally is run on the Asterisk server locally
+ Requires Net::Telnet, Net::MySQL and Time::HiRes perl Modules
+ place in the cron as "* * * * * /path/to/script"
- AST_conf_update.pl - command line DB conference room reg validator
+ Ideally is run on the Asterisk server locally
+ Requires Net::Telnet, Net::MySQL and Time::HiRes perl Modules
+ place in the cron as "* * * * * /path/to/script"
- ADMIN_keepalive_AST_update.pl - checks to see that updater is running
+ Must put entry for this script in the cron as "* * * * * /path/to/script"
- AST_CRON_mix_recordings.pl - command line recording mixer to be put in cron
+ Runs under UNIX CLI in the cron of the Asterisk Server
+ Requires perl (Net::FTP and Net::Ping optional if FTPing to archive server)
- AST_SERVER_conf.pl - file where you define your variables for the server apps
+ Must be present in the /home/cron/ directory
- AST_manager_listen.pl - listener for the Asterisk Central Queue System (ACQS)
+ Must be present in the /home/cron/ directory
+ Requires Net::Telnet, Net::MySQL and Time::HiRes perl Modules
- AST_manager_send.pl - send-spawn for the ACQS
+ Must be present in the /home/cron/ directory
+ Requires Net::Telnet, Net::MySQL and Time::HiRes perl Modules
- AST_send_action_child.pl - blind-send for the ACQS
+ Must be present in the /home/cron/ directory
+ Requires Net::Telnet, Net::MySQL perl Modules
- ADMIN_keepalive_AST_send_listen.pl - checks to see that ACQS is running
+ Must put entry for this script in the cron as "* * * * * /path/to/script"
- ADMIN_keepalive_send_listen.at - used for batch restarts of ACQS in seconds
- AST_manager_kill_hung_congested.pl - kills CONGEST Local/ channels
+ To be used with VICIDIAL
+ Must put entry for this script in the cron as "* * * * * /path/to/script"
- ADMIN_listener_restart.pl - automatically restart ACQS
+ Assumes installation in /home/cron/
- ADMIN_restart_roll_logs.pl - rolls logs over datestamp upon restart
+ put this script in your machine's startup routine
- AST_reset_mysql_vars.pl - resets MySQL tables
+ To be used with VICIDIAL
+ put this script in your machine's startup routine
- AST_flush_DBqueue.pl - streamlines DB on heavy volume VICIDIAL systems
+ To be used with VICIDIAL
+ put this script in the cron at a regular interval(once an hour or so)
- AST_cleanup_agent_log.pl - cleans up agent log times in VICIDIAL systems
+ To be used with VICIDIAL
+ put this script in the cron at a regular interval(once an hour or so)
- The following AGI scripts:
+ Run on the Asterisk Server
+ Must be present in the /var/lib/asterisk/agi-bin/ directory
+ Require perl and Net::MySQL to run
- call_log.agi - AGI/perl program for call logging
- call_logCID.agi - AGI/perl program for call logging receiving CallerID
- call_inbound.agi - AGI/perl program for CallerID popup info (OPTIONAL)
- agi-dtmf.agi - AGI/perl program that plays DTMF tines for conferences
+ Requires DTMF sounds to be copied to /var/lib/asterisk/sounds/
- agi-VDADtransfer.agi - AGI/perl program that transfers calls to VICIDIAL reps
- agi-VDAD_LO_transfer.agi - transfers calls to VICIDIAL reps Load Balance Overflow
- agi-VDAD_LB_transfer.agi - transfers calls to VICIDIAL reps Load Balanced
- agi-VDADcloser.agi - AGI/perl program that takes calls from VICIDIAL reps
+ Allows calls from internal or over Zap crossover or IAX from another server
- agi-VDAD_LO_closer.agi - calls from VICIDIAL front to CLOSERS Balance Overflow
- agi-VDAD_LB_closer.agi - calls from VICIDIAL front to CLOSERS Load Balanced
- agi-VDADcloser_inboundANI.agi - AGI/perl that takes calls from outside lines
+ like agi-VDADcloser.agi except grabs ANI from robbed-bit T1 channel inbound
- agi-VDADcloser_inboundCID.agi - AGI/perl that takes calls from outside lines
+ like agi-VDADcloser.agi except grabs CID from T1-PRI channel inbound
- agi-VDADcloser_inboundCIDlookup.agi - AGI/perl that takes calls from outside lines
+ like agi-VDADcloser.agi except looks up CID in DB to display info
- agi-VDADcloser_inbound.agi - AGI/perl that takes calls from outside lines
+ like agi-VDADcloser.agi except grabs 4-digit entered code as fronter #
- agi-VDAD_LO_closer_inbound.agi - Load-balance-overflow version
- agi-VDAD_LB_closer_inbound.agi - Load-balance version
- agi-VDADcloser_PHONE.agi - AGI/perl that takes calls from outside lines
+ like agi-VDADcloser.agi except attempts to lookup the info from PHONE provided
- park_CID.agi - AGI/perl program to place the callID in the park entry
- call_park_I.agi and call_park_L.agi - AGI/perl script for handling inbound
+ Used in conjunction with VICIDIAL closers
- AST_VDauto_dial.pl - script to automatically call leads for VICIDIAL
+ To be used with VICIDIAL
+ kept running with the associated keepalive script in the cron
- AST_VDremote_agents.pl - script to keep remote agents logged in
+ To be used with VICIDIAL
+ kept running with the associated keepalive script in the cron
- AST_VDhopper.pl - script to keep leads in the VICIDIAL hopper
+ To be used with VICIDIAL
+ recommended to put into cron as "* * * * * /path/to/script"
- ADMIN_keepalive_AST_VDautodial.pl - checks to see that VDAD is running
+ Must put entry for this script in the cron as "* * * * * /path/to/script"
- ADMIN_keepalive_AST_VDremote_agents.pl - keeps remote agents logged in
+ Must put entry for this script in the cron as "* * * * * /path/to/script"
- VICIDIAL_IN_new_leads_file.pl - script to load lead files into VICIDIAL
+ To be used with VICIDIAL
- AST_DB_optimize.pl - optimizes many heavily-used tables in the asterisk DB
+ recommended to put into cron as "2 1 * * * /path/to/script"
- ADMIN_adjust_GMTnow_on_leads.pl - adjusts the current GMT offset for leads
+ recommended to put into cron as "3 1 * * * /path/to/script"
+ should be run immediately after loading in new leads
+ follows daylight saving rules for several countries including:
USA, Canada, Mexico, UK, Ireland, Australia, New Zealand, etc...
- phone_codes_GMT.txt - file that contains all GMT offsets
+ used by ADMIN_adjust_GMTnow_on_leads.pl script
+ has over 1,000 entries for various areacode/country/GMT combinations
- ASTGUICLIENT Web admin pages - administration for ASTGUICLIENT
+ must be installed on machine with PHP and MySQL enabled
+ must be able to read/write/update to asterisk MySQL database
+ welcome.php - just a welcome page
+ admin.php - all admin functions for ASTGUICLIENT database
+ user_stats.php - look at live user stats
+ remote_inbound.php - custom script to grab parked inbound calls remotely
+ inbound_popup.php - from remote_inbound page
- astGUIclient web-client pages - web-only client app in agc folder
+ must be installed on machine with PHP and MySQL enabled
+ must be able to read/write/update to asterisk MySQL database
+ astguiclient.php - the client app
+ vicidial.php - the VICIDIAL web-client app
+ dbconnect.php - must set to database
+ all other scripts are for use by the astguiclient.php script internally
- VICIDIAL Web admin pages - administration for VICIDIAL campaigns
+ must be installed on machine with PHP and MySQL enabled
+ must be able to read/write/update to asterisk MySQL database
+ welcome.php - just a welcome page
+ admin.php - all admin functions for VICIDIAL
+ user_stats.php - look at live user stats
+ record_conf_1_hour.php - record a VICIDIAL conference for 1 hour
+ closer.php - where closers log in to grab calls sent from fronters
+ closer_popup.php - from closer page, sends call to closers phone
+ closer_dispo.php - from closer_popup, allows dispositioning of call
DESCRIPTION:
This program was designed as a GUI client for the Asterisk PBX with Zaptel
trunks or IAX or SIP VOIP trunks and SIP/IAX/Zap hard or softphones or devices
as extensions, it could be adapted to other functions, but it was designed for
Zap/IAX/SIP users. The client programs are web-based and will run on most
modern web browsers
TO BE ADDED:
See the TODO.txt file for more info on what has been finished in this version as
well as what we're thinking of working on. The items marked HIGH priority in the
TODO file are the ones we expect to have finished for the next release. If you
have suggestions please send them.
NOTES:
There are several features/processes that could have been done many different
ways in this suite, one for example is call parking. After tinkering with
Asterisk/AGI-only call parking where all of the call parking would be achieved
with no need for a GUI client, I discovered that my implementation did not
function well on all single line phones or the Grandstream phones. I settled on
the current method of call-parking by creating a record in a table for a call
parked and Redirecting the call to a constant music extension to take any phone
button pressing out of the loop. We haven't had any problems since we switched
to this method of call parking. Many of the other decisions of how to program
features in this suite we arrived at through similar trial-and-error methods. If
anyone has suggestions/praises/criticisms I would love to hear them.
KNOWN BUGS:
- the astGUIclient web client exposes a nasty memory leak in Internet Explorer,
Firefox does not have the same problem so we recommend it instead.
- on astGUIclient you cannot record a native bridge VOIP-only conversation
unless you go into a conference, you also cannot monitor a native-bridge
VOIP-only conversation
- Depending on what version of perl you are running(for the Perl scripts only),
you may have a conflicting version of the Time::HiRes perl module installed.
To fix this, jut go to http://search.cpan.org/~jhi/Time-HiRes-1.82/ and
download the version that your error message says it's looking for(HiRes.pm).
VERSION HISTORY:
0.7 - First public release - 2003-11-18
This is the first release of the Asterisk GUI Client code, it is entirely
written in Perl with portability and rapid development/testing in mind. The perl
code is NOT strict, it was written loose and fast and has been functioning
rather well in a production environment of 60 clients for one month now.
0.8 - Second public release - 2003-12-09
- Several bug fixes
- New button for monitoring live extensions on Zap channels
- Changed the method that the live channels/phone were populated on the
listboxes of the client app.
- Changed the Asterisk/Manager commands to work correctly with new Asterisk CVS
versions requirements.
- A new routine was enabled to allow for making sure that the updater is
running and bringing up a popup alert window on the client if the updater has
not updated in the last 6 seconds. (this also added a new MySQL table)
- Changed the updater to run every 450 milliseconds instead of every 333
milliseconds.
- Updater changed to allow for ringing channels to appear in the live_channels
table.
0.9 - Third public release - 2004-02-05
The majority of the work in this release it to make it more stable and fix some
pretty bad bugs. We created the Asterisk Central Queue System to address the
problem with buffer-overflows in the manager interface of Asterisk causing total
system deadlocks. We also completed and touched-up many other features that we
didn't finish in previous releases. Here is the list of changes:
- Several bug fixes
- Inclusion of listing for active SIP/Local channels and ability to hang them up
- Completely changed the method of conferencing to be more fluid
- Added HELP popup screen
- Added intrasystem calling funtionality
- Updater changed to allow for SIP/Local channels
- Recording for conferences is now able to record all audio in and out
- Added ability to send DTMF tones within a conference
- Changed alert window for updater being down timeout to 20 seconds
- Added an option for using the new Asterisk Central Queue System(ACQS) that
reduces the risk of deadlocks that occur with buffer-overflows on remote manager
interface connections
- Included new script to run at boot time and rotate the logs as well as a
keepalive script for the new ACQS
- Changed non-AGI server-side scripts to allow for a single config file
- Detailed activity logging to text file option added
- Activity logging added to all non-AGI server applications
0.9.2 - Fourth public release - 2004-03-08
- several bug fixes for the GUI client and ACQS applications
- addition of the new VICIDIAL auto-dialer application and admin web pages
- added new script to reset MySQL tables
- added new script to kill CONGEST Local/ channels
0.9.4 - Fifth public release - 2004-03-12
- a few bug fixes for the GUI and server apps
- addition of callerID popup for the GUI
- callerID buttons to launch web pages from callerID popup
- addition of voicemail count display to GUI
- addition of button to directly connect to voicemail
- addition of voicemail counter updater
- MySQL table "phones" modified and "inbound" table added(see CONF_MySQL.txt)
- new extensions.conf entries need to be added to use callerid and vmail GUI
1.0.0 - Sixth public release - 2004-03-26
- a few bug fixes for the GUI and server apps
- Major documentation changes with the addition of the SCRATCH_INSTALL.txt file
that goes step-by-step through the entire install process of an asterisk server
from blank hardware to astguiclient installation and configuration.
- added pretty buttons to the WINphoneAPP
- added blind transfer to voicemail, blind transfer to another extension and
blind external transfer
- new install script created to put server files in default positions and set
permissions to execute
- new sql file to create all tables by running a script execute command in MySQL
1.0.1 - Seventh public release - 2004-04-27
- a few bug fixes for the GUI and server apps
- minor changes to WINphoneAPP
- major changes to VICIDIAL client code:
+ rearranged VICIDIAL buttons and added some color to DIAL and HANGUP buttons
+ allowed for call parking with different park music per-campaign
+ allowed for webpage forms launched from GUI with call info
+ allowed for different web form web page per-campaign
+ allowed agents using VICIDIAL client to send calls with data to a closer
+ new call-closer functionality is web-based for flexibility
+ added new DTMF dialpad for sending tones quickly
- fixed bugs in VICIDIAL web admin pages
- fixed bugs in ASTGUICLIENT web admin pages
- added code from Paul Concepcion to allow admin pages to work with globals off
- added common database connection file for each set of PHP admin pages
- made small changes to the MySQL database Schema
(NOTE: if upgrading from 1.0.0 run the upgrade_1.0.1.sql script in MySQL)
1.0.2 - Eighth public release - 2004-06-03
- a few bug fixes for the GUI apps
- corrected documentation errors in SCRATCH_INSTALL instructions
- updated SCRATCH_INSTALL instructions for some newer software
- corrected errors in SQL install queries
- corrected errors in server installation scripts
- WINphoneAPP config option to allow one persistant mysql DB connection
- WINphoneAPP config option to allow modification of info refresh interval
- VICIDIAL modified to allow for auto-dial of next number
(NOTE: if upgrading from 1.0.1 you do not need to update any web pages or
server apps, this update is only a client GUI and docs update. Note that the
AST_VICI_conf.pl has been updated, so you may need to modify your client
configs to enable new features.)
1.0.3 - Ninth public release - 2004-07-21
- a few bug fixes for the GUI apps
- changed the recording to show recording ID when recording is started
- VICIDIAL overhauled:
+ added Time::HiRes module requirement to better control time increments
+ changed to dial from a small hopper of pre-ordered leads per campaign
+ added cron script to always keep leads in the hopper every minute
+ added a counter to see how many times a lead is called
+ added ability to dial campaign by how many times lead called
+ added some new stats to the admin web pages
+ created a limited predictive-dialer that will dial a certain amount of leads
per logged in agent and direct the calls that are picked up to the next agent
+ ability to transfer the called line and the 3rd party call into a separate
meetme room and continue on dialing
UPGRADE NOTES:
* if upgrading from 1.0.2 you need to update the web pages and all
server apps.
* if upgrading from 1.0.2 run the upgrade_1.0.3.sql script in MySQL
* if upgrading from 1.0.2 you may want to run AST_upgrade_1.0.3.pl to update
your called counts of your leads in vicidial_list.
* AST_SERVER_conf.pl has been updated, so you may need to modify your server
configs to enable new features.
* client app names have been changed to astVICIDIAL and astGUIclient
1.0.4 - Tenth public release - 2004-09-21
- several minor bug fixes for GUI apps and server apps
- fixed recording bug in astGUIclient that would rarely stop recording
- added timezone dialing in VICIDIAL
- added new client GUI app for inserting leads into the VICIDIAL leads table
- adjusted timings in the VICIDIAL autodialer for better performance
- added streamlined manager interface logins to help scripts run more smoothly
UPGRADE NOTES:
* if upgrading from 1.0.3 you need to update the web pages and all
server apps.
* if upgrading from 1.0.3 run the upgrade_1.0.4.sql script in MySQL
* if upgrading from 1.0.3 you may want to run ADMIN_adjust_GMTnow_on_leads.pl
to update the timezone in the vicidial_list table
* AST_SERVER_conf.pl on the server has been updated, so you may need to modify
your server configs to enable new features(like timezone dialing).
* AST_VICI_conf.pl for clients has been updated, so you may need to modify
your client configs to enable new features(like timezone dialing).
* run this script if you plan on doing timezone restrictions on VICIDIAL:
ADMIN_area_code_populate.pl
1.0.5 - Eleventh public release - 2004-10-28
- many minor bug fixes in most of the server and client scripts
- fixed multiple login bug on VICIDIAL
- fixed the manual-dial/auto-dial switching bug on VICIDIAL
- fixed a few time zone calling bugs on VICIDIAL server apps
- all apps now allow for IAX trunks to be used in addition to the usual Zap
- added more options to install script
- changed CLI lead loader to use Net::MySQL instead of DBI
- modified several scripts that handle CallerID because of the early October
change in the CVS of outputting CID info as two separate fields(CallerID and
CallerIDname) instead of everything being sent in CallerID.
UPGRADE NOTES:
* if upgrading from 1.0.4 you need to update the web pages and all
server and client apps.
* if upgrading from 1.0.4 run the upgrade_1.0.5.sql script in MySQL
* if using a CVS version 2004-10-07 or newer or release 1.0.3 or newer
change the line in extensions.conf
exten => 8309,2,Monitor(wav,${CALLERIDNUM})
change to
exten => 8309,2,Monitor(wav,${CALLERIDNAME})
1.0.6 - Twelfth public release - 2004-12-23
- many minor bug fixes in most of the server and client scripts
- optimized the ACQS and restructured its keepalive scripts
- added hijack line feature to astGUIclient
- added inbound call handling for VICIDIAL
- added blended in-outbound calling within VICIDIAL
- added new closer stats report
- updated the SCRATCH_INSTALL instructions and corrected errors
- see the TODO.txt file for other items DONE in this release
UPGRADE NOTES:
* if upgrading from 1.0.5 you need to update the web pages and all
server and client apps.
* if upgrading from 1.0.5 run the upgrade_1.0.6.sql script in MySQL
* if upgrading from 1.0.5 add a campaign "CLOSER" to enable closers and
inbound call taking through the VICIDIAL application
(see the SCRATCH_INSTALL document SUBPHASE 6.2 for more information)
1.1.0 - Thirteenth public release - 2005-03-09
- several small bug fixes in most of the server and client scripts
- added IAX and Zap client/agent compatibility
- implemented some major database optimizations
- ability to specify MySQL port across all apps
- moved almost all client config variables from client files to the Database
- created a meetme room validator that will allow faster reassignment of conferences
- created a new remote_agent login system for VICIDIAL in/outbound calls
- restructuring of AST_update script to cope better with manager output hiccups
- added dial timeout field to VICIDIAL to specify the timeout per campaign
- added help popups to every page of the admin web pages to explain fields
- see the TODO.txt file for other items DONE in this release
UPGRADE NOTES:
* if upgrading from 1.0.6 you need to update the web pages and all
server and client apps.
* if upgrading from 1.0.6 run the upgrade_1.1.0.sql script in MySQL
* if upgrading from 1.0.6 you will need to configure your client parameters on
the admin web page and remove them from the client computers (except for the
fields that are in the sample AST_VICI_conf.pl file)
* older client apps are not compatible with this version, you must upgrade
1.1.1 - Fourteenth public release - 2005-06-03
- several small bug fixes in most of the server and client scripts
- added astGUIclient web-only client
- added campaign-custom disposition statuses to VICIDIAL
- added campaign-custom CallerID to VICIDIAL
- added fronter-display-disable option to VICIDIAL Inbound Groups
- added ability to separate vicidial users by groups
- added performance stats gathering ability to AST_update script
- fixed the send-to-vmail portion of inbound AGI scripts
- added simple web-based lead file loader for VICIDIAL
UPGRADE NOTES:
* if upgrading from 1.1.0 you need to update the web pages and all
server apps.
* if upgrading from 1.1.0 run the upgrade_1.1.1.sql script in MySQL
1.1.2 - Fifteenth public release - 2005-06-06
- fixed fatal bug in AST_update.pl script
- added instructions for ploticus install to SCRATCH_INSTALL
UPGRADE NOTES:
* if upgrading from 1.1.0 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
* if upgrading from 1.1.0 run the upgrade_1.1.1.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.1.sql)
1.1.3 - Sixteenth public release - 2005-06-10
- fixed config bug in AST_VDauto_dial.pl script
- added null query result checks to scripts in the agc web-only client
- added documentation for the inbound and transfer AGI script variables
- added documentation and tested install with MySQL 4.1 tree (4.1.12)
UPGRADE NOTES:
* if upgrading from 1.1.0 - 1.1.2 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
* if upgrading from 1.1.0 run the upgrade_1.1.1.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.1.sql)
1.1.4 - Seventeenth public release - 2005-06-24
- fixed new Local channel bugs caused by changes in Asterisk 1.0.8 and CVS
- added beta support for SIP trunks
- added ability to send VICIDIAL outbound calls to custom AGI script per
campaign and included new survey sample AGI script
- added better Asterisk shutdown detection to AST_manager_listen script
UPGRADE NOTES:
* if upgrading from 1.1.3 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
- if using VICIDIAL download the new client script to all client stations
- make sure you populate the new $AST_ver variable in AST_SERVER_conf.pl
* if upgrading from 1.1.3 run the upgrade_1.1.4.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.4.sql)
1.1.5 - Eighteenth public release - 2005-08-12
- fixed new Local channel bugs caused by changes in Asterisk 1.0.8 and 1.0.9
- moved many server variables to the database, editable through admin.php
- added ability to limit number of outbound trunks used by VICIDIAL auto dialer
- many small changes and bug fixes to the astguiclient web client
- added alpha vicidial web-client (click-to-dial only)
UPGRADE NOTES:
* if upgrading from 1.1.4 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
- VICIDIAL perl/TK client is unchanged from 1.1.4
- make sure you check the astguiclient admin.php server parameters
* if upgrading from 1.1.4 run the upgrade_1.1.5.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.5.sql)
1.1.6 - Nineteenth public release - 2005-08-29
- streamlined many of the server apps and added command-line debug capability
- finished the vicidial web-client and tested in prduction
- modified server-side scripts to function with Asterisk CVS_HEAD(soon to be 1.2)
- modified server performance logging and graphing, added user/system proc %
UPGRADE NOTES:
* if upgrading from 1.1.5 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
(make sure AST_SERVER_conf.pl and dbconnect.php files are config'd properly)
- perl/TK clients are unchanged from 1.1.5
- make sure you check the astguiclient admin.php server parameters
- make the agi-VDADtransfer.agi changes in extensions.conf (mentioned in SCRATCH_INSTALL doc)
* if upgrading from 1.1.5 run the upgrade_1.1.6.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.6.sql)
1.1.7 - Twentieth public release - 2005-10-05
- Added HotKeys key binding for VICIDIAL web-client fast dispositioning
- Internationalization(multi-language) of web-clients and admin pages
- Added ability in manual VICIDIAL to call alternate lead phone numbers
- Added option of pull-down of active campaigns to VICIDIAL web login
- Fixed some issues with scripts interacting with Asterisk 1.2
- other small changes listed in the TODO.txt file
UPGRADE NOTES:
* if upgrading from 1.1.6 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
(make sure AST_SERVER_conf.pl and dbconnect.php files are config'd properly)
- perl/TK clients have been slightly updated(will be unsupported soon)
- multi-language versions of web-clients and admin pages are available in the
LANG_agc.zip and LANG_admin.zip files and can be unzipped into your webroot
directory. Make sure you check the dbconnect.php file in each directory.
* if upgrading from 1.1.6 run the upgrade_1.1.7.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.7.sql)
1.1.8 - Twenty-First public release - 2005-11-10
- Added per-campaign call recording options to VICIDIAL
- Added detailed logging for VICIDIAL agent time
- Fixed some issues with scripts interacting with Asterisk 1.2
- other small changes listed in the TODO.txt file
UPGRADE NOTES:
* if upgrading from 1.1.7 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
(make sure AST_SERVER_conf.pl and dbconnect.php files are config'd properly)
- multi-language versions of web-clients and admin pages are available in the
LANG_agc.zip and LANG_admin.zip files and can be unzipped into your webroot
directory. Make sure you check the dbconnect.php file in each directory.
* if upgrading from 1.1.7 run the upgrade_1.1.8.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.8.sql)
1.1.9 - Twenty-Second public release - 2006-01-19
- Added Load Balancing of Inbound and Outbound calls across multiple Asterisk
servers in the same setup
- Removed all PHP globals requirements, can now use register_globals=Off in PHP
- Add fully translated Greek admin and agc scripts(agc images to come)
- Added security elements to admin pages and added record deletion functions
- Added a script tab to VICIDIAL to have a variable-populated agent script
- Added new Super lead loader with field chooser and CVS/XLS-format capability
- Added favorites panel to astguiclient.php that shows off/on hook
- Many other small changes listed in the TODO.txt file
UPGRADE NOTES:
* if upgrading from 1.1.8 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
(make sure AST_SERVER_conf.pl and dbconnect.php files are config'd properly)
- multi-language versions of web-clients and admin pages are available in the
LANG_agc.zip and LANG_admin.zip files and can be unzipped into your webroot
directory. Make sure you check the dbconnect.php file in each directory.
* if upgrading from 1.1.8 run the upgrade_1.1.9.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.9.sql)
1.1.10 - Twenty-Third public release - 2006-03-17
- Added capability to work with app_amd(answering machine detection)
- Added transfer-conference number and DTMF presets per campaign
- Added sphinx ring-time analysis disposition package(beta)
- Added scheduled callbacks to VICIDIAL
- Added more user-permission options/restrictions
- Several small bug fixes for better Asterisk 1.2.4 compatibility
- Many other small changes listed in the TODO.txt file
UPGRADE NOTES:
* if upgrading from 1.1.9 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
(make sure AST_SERVER_conf.pl and dbconnect.php files are config'd properly)
- add "exten => h,2,DeadAGI(VD_hangup.agi,${EXTEN})" to extensions.conf
- multi-language versions of web-clients and admin pages are available in the
LANG_agc.zip and LANG_admin.zip files and can be unzipped into your webroot
directory. Make sure you check the dbconnect.php file in each directory.
* if upgrading from 1.1.9 run the upgrade_1.1.10.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.10.sql)
1.1.11 - Twenty-Fourth public release - 2006-04-28
- Added Agent-only Scheduled Callbacks
- Added Lead Filters for campaigns to use custom SQL to narrow calling scope
- Added Agent manual-lead-insertion capability
- Fixed PHP variable checking in all PHP scripts to be more compliant
- Added more user-permission options/restrictions for both agents and admins
- Several small bug fixes for better Asterisk 1.2.6 and SVN compatibility
- Many other small changes listed in the TODO.txt file
UPGRADE NOTES:
* if upgrading from 1.1.10 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
(make sure AST_SERVER_conf.pl and dbconnect.php files are config'd properly)
- multi-language versions of web-clients and admin pages are available in the
LANG_agc.zip and LANG_admin.zip files and can be unzipped into your webroot
directory. Make sure you check the dbconnect.php file in each directory.
* if upgrading from 1.1.10 run the upgrade_1.1.11.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.11.sql)
1.1.12 - Twenty-Fifth public release - 2006-06-22
- Security enhancements of PHP scripts to reduce SQL-injection and other threats
- Completely redesigned local call time system in VICIDIAL for more flexibility
- Added Drop-call and safe-harbor options to campaigns and inbound groups
- Added option for allowing wrapup time between calls in vicidial.php
- Multi-language translation rewritten for more flexibility and easy of use
- Added more user-permission options/restrictions for both agents and admins
- Added option of using app_conference instead of meetme engine
- Added internal DNC list for Do-Not-Call entries across the system
- Added automatic lead recycling to call back Busy calls at definable intervals
- Added listID override and timezone lookup to all lead importing scripts
- Added easy-prompt-recording AGI and playback: agi-record_prompts.agi
- Many other changes and bug fixes listed in the TODO.txt file
UPGRADE NOTES:
* if upgrading from 1.1.11 you need to:
- download the new version from the project website
- unzip the zip file into the /home/cron/astguiclient directory
- and either:
+ copy the web pages and all server apps to their proper locations manually
+ or run the install_server_files.pl script to put all items in their
default places
(make sure AST_SERVER_conf.pl and dbconnect.php files are config'd properly)
- multi-language versions of web-clients and admin pages are available in the
LANG_agc.zip and LANG_admin.zip files and can be unzipped into your webroot
directory. Make sure you check the dbconnect.php file in each directory.
* if upgrading from 1.1.11 run the upgrade_1.1.12.sql script in MySQL
(\. /home/cron/astguiclient/upgrade_1.1.12.sql)
* 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');)
+32
View File
@@ -0,0 +1,32 @@
This is the basic list of requirements for using astGUIclient. It is highly
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.0.10 and 1.2.6 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
or you can use the experimental app_conference module
- Client phones can be SIP/IAX/Zap
- In extensions.conf you must use the 'o' Dial flag on your outbound extensions
- In extensions.conf you must have thee following line in your default context:
exten => h,1,DeadAGI(call_log.agi,${EXTEN})
- No modification of outgoing callerID (you can set callerID through admin)
- In php.ini you must have uploads turned on to use the web lead loader
- SoX 12.17.5 or greater must be installed
- GNU screen 3.9.15 or greater must be installed
- ntp must be installed and syncd to same time source as any other servers
- Perl5 with several CPAN modules(Time::HiRes, Net::MySQL, Net::Telnet, etc)
- Access to MySQL server, must be version 4.0.X or higher
- Access to Apache/PHP webserver
- Several entries in the cron for interval-running scripts and keepalives
Requirements for using the astGUIclient/VICIDIAL web-client versions
- Recommended 500MHz speed or faster and 64MB RAM or more
- Any Unix with Xwindows, Mac OS9/X or Win98/2k/XP operating system
- Recommended use Firefox for all OSs (will run under IE5.0 or greater as well)
NOTE: (Internet Explorer has memory leaks that will cause it to freeze +3hrs)
Will also run on Opera 8.5+, Mozilla 1.7+ and Netscape 8+
- ntp or sntp time syncing to same source as server recommended
- Proper configuration settings for each phone/computer in the phones DB table
File diff suppressed because it is too large Load Diff
+116
View File
@@ -0,0 +1,116 @@
+------------------------------------------------------------------------------+
| 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.
+208
View File
@@ -0,0 +1,208 @@
+------------------------------------------------------------------------------+
| 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.
+489
View File
@@ -0,0 +1,489 @@
+------------------------------------------------------------------------------+
| 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.
+185
View File
@@ -0,0 +1,185 @@
# pronounced (VEE-CHEE DIAL)
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
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.
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 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
- Ability to open a custom web page with user data from the call per campaign
- Ability to autodial campaigns to start with a simple IVR then direct to agent
- Ability to park the customer with custom music per campaign
- Ability to send a dropped call to a voicemail box per campaign if no agent is available
- Ability to set outbound CallerID per campaign
- Ability to take inbound calls grabbing CallerID
- Ability to function as an ACD for inbound and closer calls
- Ability to have an agent take both inbound and outbound calls in one session(blended)
- Ability for agents to log in remotely and have calls redirected to any phone number
- Ability to start and stop recording an agent's calls at any time
- Ability to automatically record all calls
- Ability to call upto two other customer numbers for the same lead
- Ability to schedule a callback with a customer as either any agent or agent specific
- Faster dispositioning of calls with agent key-binding (HotKeys)
- Ability to add custom call dispositions per campaign
- Dialing with custom TimeZone restrictions including per state and per weekday
- Dialing with Answering Machine Detection, also playing a message for AM calls
- Ability in Manual dial mode to preview leads before dialing
- Ability for agents to be logged in remotely anywhere with just a phone and a web browser
- Multiple campaigns and lead-lists are possible
- Recycling of Busy calls at a specified interval without resetting a list
- Ability to use custom database queries in campaign dialing
- Option of a drop timer with safe-harbor message for FTC compliance
- Internal DNC list can optionally be activated per campaign
- Definable Wrapup-time per campaign
- Load Balancing across multiple inbound or outbound Asterisk servers is possible
- Several real-time and summary reports available
- Real-time campaign display screens
- 3rd party conferencing(with DTMF macros and number presets)
- 3rd party blind call transfer
- 3rd party conferencing with agent drop-off
- Ability to set user levels and permissions for certain features
- Ability for managers to listen-in on agent conversations
- Ability for managers to enter conversations with agents and customers
- Each user has their own login
- Web-based administration
- Client web-app and admin web pages available in English, Spanish, Greek and German
- Client web-app web pages available in English, Spanish, Greek, German, French, Italian, Portuguese and Brazillian Portuguese
- Admin web pages available in English, Spanish, Greek and German
Required components:
- Asterisk server with Zap, IAX2 or SIP trunks
- SIP/IAX/Zap phones(hard or soft single-line or multiple)
- Computer with proper software installed
- on Win32 Activestate perl
- on UNIX Xwindows Activestate perl recommended with perlTK libs loaded
- Asterisk server with proper software installed
- astGUIclient must be installed with the Asterisk Central Queue System(ACQS)
running
Approach:
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
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.
Installation:
Look at the INSTALL FROM SCRATCH documentation and start at phase 6 if you
already have asterisk running
Process flow of a one-call-at-a-time call:
- all components are installed and running(with Asterisk and MySQL servers)
- user logs in to the client GUI [user/password/campaign]
- GUI assigns an open meetme extension to the user, this is called the
session_id
- GUI sends manager command ORIGINATE to connect the user to the meetme ext
- user clicks DIAL NEXT NUMBER and GUI UPDATEs first available number-to-call
in DB to PENDING status
- GUI SELECTs info on that number[name/address/...]
- GUI sends ORIGINATE command to call that client's number from meetme ext
- user is talking to the client
- user transfers call to 3rd party, client Zap channel is REDIRECTed to
3rd party
or
- User transfers client to a closer to finish the call
or
- user puts client on park and dials 3rd party, then transfers client
back to meetme room
- Call is Hung up
- user hangs up call and clicks HANGUP CALL on GUI
or
- person called hangs up so user clicks on the CALL HUNGUP then HANGUP
CALL
- call is disconnected
- user selects disposition status of the call and clicks OK
- goes back to step 4 and repeats
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.
- 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
status to READY) and update that record every second with a random 8
digit number to show that the client is still alive and ready. Also,
the client app will show a "pause" and "resume" button to start or stop
receiving calls automatically instead of the usual "dial next number"
button.
or
- 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
- 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
- count the number of active calls that are
occuring(vicidial_auto_calls records with a status of SENT,RINGING or
LIVE)
- place the calls for each server if the active calls is less than the
total that should be placed
- The auto_dial app will then:
- grab the next lead to be called from the vicidial_hopper for each
campaign(it will update that lead record in the vicidial_hopper table
to QUEUE with VDAD as the user)
- grab the lead information from vicidial_list and update
called_since_last_reset Y, the user to VDAD and increment the
called_count by 1
- delete the record from vicidial_hopper for that lead
- place the call first to the Zap trunk(Exten: 917275551212), then to a
specified Local extension number(Channel: Local/99999@default) where
the auto_dial_transfer_agent app(agi-VDADtransfer.agi) is waiting to
take over.
- if the call is busy, disconnect or telco voicemail the call is never
technically picked up so it never makes it to the
auto_dial_transfer_agent app
- check for dead calls by looking in the call_log for and end time of
the call keyed by callerID(caller_code) and delete them t=from the
vicidial_auto_calls table
- The auto_dial_transfer_agent app takes the call and:
- immediately grabs the uniqueid and callerid of the call and updates
the vicidial_auto_calls record to LIVE
- logs the call to vicidial_log using the callerid to find out the lead
number(VmmddhhmmssLLLLLLLLL[where LLLLLLLLL is the zero-padded lead_id
from vicidial_list])
- inserts the number_dialed and the caller_code in the vicidial_log
table for the uniqueid record of the call
- attempts to update(limit 1) a record in the vicidial_live_agents
table to see who is the next agent to receive a call(ordered by
last_call_time)[update the status to QUEUE, the lead_id to the proper
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
- 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
itself to see if it is changed to QUEUE
- agent's app changes the vicidial_live_agents status to INCALL and
updates the vicidial_list record to INCALL and user to the agent's
userID and the call progresses normally
- The agent hangs up and the vicidial_live_agents record is changed back to
READY with the lead and call fields cleared out so the agent is ready to take
another call