From ea346764de2ff138c3676b110fa00c2d79f9d623 Mon Sep 17 00:00:00 2001 From: mattf Date: Sat, 11 Oct 2008 14:22:29 +0000 Subject: [PATCH] added option for press-1-to-leave-voicemail while waiting in inbound-group queue git-svn-id: svn://192.168.202.10@962 3d104415-ff17-0410-8863-d5cf3c621b8a --- agc_2-X/trunk/agi/agi-VDAD_ALL_inbound.agi | 162 +++++++++++++++--- agc_2-X/trunk/docs/VICIDIAL_statuses.txt | 1 + .../trunk/extras/MySQL_AST_CREATE_tables.sql | 4 +- agc_2-X/trunk/extras/upgrade_2.0.5.sql | 8 +- agc_2-X/trunk/sounds/to-be-called-back.gsm | Bin 0 -> 5874 bytes agc_2-X/trunk/www/vicidial/admin.php | 2 +- 6 files changed, 145 insertions(+), 32 deletions(-) create mode 100644 agc_2-X/trunk/sounds/to-be-called-back.gsm diff --git a/agc_2-X/trunk/agi/agi-VDAD_ALL_inbound.agi b/agc_2-X/trunk/agi/agi-VDAD_ALL_inbound.agi index a1518279..7dabf8ac 100644 --- a/agc_2-X/trunk/agi/agi-VDAD_ALL_inbound.agi +++ b/agc_2-X/trunk/agi/agi-VDAD_ALL_inbound.agi @@ -83,12 +83,13 @@ # 80821-0133 - fixed non-play issue with hold message # 80918-0505 - Added place in line and estimated time on hold # 81002-1120 - Added processing for DID forwarded calls +# 81011-1019 - Added option for press 1 to leave voicemail if wait time > hold-time-option-seconds # $script = 'agi-VDAD_ALL_inbound.agi'; $dtmf_silent_prefix = '7'; -$DROP_TIME = 360; ### default number of seconds to wait until you drop a waiting call +$DROP_TIME = 720; ### default number of seconds to wait until you drop a waiting call $start_moh=1; $at='@'; @@ -895,8 +896,8 @@ if ($channel_status < 1) if ($channel_status_DC < 1) { if ($AGILOG) {$agi_string = "CHANNEL $channel DOWN $channel_status $DROP_TIME|$drop_timer"; &agi_output;} - if ($drop_timer < 360) {$drop_seconds = $drop_timer;} - $drop_timer = ($drop_timer + 360); + if ($drop_timer < 720) {$drop_seconds = $drop_timer;} + $drop_timer = ($drop_timer + 720); } } @@ -1546,6 +1547,8 @@ if ($hold_recall_xfer_group !~ /NONE/) $affected_rows = $dbhA->do($stmtA); if ($AGILOG) {$agi_string = "-- VDCL vac record deleted: |$affected_rows| $VDADcampaign|"; &agi_output;} + if ($drop_seconds < 1) {$drop_seconds = $drop_timer;} + $stmtA = "UPDATE vicidial_closer_log set status='HXFER',end_epoch='$now_date_epoch',length_in_sec='$drop_seconds',queue_seconds='$drop_seconds',term_reason='HOLDRECALLXFER' where lead_id = '$insert_lead_id' order by start_epoch desc limit 1;"; $affected_rows = $dbhA->do($stmtA); if ($AGILOG) {$agi_string = "-- VDCL vcl update: |$affected_rows|$insert_lead_id|\n|$stmtA|"; &agi_output;} @@ -1613,7 +1616,7 @@ if ( ($hold_message_counter > $prompt_interval) && ($prompt_interval > 0) ) if ($play_place_in_line =~ /Y/i) {$start_place_in_line=1; $moh_delay=2;} if ($play_estimate_hold_time =~ /Y/i) {$start_hold_estimate=1; $moh_delay=2;} if ($hold_time_option !~ /NONE/) {$start_hold_estimate=1; $moh_delay=2;}; - if ($drop_timer > 3) {$drop_timer = ($drop_timer + 5);} # add prompt play time to total queue time + if ($drop_timer >= 3) {$drop_timer = ($drop_timer + 5);} # add prompt play time to total queue time } else {$hold_message_counter++;} if ($hold_tone_counter > 3) @@ -1653,12 +1656,12 @@ if ( ($start_place_in_line > 0) && ($moh_delay == '1') ) { $AGI->stream_file('queue-thereare'); # you are currently caller number $AGI->say_number("$place"); - if ($drop_timer > 3) {$drop_timer = ($drop_timer + 2);} # add prompt play time to total queue time + if ($drop_timer >= 3) {$drop_timer = ($drop_timer + 2);} # add prompt play time to total queue time } else { $AGI->stream_file('queue-youarenext'); # your call is now first in line - if ($drop_timer > 3) {$drop_timer = ($drop_timer + 5);} # add prompt play time to total queue time + if ($drop_timer >= 3) {$drop_timer = ($drop_timer + 5);} # add prompt play time to total queue time } $start_place_in_line=0; @@ -1762,9 +1765,10 @@ if ( ($start_hold_estimate > 0) && ($moh_delay == '1') ) } } } - if ($drop_timer > 3) {$drop_timer = ($drop_timer + 3);} # add prompt play time to total queue time + if ($drop_timer >= 3) {$drop_timer = ($drop_timer + 3);} # add prompt play time to total queue time $start_hold_estimate=0; + $wait_in_queue = 1; # trigger hold-time-option is applicable } ##### check if hold_time_option is set to leave Queue @@ -1777,6 +1781,42 @@ if ($hold_time_option =~ /EXTENSION/) if (length($hold_time_option_exten)>0) {$DROPexten = "$hold_time_option_exten";} } +if ($hold_time_option =~ /PRESS_VMAIL/) + { + $now_date_epoch = time(); + $FDtarget = ($now_date_epoch + 8); + ($Fsec,$Fmin,$Fhour,$Fmday,$Fmon,$Fyear,$Fwday,$Fyday,$Fisdst) = localtime($FDtarget); + $Fyear = ($Fyear + 1900); + $Fmon++; + if ($Fmon < 10) {$Fmon = "0$Fmon";} + if ($Fmday < 10) {$Fmday = "0$Fmday";} + if ($Fhour < 10) {$Fhour = "0$Fhour";} + if ($Fmin < 10) {$Fmin = "0$Fmin";} + if ($Fsec < 10) {$Fsec = "0$Fsec";} + $FDtsSQLdate = "$Fyear$Fmon$Fmday$Fhour$Fmin$Fsec"; + + $stmtA = "UPDATE vicidial_auto_calls set last_update_time='$FDtsSQLdate' where callerid='$callerid' order by call_time desc limit 1;"; + $affected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- VDAC posttime record: |$affected_rows|$FDtsSQLdate|$callerid|"; &agi_output;} + + if ($drop_timer >= 3) {$drop_timer = ($drop_timer + 8);} # add prompt play time to total queue time + + $AGI->stream_file('sip-silence'); # stop music-on-hold process + $AGI->stream_file('sip-silence'); # stop music-on-hold process + + &press_one_to_leave_voicemail; + + if ($pin =~ /1/) + { + $DROPexten = "$voicemail_dump_exten$hold_time_option_voicemail"; + $HT_status='QVMAIL'; + } + else + { + $DROPexten=''; + $wait_in_queue = 2; #continue waiting on hold + } + } if ($hold_time_option =~ /VOICEMAIL/) { if (length($hold_time_option_voicemail)>0) @@ -1829,12 +1869,12 @@ if ($AGILOG) {$agi_string = "-- VDCL HOLD TIME OPT: |$hold_time_option|$DROPe if ($wait_in_queue < 1) { - ### use STDOUT to send call to proper DROP location - $VHqueryCID = "VH$CIDdate$VDADconf_exten"; - if (length($DROPexten)>0) { ### if DROP extension is defined then send the dropped call there instead of hangup + ### use STDOUT to send call to proper DROP location + $VHqueryCID = "VH$CIDdate$VDADconf_exten"; + if ($no_delay_call_route =~ /N/) { $AGI->stream_file('ding'); # stop music-on-hold process @@ -1848,24 +1888,28 @@ if ($wait_in_queue < 1) checkresult($result); print "SET PRIORITY 1\n"; checkresult($result); + + $stmtA = "DELETE FROM vicidial_auto_calls where callerid='$callerid' and server_ip='$VARserver_ip' order by call_time desc limit 1;"; + $affected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- VDCL vac record deleted: |$affected_rows| $VDADcampaign|"; &agi_output;} + + if ($drop_seconds < 1) {$drop_seconds = $drop_timer;} + + if (length($HT_status)<1) {$HT_status='HOLDTO';} + $stmtA = "UPDATE vicidial_closer_log set status='$HT_status',end_epoch='$now_date_epoch',length_in_sec='$drop_seconds',queue_seconds='$drop_seconds',term_reason='HOLDTIME' where lead_id = '$insert_lead_id' order by start_epoch desc limit 1;"; + $affected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- VDCL vcl update: |$affected_rows|$insert_lead_id|\n|$stmtA|"; &agi_output;} + + $stmtA = "UPDATE vicidial_list set status='HOLDTO' where lead_id = '$insert_lead_id';"; + $affected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- VDCL vl update: |$affected_rows|$insert_lead_id|\n|$stmtA|"; &agi_output;} + + $dbhA->disconnect(); + + exit; } - - $stmtA = "DELETE FROM vicidial_auto_calls where callerid='$callerid' and server_ip='$VARserver_ip' order by call_time desc limit 1;"; - $affected_rows = $dbhA->do($stmtA); - if ($AGILOG) {$agi_string = "-- VDCL vac record deleted: |$affected_rows| $VDADcampaign|"; &agi_output;} - $stmtA = "UPDATE vicidial_closer_log set status='HOLDTO',end_epoch='$now_date_epoch',length_in_sec='$drop_seconds',queue_seconds='$drop_seconds',term_reason='HOLDTIME' where lead_id = '$insert_lead_id' order by start_epoch desc limit 1;"; - $affected_rows = $dbhA->do($stmtA); - if ($AGILOG) {$agi_string = "-- VDCL vcl update: |$affected_rows|$insert_lead_id|\n|$stmtA|"; &agi_output;} - - $stmtA = "UPDATE vicidial_list set status='HOLDTO' where lead_id = '$insert_lead_id';"; - $affected_rows = $dbhA->do($stmtA); - if ($AGILOG) {$agi_string = "-- VDCL vl update: |$affected_rows|$insert_lead_id|\n|$stmtA|"; &agi_output;} - - $dbhA->disconnect(); - - exit; } } @@ -2015,6 +2059,11 @@ $dbhA->disconnect(); exit; + + + + + sub enter_pin_number { @@ -2077,6 +2126,69 @@ if ($totalDTMF) {if ($AGILOG) {$agi_string = "digit |$digit| TotalDTMF |$tot +sub press_one_to_leave_voicemail +{ + +$digits_to_collect = 1; + +# To be called back when a representative is available, press 1 + +$digit=''; +undef $digit; +$interrupt_digit=''; +undef $interrupt_digit; +$digit_loop_counter=0; + +$interrupt_digit = $AGI->stream_file('to-be-called-back','1'); +if ($interrupt_digit < 2) + {$interrupt_digit = $AGI->stream_file('digits/1','1');} + + if ($AGILOG) {$agi_string = "interrupt_digit |$interrupt_digit|"; &agi_output;} + +$digits_being_entered=1; +$totalDTMF=''; +if ($interrupt_digit > 1) + { + if ($interrupt_digit == 48) {$interrupt_digit=0;} + if ($interrupt_digit == 49) {$interrupt_digit=1;} + if ($interrupt_digit == 50) {$interrupt_digit=2;} + if ($interrupt_digit == 51) {$interrupt_digit=3;} + if ($interrupt_digit == 52) {$interrupt_digit=4;} + if ($interrupt_digit == 53) {$interrupt_digit=5;} + if ($interrupt_digit == 54) {$interrupt_digit=6;} + if ($interrupt_digit == 55) {$interrupt_digit=7;} + if ($interrupt_digit == 56) {$interrupt_digit=8;} + if ($interrupt_digit == 57) {$interrupt_digit=9;} + + $totalDTMF=$interrupt_digit; + $digit_loop_counter++; + } + + +while ( ($digit_loop_counter < $digits_to_collect) ) + { + $digit = chr($AGI->wait_for_digit('4000')); # wait 4 seconds for input or until the key is pressed + if ($digit =~ /\d/) + { + $totalDTMF = "$totalDTMF$digit"; + if ($AGILOG) {$agi_string = "digit |$digit| TotalDTMF |$totalDTMF|"; &agi_output;} +# $AGI->say_digits("$digit"); + undef $digit; + } + else + { + $digit_loop_counter=$digits_to_collect; + } + + $digit_loop_counter++; + } + +$totalDTMF =~ s/\D//gi; +$pin = $totalDTMF; +if ($totalDTMF) {if ($AGILOG) {$agi_string = "digit |$digit| TotalDTMF |$totalDTMF|"; &agi_output;}} +} + + sub checkresult { my ($res) = @_; diff --git a/agc_2-X/trunk/docs/VICIDIAL_statuses.txt b/agc_2-X/trunk/docs/VICIDIAL_statuses.txt index 3b23a19e..c84677b8 100644 --- a/agc_2-X/trunk/docs/VICIDIAL_statuses.txt +++ b/agc_2-X/trunk/docs/VICIDIAL_statuses.txt @@ -29,3 +29,4 @@ SVYHU - Survey Hungup - Survey outbound campaign status only SVYREC - Survey sent to Record - Survey outbound campaign status only HXFER - Hold Recall Transfer to another in-group HOLDTO - Hold time option call termination on inbound call +QVMAIL - Queue Abandon Voicemail Left diff --git a/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql b/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql index 3007ab85..115d97be 100644 --- a/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql +++ b/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql @@ -696,7 +696,7 @@ qc_web_form_address VARCHAR(255), qc_script VARCHAR(10), play_place_in_line ENUM('Y','N') default 'N', play_estimate_hold_time ENUM('Y','N') default 'N', -hold_time_option ENUM('NONE','EXTENSION','VOICEMAIL','IN_GROUP','CALLERID_CALLBACK','DROP_ACTION') default 'NONE', +hold_time_option ENUM('NONE','EXTENSION','VOICEMAIL','IN_GROUP','CALLERID_CALLBACK','DROP_ACTION','PRESS_VMAIL') default 'NONE', hold_time_option_seconds SMALLINT(5) default '360', hold_time_option_exten VARCHAR(20) default '8300', hold_time_option_voicemail VARCHAR(20) default '', @@ -1324,7 +1324,7 @@ INSERT INTO vicidial_phone_codes (country_code, country, areacode, state, GMT_of UPDATE system_settings SET qc_last_pull_time=NOW(); -UPDATE system_settings SET db_schema_version='1108'; +UPDATE system_settings SET db_schema_version='1109'; GRANT RELOAD ON *.* TO cron@'%'; GRANT RELOAD ON *.* TO cron@localhost; diff --git a/agc_2-X/trunk/extras/upgrade_2.0.5.sql b/agc_2-X/trunk/extras/upgrade_2.0.5.sql index 9bf2a038..4fd7a578 100644 --- a/agc_2-X/trunk/extras/upgrade_2.0.5.sql +++ b/agc_2-X/trunk/extras/upgrade_2.0.5.sql @@ -476,8 +476,8 @@ INSERT INTO vicidial_phone_codes (country_code, country, areacode, state, GMT_of UPDATE system_settings SET db_schema_version='1108'; - - - - INSERT INTO vicidial_statuses values('QVMAIL','Queue Abandon Voicemail Left','N','N','UNDEFINED'); + +ALTER TABLE vicidial_inbound_groups MODIFY hold_time_option ENUM('NONE','EXTENSION','VOICEMAIL','IN_GROUP','CALLERID_CALLBACK','DROP_ACTION','PRESS_VMAIL') default 'NONE'; + +UPDATE system_settings SET db_schema_version='1109'; diff --git a/agc_2-X/trunk/sounds/to-be-called-back.gsm b/agc_2-X/trunk/sounds/to-be-called-back.gsm new file mode 100644 index 0000000000000000000000000000000000000000..ae5592543c18dea2af2592f75d39f5b08671998a GIT binary patch literal 5874 zcmW-lc~sJA+sDncnJk;BYy}&HALd$5Rw_C3j2j@Dr2;CTCJ2^miD}E!44AfPP~cK- z#qMru3Ys;6TcB3P4^#vj72K_vX`N=y`<~Z%|GLk)&V9c3b*^)+&wb8kba&RP^${>{ zBWJ*z3G;zw$W2@rio(S~(pf%;OdND{8dsiJ<&Q%0aX^9+3*m;CTUHMy#&l2VYvc@9 z>I{+N6A4y0fQbb%Sy+IJ1$tmO2=5uBZ8d?9^Dt!Q4Gt6geJ%XY0Da+7aSIF7-0<6r-J#VNm5v3}m>ednOMCwk5ZCH@C2#r)<~=DPzt@$>$jq~s&N z{Rso2X8-yy+HxUg_AIgRdSQ$+#FDAmsufpf3Q4xHFGo|nCXD3v*#vQSqO~WyBj|BsVPR6Y&Eb3e;45JK$&0~pGhgfg$)YzwzO?X~m9k57rr(3={dwWMD*SUnA?|fY+-Mrfa9j~va zsrs)<`Y#>$j2x8=&U^VJ$FIGRbCflE!sRn^Ux1S?l~!03QG2ej)q_ym|4o8i-rLe& zxi*oU^0W%pGIW-;As<|q06O-sCDaly@u^%c)DMb#pSSM0ac~3tH!TQ z{aE_#d0j4UAG8=d@IBi=7SsGP-tjMpt+^}h ziQh%Si{f(NfDpjO^Whi4jtkYarQVozhKJh&RR2*@g zE?qlD&GUg4uQ38!P#aBs!M%kj&q=uRA+oEx_LHqJ$r#Y8ZzjQSv-i-*<0IpO(v1}& z?ZTQz<}NRUc7G~u<__#VgXHBgqb%|ml--k3QEpscM#NNC_2{9fk>%c5AXZQl_ewrd zuT)RuJT8$7y6c&t&rkT*re}IkUb%2SLI}z}W4Yg``tbnA(I8rTn>UJ}F% z%UL&8i#s({2jw2E88!d3d*~^!b_? zJ=c3}Okp9@8LH}B&;WgR8kKcNTe6Y?kb^)w^@b#yc(H?m1wuNZ<`x+`>LXBs_6r&dDpmko0ah&aNo`LeYS1JA4ME@R3^I(vXv6u1!>1(k0xVuhr3zQLN`)=pGcTX>AzNw1!Y+vuH3&0(0Ss=a* z*tg6bFzaUWcVGDfW}3}847{GwNqCasi&HWkr^8Lc^42o+04TcYNSY83v>EOVCM%!a zH=gW%tqfUV`rOM??#kwLHR%>F?;5JMLNO*n-z52?(z#ub6rlpl>MOc5rGTb*2aTRA zjS4AawF_V+Q75b!+nQXqq{2Yp;Scd63mVZYiK zc=k`ym6V`*Kl=wZ9VlM(cMoTDe`TqJ+G>s#Y|c~hpYoS=@W!+F7t%)oSLv-TTE6_YkD3%e#fnGEdM=jt$o8#f1>qcG68?{M3{Xc!+oZgqs} z=Z;doJ(=9x7==O((RKVU?ab%sjyMi?=2b8%DZ_Vz&V{iVNI~F+bHiL;A%^Kv{3r<5 zOb*Y{(#1o&e+~%%J>oR8nIi1q%YhXWbs)b8eQ?EJn)&e1$RDtxR5^vBMRH_zKTjF9 z9)sXz{&Q7XUG90TWFxcT#8To8_AexdQAzsqe7$lpBcrE~#E!aW95gcmSPyh}wqBk? zL1ucEw2dXZJ(7EKjk${vXYy+9g_8g7b;jB-vF;2s3H}v!qgL!9Y_H^j7{Jc)a9^3+d!9Hjdz;BVeDgaU(!(0)(Xr+QX~bU1gmgnG~)(!FQ1Z$v#z zViYy)yZCS|t%Elb52l4rPdtQwFIke>x3TqpV`XXT0K50cQr~F(J4;%+pr9p~wsYKy za@Ol<>A2E8ljS{|$hw^F*c+EVb()dszv4s4-(eOpDT z)03^Y)sIFcX`$O9XS?WT6yp?|bMVceq*mgdRCox3M|VT-3Y0YR>|t}yr?N6^&?BM2 zE3^3>efru4&Z4u9eDn_fh0qyR(l?XNCNK_f(buYC<0rI5ELEj_Tk@=)6pVkaWkbRo zO!Wm$Va4=Mbh;`=%IjLIa@t1EGElXWxZfjR2w}h7c+*a@8V$4Wzx1$Yyqu%{Jx25l z@!z}s+6DA%SWI4Ay9-4YBdUR?zp5b$7a==A39Bz>K& zYzxWS!;A@#w3yR?KoHp)Xtb2NO_GFbppiQ#^suxYO47`uDkgv=i68Z~>9@q>pU=%i z*~Lh%BTBoVx;ekMHbh%tlp!1-q7R(mJxgkE_BwdPcZJv+X0wDoqnky{+Y^Hat|cGN zCMLyJG<(n2ib;Vx+V9|#ND%vpL0vV4GEB_-WlK?jkVwmn4lJkEi=J22`>!;Mt0nI+ z5^Z(78%SnrGG2E&w6IA@e05&CP+{iB>>5jgf8rjy2EudR9?e#-GjqDqV?wqcj(Q3w z=HtStW$lE4(SobbaHu1>7X|WVNgb38bK?~*$6u-_$zZqh|BPsY(xe~msyL*bAxyI&3 z66e--FgZMzPlTtvYus|HUZk1J-N~;NeTIK}8UC1Eo~Edo&`uH3@IBMJoV-J_v}+uA z%;33p6{>QRcU9t4KRpujM7INdzv{6-v3JyO8&mMCcr193%<2O0LHJC86e5b>u5-M6 z(oWIiY`m$th%eYj*th5$LuYc%)xaasu2xI*2U zS$W%m04EuUs5W7Xq|^^k3rbFI<(%qc!{}wlb4gBXPj2z70{2MgdI{_@iu<+n2Z6!0 zQC$)uwbLfs_kW0eA%tJh`?MKX|C@)my&jgWklhcKx&QFotD-gpi0X2$K6#*mhjY-T z|9oJ$I#~#E7AEf_Yz2#_uikfh82c)$S_lsadWrYcre03&|3f&n?LpAr5_YX{vBRU5 zjak}uNc^iXIVwPA0x21l_!CZ@77hmyCFp$n`!4&Rg@=7|LT4Vc@_*rm<$zR%8$qc; zFfwz*(bHd7?!!4o2o%DUqZ5yG=~=)9%faT=kT`BI7-~)b-Oc)5o?L zd(*6MXHEwHHP0x@FGm0Ah@ScY!evhRTp4a9phm2>HeO3g{(YqXP_$>8{Y{@M z=yW+Vs95T&~J5|eShlxpr zb#hg__*JdYZfZDfnSbhy2+2t79u=9W)8`M)8g?$oZ}YaGdJ z>dW;AuPPOdR7yVDCi-DZ;==EzRA^}YC{p{MxPA00)pw4mG~`X=qMq6IAfH&KAN{P)O5-NV0Mu zDar?E7m%`BN8gVu-K-O91*CM|6Px=mVnercQmP=#?VYn}M2Sf~?VB`)pxaB5RNk+g ze2~$Ce|Q<>%S4&l!pHvha=zde7c&TE+>E5<)!FKr(1Xgb$0$4q<^)X742rype?QXn5}r_B zFl5f+f1N5kNiTcy9L$XripKmq;iY~XvZ%>sYN*sCtZzDwzB@f__ZmfZ0zX_J z(Q>Hsk>P)yI_LBw;gPrIoRh~~nv`}qAXcE#~AS4AuZ{T!CUS8A3Ur4_XTA9`+0 zg0_RIPq`}y7t;68GX*|C3Mx~;(l`_xwpR*vBrtbK!0htdGtEkDc8T@HSk``>;q7QD z3&%)Z_83vB4WwZc*xIAJtrGxC;ZmS#$`x@enztaZ+4vyiUcNudA+wGGp00@4(&z7o z;0#uYlzsrRdxZdtHDv^wR!s*q<*PDXdhf(QNM{w`)tpIOI>74rs6r>qWHm?%VhA_~DwL1;}Cw`1dAD4=!Rm=422_#wtQ zB?`)sThy>sN#bkKkqYk`hG8fOM{Se{Fs3X8qFsPRaMY89R=z8lD5!Rf?C6vZTTSye z_F4HrI9SMn(g*RcX8C`6V_ChBIP+pPElX`lToo``8i1LI1NgpXN@9pPW55U+a5{dJ zzYmn_Yq{yaYJAitCCtT`rGYNMd;p#X(2nEoPDChC=^PDkW(o^s`T!y;Z*x``w1VXW zT@BJ#P~#Tw`FmS9YRgI@3X+M1Nd9$33aG#zhu~v^3LBPoSkhB)M~HyK0CS#^L9?`hsITG99y~v z-||Q_2HrZ^-Vro#RMfGYAni1Geum z(j>(IvXbn_V!exlh}2-?T$pfjn?NS7`~l}!Nmnz)&(k8WdJio{d+J>=PS^36!O&&& zPmwjz0q1&yVx$4YOJ&cAH79^gcT76Z+_)&x-Uc20WHx2C8^heAr+l^XHCK(Le8n|; zN0;kXlB~(#UQ#cn`y0I_H<*k!OZ!CCv4p{>xKYbT~lQL6C~-J%Z(k>ud`E2 zWqRuTp@uRam{Kk31LkM(zuAQ zZgR1vIM3cz5mcGV6P}5OUut9`H-eI&)S(V|(ve%hti0zt{EffjI`h^g7j`>$s@w{& zk(N<2xkvXaTQVb*KkN#)kRmVNO%U#o4rz|bMWG%!@-K$;j;q^GvFo=V$0n)Pd^~c% zE-6tZ1z5J^LiX9pHpcf8UODQ%6YvWUCKmTB2#Xk}F|FjhsOj6@;<#zaL|SCl#QvL{ zul?PN@tChH`R2WlQ1UNlU8OxBTU5Lvv}tmKVYp*&S%%P=G7?Dmq0j49zGT z{725d+|){OH@rF9zy6{M2ib_ck-+K^wnmE!17cGzADNh&cGi~25r#&3aA<^5ajf9t zucOM(4NpA3PiG%_o4ea65=?JR`OnaJdexf12|@e2ySrZe!7480A6+K-FQ#i;Q?&vO zl8?PO-juYauu9PH8GXNUL7+ikY6xcqS55wSyQ@>X;Le|2$M&zev3XQLUif1y{w*xz zb^rWNeO7)+trSNliv%!zAX+jFy4d+I3e?8LL~mnc4dR{^##E|7R3%~|yj6Q(AWiQS zuzccpot6YEUlSh-DE%>JCJGYm?`z5!Fli^qiIsCOA4t|SsBX2y>y9I@0)**pDxAV1 zxY1^9EUjwB!onf=SZJreues3MxMbyR;wT`Gt*{7Qr%^|yO~Y3g8Q^sRG^-F3Hw>|2 zwYtM0M!wZ5E-_{;`J!M#yNWG77Lp7LF>_IfJQxna4Ou2Aadhqw;#K(-=*$@b7Ru8g z1_jPlay Estimated Hold Time: $NWB#vicidial_inbound_groups-play_estimate_hold_time$NWE\n"; - echo "Hold Time Option: $NWB#vicidial_inbound_groups-hold_time_option$NWE\n"; + echo "Hold Time Option: $NWB#vicidial_inbound_groups-hold_time_option$NWE\n"; echo "Hold Time Option Seconds: $NWB#vicidial_inbound_groups-hold_time_option_seconds$NWE\n";