I have been wondering about this for a long time and now when I got this info about "drop call seconds" I was able to dig further,
found that AST_VDauto_dial.pl checks if "dial timeout" + "drop call seconds" is more then "call end time" - "call start time"
and does this for every call, LIVE/XFER/SENT and so on.
I made the script compare only with "dial timeout" on every status except LIVE,
and when there is a LIVE-call it will add + "drop call seconds"
this will remove calls faster but hold on to a LIVE-call for "drop call seconds"
Testing:
Vicibox Redux 3.1.9 i686 (svn) | Admin: 2.4-354a 120104-2024 | Agent: 2.4-340c 111227-1940 | SIP | Linux 2.6.34.10-0.4-pae #1 SMP |
astGUIclient 2.4b0.5 | Perl v5.12.1 | Asterisk 1.4.39.2-vici | PHP 5.3.3
all calls are normal NA (No Answer AutoDial)
some info about the campaign:
only outbound calling
number of agents: 1
available only tally: Y
dial method: ratio
dial level: 1
dial timeout: 20 seconds
drop call seconds: 5
call_log:
- Code: Select all
| uniqueid | channel | type | number_dialed | start_time | end_time | length_in_sec |
+------------------+------------------------------------+-------+---------------+---------------------+---------------------+---------------+
| 1335188553.36739 | Local/90047XXXXXXXX@default-8aea,2 | Local | 90047XXXXXXXX | 2012-04-23 15:42:33 | 2012-04-23 15:42:53 | 20 |
| 1335188518.36736 | Local/90047XXXXXXXX@default-5693,2 | Local | 90047XXXXXXXX | 2012-04-23 15:41:58 | 2012-04-23 15:42:18 | 20 |
| 1335188483.36733 | Local/90047XXXXXXXX@default-44fa,2 | Local | 90047XXXXXXXX | 2012-04-23 15:41:23 | 2012-04-23 15:41:43 | 20 |
| 1335188447.36730 | Local/90047XXXXXXXX@default-ea32,2 | Local | 90047XXXXXXXX | 2012-04-23 15:40:47 | 2012-04-23 15:41:07 | 20 |
| 1335188412.36727 | Local/90047XXXXXXXX@default-56a5,2 | Local | 90047XXXXXXXX | 2012-04-23 15:40:12 | 2012-04-23 15:40:32 | 20 |
between these calls there are: 15, 16, 15, 15 seconds as you can see
applying patch:
- Code: Select all
--- AST_VDauto_dial.pl.orig 2012-04-24 10:16:43.000000000 +0200
+++ AST_VDauto_dial.pl 2012-04-24 11:38:26.000000000 +0200
@@ -1420,7 +1420,7 @@
# $event_string = "| vac test: |$auto_call_id|$CLstatus|$KLcalltime[$kill_vac]|$CLlead_id|$KLcallerid[$kill_vac]|$end_epoch|$KLchannel[$kill_vac]|$CLcall_type|$CLdial_timeout|$CLdrop_call_seconds|$call_timeout|$dialtime_log|$dialtime_catch|$PARKchannel|";
# &event_logger;
- if ( ( ($dialtime_log >= $call_timeout) || ($dialtime_catch >= $call_timeout) || ($CLstatus =~ /BUSY|DISCONNECT|XFER|CLOSER/) ) && ($PARKchannel < 1) )
+ if ( ( ( ( ( ($dialtime_log >= $CLdial_timeout) || ($dialtime_catch >= $CLdial_timeout) ) && ($CLstatus !~ /LIVE/) ) || ( ($dialtime_log >= $call_timeout) || ($dialtime_catch >= $call_timeout) ) ) || ($CLstatus =~ /BUSY|DISCONNECT|XFER|CLOSER/) ) && ($PARKchannel < 1) )
{
if ( ($CLcall_type !~ /IN/) && ($CLstatus !~ /IVR/) )
{
call_log:
- Code: Select all
| uniqueid | channel | type | number_dialed | start_time | end_time | length_in_sec |
+------------------+------------------------------------+-------+---------------+---------------------+---------------------+---------------+
| 1335259457.42180 | Local/90047XXXXXXXX@default-5ce7,2 | Local | 90047XXXXXXXX | 2012-04-24 11:24:17 | 2012-04-24 11:24:38 | 21 |
| 1335259435.42177 | Local/90047XXXXXXXX@default-8282,2 | Local | 90047XXXXXXXX | 2012-04-24 11:23:55 | 2012-04-24 11:24:15 | 20 |
| 1335259412.42174 | Local/90047XXXXXXXX@default-4712,2 | Local | 90047XXXXXXXX | 2012-04-24 11:23:32 | 2012-04-24 11:23:52 | 20 |
| 1335259389.42171 | Local/90047XXXXXXXX@default-38aa,2 | Local | 90047XXXXXXXX | 2012-04-24 11:23:09 | 2012-04-24 11:23:29 | 20 |
| 1335259366.42168 | Local/90047XXXXXXXX@default-596a,2 | Local | 90047XXXXXXXX | 2012-04-24 11:22:46 | 2012-04-24 11:23:06 | 20 |
here there are: 3, 3, 3, 2 seconds between calls
Tried if drop still works as it should and yes, the test-call was hold on to for 5 seconds before hung up.
I don't know about inbound or other methods if there could be problems with this change to the if-statement