sub call_link {
my ($class, %params) = @_;
- return "controller.pl?action=CTI/call&number=" . uri_encode($class->sanitize_number(number => $params{number})) . ($params{internal} ? '&internal=1' : '');
+ my $config = $::lx_office_conf{cti} || {};
+
+ if ($config->{dial_command}) {
+ return "controller.pl?action=CTI/call&number=" . uri_encode($class->sanitize_number(number => $params{number})) . ($params{internal} ? '&internal=1' : '');
+ } else {
+ return 'callto://' . uri_encode($class->sanitize_number(number => $params{number}));
+ }
}
sub sanitize_number {
my $idp = $config->{international_dialing_prefix} // '00';
my $number = $params{number} // '';
- $number =~ s/[^0-9+\.-]//g; # delete unsupported characters
+ $number =~ s/[^0-9+]//g; # delete unsupported characters
my $countrycode = $number =~ s/^(?: $idp | \+ ) ( \d{2} )//x ? $1 : ''; # TODO: countrycodes can have more or less than 2 digits
$number =~ s/^0//x if $countrycode; # kill non standard optional zero after global identifier
+ $number =~ s{[^0-9]+}{}g;
return '' unless $number;