ruby-agi 1.1.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +0 -9
- data/DOWNLOAD +1 -1
- data/INSTALL +1 -6
- data/README +10 -7
- data/Release-Notes +18 -9
- data/lib/ruby-agi/asterisk_variable.rb +2 -2
- data/lib/ruby-agi/command.rb +40 -37
- data/lib/ruby-agi/error.rb +3 -0
- data/lib/ruby-agi/return_status.rb +31 -92
- 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/test/unit.rb +37 -0
- metadata +36 -6
data/ChangeLog
CHANGED
@@ -1,12 +1,3 @@
|
|
1
|
-
2006-03-05
|
2
|
-
-- ruby-agi-1.1.2 released
|
3
|
-
-- bug # 3733 fixed.
|
4
|
-
-- AGI#initialize will make sure the above bug won't happen.
|
5
|
-
|
6
|
-
2006-02-08
|
7
|
-
-- method AsteriskVariable#init_caller_variable updated to have correct callerid
|
8
|
-
-- method ReturnStatus#timeout? updated
|
9
|
-
|
10
1
|
2006-01-16 (revision 23)
|
11
2
|
-- ruby-agi-1.1.0 released
|
12
3
|
-- method calleridnumber added and is generated from callerid
|
data/DOWNLOAD
CHANGED
data/INSTALL
CHANGED
@@ -1,10 +1,5 @@
|
|
1
1
|
I strongly suggest to install ruby-agi using gem,
|
2
|
-
|
3
|
-
To update your existing ruby-agi using gem, try
|
4
|
-
% gem update ruby-agi
|
5
|
-
|
6
|
-
If you don't have gem intalled on your computer, download it from here
|
7
|
-
http://www.rubygems.org
|
2
|
+
gem install ruby-agi
|
8
3
|
|
9
4
|
Alternatively, do
|
10
5
|
1. ruby extconf.rb
|
data/README
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
This library comes with absolutely no warranty.
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
I wanted to write couple of AGI scripts in ruby for myself.
|
4
|
+
But I didn't see any AGI library written in ruby available.
|
5
|
+
So, I decided to develop one and share with everybody.
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
Hopefully, you already understood I am not good at documentation.
|
8
|
+
I truely appolize for that.
|
9
|
+
If anybody want to give a hand to write documentation for this project would be greatly appreciated.
|
9
10
|
|
10
|
-
|
11
|
+
Project homepage: http://www.ruby-agi.org
|
12
|
+
|
13
|
+
Please feel free to email me with your feature request, bug report or any suggession.
|
11
14
|
|
12
15
|
Thank you,
|
13
16
|
Mohammad Khan,
|
14
|
-
email: info
|
17
|
+
email: info at beeplove dot com
|
data/Release-Notes
CHANGED
@@ -1,11 +1,20 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
1.1.0 (2006-01-17)
|
2
|
+
addition of method 'jump_to'
|
3
|
+
jump_to would take three arguments ex. jump_to(context, extension, priority)
|
4
|
+
enhanced callerid, calleridname and calleridnumber. calleridnumber is an addtional method to this release.
|
5
|
+
Regardless of Asterisk version above three caller variables would return uniform value.
|
6
|
+
Such as, callerid would return "John Smith" <1234567890> or empty string, if unidentified
|
7
|
+
calleridnumber would return number part of callerid (as string) ex. 1234567890 or empty string, if unidentified
|
8
|
+
calleridname would return name part of callerid ex. John Smith or emtpy string, if unidentified
|
9
|
+
|
10
|
+
1.0.2 (2006-01-09)
|
11
|
+
Because of a yaml bug in ruby-1.8.3, rubyforge server doesn't support any package that were built on ruby-1.8.3
|
12
|
+
This version is basically re-build of version 1.0.1 on ruby-1.8.4 instead of ruby-1.8.3
|
3
13
|
|
4
|
-
|
14
|
+
1.0.1 (2006-01-08)
|
15
|
+
This release have minor a minor change.
|
16
|
+
There have an example file in examples/call_log.rb
|
17
|
+
You can use call_log.rb to keep your incoming call history in syslog.
|
5
18
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
Thanks,
|
10
|
-
Mohammad Khan
|
11
|
-
info <AT> beeplove <DOT> com
|
19
|
+
1.0.0 (2006-01-08)
|
20
|
+
This is the first stable version of ruby-agi
|
@@ -75,8 +75,8 @@ class AsteriskVariable < AGI
|
|
75
75
|
def read_env(name)
|
76
76
|
if debug?
|
77
77
|
semaphore do
|
78
|
-
$stderr.puts " -- ruby-agi << Read asterisk variable '#{name}'"
|
79
|
-
$stderr.puts " -- ruby-agi >> Asterisk variable #{name} = #{env[name].to_s}"
|
78
|
+
$stderr.puts " -- ruby-agi-trunk << Read asterisk variable '#{name}'"
|
79
|
+
$stderr.puts " -- ruby-agi-trunk >> Asterisk variable #{name} = #{env[name].to_s}"
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
data/lib/ruby-agi/command.rb
CHANGED
@@ -36,12 +36,18 @@
|
|
36
36
|
require 'sync'
|
37
37
|
|
38
38
|
require 'ruby-agi/agi.rb'
|
39
|
-
require 'ruby-agi/return_status.rb'
|
40
39
|
require 'ruby-agi/error.rb'
|
40
|
+
require 'ruby-agi/return_status.rb'
|
41
41
|
|
42
42
|
class AGI
|
43
43
|
end
|
44
44
|
|
45
|
+
class ReturnStatus
|
46
|
+
end
|
47
|
+
|
48
|
+
class Answer < ReturnStatus
|
49
|
+
end
|
50
|
+
|
45
51
|
|
46
52
|
class Command < AGI
|
47
53
|
def initialize
|
@@ -63,7 +69,7 @@ class Command < AGI
|
|
63
69
|
public
|
64
70
|
def answer
|
65
71
|
cmd = "ANSWER"
|
66
|
-
rs = exec_command(cmd)
|
72
|
+
rs = exec_command(cmd, Answer)
|
67
73
|
raise CommandError, rs.to_s if rs.command_error?
|
68
74
|
return rs
|
69
75
|
end
|
@@ -85,7 +91,7 @@ class Command < AGI
|
|
85
91
|
public
|
86
92
|
def set_auto_hangup(secs=0)
|
87
93
|
cmd = "SET AUTOHANGUP #{secs.to_s}"
|
88
|
-
rs = exec_command(cmd)
|
94
|
+
rs = exec_command(cmd, SetAutoHangup)
|
89
95
|
raise CommandError, rs.to_s if rs.command_error?
|
90
96
|
return rs
|
91
97
|
end
|
@@ -120,7 +126,7 @@ class Command < AGI
|
|
120
126
|
end
|
121
127
|
|
122
128
|
cmd = "CHANNEL STATUS #{channel.to_s}"
|
123
|
-
rs = exec_command(cmd)
|
129
|
+
rs = exec_command(cmd, ChannelStatus)
|
124
130
|
raise CommandError, rs.to_s if rs.command_error?
|
125
131
|
return rs
|
126
132
|
end
|
@@ -146,7 +152,7 @@ class Command < AGI
|
|
146
152
|
options = ""
|
147
153
|
end
|
148
154
|
cmd = "EXEC #{application.to_s} #{options.to_s}"
|
149
|
-
rs = exec_command(cmd)
|
155
|
+
rs = exec_command(cmd, Exec)
|
150
156
|
raise CommandError, rs.to_s if rs.command_error?
|
151
157
|
return rs
|
152
158
|
end
|
@@ -179,7 +185,7 @@ class Command < AGI
|
|
179
185
|
|
180
186
|
cmd = "GET DATA #{filename.to_s} #{timeout.to_s} #{max_digit.to_s}"
|
181
187
|
|
182
|
-
rs = exec_command(cmd)
|
188
|
+
rs = exec_command(cmd, WaitForDigits)
|
183
189
|
raise CommandError, rs.to_s if rs.command_error?
|
184
190
|
return rs
|
185
191
|
end
|
@@ -201,7 +207,7 @@ class Command < AGI
|
|
201
207
|
public
|
202
208
|
def get_variable(name)
|
203
209
|
cmd = "GET VARIABLE #{name.to_s}"
|
204
|
-
rs = exec_command(cmd)
|
210
|
+
rs = exec_command(cmd, GetVariable)
|
205
211
|
raise CommandError, rs.to_s if rs.command_error?
|
206
212
|
return rs
|
207
213
|
end
|
@@ -226,7 +232,7 @@ class Command < AGI
|
|
226
232
|
end
|
227
233
|
|
228
234
|
cmd = "HANGUP #{channel.to_s}"
|
229
|
-
rs = exec_command(cmd)
|
235
|
+
rs = exec_command(cmd, Hangup)
|
230
236
|
raise CommandError, rs.to_s if rs.command_error?
|
231
237
|
return rs
|
232
238
|
end
|
@@ -245,7 +251,7 @@ class Command < AGI
|
|
245
251
|
public
|
246
252
|
def noop(msg)
|
247
253
|
cmd = "NOOP #{msg.to_s}"
|
248
|
-
rs = exec_command(cmd)
|
254
|
+
rs = exec_command(cmd, Noop)
|
249
255
|
raise CommandError, rs.to_s if rs.command_error?
|
250
256
|
return rs
|
251
257
|
end
|
@@ -273,7 +279,7 @@ class Command < AGI
|
|
273
279
|
raise(ArgumentError, "timeout need to be positive") if (timeout < 1)
|
274
280
|
|
275
281
|
cmd = "RECEIVE CHAR #{timeout.to_s}"
|
276
|
-
rs = exec_command(cmd)
|
282
|
+
rs = exec_command(cmd, ReceiveChar)
|
277
283
|
raise CommandError, rs.to_s if rs.command_error?
|
278
284
|
return rs
|
279
285
|
end
|
@@ -300,7 +306,7 @@ class Command < AGI
|
|
300
306
|
raise(ArgumentError, "timeout need to be positive") if (timeout < 1)
|
301
307
|
|
302
308
|
cmd = "RECEIVE TEXT #{timeout.to_s}"
|
303
|
-
rs = exec_command(cmd)
|
309
|
+
rs = exec_command(cmd, ReceiveText)
|
304
310
|
raise CommandError, rs.to_s if rs.command_error?
|
305
311
|
return rs
|
306
312
|
end
|
@@ -349,7 +355,7 @@ class Command < AGI
|
|
349
355
|
|
350
356
|
cmd = "RECORD FILE #{filename} #{format} #{escape_digits} #{timeout}"
|
351
357
|
cmd = "#{cmd} beep" if beep == true
|
352
|
-
rs = exec_command(cmd)
|
358
|
+
rs = exec_command(cmd, RecordFile)
|
353
359
|
raise CommandError, rs.to_s if rs.command_error?
|
354
360
|
return rs
|
355
361
|
end
|
@@ -377,7 +383,7 @@ class Command < AGI
|
|
377
383
|
escape_digits = sanitize_escape_digits(escape_digits)
|
378
384
|
|
379
385
|
cmd = "SAY DIGITS #{digit_string.to_s} #{escape_digits}"
|
380
|
-
rs = exec_command(cmd)
|
386
|
+
rs = exec_command(cmd, SayDigits)
|
381
387
|
raise CommandError, rs.to_s if rs.command_error?
|
382
388
|
return rs
|
383
389
|
end
|
@@ -403,7 +409,7 @@ class Command < AGI
|
|
403
409
|
def say_number(number, escape_digits=nil)
|
404
410
|
escape_digits = sanitize_escape_digits(escape_digits)
|
405
411
|
cmd = "SAY NUMBER #{number.to_s} #{escape_digits.to_s}"
|
406
|
-
rs = exec_command(cmd)
|
412
|
+
rs = exec_command(cmd, SayNumber)
|
407
413
|
raise CommandError, rs.to_s if rs.command_error?
|
408
414
|
return rs
|
409
415
|
end
|
@@ -429,7 +435,7 @@ class Command < AGI
|
|
429
435
|
def say_phonetic(string, escape_digits=nil)
|
430
436
|
escape_digits = sanitize_escape_digits(escape_digits)
|
431
437
|
cmd = "SAY PHONETIC #{string.to_s} #{escape_digits}"
|
432
|
-
rs = exec_command(cmd)
|
438
|
+
rs = exec_command(cmd, SayPhonetic)
|
433
439
|
raise CommandError, rs.to_s if rs.command_error?
|
434
440
|
return rs
|
435
441
|
end
|
@@ -455,7 +461,7 @@ class Command < AGI
|
|
455
461
|
def say_time(time=Time.now.to_i, escape_digits='#')
|
456
462
|
escape_digits = sanitize_escape_digits(escape_digits)
|
457
463
|
cmd = "SAY TIME #{time.to_s} #{escape_digits.to_s}"
|
458
|
-
rs = exec_command(cmd)
|
464
|
+
rs = exec_command(cmd, SayTime)
|
459
465
|
raise CommandError, rs.to_s if rs.command_error?
|
460
466
|
return rs
|
461
467
|
end
|
@@ -479,7 +485,7 @@ class Command < AGI
|
|
479
485
|
public
|
480
486
|
def send_image(image)
|
481
487
|
cmd = "SEND IMAGE #{image.to_s}"
|
482
|
-
rs = exec_command(cmd)
|
488
|
+
rs = exec_command(cmd, SendImage)
|
483
489
|
raise CommandError, rs.to_s if rs.command_error?
|
484
490
|
return rs
|
485
491
|
end
|
@@ -503,7 +509,7 @@ class Command < AGI
|
|
503
509
|
public
|
504
510
|
def send_text(text)
|
505
511
|
cmd = "SEND TEXT #{text.to_s}"
|
506
|
-
rs = exec_command(cmd)
|
512
|
+
rs = exec_command(cmd, SendText)
|
507
513
|
raise CommandError, rs.to_s if rs.command_error?
|
508
514
|
return rs
|
509
515
|
end
|
@@ -524,7 +530,7 @@ class Command < AGI
|
|
524
530
|
public
|
525
531
|
def set_caller_id(number)
|
526
532
|
cmd = "SET CALLERID #{number.to_s}"
|
527
|
-
rs = exec_command(cmd)
|
533
|
+
rs = exec_command(cmd, SetCallerID)
|
528
534
|
raise CommandError, rs.to_s if rs.command_error?
|
529
535
|
return rs
|
530
536
|
end
|
@@ -547,7 +553,7 @@ class Command < AGI
|
|
547
553
|
public
|
548
554
|
def set_context(context)
|
549
555
|
cmd = "SET CONTEXT #{context.to_s}"
|
550
|
-
rs = exec_command(cmd)
|
556
|
+
rs = exec_command(cmd, SetContext)
|
551
557
|
raise CommandError, rs.to_s if rs.command_error?
|
552
558
|
return rs
|
553
559
|
end
|
@@ -571,7 +577,7 @@ class Command < AGI
|
|
571
577
|
public
|
572
578
|
def set_extension(extension)
|
573
579
|
cmd = "SET EXTENSION #{extension.to_s}"
|
574
|
-
rs = exec_command(cmd)
|
580
|
+
rs = exec_command(cmd, SetExtension)
|
575
581
|
raise CommandError, rs.to_s if rs.command_error?
|
576
582
|
return rs
|
577
583
|
end
|
@@ -598,7 +604,7 @@ class Command < AGI
|
|
598
604
|
mode = 'OFF'
|
599
605
|
end
|
600
606
|
cmd = "SET MUSIC #{mode.to_s} #{moh_class.to_s}"
|
601
|
-
rs = exec_command(cmd)
|
607
|
+
rs = exec_command(cmd, SetMusic)
|
602
608
|
raise CommandError, rs.to_s if rs.command_error?
|
603
609
|
return rs
|
604
610
|
end
|
@@ -618,7 +624,7 @@ class Command < AGI
|
|
618
624
|
public
|
619
625
|
def set_priority(priority)
|
620
626
|
cmd = "SET PRIORITY #{priority.to_s}"
|
621
|
-
rs = exec_command(cmd)
|
627
|
+
rs = exec_command(cmd, SetPriority)
|
622
628
|
raise CommandError, rs.to_s if rs.command_error?
|
623
629
|
return rs
|
624
630
|
end
|
@@ -644,7 +650,7 @@ class Command < AGI
|
|
644
650
|
public
|
645
651
|
def set_variable(name, value)
|
646
652
|
cmd = "SET VARIABLE #{name.to_s} \"#{value.to_s}\""
|
647
|
-
rs = exec_command(cmd)
|
653
|
+
rs = exec_command(cmd, SetVariable)
|
648
654
|
raise CommandError, rs.to_s if rs.command_error?
|
649
655
|
return rs
|
650
656
|
end
|
@@ -678,7 +684,7 @@ class Command < AGI
|
|
678
684
|
escape_digits = sanitize_escape_digits(escape_digits)
|
679
685
|
|
680
686
|
cmd = "STREAM FILE #{filename.to_s} #{escape_digits}"
|
681
|
-
rs = exec_command(cmd)
|
687
|
+
rs = exec_command(cmd, StreamFile)
|
682
688
|
raise CommandError, rs.to_s if rs.command_error?
|
683
689
|
|
684
690
|
return rs
|
@@ -712,7 +718,7 @@ class Command < AGI
|
|
712
718
|
mode = 'OFF'
|
713
719
|
end
|
714
720
|
cmd = "TDD MODE #{mode.to_s}"
|
715
|
-
rs = exec_command(cmd)
|
721
|
+
rs = exec_command(cmd, TDDMode)
|
716
722
|
raise CommandError, rs.to_s if rs.command_error?
|
717
723
|
return rs
|
718
724
|
end
|
@@ -745,7 +751,7 @@ class Command < AGI
|
|
745
751
|
public
|
746
752
|
def verbose(message, level=3)
|
747
753
|
cmd = "VERBOSE \"#{message.to_s}\" #{level.to_s}"
|
748
|
-
rs = exec_command(cmd)
|
754
|
+
rs = exec_command(cmd, Verbose)
|
749
755
|
raise CommandError, rs.to_s if rs.command_error?
|
750
756
|
return rs
|
751
757
|
end
|
@@ -772,7 +778,7 @@ class Command < AGI
|
|
772
778
|
timeout = sanitize_timeout(timeout)
|
773
779
|
|
774
780
|
cmd = "WAIT FOR DIGIT #{timeout.to_s}"
|
775
|
-
rs = exec_command(cmd)
|
781
|
+
rs = exec_command(cmd, WaitForDigit)
|
776
782
|
raise CommandError, rs.to_s if rs.command_error?
|
777
783
|
return rs
|
778
784
|
end
|
@@ -823,14 +829,8 @@ class Command < AGI
|
|
823
829
|
return rs
|
824
830
|
end
|
825
831
|
|
826
|
-
#private
|
827
|
-
#def escape(str)
|
828
|
-
# rxp = Regexp.new(/\"/)
|
829
|
-
# return str.gsub(rxp, '\"')
|
830
|
-
#end
|
831
|
-
|
832
832
|
protected
|
833
|
-
def exec_command(cmd)
|
833
|
+
def exec_command(cmd, return_status=nil)
|
834
834
|
rs = nil
|
835
835
|
begin
|
836
836
|
semaphore do
|
@@ -838,8 +838,11 @@ class Command < AGI
|
|
838
838
|
$stdout.puts cmd
|
839
839
|
responses = $stdin.gets
|
840
840
|
$stderr.puts " -- ruby-agi >> #{responses}" if debug?
|
841
|
-
|
842
|
-
|
841
|
+
if return_status.nil?
|
842
|
+
rs = ReturnStatus.new(cmd, responses)
|
843
|
+
else
|
844
|
+
rs = return_status.new(cmd, responses)
|
845
|
+
end
|
843
846
|
end
|
844
847
|
|
845
848
|
rescue Errno::EPIPE
|
data/lib/ruby-agi/error.rb
CHANGED
@@ -1,92 +1,31 @@
|
|
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
|
-
@result = nil
|
33
|
-
@digit = nil
|
34
|
-
@digits = nil
|
35
|
-
@return_code = nil
|
36
|
-
@command_error = false
|
37
|
-
|
38
|
-
if message.nil?
|
39
|
-
@messsage = "No responses !!"
|
40
|
-
else
|
41
|
-
str = @message.split(' ')
|
42
|
-
@return_code = str[0]
|
43
|
-
if @return_code == '200'
|
44
|
-
@result = str[1].split('=')[1]
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
public
|
50
|
-
def to_s
|
51
|
-
return @command.to_s + ' >> ' + @message.to_s
|
52
|
-
end
|
53
|
-
|
54
|
-
public
|
55
|
-
def result
|
56
|
-
return @result.to_s
|
57
|
-
end
|
58
|
-
|
59
|
-
public
|
60
|
-
def digit
|
61
|
-
if (@result == '0')
|
62
|
-
return nil
|
63
|
-
else
|
64
|
-
return @result.to_i.chr
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
public
|
69
|
-
def digits
|
70
|
-
return @result.to_s
|
71
|
-
end
|
72
|
-
|
73
|
-
public
|
74
|
-
def message
|
75
|
-
return @message.to_s
|
76
|
-
end
|
77
|
-
|
78
|
-
public
|
79
|
-
def command_error?
|
80
|
-
return (result.nil? or (not (@return_code == '200')))
|
81
|
-
end
|
82
|
-
|
83
|
-
public
|
84
|
-
def timeout?
|
85
|
-
rgx = Regexp.new(/\(timeout\)/)
|
86
|
-
if rgx.match(@message)
|
87
|
-
return true
|
88
|
-
else
|
89
|
-
return false
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
1
|
+
require 'ruby-agi/rs/return_status.rb'
|
2
|
+
require 'ruby-agi/rs/answer.rb'
|
3
|
+
require 'ruby-agi/rs/answer.rb'
|
4
|
+
require 'ruby-agi/rs/channel_status.rb'
|
5
|
+
require 'ruby-agi/rs/exec.rb'
|
6
|
+
require 'ruby-agi/rs/get_variable.rb'
|
7
|
+
require 'ruby-agi/rs/hangup.rb'
|
8
|
+
require 'ruby-agi/rs/noop.rb'
|
9
|
+
require 'ruby-agi/rs/receive_char.rb'
|
10
|
+
require 'ruby-agi/rs/receive_text.rb'
|
11
|
+
require 'ruby-agi/rs/record_file.rb'
|
12
|
+
require 'ruby-agi/rs/return_status.rb'
|
13
|
+
require 'ruby-agi/rs/say_digits.rb'
|
14
|
+
require 'ruby-agi/rs/say_number.rb'
|
15
|
+
require 'ruby-agi/rs/say_phonetic.rb'
|
16
|
+
require 'ruby-agi/rs/say_time.rb'
|
17
|
+
require 'ruby-agi/rs/send_image.rb'
|
18
|
+
require 'ruby-agi/rs/send_text.rb'
|
19
|
+
require 'ruby-agi/rs/set_auto_hangup.rb'
|
20
|
+
require 'ruby-agi/rs/set_caller_id.rb'
|
21
|
+
require 'ruby-agi/rs/set_context.rb'
|
22
|
+
require 'ruby-agi/rs/set_extension.rb'
|
23
|
+
require 'ruby-agi/rs/set_music.rb'
|
24
|
+
require 'ruby-agi/rs/set_priority.rb'
|
25
|
+
require 'ruby-agi/rs/set_variable.rb'
|
26
|
+
require 'ruby-agi/rs/stream_file.rb'
|
27
|
+
require 'ruby-agi/rs/tdd_mode.rb'
|
28
|
+
require 'ruby-agi/rs/verbose.rb'
|
29
|
+
require 'ruby-agi/rs/wait_for_digit.rb'
|
30
|
+
require 'ruby-agi/rs/wait_for_digits.rb'
|
31
|
+
require 'ruby-agi/rs/'
|