Asterisk-AMI
view release on metacpan or search on metacpan
lib/Asterisk/AMI/Common.pm view on Meta::CPAN
originate ( CHANNEL, CONTEXT, EXTEN [, CALLERID, CTIMEOUT, TIMEOUT ] )
Attempts to dial CHANNEL and then drops it into EXTEN@CONTEXT in the dialplan. Optionally a CALLERID can be provided.
CTIMEOUT is optional and determines how long the call will dial/ring for in seconds. TIMEOUT is optional.
CTIMEOUT + TIMEOUT will be used for the command timeout. For example if CTIMEOUT is 30 seconds and TIMEOUT is 5 seconds, the entire
command will timeout after 35 seconds.
Returns 1 on success 0 on failure, or undef on error or timeout.
WARNING: This method can block for a very long time (CTIMEOUT + TIMEOUT).
originate_async ( CHANNEL, CONTEXT, EXTEN [, CALLERID, CTIMEOUT, TIMEOUT ] )
Attempts to dial CHANNEL and then drops it into EXTEN@CONTEXT in the dialplan asynchronously. Optionally a CALLERID can be provided.
CTIMEOUT is optional and determines how long the call will dial/ring for in seconds. TIMEOUT is optional and only affects how long we will
wait for the initial response from Asterisk indicating if the call has been queued.
Returns 1 if the call was successfully queued, 0 on failure, or undef on error or timeout.
WARNING: A successfully queued call does not mean the call completed or even originated.
=head1 See Also
Asterisk::AMI, Asterisk::AMI::Common::Dev
=head1 AUTHOR
Ryan Bullock (rrb3942@gmail.com)
=head1 BUG REPORTING AND FEEBACK
Please report any bugs or errors to our github issue tracker at http://github.com/rrb3942/perl-Asterisk-AMI/issues
or the cpan request tracker at https://rt.cpan.org/Public/Bug/Report.html?Queue=perl-Asterisk-AMI
=head1 LICENSE
Copyright (C) 2011 by Ryan Bullock (rrb3942@gmail.com)
This module is free software. You can redistribute it and/or
modify it under the terms of the Artistic License 2.0.
This program is distributed in the hope that it will be useful,
but without any warranty; without even the implied warranty of
merchantability or fitness for a particular purpose.
=cut
package Asterisk::AMI::Common;
use strict;
use warnings;
use parent qw(Asterisk::AMI);
use version 0.77; our $VERSION = version->declare("v0.2.8");
sub new {
my ($class, %options) = @_;
return $class->SUPER::new(%options);
}
sub attended_transfer {
my ($self, $channel, $exten, $context, $timeout) = @_;
return $self->simple_action({ Action => 'Atxfer',
Channel => $channel,
Exten => $exten,
Context => $context,
Priority => 1 }, $timeout);
}
sub bridge {
my ($self, $chan1, $chan2, $timeout) = @_;
return $self->simple_action({ Action => 'Bridge',
Channel1 => $chan1,
Channel2 => $chan2,
Tone => 'Yes'}, $timeout);
}
#Returns a hash
sub commands {
my ($self, $timeout) = @_;
my $action = $self->action({ Action => 'ListCommands' }, $timeout);
#Early bail out on bad response
return unless ($action->{'GOOD'});
my %commands;
while (my ($cmd, $desc) = each %{$action->{'PARSED'}}) {
if ($desc =~ s/\s*\(Priv:\ (.+)\)$//x) {
my @privs = split /,/x,$1;
$commands{$cmd}->{'Priv'} = \@privs;
}
$commands{$cmd}->{'Desc'} = $desc;
}
return \%commands;
}
sub db_get {
my ($self, $family, $key, $timeout) = @_;
my $action = $self->action({ Action => 'DBGet',
Family => $family,
Key => $key }, $timeout);
if ($action->{'GOOD'}) {
return $action->{'EVENTS'}->[0]->{'Val'};
}
( run in 1.728 second using v1.01-cache-2.11-cpan-364913b4093 )