epic-ts
[kivitendo-erp.git] / SL / CTI.pm
index 8605ff1..6989e7e 100644 (file)
--- a/SL/CTI.pm
+++ b/SL/CTI.pm
@@ -30,7 +30,13 @@ sub call {
 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 {
@@ -40,9 +46,10 @@ 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;