redial-ruby-agi 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +44 -0
- data/LICENSE +222 -0
- data/README.md +25 -0
- data/Rakefile +20 -0
- data/VERSION +1 -0
- data/examples/call_log.rb +18 -0
- data/lib/ruby-agi.rb +5 -0
- data/lib/ruby-agi/agi.rb +891 -0
- data/lib/ruby-agi/asterisk_variable.rb +242 -0
- data/lib/ruby-agi/command.rb +911 -0
- data/lib/ruby-agi/error.rb +48 -0
- data/lib/ruby-agi/return_status.rb +31 -0
- data/lib/ruby-agi/rs/answer.rb +68 -0
- data/lib/ruby-agi/rs/channel_status.rb +127 -0
- data/lib/ruby-agi/rs/exec.rb +69 -0
- data/lib/ruby-agi/rs/get_variable.rb +76 -0
- data/lib/ruby-agi/rs/hangup.rb +76 -0
- data/lib/ruby-agi/rs/noop.rb +68 -0
- data/lib/ruby-agi/rs/receive_char.rb +112 -0
- data/lib/ruby-agi/rs/receive_text.rb +73 -0
- data/lib/ruby-agi/rs/record_file.rb +184 -0
- data/lib/ruby-agi/rs/result.rb +47 -0
- data/lib/ruby-agi/rs/return_status.rb +98 -0
- data/lib/ruby-agi/rs/say_digits.rb +85 -0
- data/lib/ruby-agi/rs/say_number.rb +88 -0
- data/lib/ruby-agi/rs/say_phonetic.rb +88 -0
- data/lib/ruby-agi/rs/say_time.rb +90 -0
- data/lib/ruby-agi/rs/send_image.rb +83 -0
- data/lib/ruby-agi/rs/send_text.rb +83 -0
- data/lib/ruby-agi/rs/set_auto_hangup.rb +69 -0
- data/lib/ruby-agi/rs/set_caller_id.rb +72 -0
- data/lib/ruby-agi/rs/set_context.rb +71 -0
- data/lib/ruby-agi/rs/set_extension.rb +72 -0
- data/lib/ruby-agi/rs/set_music.rb +71 -0
- data/lib/ruby-agi/rs/set_priority.rb +69 -0
- data/lib/ruby-agi/rs/set_variable.rb +76 -0
- data/lib/ruby-agi/rs/stream_file.rb +138 -0
- data/lib/ruby-agi/rs/tdd_mode.rb +95 -0
- data/lib/ruby-agi/rs/verbose.rb +73 -0
- data/lib/ruby-agi/rs/wait_for_digit.rb +90 -0
- data/lib/ruby-agi/rs/wait_for_digits.rb +88 -0
- data/ruby-agi.gemspec +51 -0
- data/test/unit.rb +37 -0
- metadata +94 -0
@@ -0,0 +1,71 @@
|
|
1
|
+
#
|
2
|
+
# File: set_music.rb
|
3
|
+
#
|
4
|
+
# ruby-agi: Ruby Language API for Asterisk
|
5
|
+
#
|
6
|
+
# Copyright (C) <2006> Mohammad Khan <info@beeplove.com>
|
7
|
+
#
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
#
|
22
|
+
|
23
|
+
require 'ruby-agi/rs/return_status'
|
24
|
+
|
25
|
+
#
|
26
|
+
# Enables/Disables the music on hold generator.
|
27
|
+
#
|
28
|
+
# Command Reference: SET MUSIC <on|off> <class>
|
29
|
+
#
|
30
|
+
# - mode : on or off
|
31
|
+
# - moh_class : name of the music on hold class
|
32
|
+
# 'default' for not provided or nil
|
33
|
+
#
|
34
|
+
# 200 result=0
|
35
|
+
#
|
36
|
+
|
37
|
+
|
38
|
+
class ReturnStatus
|
39
|
+
end
|
40
|
+
|
41
|
+
class SetMusic < ReturnStatus
|
42
|
+
|
43
|
+
def initialize(command, response)
|
44
|
+
super(command, response)
|
45
|
+
end
|
46
|
+
|
47
|
+
def success?
|
48
|
+
if @is_success.nil?
|
49
|
+
if result == '0'
|
50
|
+
@is_success = true
|
51
|
+
else
|
52
|
+
@is_success = false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
return @is_success
|
57
|
+
end
|
58
|
+
|
59
|
+
def failure?
|
60
|
+
return (not failure?)
|
61
|
+
end
|
62
|
+
|
63
|
+
def error?
|
64
|
+
return command_error?
|
65
|
+
end
|
66
|
+
|
67
|
+
def response
|
68
|
+
return message
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#
|
2
|
+
# File: set_priority.rb
|
3
|
+
#
|
4
|
+
# ruby-agi: Ruby Language API for Asterisk
|
5
|
+
#
|
6
|
+
# Copyright (C) <2006> Mohammad Khan <info@beeplove.com>
|
7
|
+
#
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
#
|
22
|
+
|
23
|
+
require 'ruby-agi/rs/return_status'
|
24
|
+
|
25
|
+
#
|
26
|
+
# Changes the priority for continuation upon exiting the application.
|
27
|
+
#
|
28
|
+
# Command Reference: SET PRIORITY <num>
|
29
|
+
#
|
30
|
+
# - priority : number of priority
|
31
|
+
#
|
32
|
+
# 200 result=0
|
33
|
+
#
|
34
|
+
|
35
|
+
|
36
|
+
class ReturnStatus
|
37
|
+
end
|
38
|
+
|
39
|
+
class SetPriority < ReturnStatus
|
40
|
+
|
41
|
+
def initialize(command, response)
|
42
|
+
super(command, response)
|
43
|
+
end
|
44
|
+
|
45
|
+
def success?
|
46
|
+
if @is_success.nil?
|
47
|
+
if result == '0'
|
48
|
+
@is_success = true
|
49
|
+
else
|
50
|
+
@is_success = false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
return @is_success
|
55
|
+
end
|
56
|
+
|
57
|
+
def failure?
|
58
|
+
return (not failure?)
|
59
|
+
end
|
60
|
+
|
61
|
+
def error?
|
62
|
+
return command_error?
|
63
|
+
end
|
64
|
+
|
65
|
+
def response
|
66
|
+
return message
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
#
|
2
|
+
# File: set_variable.rb
|
3
|
+
#
|
4
|
+
# ruby-agi: Ruby Language API for Asterisk
|
5
|
+
#
|
6
|
+
# Copyright (C) <2006> Mohammad Khan <info@beeplove.com>
|
7
|
+
#
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
#
|
22
|
+
|
23
|
+
require 'ruby-agi/rs/return_status'
|
24
|
+
|
25
|
+
#
|
26
|
+
# set variable: Sets a channel variable
|
27
|
+
# These variables live in the channel Asterisk creates
|
28
|
+
# when you pickup a phone and as such they are both local
|
29
|
+
# and temporary. Variables created in one channel can not
|
30
|
+
# be accessed by another channel. When you hang up the phone,
|
31
|
+
# the channel is deleted and any variables in that channel are deleted as well.
|
32
|
+
#
|
33
|
+
# Command Reference: SET VARIABLE <variablename> <value>
|
34
|
+
#
|
35
|
+
# - variablename : name of the variable
|
36
|
+
# - value : value to be set for the variable
|
37
|
+
#
|
38
|
+
#
|
39
|
+
# 200 result=1
|
40
|
+
#
|
41
|
+
|
42
|
+
|
43
|
+
class ReturnStatus
|
44
|
+
end
|
45
|
+
|
46
|
+
class SetVariable < ReturnStatus
|
47
|
+
|
48
|
+
def initialize(command, response)
|
49
|
+
super(command, response)
|
50
|
+
end
|
51
|
+
|
52
|
+
def success?
|
53
|
+
if @is_success.nil?
|
54
|
+
if result == '1'
|
55
|
+
@is_success = true
|
56
|
+
else
|
57
|
+
@is_success = false
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
return @is_success
|
62
|
+
end
|
63
|
+
|
64
|
+
def failure?
|
65
|
+
return (not failure?)
|
66
|
+
end
|
67
|
+
|
68
|
+
def error?
|
69
|
+
return command_error?
|
70
|
+
end
|
71
|
+
|
72
|
+
def response
|
73
|
+
return message
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
#
|
2
|
+
# File: stream_file.rb
|
3
|
+
#
|
4
|
+
# ruby-agi: Ruby Language API for Asterisk
|
5
|
+
#
|
6
|
+
# Copyright (C) <2006> Mohammad Khan <info@beeplove.com>
|
7
|
+
#
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
#
|
22
|
+
|
23
|
+
require 'ruby-agi/rs/return_status'
|
24
|
+
|
25
|
+
#
|
26
|
+
# stream file: Sends audio file on channel
|
27
|
+
# Send the given file, allowing playback to be interrupted by the given digits, if any.
|
28
|
+
# Use double quotes for the digits if you wish none to be permitted.
|
29
|
+
# If sample offset is provided then the audio will seek to sample offset before play starts.
|
30
|
+
# Remember, the file extension must not be included in the filename.
|
31
|
+
#
|
32
|
+
# Command Reference: STREAM FILE <filename> <escape digits> [sample offset]
|
33
|
+
#
|
34
|
+
# - filename : location of the file to be played
|
35
|
+
# - escape_digit: digit to be pressed to escape from playback
|
36
|
+
#
|
37
|
+
# failure: 200 result=-1 endpos=<sample offset>
|
38
|
+
# failure on open: 200 result=0 endpos=0
|
39
|
+
# success: 200 result=0 endpos=<offset>
|
40
|
+
# digit pressed: 200 result=<digit> endpos=<offset>
|
41
|
+
# <offset> is the stream position streaming stopped. If it equals <sample offset> there was probably an error.
|
42
|
+
# <digit> is the ascii code for the digit pressed.
|
43
|
+
#
|
44
|
+
|
45
|
+
class ReturnStatus
|
46
|
+
end
|
47
|
+
|
48
|
+
class StreamFile < ReturnStatus
|
49
|
+
|
50
|
+
def initialize(command, response)
|
51
|
+
super(command, response)
|
52
|
+
end
|
53
|
+
|
54
|
+
def failure?
|
55
|
+
if @is_failure.nil?
|
56
|
+
if result == '-1'
|
57
|
+
@is_failure = true
|
58
|
+
elsif result == '0'
|
59
|
+
if offset == '0'
|
60
|
+
@is_failure = true
|
61
|
+
@is_failure_on_open = true
|
62
|
+
@is_success = false
|
63
|
+
else
|
64
|
+
@is_success = true
|
65
|
+
end
|
66
|
+
else
|
67
|
+
@is_failure = false
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
return @is_failure
|
72
|
+
end
|
73
|
+
|
74
|
+
def success?
|
75
|
+
if @is_success.nil?
|
76
|
+
if ((not failure?) and (offset.to_i > 0))
|
77
|
+
@is_success = true
|
78
|
+
else
|
79
|
+
@is_success = false
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
return @is_success
|
84
|
+
end
|
85
|
+
|
86
|
+
def interrupted?
|
87
|
+
if @is_interrupted.nil?
|
88
|
+
@is_interrupted = false
|
89
|
+
if ((success?) and (result.to_i > 0))
|
90
|
+
@is_interrupted = true
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
return @is_interrupted
|
95
|
+
end
|
96
|
+
|
97
|
+
def offset
|
98
|
+
if @offset.nil?
|
99
|
+
rgx = Regexp.new(/^endpos/)
|
100
|
+
response.split(' ').each do | pair |
|
101
|
+
if rgx.match(pair)
|
102
|
+
@offset = pair.split('=').last
|
103
|
+
end
|
104
|
+
end
|
105
|
+
@offset = '' if @offset.nil?
|
106
|
+
end
|
107
|
+
|
108
|
+
return @offset
|
109
|
+
end
|
110
|
+
|
111
|
+
def digit
|
112
|
+
if @digit.nil?
|
113
|
+
if interrupted?
|
114
|
+
@digit = result.to_i.chr
|
115
|
+
end
|
116
|
+
@digit = '' if @digit.nil?
|
117
|
+
end
|
118
|
+
|
119
|
+
return @digit
|
120
|
+
end
|
121
|
+
|
122
|
+
def error
|
123
|
+
if random_error?
|
124
|
+
return result
|
125
|
+
else
|
126
|
+
return ''
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
def error?
|
131
|
+
return command_error?
|
132
|
+
end
|
133
|
+
|
134
|
+
def response
|
135
|
+
return message
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
#
|
2
|
+
# File: tdd_mode.rb
|
3
|
+
#
|
4
|
+
# ruby-agi: Ruby Language API for Asterisk
|
5
|
+
#
|
6
|
+
# Copyright (C) <2006> Mohammad Khan <info@beeplove.com>
|
7
|
+
#
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
#
|
22
|
+
|
23
|
+
require 'ruby-agi/rs/return_status'
|
24
|
+
|
25
|
+
#
|
26
|
+
# tdd mode: Activates TDD mode on channels supporting it, to enable communication with TDDs.
|
27
|
+
# Enable/Disable TDD transmission/reception on a channel.
|
28
|
+
# This function is currently (01July2005) only supported on Zap channels.
|
29
|
+
# As of 02July2005, this function never returns 0 (Not Capable).
|
30
|
+
# If it fails for any reason, -1 (Failure) will be returned, otherwise 1 (Success) will be returned.
|
31
|
+
# The capability for returning 0 if the channel is not capable of TDD MODE is a future plan.
|
32
|
+
#
|
33
|
+
# Command Reference: TDD MODE <on|off|mate>
|
34
|
+
#
|
35
|
+
# failure: 200 result=-1
|
36
|
+
# not capable: 200 result=0
|
37
|
+
# success: 200 result=1
|
38
|
+
#
|
39
|
+
|
40
|
+
class ReturnStatus
|
41
|
+
end
|
42
|
+
|
43
|
+
class TDDMode < ReturnStatus
|
44
|
+
|
45
|
+
def initialize(command, response)
|
46
|
+
super(command, response)
|
47
|
+
end
|
48
|
+
|
49
|
+
def success?
|
50
|
+
if @is_success.nil?
|
51
|
+
if result == '1'
|
52
|
+
@is_success = true
|
53
|
+
@is_capable = true
|
54
|
+
@is_failure = false
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
return @is_success
|
59
|
+
end
|
60
|
+
|
61
|
+
def failure?
|
62
|
+
if @is_failure.nil?
|
63
|
+
if result == '-1'
|
64
|
+
@is_failure = true
|
65
|
+
@is_capable = true
|
66
|
+
@is_success = false
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
return @is_failure
|
71
|
+
end
|
72
|
+
|
73
|
+
def capable?
|
74
|
+
if @is_capable.nil?
|
75
|
+
if result == '0'
|
76
|
+
@is_capable = false
|
77
|
+
@is_success = false
|
78
|
+
@is_failure = true
|
79
|
+
else
|
80
|
+
@is_capable = true
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
return @is_capable
|
85
|
+
end
|
86
|
+
|
87
|
+
def error?
|
88
|
+
return command_error?
|
89
|
+
end
|
90
|
+
|
91
|
+
def response
|
92
|
+
return message
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|