TT#71812 ama: handle anonymous caller

- try fallback to source_user
- use "00000000000" for open_digits

Change-Id: Iae377b99b7eee338cce556b78ffd9be890fb919d
(cherry picked from commit ebbc3762e7)
changes/11/35911/1
Rene Krenn 6 years ago
parent 45920c3724
commit 410f0b8f4e

@ -24,6 +24,8 @@ use NGCP::BulkProcessor::Projects::Export::Ama::Ccs::Settings qw(
$ama_outgoing_trunk_group_number
$ama_originating_digits_cdr_field
$ama_terminating_digits_cdr_field
$offnet_anonymous_fallback
$anonymous_originating_digits
@ivr_u2u_headers
$primary_alias_pattern
@ -319,6 +321,7 @@ sub _find_child_cdrs {
my ($context,$id) = @_;
my @correlated_cdrs = ();
foreach my $correlated_group_cdr (@{NGCP::BulkProcessor::Dao::Trunk::accounting::cdr_group::findby_cdrid($context->{db},$id)}) {
next unless $correlated_group_cdr->{call_id};
foreach my $correlated_cdr (@{NGCP::BulkProcessor::Dao::Trunk::accounting::cdr::findby_callid($context->{db},$correlated_group_cdr->{call_id})}) {
push(@correlated_cdrs,$correlated_cdr);
}
@ -348,7 +351,7 @@ sub _export_cdrs_init_context {
if (exists $context->{correlated_cdrs_map}->{$cdr->{id}}) {
@correlated_cdrs = @{$context->{correlated_cdrs_map}->{$cdr->{id}}};
} else {
@correlated_cdrs = grep { length($_->{call_id} =~ s/^\s+|\s+$//gr) > 0; } @{_find_child_cdrs($context,$cdr->{id})};
@correlated_cdrs = @{_find_child_cdrs($context,$cdr->{id})};
}
$cdr->{_correlated_cdrs} = \@correlated_cdrs;
push(@scenario_cdrs,@correlated_cdrs);
@ -461,9 +464,9 @@ sub _export_cdrs_init_context {
}
if ($scenario->{code} == $BLIND_TRANSFER_NO_IVR) {
my $originating = $parent_cdrs->[0]->{$ama_originating_digits_cdr_field};
my $terminating = $parent_cdrs->[1]->{$ama_terminating_digits_cdr_field};
my $switch_number = $parent_cdrs->[0]->{$ama_terminating_digits_cdr_field};
my $originating = _get_originating($parent_cdrs->[0]);
my $terminating = _get_terminating($parent_cdrs->[1]);
my $switch_number = _get_terminating($parent_cdrs->[0]);
push(@{$scenario->{ama}},{
start_time => $parent_cdrs->[1]->{start_time}, #?
duration => $parent_cdrs->[1]->{duration},
@ -479,9 +482,9 @@ sub _export_cdrs_init_context {
},
});
} elsif ($scenario->{code} == $BLIND_TRANSFER) {
my $originating = $parent_cdrs->[0]->{$ama_originating_digits_cdr_field};
my $terminating = $parent_cdrs->[1]->{$ama_terminating_digits_cdr_field};
my $switch_number = $parent_cdrs->[0]->{$ama_terminating_digits_cdr_field};
my $originating = _get_originating($parent_cdrs->[0]);
my $terminating = _get_terminating($parent_cdrs->[1]);
my $switch_number = _get_terminating($parent_cdrs->[0]);
push(@{$scenario->{ama}},{
start_time => $parent_cdrs->[0]->{start_time}, #?
duration => abs($parent_cdrs->[0]->{start_time} - $parent_cdrs->[1]->{init_time}),
@ -510,8 +513,8 @@ sub _export_cdrs_init_context {
},
});
} elsif ($scenario->{code} == $NO_TRANSFER_NO_IVR) {
my $originating = $parent_cdrs->[0]->{$ama_originating_digits_cdr_field};
my $terminating = $parent_cdrs->[0]->{$ama_terminating_digits_cdr_field};
my $originating = _get_originating($parent_cdrs->[0]);
my $terminating = _get_terminating($parent_cdrs->[0]);
my $switch_number = $terminating;
push(@{$scenario->{ama}},{
start_time => $parent_cdrs->[0]->{start_time}, #?
@ -528,8 +531,8 @@ sub _export_cdrs_init_context {
},
});
} elsif ($scenario->{code} == $NO_TRANSFER) {
my $originating = $parent_cdrs->[0]->{$ama_originating_digits_cdr_field};
my $terminating = $parent_cdrs->[0]->{$ama_terminating_digits_cdr_field};
my $originating = _get_originating($parent_cdrs->[0]);
my $terminating = _get_terminating($parent_cdrs->[0]);
my $switch_number = $terminating;
push(@{$scenario->{ama}},{
start_time => $parent_cdrs->[0]->{start_time}, #?
@ -560,9 +563,9 @@ sub _export_cdrs_init_context {
});
} elsif ($scenario->{code} == $ATTN_TRANSFER_NO_IVR) {
my $correlated_cdr = $parent_cdrs->[1]->{_correlated_cdrs}->[0];
my $originating = $correlated_cdr->{$ama_originating_digits_cdr_field};
my $terminating = $parent_cdrs->[1]->{$ama_terminating_digits_cdr_field};
my $switch_number = $correlated_cdr->{$ama_terminating_digits_cdr_field};
my $originating = _get_originating($correlated_cdr);
my $terminating = _get_terminating($parent_cdrs->[1]);
my $switch_number = _get_terminating($correlated_cdr);
push(@{$scenario->{ama}},{
start_time => $parent_cdrs->[1]->{start_time}, #?
duration => $correlated_cdr->{duration} - abs($correlated_cdr->{start_time} - $parent_cdrs->[1]->{start_time}),
@ -579,9 +582,9 @@ sub _export_cdrs_init_context {
});
} elsif ($scenario->{code} == $ATTN_TRANSFER) {
my $correlated_cdr = $parent_cdrs->[1]->{_correlated_cdrs}->[0];
my $originating = $correlated_cdr->{$ama_originating_digits_cdr_field};
my $terminating = $parent_cdrs->[1]->{$ama_terminating_digits_cdr_field};
my $switch_number = $correlated_cdr->{$ama_terminating_digits_cdr_field};
my $originating = _get_originating($correlated_cdr);
my $terminating = _get_terminating($parent_cdrs->[1]);
my $switch_number = _get_terminating($correlated_cdr);
push(@{$scenario->{ama}},{
start_time => $parent_cdrs->[1]->{start_time}, #?
duration => abs($correlated_cdr->{start_time} - $parent_cdrs->[1]->{init_time}),
@ -610,9 +613,9 @@ sub _export_cdrs_init_context {
},
});
} elsif ($scenario->{code} == $CFU) {
my $originating = $parent_cdrs->[0]->{$ama_originating_digits_cdr_field};
my $terminating = $parent_cdrs->[1]->{$ama_terminating_digits_cdr_field};
my $switch_number = $parent_cdrs->[0]->{$ama_terminating_digits_cdr_field};
my $originating = _get_originating($parent_cdrs->[0]);
my $terminating = _get_terminating($parent_cdrs->[1]);
my $switch_number = _get_terminating($parent_cdrs->[0]);
push(@{$scenario->{ama}},{
start_time => $parent_cdrs->[1]->{start_time}, #?
duration => $parent_cdrs->[1]->{duration},
@ -633,6 +636,28 @@ sub _export_cdrs_init_context {
}
sub _get_originating {
my $cdr = shift;
my $src_user;
if ($offnet_anonymous_fallback
and $cdr->{source_user_id} eq "0"
and $cdr->{$ama_originating_digits_cdr_field} =~ /anonymous/i
and $cdr->{source_user} =~ /^[+ 0-9]+$/) {
$src_user = $cdr->{source_user};
} else {
$src_user = $cdr->{$ama_originating_digits_cdr_field};
}
if ($src_user =~ /anonymous/i) {
$src_user = $anonymous_originating_digits;
}
return $src_user;
}
sub _get_terminating {
my $cdr = shift;
return $cdr->{$ama_terminating_digits_cdr_field};
}
sub _rewrite_switch_number {
my ($switch_number) = @_;

@ -60,6 +60,8 @@ our @EXPORT_OK = qw(
$ama_outgoing_trunk_group_number
$ama_originating_digits_cdr_field
$ama_terminating_digits_cdr_field
$offnet_anonymous_fallback
$anonymous_originating_digits
@ivr_u2u_headers
$primary_alias_pattern
@ -102,6 +104,9 @@ our $ama_outgoing_trunk_group_number;
our $ama_originating_digits_cdr_field;
our $ama_terminating_digits_cdr_field;
our $offnet_anonymous_fallback = 1; #see rate-o-mat
our $anonymous_originating_digits = '00000000000';
#our $ivr_duration_limit = 5;
our @ivr_u2u_headers = ();
our $primary_alias_pattern = undef;
@ -152,6 +157,7 @@ sub update_settings {
unless (contains($ama_terminating_digits_cdr_field,[qw(destination_user destination_user_out destination_user_dialed destination_user_in)])) {
configurationerror($configfile,'unknown ama_terminating_digits_cdr_field',getlogger(__PACKAGE__));
}
$anonymous_originating_digits = $data->{anonymous_originating_digits} if exists $data->{anonymous_originating_digits};
#$ivr_duration_limit = $data->{ivr_duration_limit} if exists $data->{ivr_duration_limit};
@ivr_u2u_headers = split_tuple($data->{ivr_u2u_headers}) if exists $data->{ivr_u2u_headers};

@ -29,6 +29,8 @@ ama_outgoing_trunk_group_number = 2014
ama_originating_digits_cdr_field = source_cli
ama_terminating_digits_cdr_field = destination_user_in
anonymous_originating_digits = 00000000000
#ivr_duration_limit = 5
primary_alias_pattern = 431976
ivr_u2u_headers = IVRmenu,announcements

@ -31,6 +31,8 @@ ama_outgoing_trunk_group_number = 2014
ama_originating_digits_cdr_field = source_cli
ama_terminating_digits_cdr_field = destination_user_in
anonymous_originating_digits = 00000000000
#ivr_duration_limit = 5
#primary_alias_pattern = 431976
ivr_u2u_headers = IVRmenu,announcements

Loading…
Cancel
Save