adhearsion-asterisk 1.2.0 → 1.2.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.md +4 -0
- data/README.md +1 -0
- data/adhearsion-asterisk.gemspec +5 -3
- data/lib/adhearsion/asterisk/call_controller_methods.rb +19 -3
- data/lib/adhearsion/asterisk/version.rb +1 -1
- data/spec/adhearsion/asterisk/call_controller_methods_spec.rb +44 -2
- data/spec/adhearsion/asterisk/config_generators/voicemail_spec.rb +1 -0
- metadata +23 -4
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
data/adhearsion-asterisk.gemspec
CHANGED
@@ -5,8 +5,8 @@ require "adhearsion/asterisk/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "adhearsion-asterisk"
|
7
7
|
s.version = Adhearsion::Asterisk::VERSION
|
8
|
-
s.authors = ["Ben Langfeld", "Taylor Carpenter"]
|
9
|
-
s.email = ["blangfeld@adhearsion.com", "taylor@codecafe.com"]
|
8
|
+
s.authors = ["Ben Langfeld", "Taylor Carpenter", "Luca Pradovera"]
|
9
|
+
s.email = ["blangfeld@adhearsion.com", "taylor@codecafe.com", "lpradovera@mojolingo.com"]
|
10
10
|
s.homepage = "http://adhearsion.com"
|
11
11
|
s.summary = %q{Asterisk specific features for Adhearsion}
|
12
12
|
s.description = %q{An Adhearsion Plugin providing Asterisk-specific dialplan methods, AMI access, and access to Asterisk configuration}
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.add_runtime_dependency %q<adhearsion>, ["~> 2.0"]
|
22
22
|
s.add_runtime_dependency %q<activesupport>, [">= 3.0.10"]
|
23
|
+
s.add_runtime_dependency %q<jruby-openssl> if RUBY_PLATFORM == 'java'
|
23
24
|
|
24
25
|
s.add_development_dependency %q<bundler>, [">= 1.0.0"]
|
25
26
|
s.add_development_dependency %q<rspec>, [">= 2.5.0"]
|
@@ -31,5 +32,6 @@ Gem::Specification.new do |s|
|
|
31
32
|
s.add_development_dependency %q<mocha>, [">= 0"]
|
32
33
|
s.add_development_dependency %q<bones>
|
33
34
|
s.add_development_dependency %q<guard-rspec>
|
34
|
-
s.add_development_dependency
|
35
|
+
s.add_development_dependency %q<ruby_gntp>
|
36
|
+
s.add_development_dependency %q<thor>, ["~> 0.14.0"]
|
35
37
|
end
|
@@ -18,6 +18,7 @@ module Adhearsion
|
|
18
18
|
component = Punchblock::Component::Asterisk::AGI::Command.new :name => name, :params => params
|
19
19
|
execute_component_and_await_completion component
|
20
20
|
complete_reason = component.complete_event.reason
|
21
|
+
raise Adhearsion::Call::Hangup if complete_reason.is_a?(Punchblock::Event::Complete::Hangup)
|
21
22
|
[:code, :result, :data].map { |p| complete_reason.send p }
|
22
23
|
end
|
23
24
|
|
@@ -360,10 +361,25 @@ module Adhearsion
|
|
360
361
|
#Executes SayNumber with the passed argument.
|
361
362
|
#
|
362
363
|
# @param [Numeric|String] Numeric argument, or a string contanining numbers.
|
363
|
-
# @return [Boolean] Returns false if the argument could not be played.
|
364
364
|
def play_numeric(argument)
|
365
|
-
|
366
|
-
|
365
|
+
execute "SayNumber", argument
|
366
|
+
end
|
367
|
+
|
368
|
+
#Executes SayDigits with the passed argument.
|
369
|
+
#
|
370
|
+
# @param [Numeric|String] Numeric argument, or a string contanining numbers.
|
371
|
+
def play_digits(argument)
|
372
|
+
execute "SayDigits", argument
|
373
|
+
end
|
374
|
+
|
375
|
+
#Executes Playtones with the passed argument.
|
376
|
+
#
|
377
|
+
# @param [String|Array] Array or comma-separated string of tones.
|
378
|
+
# @param [Boolean] Whether to wait for the tones to finish (defaults to false).
|
379
|
+
def play_tones(argument, wait = false)
|
380
|
+
tones = [*argument].join(",")
|
381
|
+
execute("Playtones", tones).tap do
|
382
|
+
sleep tones.scan(/(?<=\/)\d+/).map(&:to_i).sum.to_f / 1000 if wait
|
367
383
|
end
|
368
384
|
end
|
369
385
|
|
@@ -19,13 +19,26 @@ module Adhearsion::Asterisk
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
Punchblock::Component::Asterisk::AGI::Command.any_instance.stubs :complete_event => complete_event
|
22
|
+
before { Punchblock::Component::Asterisk::AGI::Command.any_instance.stubs :complete_event => complete_event }
|
24
23
|
|
24
|
+
it 'should execute an AGI command with the specified name and parameters and return the response code, response and data' do
|
25
25
|
subject.expects(:execute_component_and_await_completion).once.with expected_agi_command
|
26
26
|
values = subject.agi 'Dial', '4044754842', 15
|
27
27
|
values.should == [200, 1, 'foobar']
|
28
28
|
end
|
29
|
+
|
30
|
+
context 'when AGI terminates because of a hangup' do
|
31
|
+
let :complete_event do
|
32
|
+
Punchblock::Event::Complete.new.tap do |c|
|
33
|
+
c.reason = Punchblock::Event::Complete::Hangup.new
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should raise Adhearsion::Call::Hangup' do
|
38
|
+
subject.expects(:execute_component_and_await_completion).once.with expected_agi_command
|
39
|
+
lambda { subject.agi 'Dial', '4044754842', 15 }.should raise_error(Adhearsion::Call::Hangup)
|
40
|
+
end
|
41
|
+
end
|
29
42
|
end
|
30
43
|
|
31
44
|
describe '#execute' do
|
@@ -436,6 +449,35 @@ module Adhearsion::Asterisk
|
|
436
449
|
end
|
437
450
|
end
|
438
451
|
|
452
|
+
describe "#play_digits" do
|
453
|
+
let(:numeric) { 20 }
|
454
|
+
it "should send the correct command SayDigits playing a numeric argument" do
|
455
|
+
subject.expects(:execute).once.with("SayDigits", numeric)
|
456
|
+
subject.play_digits(numeric)
|
457
|
+
end
|
458
|
+
end
|
459
|
+
|
460
|
+
describe "#play_tones" do
|
461
|
+
context "should send the correct command Playtones playing tones" do
|
462
|
+
before do
|
463
|
+
subject.expects(:execute).once.with("Playtones", "!950/330,!1400/330,!1800/330,0")
|
464
|
+
end
|
465
|
+
|
466
|
+
it "given as a string" do
|
467
|
+
subject.play_tones("!950/330,!1400/330,!1800/330,0")
|
468
|
+
end
|
469
|
+
|
470
|
+
it "given as an array" do
|
471
|
+
subject.play_tones(["!950/330","!1400/330","!1800/330","0"])
|
472
|
+
end
|
473
|
+
|
474
|
+
it "and sleep for the duration when instructed" do
|
475
|
+
subject.expects(:sleep).once.with(0.99)
|
476
|
+
subject.play_tones("!950/330,!1400/330,!1800/330,0", true)
|
477
|
+
end
|
478
|
+
end
|
479
|
+
end
|
480
|
+
|
439
481
|
describe "#play_soundfile" do
|
440
482
|
let(:audiofile) { "tt-monkeys" }
|
441
483
|
it "should send the correct command Playback playing an audio file" do
|
metadata
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adhearsion-asterisk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ben Langfeld
|
9
9
|
- Taylor Carpenter
|
10
|
+
- Luca Pradovera
|
10
11
|
autorequire:
|
11
12
|
bindir: bin
|
12
13
|
cert_chain: []
|
13
|
-
date: 2012-
|
14
|
+
date: 2012-06-22 00:00:00.000000000 Z
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: adhearsion
|
@@ -220,11 +221,28 @@ dependencies:
|
|
220
221
|
- - ! '>='
|
221
222
|
- !ruby/object:Gem::Version
|
222
223
|
version: '0'
|
224
|
+
- !ruby/object:Gem::Dependency
|
225
|
+
name: thor
|
226
|
+
requirement: !ruby/object:Gem::Requirement
|
227
|
+
none: false
|
228
|
+
requirements:
|
229
|
+
- - ~>
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: 0.14.0
|
232
|
+
type: :development
|
233
|
+
prerelease: false
|
234
|
+
version_requirements: !ruby/object:Gem::Requirement
|
235
|
+
none: false
|
236
|
+
requirements:
|
237
|
+
- - ~>
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: 0.14.0
|
223
240
|
description: An Adhearsion Plugin providing Asterisk-specific dialplan methods, AMI
|
224
241
|
access, and access to Asterisk configuration
|
225
242
|
email:
|
226
243
|
- blangfeld@adhearsion.com
|
227
244
|
- taylor@codecafe.com
|
245
|
+
- lpradovera@mojolingo.com
|
228
246
|
executables: []
|
229
247
|
extensions: []
|
230
248
|
extra_rdoc_files: []
|
@@ -280,7 +298,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
280
298
|
version: '0'
|
281
299
|
segments:
|
282
300
|
- 0
|
283
|
-
hash: -
|
301
|
+
hash: -489585779242727687
|
284
302
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
285
303
|
none: false
|
286
304
|
requirements:
|
@@ -289,7 +307,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
289
307
|
version: '0'
|
290
308
|
segments:
|
291
309
|
- 0
|
292
|
-
hash: -
|
310
|
+
hash: -489585779242727687
|
293
311
|
requirements: []
|
294
312
|
rubyforge_project: adhearsion-asterisk
|
295
313
|
rubygems_version: 1.8.21
|
@@ -310,3 +328,4 @@ test_files:
|
|
310
328
|
- spec/has_agi_context.rb
|
311
329
|
- spec/spec_helper.rb
|
312
330
|
- spec/support/the_following_code.rb
|
331
|
+
has_rdoc:
|