AnyEvent-FreeSWITCH
view release on metacpan or search on metacpan
lib/AnyEvent/FreeSWITCH.pm view on Meta::CPAN
package AnyEvent::FreeSWITCH;
use 5.006;
use AnyEvent;
use Object::Event;
use ESL;
use Carp;
use strict;
use warnings;
our @ISA = qw/Object::Event/;
=head1 NAME
AnyEvent::FreeSWITCH - The great new AnyEvent::FreeSWITCH!
=head1 VERSION
Version 0.01
=cut
our $VERSION = '0.01';
=head1 SYNOPSIS
Quick summary of what the module does.
Perhaps a little code snippet.
use AnyEvent::FreeSWITCH;
my $foo = AnyEvent::FreeSWITCH->new();
...
=head1 SUBROUTINES/METHODS
=head2 new
=cut
sub new {
my ($this, %args) = @_;
my $class = ref($this) || $this;
my $self = bless(\%args, $class);
$self->{host} ||= '127.0.0.1';
$self->{port} ||= '8021';
$self->{password} ||= 'ClueCon';
$self->{events} ||= 'all';
return $self;
}
=head2 connect
=cut
sub connect {
my $self = shift;
$self->{esl} = new ESL::ESLconnection(
$self->{host},
$self->{port},
$self->{password},
);
if ( $self->is_connected() ) {
$self->event('connected');
$self->{io} = AnyEvent->io(
fh => $self->{esl}->socketDescriptor(),
poll => "r",
cb => sub { $self->recv_events(); },
);
} else {
$self->event('error_connection');
}
$self->{esl}->events('plain', $self->{events});
}
=head2 recv_events
=cut
sub recv_events {
my $self = shift;
my $e = $self->{esl}->recvEventTimed(0);
if( defined $e ) {
$self->event('recv_event', $e->getType(), $e->serialize('json'));
$self->event('event_'. $e->getType(), $e->serialize('json'));
}
}
=head2 is_connected
=cut
sub is_connected {
my $self = shift;
return $self->{esl}->connected();
}
=head2 api
=cut
sub api {
my $self = shift;
my $command = shift;
my $args = shift;
if ( not $self->is_connected() ) {
$self->event('connection_error', "Error trying to run api command: $command $args");
return undef;
}
my $e = $self->{esl}->api($command, $args);
return $e->getBody();
}
=head1 AUTHOR
( run in 3.348 seconds using v1.01-cache-2.11-cpan-df04353d9ac )