NAME
Asterisk::FastAGI - Module for FastAGI handling.
SYNOPSIS
use base 'Asterisk::FastAGI';
sub fastagi_handler {
my $self = shift;
my $param = $self->param('foo');
my $callerid = $self->input('calleridname');
$self->agi->say_number(1000);
}
DESCRIPTION
Asterisk::FastAGI provides a preforking daemon for handling FastAGI requests from Asterisk.
Read the Net::Server for more information about the logging facilities, configuration, etc.
USAGE EXAMPLE
First you need a module containing all of your AGI handlers.
package MyAGI;
use base 'Asterisk::FastAGI';
sub agi_handler {
my $self = shift;
$self->agi->say_number(8675309);
}
Then you simply need to have a script that runs the daemon.
#!/usr/bin/perl
use MyAGI;
MyAGI->run();
When it is run it creates a preforking daemon on port '4573'. That is the default port for FastAGI. Read the Net::Server documentation on how to change this and many other options.
METHODS
param
Returns parsed parameters sent in from the AGI script.
Inside extensions.conf:
exten => 1111,1,Agi(agi://${SERVER}/fastagi_handler?foo=bar&blam=blah
You can access those parameters from inside your AGI script. Much like you would if those were URL parameters on a CGI script.
my $foo = $self->param('foo');
input
Returns a hash containing the input from the AGI script.
my %hash = $self->input()
If given a key. It will return that particular value.
my $uniqueid = $self->input('uniqueid');
agi
Will return the Asterisk::AGI object.
process_request
This will process the agi request from asterisk.
dispatch_request
Method used to dispatch the FastAGI request.
child_init_hook
This is called by Net::Server during child initialization. This is the method to override if you are going to be creating database connections for instance.
sub child_init_hook {
my $self = shift;
$self->{server}{dbi} = DBI->connect();
}
SEE ALSO
Net::Server, http://asterisk.gnuinter.net/
AUTHOR
Jason Yates <jaywhy@gmail.com>
COPYRIGHT AND LICENSE
Copyright (C) 2006-2007 by Jason Yates
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.