On Wednesday 29 August 2012, Carlos Alvarez wrote: > For any of you doing hosted PBX service on Asterisk, do you have a reliable > and secure click to dial solution? Particularly for Outlook, but since > about 20% of our customers use Mac OS, I'd love to hear about some that > work on that too.
This is my generic "works-anywhere" click-to-call script. It should work in conjunction with any software that allows you to specify an external command to call a number (we have tried it with Kontact and it works beautifully). You just have to issue a wget command to fire a CGI script on the server. Place this in your Asterisk server's /usr/lib/cgi-bin folder, call it "make_call.pl" and chmod 755 make_call.pl: #################### 8< #################### #!/usr/bin/perl -w use strict; use DBI; my ($web, $input_buffer, $name, $value, %parameters); my ($ip, $ext, $tel); my $dbh = DBI->connect("DBI:mysql:database=phonestuff;host=localhost", "root", ""); my $sth_get_ext = $dbh->prepare("SELECT ext FROM extensions WHERE pc_ip LIKE ?"); foreach (split/&/, $ENV{'QUERY_STRING'}) { # GET items tr/+/ /; ($name,$value) = split /=/, $_; $name =~ s/%(..)/pack'c', hex $1/eg; $value =~ s/%(..)/pack'c', hex $1/eg; $parameters{"$name"} = "$value"; }; read STDIN, $input_buffer, $ENV{"CONTENT_LENGTH"}; # POST items foreach (split/&/, $input_buffer) { tr/+/ /; ($name,$value) = split /=/, $_; $name =~ s/%(..)/pack 'c', hex $1/eg; $value =~ s/%(..)/pack 'c', hex $1/eg; $parameters{"$name"} = "$value"; }; print "Content-type: text/plain\n\n"; $tel = $parameters{"tel"} || ""; unless ($ext = $parameters{"ext"}) { $sth_get_ext->execute($ENV{"REMOTE_ADDR"}); if ($sth_get_ext->rows) { ($ext) = $sth_get_ext->fetchrow_array; }; $sth_get_ext->finish; }; if ($ext) { print "Calling from '$ext' to '$tel'.\n"; open CALLFILE, ">/tmp/asterisk_$$.call"; print CALLFILE <<"--STOP--"; Channel: SIP/$ext Context: outgoing extension: $tel Priority: 1 CallerId: $ext --STOP-- close CALLFILE; system "mv /tmp/asterisk_$$.call /var/spool/asterisk/outgoing/${ext}_${tel}.call"; } else { print "Go away, we don't know who you are. (try &ext=something)\n"; }; $dbh->disconnect; exit; #################### >8 #################### You also need a database `phonestuff` with a table `extensions` relating PC IP addresses (in `pc_ip`) to extension numbers (in `ext`). Now if your software works anything like Kontact, it will want you to specify a command to place a call and can substitute placeholders in this command. So, give this as the command: wget -o /dev/null http://ip.of.asterisk.server/cgi-bin/make_call.pl?tel=%N (Test it in an xterm, omitting the -o /dev/null, with something like your mobile number or another extension.) Licence: This program is copyright (C) 2012 by A J Stiles. You are permitted and even encouraged to distribute this program, modified or unmodified, in Source Code form whether or not accompanied by a binary executable version provided that this notice accompanies every copy. Binary distribution without Source Code constitutes a violation of copyright. -- AJS Answers come *after* questions. -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- New to Asterisk? Join us for a live introductory webinar every Thurs: http://www.asterisk.org/hello asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users