freeswitch/libs/esl/perl/ESL/IVR.pm
2011-04-08 16:33:17 -07:00

117 lines
2.0 KiB
Perl

package ESL::IVR;
use ESL;
use Data::Dumper;
sub new($$) {
my $proto = shift;
my $class = ref($proto) || $proto;
my $self = {};
$self->{_esl} = new ESL::ESLconnection(fileno(STDIN));
$self->{_info} = $self->{_esl}->getInfo();
$self->{_uuid} = $self->{_info}->getHeader("unique-id");
return bless($self, $class);
}
sub getHeader($;) {
my $self = shift;
return $self->{_info} ? $self->{_info}->getHeader(shift) : undef;
}
sub execute($;) {
my $self = shift;
return $self->{_esl}->execute(@_);
}
sub api($;) {
my $self = shift;
return $self->{_esl}->api(@_);
}
sub disconnect($;) {
my $self = shift;
return $self->{_esl}->disconnect(@_);
}
sub getVar($;) {
my $self = shift;
my ($var) = @_;
my $e = $self->api("uuid_getvar", "$self->{_uuid} $var");
my $input;
if ($e) {
$input = $e->getBody();
if ($input && $input eq "_undef_") {
$input = undef;
}
}
return $input;
}
sub setVar($;) {
my $self = shift;
my ($var, $val) = @_;
my $e = $self->api("uuid_setvar", "$self->{_uuid} $var $val");
my $input;
if ($e) {
$input = $e->getBody() . "\n";
if ($input eq "_undef_") {
$input = undef;
}
}
chomp $input;
return $input;
}
sub playAndGetDigits($;) {
my $self = shift;
my ($min, $max, $tries, $to, $term, $file, $invalid_file, $var, $regex, $digit_timeout) = @_;
if (!$self->{_esl}->connected()) {
return undef;
}
$self->execute("play_and_get_digits", "$min $max $tries $to $term $file $invalid_file $var $regex $digit_timeout");
return $self->getVar($var);
}
sub read($;) {
my $self = shift;
my ($min, $max, $file, $var, $to, $term) = @_;
if (!$self->{_esl}->connected()) {
return undef;
}
$self->execute("read", "$min $max $file $var $to $term");
return $self->getVar($var);
}
sub playback($;) {
my $self = shift;
my ($file) = @_;
if (!$self->{_esl}->connected()) {
return undef;
}
$self->execute("playback", $file);
return $self->getVar("playback_terminators_used");
}
1;