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.
Files changed (44) hide show
  1. data/ChangeLog +44 -0
  2. data/LICENSE +222 -0
  3. data/README.md +25 -0
  4. data/Rakefile +20 -0
  5. data/VERSION +1 -0
  6. data/examples/call_log.rb +18 -0
  7. data/lib/ruby-agi.rb +5 -0
  8. data/lib/ruby-agi/agi.rb +891 -0
  9. data/lib/ruby-agi/asterisk_variable.rb +242 -0
  10. data/lib/ruby-agi/command.rb +911 -0
  11. data/lib/ruby-agi/error.rb +48 -0
  12. data/lib/ruby-agi/return_status.rb +31 -0
  13. data/lib/ruby-agi/rs/answer.rb +68 -0
  14. data/lib/ruby-agi/rs/channel_status.rb +127 -0
  15. data/lib/ruby-agi/rs/exec.rb +69 -0
  16. data/lib/ruby-agi/rs/get_variable.rb +76 -0
  17. data/lib/ruby-agi/rs/hangup.rb +76 -0
  18. data/lib/ruby-agi/rs/noop.rb +68 -0
  19. data/lib/ruby-agi/rs/receive_char.rb +112 -0
  20. data/lib/ruby-agi/rs/receive_text.rb +73 -0
  21. data/lib/ruby-agi/rs/record_file.rb +184 -0
  22. data/lib/ruby-agi/rs/result.rb +47 -0
  23. data/lib/ruby-agi/rs/return_status.rb +98 -0
  24. data/lib/ruby-agi/rs/say_digits.rb +85 -0
  25. data/lib/ruby-agi/rs/say_number.rb +88 -0
  26. data/lib/ruby-agi/rs/say_phonetic.rb +88 -0
  27. data/lib/ruby-agi/rs/say_time.rb +90 -0
  28. data/lib/ruby-agi/rs/send_image.rb +83 -0
  29. data/lib/ruby-agi/rs/send_text.rb +83 -0
  30. data/lib/ruby-agi/rs/set_auto_hangup.rb +69 -0
  31. data/lib/ruby-agi/rs/set_caller_id.rb +72 -0
  32. data/lib/ruby-agi/rs/set_context.rb +71 -0
  33. data/lib/ruby-agi/rs/set_extension.rb +72 -0
  34. data/lib/ruby-agi/rs/set_music.rb +71 -0
  35. data/lib/ruby-agi/rs/set_priority.rb +69 -0
  36. data/lib/ruby-agi/rs/set_variable.rb +76 -0
  37. data/lib/ruby-agi/rs/stream_file.rb +138 -0
  38. data/lib/ruby-agi/rs/tdd_mode.rb +95 -0
  39. data/lib/ruby-agi/rs/verbose.rb +73 -0
  40. data/lib/ruby-agi/rs/wait_for_digit.rb +90 -0
  41. data/lib/ruby-agi/rs/wait_for_digits.rb +88 -0
  42. data/ruby-agi.gemspec +51 -0
  43. data/test/unit.rb +37 -0
  44. 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