adhearsion-asterisk 0.1.3 → 0.2.0
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/.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
|