IVR.pm
2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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;