TT#44603 fax number normalization logic selection

* Faxes numbers representation now uses one of the available
      normalization logics. For the API part it is possible to
      override it in /api/faxes with a new 'number_rewrite_mode'
      query param or 'fax_number_rewrite_mode',
      in case of /api/conversations

Change-Id: I64cfcaa53284eafdc980cdab4c3a01d22a55749b
(cherry picked from commit ad9fead357)
changes/12/29512/1
Kirill Solomko 7 years ago
parent 59855adb5d
commit 5ce7384090

@ -62,6 +62,10 @@ sub query_params {
param => 'to',
description => 'Filter for conversation events starting lower or equal the specified time stamp.',
},
{
param => 'fax_number_rewrite_mode',
description => "Force the fax numbers normalization logic (available: 'default', 'extended').",
},
];
}

@ -82,6 +82,10 @@ sub query_params {
description => 'Filter for a fax with the specific session id',
query_type => 'string_eq',
},
{
param => 'number_rewrite_mode',
description => "Force the number normalization logic (available: 'default', 'extended').",
},
];
}

@ -291,9 +291,11 @@ sub webfax_ajax :Chained('base') :PathPart('webfax/ajax') :Args(0) {
sub {
my ($result) = @_;
my $resource =
NGCP::Panel::Utils::Fax::process_fax_journal_item(
$c, $result, $subscriber
);
$c->config->{faxserver}->{number_rewrite_mode} eq 'extended'
? NGCP::Panel::Utils::Fax::process_extended_fax_journal_item(
$c, $result, $subscriber)
: NGCP::Panel::Utils::Fax::process_fax_journal_item(
$c, $result, $subscriber);
return %$resource;
}
);

@ -790,7 +790,13 @@ sub process_hal_resource {
'id' => $item_mock_obj->subscriber_id,
})->first;
my $fax_subscriber_billing = $fax_subscriber_provisioning->voip_subscriber;
$resource = NGCP::Panel::Utils::Fax::process_fax_journal_item($c, $item_mock_obj, $fax_subscriber_billing);
my $number_rewrite_mode = $c->request->query_params->{fax_number_rewrite_mode} //
$c->config->{faxserver}->{number_rewrite_mode};
$resource = $number_rewrite_mode eq 'extended'
? NGCP::Panel::Utils::Fax::process_extended_fax_journal_item(
$c, $item_mock_obj, $fax_subscriber_billing)
: NGCP::Panel::Utils::Fax::process_fax_journal_item(
$c, $item_mock_obj, $fax_subscriber_billing);
foreach my $field (qw/type id status reason pages filename direction/){
$resource->{$field} = $item_mock_obj->$field;
}

@ -84,7 +84,13 @@ sub resource_from_item {
foreach(qw/duration pages signal_rate/){
$resource{$_} = is_int($item->$_) ? $item->$_ : 0;
}
my $data = NGCP::Panel::Utils::Fax::process_fax_journal_item($c, $item, $subscriber);
my $number_rewrite_mode = $c->request->query_params->{number_rewrite_mode} //
$c->config->{faxserver}->{number_rewrite_mode};
my $data = $number_rewrite_mode eq 'extended'
? NGCP::Panel::Utils::Fax::process_extended_fax_journal_item(
$c, $item, $subscriber)
: NGCP::Panel::Utils::Fax::process_fax_journal_item(
$c, $item, $subscriber);
map { $resource{$_} = $data->{$_} } qw(caller callee);
return \%resource;
}

@ -174,6 +174,65 @@ sub get_fax {
}
sub process_fax_journal_item {
my ($c, $result, $subscriber) = @_;
my $resource = { caller => $result->caller,
callee => $result->callee };
my $dir = $result->direction;
my $prov_sub = $subscriber->provisioning_voip_subscriber;
my $src_sub = $result->caller_subscriber // undef;
my $dst_sub = $result->callee_subscriber // undef;
my $prov_src_sub = $src_sub
? $src_sub->provisioning_voip_subscriber
: $subscriber;
my $prov_dst_sub = $dst_sub
? $dst_sub->provisioning_voip_subscriber
: $subscriber;
my $src_rewrite = 1;
my $dst_rewrite = 1;
if ($src_sub && $dst_sub && $src_sub->contract_id == $dst_sub->contract_id) {
if ($prov_src_sub && $prov_src_sub->pbx_extension) {
$resource->{caller} = $prov_src_sub->pbx_extension;
$src_rewrite = 0;
}
if ($prov_dst_sub && $prov_dst_sub->pbx_extension) {
$resource->{callee} = $prov_dst_sub->pbx_extension;
$dst_rewrite = 0;
}
} else {
if ($prov_sub->pbx_extension) {
if ($dir eq 'out') {
$resource->{caller} = $prov_sub->pbx_extension;
$src_rewrite = 0;
} else {
$resource->{callee} = $prov_sub->pbx_extension;
$dst_rewrite = 0;
}
}
}
if ($src_rewrite) {
if (my $rt_caller = NGCP::Panel::Utils::Subscriber::apply_rewrite(
c => $c,
number => $resource->{caller},
subscriber => $src_sub // $subscriber,
direction => 'caller_out'
)) {
$resource->{caller} = $rt_caller;
}
}
if ($dst_rewrite) {
if (my $rt_callee = NGCP::Panel::Utils::Subscriber::apply_rewrite(
c => $c,
number => $resource->{callee},
subscriber => $dst_sub // $subscriber,
direction => 'caller_out'
)) {
$resource->{callee} = $rt_callee;
}
}
return $resource;
}
sub process_extended_fax_journal_item {
my ($c, $result, $subscriber) = @_;
my $resource = { caller => $result->caller,
callee => $result->callee };

Loading…
Cancel
Save