[Chicago-talk] transl. php to perl?

Warren Smith warren at warrenandrachel.com
Mon Mar 28 08:13:47 PST 2005


Richard,

I dunno if one exists, but I wrote one that does summarily this:

use Asterisk::AGI;
use RPC::XML::Client;
use RPC::XML;
my $agi = Asterisk::AGI->new();
my $input = $agi->ReadParse();

my $clid = $input{callerid}; # caller id
my $dnid = $input{dnid}; # dialed number id

my $cli = RPC::XML::Client->new('http://my.rpc.server/RPC');
$cli->send_request(
	'call.incoming', RPC_STRING($clid), RPC_STRING($dnid));


Where my.rpc.server provides the method call.incoming and does something
useful with it.

Hope this helps. (I've done a *lot* of AGI development, so if you have
any other questions (perl-related or not), don't hesitate to ask).

-Warren



On Mon, 2005-03-28 at 08:02 -0800, Richard Reina wrote:
> --- Warren Smith <warren at warrenandrachel.com> wrote:
> 
> > Ahh agi. Perhaps you should look for Asterisk::AGI.
> > It does all this
> > work for you ;). But anyways, here goes...
> > 
> 
> I did but I can't seem to find an AGI command that
> will pass the called id number to another machine on
> my local network?  Do you know of one?
> 
> Thanks for the translation help.
> 
> Richard
> 
> 
> > #!/usr/bin/perl
> > 
> > use strict;
> > use warnings;
> > 
> > my $debug = 0;
> > my %agi = ();
> > 
> > while(<STDIN>) {
> > 	chomp; # get a line from stdin and put it into $_
> > 	last unless $_; # exit early if $_ is empty
> > 	print "read: $_\n" if $debug;
> > 	my ($var, $value) = split /: /; # split $_ into two
> > parts
> > 	$var =~ s/^agi_//; # strip off agi_ prefix
> > 	$value =~ s/\s*(.*?)\s*/$1/; # trim $value
> > 	$agi{$var} = $value; # save value
> > }
> > 
> > On Mon, 2005-03-28 at 05:24 -0800, Richard Reina
> > wrote:
> > > perl is the only language I know, and even that is
> > > debatable.  So any of you know enogh php to help
> > me
> > > translate the script below? I know which lines are
> > the
> > > comments that's about it.
> > > 
> > > 
> > > #!/usr/bin/php4 -q
> > > <?php
> > > ob_implicit_flush(true);
> > > set_time_limit(6);
> > > $in = fopen("php://stdin","r");
> > > $stdlog = fopen("/var/log/asterisk/my_agi.log",
> > "w");
> > > // toggle debugging output (more verbose)
> > > $debug = false;
> > > // Do function definitions before we start the
> > main
> > > loop
> > > function read() {
> > > 	global $in, $debug, $stdlog;
> > > 	$input = str_replace("\n", "", fgets($in, 4096));
> > > 	if ($debug) fputs($stdlog, "read: $input\n");
> > > 	return $input;
> > > }
> > > 				
> > > // parse agi headers into array
> > > while ($env=read()) {
> > > 	$s = split(": ",$env);
> > > 	$agi[str_replace("agi_","",$s[0])] = trim($s[1]);
> > > 	if (($env == "") || ($env == "\n")) {
> > > 		break;
> > > 	}
> > > }
> > > _______________________________________________
> > > Chicago-talk mailing list
> > > Chicago-talk at pm.org
> > > http://mail.pm.org/mailman/listinfo/chicago-talk
> > > 
> > 
> > _______________________________________________
> > Chicago-talk mailing list
> > Chicago-talk at pm.org
> > http://mail.pm.org/mailman/listinfo/chicago-talk
> > 
> 
> _______________________________________________
> Chicago-talk mailing list
> Chicago-talk at pm.org
> http://mail.pm.org/mailman/listinfo/chicago-talk
> 



More information about the Chicago-talk mailing list