diff --git a/bin/AST_manager_listen_AMI2.pl b/bin/AST_manager_listen_AMI2.pl index 1f2f5fef..4a3bde3f 100644 --- a/bin/AST_manager_listen_AMI2.pl +++ b/bin/AST_manager_listen_AMI2.pl @@ -22,11 +22,13 @@ # CHANGES # 170915-2106 - Initial version based off the orginal AST_manager_listen.pl script # 170920-1418 - Fix for issue with recordings beginning with CALLID variable +# 170930-0923 - Commented out handle_sip_event and handle_cpd_event functions, not needed anymore, to be deleted later # # constants $DB=0; # Debug flag, set to 0 for no debug messages, lots of output $DBX=0; +$full_listen_log=0; # set to 1 to log all output to log file $run_check=1; # concurrency check $last_keepalive_epoch = time(); $keepalive_skips=0; @@ -283,8 +285,10 @@ else else { @lines = split( /\n/, $read_input_buf ); + $line_log=''; foreach my $line ( @lines ) { + $line_log .= "$line\n"; # add the line to the hash ($key,$value) = split( /: /, $line ); if ($key ne "") @@ -295,6 +299,11 @@ else $event_hash{"$key"} = $value; } } + if ($full_listen_log > 0) + { + $manager_string="$line_log"; + &manager_output_logger; + } } @@ -532,10 +541,10 @@ sub handle_event case "DTMFEnd" { return handle_dtmf_end_event( %event_hash ); } # CPD-Result event - case "CPD-Result" { return handle_cpd_event( %event_hash ); } + # case "CPD-Result" { return handle_cpd_event( %event_hash ); } # SIP-Hangup-Cause event - case "SIP-Hangup-Cause" { return handle_sip_event( %event_hash ); } + # case "SIP-Hangup-Cause" { return handle_sip_event( %event_hash ); } # NewCallerid event case "NewCallerid" { return handle_newcid_event( %event_hash ); } @@ -777,116 +786,116 @@ sub handle_dtmf_end_event } -sub handle_cpd_event - { - my %event_hash = @_; - - if ( - ( exists $event_hash{'Channel'} ) && - ( exists $event_hash{'Uniqueid'} ) && - ( exists $event_hash{'CallerIDName'} ) && - ( exists $event_hash{'ConnectedLineName'} ) && - ( exists $event_hash{'CPDResult'} ) - ) - { - - # get the valid Vicidial Call ID - $call_id = get_valid_callid( $event_hash{'CallerIDName'}, $event_hash{'ConnectedLineName'} ); - - &get_time_now; - - if($DB){print STDERR "|cpd_result = $event_hash{'CPDResult'}|cpd_detailed_result = $event_hash{'CPDDetailedResult'}|cpd_call_id = $event_hash{'CPDCallID'}|cpd_ref_id = $event_hash{'CPDReferenceID'}|cpd_camp_name = $event_hash{'CPDCampaignName'}|\n";} - - if (length($event_hash{'CPDResult'})>0) - { - $lead_id = substr($call_id, 10, 10); - $lead_id = ($lead_id + 0); - - # TODO change the cpd log and this insert to include the new SIP Headers for 2.0 CPD - $stmtA = "INSERT INTO vicidial_cpd_log set channel='$event_hash{'Channel'}', uniqueid='$event_hash{'Uniqueid'}', callerid='$call_id', server_ip='$event_hash{'ServerIP'}', lead_id='$lead_id', event_date='$now_date', result='$event_hash{'CPDResult'}';"; - if($DB){print STDERR "|$stmtA|\n";} - my $affected_rows = $dbhA->do($stmtA); - if($DB){print "|$affected_rows CPD_log inserted|$now_date|\n";} - } - - return 1; - } - else - { - print STDERR "CPD-Result event does not have a Channel, Uniqueid, CPDResult, ConnectedLineName, or CallerIDName ?!!!\n"; - return 3; - } - } +#sub handle_cpd_event +# { +# my %event_hash = @_; +# +# if ( +# ( exists $event_hash{'Channel'} ) && +# ( exists $event_hash{'Uniqueid'} ) && +# ( exists $event_hash{'CallerIDName'} ) && +# ( exists $event_hash{'ConnectedLineName'} ) && +# ( exists $event_hash{'CPDResult'} ) +# ) +# { +# +# # get the valid Vicidial Call ID +# $call_id = get_valid_callid( $event_hash{'CallerIDName'}, $event_hash{'ConnectedLineName'} ); +# +# &get_time_now; +# +# if($DB){print STDERR "|cpd_result = $event_hash{'CPDResult'}|cpd_detailed_result = $event_hash{'CPDDetailedResult'}|cpd_call_id = $event_hash{'CPDCallID'}|cpd_ref_id = $event_hash{'CPDReferenceID'}|cpd_camp_name = $event_hash{'CPDCampaignName'}|\n";} +# +# if (length($event_hash{'CPDResult'})>0) +# { +# $lead_id = substr($call_id, 10, 10); +# $lead_id = ($lead_id + 0); +# +# # TODO change the cpd log and this insert to include the new SIP Headers for 2.0 CPD +# $stmtA = "INSERT INTO vicidial_cpd_log set channel='$event_hash{'Channel'}', uniqueid='$event_hash{'Uniqueid'}', callerid='$call_id', server_ip='$event_hash{'ServerIP'}', lead_id='$lead_id', event_date='$now_date', result='$event_hash{'CPDResult'}';"; +# if($DB){print STDERR "|$stmtA|\n";} +# my $affected_rows = $dbhA->do($stmtA); +# if($DB){print "|$affected_rows CPD_log inserted|$now_date|\n";} +# } +# +# return 1; +# } +# else +# { +# print STDERR "CPD-Result event does not have a Channel, Uniqueid, CPDResult, ConnectedLineName, or CallerIDName ?!!!\n"; +# return 3; +# } +# } -sub handle_sip_event - { - my %event_hash = @_; - - if ( - ( exists $event_hash{'Channel'} ) && - ( exists $event_hash{'Uniqueid'} ) && - ( exists $event_hash{'CallerIDName'} ) && - ( exists $event_hash{'ConnectedLineName'} ) && - ( exists $event_hash{'Result'} ) - ) - { - - # get the valid Vicidial Call ID - $call_id = get_valid_callid( $event_hash{'CallerIDName'}, $event_hash{'ConnectedLineName'} ); - - &get_time_now; - - @result_details=split(/\|/, $event_hash{'Result'}); - - if ( (length($event_hash{'Result'})>0) && ($result_details[0] !~ /^407/) ) - { - $lead_id = substr($call_id, 10, 10); - $lead_id = ($lead_id + 0); - $beginUNIQUEID = $event_hash{'Uniqueid'}; - $beginUNIQUEID =~ s/\..*//gi; - $stmtA = "UPDATE vicidial_dial_log SET sip_hangup_cause='$result_details[0]',sip_hangup_reason='$result_details[1]',uniqueid='$event_hash{'Uniqueid'}' where caller_code='$call_id' and server_ip='$event_hash{'ServerIP'}' and lead_id='$lead_id';"; - if($DB){print STDERR "|$stmtA|\n";} - my $affected_rows = $dbhA->do($stmtA); - if($DB){print "|$affected_rows dial_log updated|$call_id|$event_hash{'ServerIP'}|$event_hash{'Result'}|\n";} - $vddl_update = ($vddl_update + $affected_rows); - - $preCtarget = ($beginUNIQUEID - 180); # 180 seconds before call start - ($preCsec,$preCmin,$preChour,$preCmday,$preCmon,$preCyear,$preCwday,$preCyday,$preCisdst) = localtime($preCtarget); - $preCyear = ($preCyear + 1900); - $preCmon++; - if ($preCmon < 10) {$preCmon = "0$preCmon";} - if ($preCmday < 10) {$preCmday = "0$preCmday";} - if ($preChour < 10) {$preChour = "0$preChour";} - if ($preCmin < 10) {$preCmin = "0$preCmin";} - if ($preCsec < 10) {$preCsec = "0$preCsec";} - $preCSQLdate = "$preCyear-$preCmon-$preCmday $preChour:$preCmin:$preCsec"; - - $postCtarget = ($beginUNIQUEID + 10); # 10 seconds after call start - ($postCsec,$postCmin,$postChour,$postCmday,$postCmon,$postCyear,$postCwday,$postCyday,$postCisdst) = localtime($postCtarget); - $postCyear = ($postCyear + 1900); - $postCmon++; - if ($postCmon < 10) {$postCmon = "0$postCmon";} - if ($postCmday < 10) {$postCmday = "0$postCmday";} - if ($postChour < 10) {$postChour = "0$postChour";} - if ($postCmin < 10) {$postCmin = "0$postCmin";} - if ($postCsec < 10) {$postCsec = "0$postCsec";} - $postCSQLdate = "$postCyear-$postCmon-$postCmday $postChour:$postCmin:$postCsec"; - - $stmtA = "UPDATE vicidial_carrier_log SET sip_hangup_cause='$result_details[0]',sip_hangup_reason='$result_details[1]' where server_ip='$event_hash{'ServerIP'}' and caller_code='$call_id' and lead_id='$lead_id' and call_date > \"$preCSQLdate\" and call_date < \"$postCSQLdate\" order by call_date desc limit 1;"; - if($DB){print STDERR "|$stmtA|\n";} - my $affected_rows = $dbhA->do($stmtA); - if($DB){print "|$affected_rows carrier_log updated|$call_id|$event_hash{'ServerIP'}|$event_hash{'Uniqueid'}|$result_details[0]|$result_details[1]|\n";} - } - - return 1; - } - else - { - print STDERR "SIP-Hangup-Cause event does not have a Channel, Uniqueid, Result, ConnectedLineName, or CallerIDName ?!!!\n"; - return 3; - } - } +#sub handle_sip_event +# { +# my %event_hash = @_; +# +# if ( +# ( exists $event_hash{'Channel'} ) && +# ( exists $event_hash{'Uniqueid'} ) && +# ( exists $event_hash{'CallerIDName'} ) && +# ( exists $event_hash{'ConnectedLineName'} ) && +# ( exists $event_hash{'Result'} ) +# ) +# { +# +# # get the valid Vicidial Call ID +# $call_id = get_valid_callid( $event_hash{'CallerIDName'}, $event_hash{'ConnectedLineName'} ); +# +# &get_time_now; +# +# @result_details=split(/\|/, $event_hash{'Result'}); +# +# if ( (length($event_hash{'Result'})>0) && ($result_details[0] !~ /^407/) ) +# { +# $lead_id = substr($call_id, 10, 10); +# $lead_id = ($lead_id + 0); +# $beginUNIQUEID = $event_hash{'Uniqueid'}; +# $beginUNIQUEID =~ s/\..*//gi; +# $stmtA = "UPDATE vicidial_dial_log SET sip_hangup_cause='$result_details[0]',sip_hangup_reason='$result_details[1]',uniqueid='$event_hash{'Uniqueid'}' where caller_code='$call_id' and server_ip='$event_hash{'ServerIP'}' and lead_id='$lead_id';"; +# if($DB){print STDERR "|$stmtA|\n";} +# my $affected_rows = $dbhA->do($stmtA); +# if($DB){print "|$affected_rows dial_log updated|$call_id|$event_hash{'ServerIP'}|$event_hash{'Result'}|\n";} +# $vddl_update = ($vddl_update + $affected_rows); +# +# $preCtarget = ($beginUNIQUEID - 180); # 180 seconds before call start +# ($preCsec,$preCmin,$preChour,$preCmday,$preCmon,$preCyear,$preCwday,$preCyday,$preCisdst) = localtime($preCtarget); +# $preCyear = ($preCyear + 1900); +# $preCmon++; +# if ($preCmon < 10) {$preCmon = "0$preCmon";} +# if ($preCmday < 10) {$preCmday = "0$preCmday";} +# if ($preChour < 10) {$preChour = "0$preChour";} +# if ($preCmin < 10) {$preCmin = "0$preCmin";} +# if ($preCsec < 10) {$preCsec = "0$preCsec";} +# $preCSQLdate = "$preCyear-$preCmon-$preCmday $preChour:$preCmin:$preCsec"; +# +# $postCtarget = ($beginUNIQUEID + 10); # 10 seconds after call start +# ($postCsec,$postCmin,$postChour,$postCmday,$postCmon,$postCyear,$postCwday,$postCyday,$postCisdst) = localtime($postCtarget); +# $postCyear = ($postCyear + 1900); +# $postCmon++; +# if ($postCmon < 10) {$postCmon = "0$postCmon";} +# if ($postCmday < 10) {$postCmday = "0$postCmday";} +# if ($postChour < 10) {$postChour = "0$postChour";} +# if ($postCmin < 10) {$postCmin = "0$postCmin";} +# if ($postCsec < 10) {$postCsec = "0$postCsec";} +# $postCSQLdate = "$postCyear-$postCmon-$postCmday $postChour:$postCmin:$postCsec"; +# +# $stmtA = "UPDATE vicidial_carrier_log SET sip_hangup_cause='$result_details[0]',sip_hangup_reason='$result_details[1]' where server_ip='$event_hash{'ServerIP'}' and caller_code='$call_id' and lead_id='$lead_id' and call_date > \"$preCSQLdate\" and call_date < \"$postCSQLdate\" order by call_date desc limit 1;"; +# if($DB){print STDERR "|$stmtA|\n";} +# my $affected_rows = $dbhA->do($stmtA); +# if($DB){print "|$affected_rows carrier_log updated|$call_id|$event_hash{'ServerIP'}|$event_hash{'Uniqueid'}|$result_details[0]|$result_details[1]|\n";} +# } +# +# return 1; +# } +# else +# { +# print STDERR "SIP-Hangup-Cause event does not have a Channel, Uniqueid, Result, ConnectedLineName, or CallerIDName ?!!!\n"; +# return 3; +# } +# } @@ -939,7 +948,7 @@ sub dtmf_logger if ($SYSLOG) { open(Dout, ">>$PATHlogs/dtmf.$action_log_date") - || die "Can't open $PATHlogs/dttmf.$action_log_date: $!\n"; + || die "Can't open $PATHlogs/dtmf.$action_log_date: $!\n"; print Dout "|$dtmf_string|\n"; close(Dout); } diff --git a/docs/conf_examples/extensions.conf.sample-13 b/docs/conf_examples/extensions.conf.sample-13 index 49772910..587bdb86 100644 --- a/docs/conf_examples/extensions.conf.sample-13 +++ b/docs/conf_examples/extensions.conf.sample-13 @@ -479,84 +479,63 @@ exten => _138331*.,n,Wait(2) exten => _138331*.,n,Hangup() ; VICIDIAL_auto_dialer transfer script for no-agent campaigns: -exten => 8364,1,Playback(sip-silence) -exten => 8364,n,AGI(agi://127.0.0.1:4577/call_log) -exten => 8364,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB) +exten => 8364,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8364,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB) exten => 8364,n,Hangup() ; VICIDIAL_auto_dialer transfer script: -exten => 8365,1,Playback(sip-silence) -exten => 8365,n,AGI(agi://127.0.0.1:4577/call_log) -exten => 8365,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----SO) +exten => 8365,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8365,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----SO) exten => 8365,n,Hangup() ; VICIDIAL_auto_dialer transfer script SURVEY at beginning: -exten => 8366,1,Playback(sip-silence) -exten => 8366,n,AGI(agi://127.0.0.1:4577/call_log) -exten => 8366,n,AGI(agi-VDAD_ALL_outbound.agi,SURVEYCAMP-----LB) +exten => 8366,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8366,n,AGI(agi-VDAD_ALL_outbound.agi,SURVEYCAMP-----LB) exten => 8366,n,Hangup() ; VICIDIAL_auto_dialer transfer script Load Balance Overflow: -exten => 8367,1,Playback(sip-silence) -exten => 8367,n,AGI(agi://127.0.0.1:4577/call_log) -exten => 8367,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LO) +exten => 8367,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8367,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LO) exten => 8367,n,Hangup() ; VICIDIAL_auto_dialer transfer script Load Balanced: -exten => 8368,1,Playback(sip-silence) -exten => 8368,n,AGI(agi://127.0.0.1:4577/call_log) -exten => 8368,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB) +exten => 8368,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8368,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB) exten => 8368,n,Hangup() ; VICIDIAL_auto_dialer transfer script AMD with Load Balanced: -exten => 8369,1,Playback(sip-silence) -exten => 8369,n,AGI(agi://127.0.0.1:4577/call_log) +exten => 8369,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8369,n,AMD(2000,2000,1000,5000,120,50,4,256) exten => 8369,n,AGI(VD_amd.agi,${EXTEN}) exten => 8369,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB) -exten => 8369,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB) exten => 8369,n,Hangup() ; VICIDIAL auto-dial reminder script -exten => 8372,1,Playback(sip-silence) -exten => 8372,n,AGI(agi://127.0.0.1:4577/call_log) -exten => 8372,n,AGI(agi-VDADautoREMINDER.agi,${EXTEN}) +exten => 8372,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8372,n,AGI(agi-VDADautoREMINDER.agi,${EXTEN}) exten => 8372,n,Hangup() ; VICIDIAL SURVEY transfer script AMD with Load Balanced: -exten => 8373,1,Playback(sip-silence) -exten => 8373,n,AGI(agi://127.0.0.1:4577/call_log) +exten => 8373,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8373,n,AMD(2000,2000,1000,5000,120,50,4,256) exten => 8373,n,AGI(VD_amd.agi,${EXTEN}) exten => 8373,n,AGI(agi-VDAD_ALL_outbound.agi,SURVEYCAMP-----LB) -exten => 8373,n,AGI(agi-VDAD_ALL_outbound.agi,SURVEYCAMP-----LB) exten => 8373,n,Hangup() ; VICIDIAL SURVEY transfer script with Cepstral names: -exten => 8374,1,Playback(sip-silence) -exten => 8374,n,AGI(agi://127.0.0.1:4577/call_log) -exten => 8374,n,AGI(agi-VDAD_ALL_outbound.agi,SURVEYCAMPCEP-----LB) +exten => 8374,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8374,n,AGI(agi-VDAD_ALL_outbound.agi,SURVEYCAMPCEP-----LB) exten => 8374,n,Hangup() ; VICIDIAL SURVEY transfer script AMD with Cepstral variables: -exten => 8375,1,Playback(sip-silence) -exten => 8375,n,AGI(agi://127.0.0.1:4577/call_log) +exten => 8375,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8375,n,AMD(2000,2000,1000,5000,120,50,4,256) exten => 8375,n,AGI(VD_amd.agi,${EXTEN}) exten => 8375,n,AGI(agi-VDAD_ALL_outbound.agi,SURVEYCAMPCEP-----LB) -exten => 8375,n,AGI(agi-VDAD_ALL_outbound.agi,SURVEYCAMPCEP-----LB) exten => 8375,n,Hangup() ; BETA VICIDIAL_auto_dialer transfer script Load Balanced: -exten => 8377,1,Playback(sip-silence) -exten => 8377,n,AGI(agi://127.0.0.1:4577/call_log) +exten => 8377,1,AGI(agi://127.0.0.1:4577/call_log) exten => 8377,n,Set(LRct=1) exten => 8377,n,While($[${LRct} < 100]) exten => 8377,n,AGI(agi-VDAD_ALL_outboundBETA.agi,NORMAL-----LB) diff --git a/docs/conf_examples/manager.conf.sample-13 b/docs/conf_examples/manager.conf.sample-13 index c7aad88b..d15467b1 100644 --- a/docs/conf_examples/manager.conf.sample-13 +++ b/docs/conf_examples/manager.conf.sample-13 @@ -24,8 +24,6 @@ write = command eventfilter=Event: Shutdown eventfilter=Event: DTMFBegin eventfilter=Event: DTMFEnd -eventfilter=Event: CPD-Result -eventfilter=Event: SIP-Hangup-Cause eventfilter=Event: NewCallerid eventfilter=Event: Newstate eventfilter=Event: Hangup