adhearsion-asterisk 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# develop
|
2
2
|
|
3
|
+
# v0.2.0 - 2012-03-22
|
4
|
+
* Update to work with Adhearsion 2.0.0.rc2
|
5
|
+
* Remove overloaded `CallController#play` and `#play!` - we should use Adhearsion's core auto-detection
|
6
|
+
|
3
7
|
# v0.1.3 - 2012-01-30
|
4
8
|
* Update to use Adhearsion's changed Plugin semantics (no more dialplan hooks)
|
5
9
|
* Monkeypatch Adhearsion::CallController with Asterisk-specific overloads
|
data/adhearsion-asterisk.gemspec
CHANGED
@@ -18,15 +18,15 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_runtime_dependency %q<adhearsion>, [">= 2.0.0.
|
21
|
+
s.add_runtime_dependency %q<adhearsion>, [">= 2.0.0.rc2"]
|
22
22
|
s.add_runtime_dependency %q<activesupport>, [">= 3.0.10"]
|
23
23
|
|
24
|
-
s.add_development_dependency %q<bundler>, ["
|
24
|
+
s.add_development_dependency %q<bundler>, [">= 1.0.0"]
|
25
25
|
s.add_development_dependency %q<rspec>, [">= 2.5.0"]
|
26
26
|
s.add_development_dependency %q<ci_reporter>, [">= 1.6.3"]
|
27
27
|
s.add_development_dependency %q<simplecov>, [">= 0"]
|
28
28
|
s.add_development_dependency %q<simplecov-rcov>, [">= 0"]
|
29
|
-
s.add_development_dependency %q<yard>, ["
|
29
|
+
s.add_development_dependency %q<yard>, [">= 0.6.0"]
|
30
30
|
s.add_development_dependency %q<rake>, [">= 0"]
|
31
31
|
s.add_development_dependency %q<mocha>, [">= 0"]
|
32
32
|
s.add_development_dependency %q<bones>
|
@@ -4,55 +4,6 @@ module Adhearsion
|
|
4
4
|
# Monkeypatches to Adhearsion for Asterisk-specific functionality.
|
5
5
|
#
|
6
6
|
class CallController
|
7
|
-
# Plays the specified sound file names. This method will handle Time/DateTime objects (e.g. Time.now),
|
8
|
-
# Fixnums (e.g. 1000), Strings which are valid Fixnums (e.g "123"), and direct sound files. When playing
|
9
|
-
# numbers, Adhearsion assumes you're saying the number, not the digits. For example, play("100")
|
10
|
-
# is pronounced as "one hundred" instead of "one zero zero". To specify how the Date/Time objects are said
|
11
|
-
# pass in as an array with the first parameter as the Date/Time/DateTime object along with a hash with the
|
12
|
-
# additional options. See play_time for more information.
|
13
|
-
#
|
14
|
-
# Note: it is not necessary to supply a sound file extension; Asterisk will try to find a sound
|
15
|
-
# file encoded using the current channel's codec, if one exists. If not, it will transcode from
|
16
|
-
# the default codec (GSM). Asterisk stores its sound files in /var/lib/asterisk/sounds.
|
17
|
-
#
|
18
|
-
# @example Play file hello-world.???
|
19
|
-
# play 'hello-world'
|
20
|
-
# @example Speak current time
|
21
|
-
# play Time.now
|
22
|
-
# @example Speak today's date
|
23
|
-
# play Date.today
|
24
|
-
# @example Speak today's date in a specific format
|
25
|
-
# play [Date.today, {:format => 'BdY'}]
|
26
|
-
# @example Play sound file, speak number, play two more sound files
|
27
|
-
# play %w"a-connect-charge-of 22 cents-per-minute will-apply"
|
28
|
-
# @example Play two sound files
|
29
|
-
# play "you-sound-cute", "what-are-you-wearing"
|
30
|
-
#
|
31
|
-
# @return [Boolean] true is returned if everything was successful. Otherwise, false indicates that
|
32
|
-
# some sound file(s) could not be played.
|
33
|
-
def play(*arguments)
|
34
|
-
begin
|
35
|
-
play! arguments
|
36
|
-
rescue Adhearsion::PlaybackError => e
|
37
|
-
return false
|
38
|
-
end
|
39
|
-
true
|
40
|
-
end
|
41
|
-
|
42
|
-
# Same as {#play}, but immediately raises an exception if a sound file cannot be played.
|
43
|
-
#
|
44
|
-
# @return [true]
|
45
|
-
# @raise [Adhearsion::VoIP::PlaybackError] If a sound file cannot be played
|
46
|
-
def play!(*arguments)
|
47
|
-
result = true
|
48
|
-
unless play_time(arguments)
|
49
|
-
arguments.flatten.each do |argument|
|
50
|
-
result &= play_numeric(argument) || play_soundfile(argument)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
raise Adhearsion::PlaybackError if !result
|
54
|
-
end
|
55
|
-
|
56
7
|
#
|
57
8
|
# Plays a single output, not only files, accepting interruption by one of the digits specified
|
58
9
|
# Currently still stops execution, will be fixed soon in Punchblock
|
@@ -74,15 +25,15 @@ module Adhearsion
|
|
74
25
|
|
75
26
|
case reason.result
|
76
27
|
when 0
|
77
|
-
raise
|
28
|
+
raise CallController::Output::PlaybackError if reason.data == "endpos=0"
|
78
29
|
nil
|
79
30
|
when -1
|
80
|
-
raise
|
31
|
+
raise CallController::Output::PlaybackError
|
81
32
|
else
|
82
33
|
[reason.result].pack 'U*'
|
83
34
|
end
|
84
35
|
rescue StandardError => e
|
85
|
-
raise
|
36
|
+
raise CallController::Output::PlaybackError, "Output failed for argument #{argument.inspect}"
|
86
37
|
end
|
87
38
|
end
|
88
39
|
end
|
@@ -405,95 +405,6 @@ module Adhearsion::Asterisk
|
|
405
405
|
end
|
406
406
|
end#describe #queue
|
407
407
|
|
408
|
-
describe "#play" do
|
409
|
-
let(:audiofile) { "tt-monkeys" }
|
410
|
-
let(:audiofile2) { "tt-weasels" }
|
411
|
-
|
412
|
-
it 'should return true if play proceeds correctly' do
|
413
|
-
subject.expects(:play!).with([audiofile])
|
414
|
-
subject.play(audiofile).should be true
|
415
|
-
end
|
416
|
-
|
417
|
-
it 'should return false if an audio file cannot be found' do
|
418
|
-
subject.expects(:play!).with([audiofile]).raises(Adhearsion::PlaybackError)
|
419
|
-
subject.play(audiofile).should be false
|
420
|
-
|
421
|
-
end
|
422
|
-
|
423
|
-
it 'should return false when audio files cannot be found' do
|
424
|
-
subject.expects(:play!).with([audiofile, audiofile2]).raises(Adhearsion::PlaybackError)
|
425
|
-
subject.play(audiofile, audiofile2).should be false
|
426
|
-
end
|
427
|
-
end
|
428
|
-
|
429
|
-
describe "#play!" do
|
430
|
-
let(:audiofile) { "tt-monkeys" }
|
431
|
-
let(:audiofile2) { "tt-weasels" }
|
432
|
-
let(:numeric) { 20 }
|
433
|
-
let(:numeric_string) { "42" }
|
434
|
-
let(:date) { Date.parse('2011-10-24') }
|
435
|
-
let(:time) { Time.at(875121313) }
|
436
|
-
|
437
|
-
describe "with a single argument" do
|
438
|
-
it 'passing a single string to play() results in play_soundfile being called with that file name' do
|
439
|
-
subject.expects(:play_time).with([audiofile]).returns(false)
|
440
|
-
subject.expects(:play_numeric).with(audiofile).returns(false)
|
441
|
-
subject.expects(:play_soundfile).with(audiofile).returns(true)
|
442
|
-
subject.play!(audiofile)
|
443
|
-
end
|
444
|
-
|
445
|
-
it 'If a number is passed to play(), the play_numeric method is called with that argument' do
|
446
|
-
subject.expects(:play_time).with([numeric]).returns(false)
|
447
|
-
subject.expects(:play_numeric).with(numeric).returns(true)
|
448
|
-
subject.play!(numeric)
|
449
|
-
end
|
450
|
-
|
451
|
-
it 'if a string representation of a number is passed to play(), the play_numeric method is called with that argument' do
|
452
|
-
subject.expects(:play_time).with([numeric_string]).returns(false)
|
453
|
-
subject.expects(:play_numeric).with(numeric_string).returns(true)
|
454
|
-
subject.play!(numeric_string)
|
455
|
-
end
|
456
|
-
|
457
|
-
it 'If a Time is passed to play(), the play_time method is called with that argument' do
|
458
|
-
subject.expects(:play_time).with([time]).returns(true)
|
459
|
-
subject.play!(time)
|
460
|
-
end
|
461
|
-
|
462
|
-
it 'If a Date is passed to play(), the play_time method is called with that argument' do
|
463
|
-
subject.expects(:play_time).with([date]).returns(true)
|
464
|
-
subject.play!(date)
|
465
|
-
end
|
466
|
-
|
467
|
-
it 'raises an exception if play fails' do
|
468
|
-
subject.expects(:play_time).with([audiofile]).returns(false)
|
469
|
-
subject.expects(:play_numeric).with(audiofile).returns(false)
|
470
|
-
subject.expects(:play_soundfile).with(audiofile).returns(false)
|
471
|
-
lambda { subject.play!(audiofile) }.should raise_error(Adhearsion::PlaybackError)
|
472
|
-
end
|
473
|
-
end
|
474
|
-
|
475
|
-
describe "with multiple arguments" do
|
476
|
-
it 'loops over the arguments, issuing separate play commands' do
|
477
|
-
subject.expects(:play_time).with([audiofile, audiofile2]).returns(false)
|
478
|
-
subject.expects(:play_numeric).with(audiofile).returns(false)
|
479
|
-
subject.expects(:play_soundfile).with(audiofile).returns(true)
|
480
|
-
subject.expects(:play_numeric).with(audiofile2).returns(false)
|
481
|
-
subject.expects(:play_soundfile).with(audiofile2).returns(true)
|
482
|
-
subject.play!(audiofile, audiofile2)
|
483
|
-
end
|
484
|
-
|
485
|
-
it 'raises an exception if play fails with multiple argument' do
|
486
|
-
subject.expects(:play_time).with([audiofile, audiofile2]).returns(false)
|
487
|
-
subject.expects(:play_numeric).with(audiofile).returns(false)
|
488
|
-
subject.expects(:play_soundfile).with(audiofile).returns(false)
|
489
|
-
subject.expects(:play_numeric).with(audiofile2).returns(false)
|
490
|
-
subject.expects(:play_soundfile).with(audiofile2).returns(false)
|
491
|
-
lambda { subject.play!(audiofile, audiofile2) }.should raise_error(Adhearsion::PlaybackError)
|
492
|
-
end
|
493
|
-
end
|
494
|
-
|
495
|
-
end
|
496
|
-
|
497
408
|
describe "#play_time" do
|
498
409
|
let(:date) { Date.parse('2011-10-24') }
|
499
410
|
let(:date_format) { 'ABdY' }
|
@@ -598,7 +509,7 @@ module Adhearsion::Asterisk
|
|
598
509
|
|
599
510
|
it "raises Adhearsion::PlaybackError" do
|
600
511
|
subject.expects(:execute_component_and_await_completion).once.with(output_component).returns(output_component)
|
601
|
-
lambda { subject.stream_file prompt, allowed_digits }.should raise_error Adhearsion::PlaybackError
|
512
|
+
lambda { subject.stream_file prompt, allowed_digits }.should raise_error Adhearsion::CallController::Output::PlaybackError
|
602
513
|
end
|
603
514
|
end
|
604
515
|
|
@@ -608,7 +519,7 @@ module Adhearsion::Asterisk
|
|
608
519
|
|
609
520
|
it "raises Adhearsion::PlaybackError" do
|
610
521
|
subject.expects(:execute_component_and_await_completion).once.with(output_component).returns(output_component)
|
611
|
-
lambda { subject.stream_file prompt, allowed_digits }.should raise_error Adhearsion::PlaybackError
|
522
|
+
lambda { subject.stream_file prompt, allowed_digits }.should raise_error Adhearsion::CallController::Output::PlaybackError
|
612
523
|
end
|
613
524
|
end
|
614
525
|
end # describe #stream_file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adhearsion-asterisk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,22 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-03-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: adhearsion
|
17
|
-
requirement: &
|
17
|
+
requirement: &2164421920 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 2.0.0.
|
22
|
+
version: 2.0.0.rc2
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2164421920
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: activesupport
|
28
|
-
requirement: &
|
28
|
+
requirement: &2164421300 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,21 +33,21 @@ dependencies:
|
|
33
33
|
version: 3.0.10
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2164421300
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: bundler
|
39
|
-
requirement: &
|
39
|
+
requirement: &2164420660 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
|
-
- -
|
42
|
+
- - ! '>='
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: 1.0.0
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2164420660
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rspec
|
50
|
-
requirement: &
|
50
|
+
requirement: &2164420140 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 2.5.0
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2164420140
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: ci_reporter
|
61
|
-
requirement: &
|
61
|
+
requirement: &2164419580 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 1.6.3
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2164419580
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: simplecov
|
72
|
-
requirement: &
|
72
|
+
requirement: &2164418800 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *2164418800
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: simplecov-rcov
|
83
|
-
requirement: &
|
83
|
+
requirement: &2164418180 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,21 +88,21 @@ dependencies:
|
|
88
88
|
version: '0'
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *2164418180
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: yard
|
94
|
-
requirement: &
|
94
|
+
requirement: &2164417560 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
|
-
- -
|
97
|
+
- - ! '>='
|
98
98
|
- !ruby/object:Gem::Version
|
99
99
|
version: 0.6.0
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *2164417560
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: rake
|
105
|
-
requirement: &
|
105
|
+
requirement: &2164417020 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ! '>='
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: '0'
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *2164417020
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: mocha
|
116
|
-
requirement: &
|
116
|
+
requirement: &2164416400 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ! '>='
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: '0'
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *2164416400
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bones
|
127
|
-
requirement: &
|
127
|
+
requirement: &2164415840 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ! '>='
|
@@ -132,10 +132,10 @@ dependencies:
|
|
132
132
|
version: '0'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *2164415840
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
137
|
name: guard-rspec
|
138
|
-
requirement: &
|
138
|
+
requirement: &2164415340 !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
140
140
|
requirements:
|
141
141
|
- - ! '>='
|
@@ -143,10 +143,10 @@ dependencies:
|
|
143
143
|
version: '0'
|
144
144
|
type: :development
|
145
145
|
prerelease: false
|
146
|
-
version_requirements: *
|
146
|
+
version_requirements: *2164415340
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: ruby_gntp
|
149
|
-
requirement: &
|
149
|
+
requirement: &2164414720 !ruby/object:Gem::Requirement
|
150
150
|
none: false
|
151
151
|
requirements:
|
152
152
|
- - ! '>='
|
@@ -154,7 +154,7 @@ dependencies:
|
|
154
154
|
version: '0'
|
155
155
|
type: :development
|
156
156
|
prerelease: false
|
157
|
-
version_requirements: *
|
157
|
+
version_requirements: *2164414720
|
158
158
|
description: An Adhearsion Plugin providing Asterisk-specific dialplan methods, AMI
|
159
159
|
access, and access to Asterisk configuration
|
160
160
|
email:
|
@@ -166,6 +166,7 @@ extra_rdoc_files: []
|
|
166
166
|
files:
|
167
167
|
- .gitignore
|
168
168
|
- .rspec
|
169
|
+
- .travis.yml
|
169
170
|
- CHANGELOG.md
|
170
171
|
- Gemfile
|
171
172
|
- Guardfile
|
@@ -213,7 +214,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
213
214
|
version: '0'
|
214
215
|
segments:
|
215
216
|
- 0
|
216
|
-
hash:
|
217
|
+
hash: 819784652951999828
|
217
218
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
219
|
none: false
|
219
220
|
requirements:
|
@@ -222,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
223
|
version: '0'
|
223
224
|
segments:
|
224
225
|
- 0
|
225
|
-
hash:
|
226
|
+
hash: 819784652951999828
|
226
227
|
requirements: []
|
227
228
|
rubyforge_project: adhearsion-asterisk
|
228
229
|
rubygems_version: 1.8.10
|