adhearsion 3.0.0.beta2 → 3.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -3
- data/CHANGELOG.md +4 -0
- data/adhearsion.gemspec +1 -1
- data/lib/adhearsion/call_controller.rb +1 -1
- data/lib/adhearsion/calls.rb +20 -16
- data/lib/adhearsion/translator/asterisk.rb +2 -0
- data/lib/adhearsion/translator/asterisk/component/mrcp_prompt.rb +14 -5
- data/lib/adhearsion/translator/asterisk/component/mrcp_recog_prompt.rb +8 -1
- data/lib/adhearsion/version.rb +1 -1
- data/spec/adhearsion/translator/asterisk/component/mrcp_prompt_spec.rb +20 -0
- data/spec/adhearsion/translator/asterisk_spec.rb +20 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58bfea2313c16c16cb6cf6ee34738c67e5ade786
|
4
|
+
data.tar.gz: 9f44a7a42185fa285372829b26d157dab2e22c99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9aa1a8e2ed989b75d65196457652da368a0d50cf1368ba6817f5e48a88d47afcc7703b1340c555f0a41c9abca44b584aabf1d376ca01afcbbd5317a55dde0d4
|
7
|
+
data.tar.gz: b05beee7c6cf383718cb4c94323dc652667ca2468ef7345a5f5cb87780a952964b67aeb7f8c50cc0f6a795ebb59089e663559f2440eb625ae5c24edbe0320ce0
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# [develop](https://github.com/adhearsion/adhearsion)
|
2
2
|
|
3
|
+
# [3.0.0.rc1](https://github.com/adhearsion/adhearsion/compare/v3.0.0.beta2...v3.0.0.rc1) - [2016-01-07](https://rubygems.org/gems/adhearsion/versions/3.0.0.rc1)
|
4
|
+
* Bugfix: Concurrent access to call collection should not be permitted. See [#589](https://github.com/adhearsion/adhearsion/issues/589)
|
5
|
+
* Bugfix: Reduced log spam inspecting large controller metadata. We now only log controller names internally; any logging of metadata must happen in the app.
|
6
|
+
|
3
7
|
# [3.0.0.beta2](https://github.com/adhearsion/adhearsion/compare/v3.0.0.beta1...v3.0.0.beta2) - [2015-12-18](https://rubygems.org/gems/adhearsion/versions/3.0.0.beta2)
|
4
8
|
* Bugfix: Ensure components are deregistered from asterisk translator once the call is ended ([#582](https://github.com/adhearsion/adhearsion/pull/582))
|
5
9
|
* Change: Define configuration per-environment for any environment name and without colliding with plugin names. See [#442](https://github.com/adhearsion/adhearsion/issues/442). Syntax is now `config.env(:development).foo = :bar` instead of `config.development.foo = :bar`.
|
data/adhearsion.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
s.add_runtime_dependency 'activesupport', [">= 3.0.0", "< 5.0.0"]
|
25
25
|
s.add_runtime_dependency 'adhearsion-loquacious', ["~> 1.9"]
|
26
|
-
s.add_runtime_dependency 'blather', ["~> 1.
|
26
|
+
s.add_runtime_dependency 'blather', ["~> 1.2"]
|
27
27
|
s.add_runtime_dependency 'bundler', ["~> 1.0"]
|
28
28
|
s.add_runtime_dependency 'celluloid', ["~> 0.16.0"]
|
29
29
|
s.add_runtime_dependency 'countdownlatch'
|
data/lib/adhearsion/calls.rb
CHANGED
@@ -22,26 +22,30 @@ module Adhearsion
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def remove_inactive_call(call)
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
25
|
+
@mutex.synchronize do
|
26
|
+
if call_is_dead?(call)
|
27
|
+
call_id = key call
|
28
|
+
delete call_id if call_id
|
29
|
+
|
30
|
+
remove_call_uri call
|
31
|
+
elsif call.respond_to?(:id)
|
32
|
+
delete call.id
|
33
|
+
remove_call_uri call
|
34
|
+
else
|
35
|
+
call_actor = delete call
|
36
|
+
remove_call_uri call_actor
|
37
|
+
end
|
36
38
|
end
|
37
39
|
end
|
38
40
|
|
39
41
|
def with_tag(tag)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
@mutex.synchronize do
|
43
|
+
values.find_all do |call|
|
44
|
+
begin
|
45
|
+
call.tagged_with? tag
|
46
|
+
rescue Call::ExpiredError
|
47
|
+
false
|
48
|
+
end
|
45
49
|
end
|
46
50
|
end
|
47
51
|
end
|
@@ -124,7 +124,9 @@ module Adhearsion
|
|
124
124
|
begin
|
125
125
|
call.execute_command command
|
126
126
|
rescue => e
|
127
|
+
Adhearsion::Events.trigger :exception, [e, logger]
|
127
128
|
deregister_call call.id, call.channel
|
129
|
+
command.response = Adhearsion::ProtocolError.new.setup :error, "Unknown error executing command on call #{command.target_call_id}", command.target_call_id
|
128
130
|
end
|
129
131
|
else
|
130
132
|
command.response = Adhearsion::ProtocolError.new.setup :item_not_found, "Could not find a call with ID #{command.target_call_id}", command.target_call_id
|
@@ -19,6 +19,13 @@ module Adhearsion
|
|
19
19
|
raise OptionError, 'Only one document is allowed.' if output_node.render_documents.count > 1
|
20
20
|
raise OptionError, 'A grammar is required.' unless input_node.grammars.count > 0
|
21
21
|
|
22
|
+
begin
|
23
|
+
render_doc
|
24
|
+
rescue => e
|
25
|
+
logger.error e
|
26
|
+
raise OptionError, 'The requested render document could not be parsed.'
|
27
|
+
end
|
28
|
+
|
22
29
|
super
|
23
30
|
end
|
24
31
|
|
@@ -35,11 +42,13 @@ module Adhearsion
|
|
35
42
|
end
|
36
43
|
|
37
44
|
def render_doc
|
38
|
-
|
39
|
-
|
40
|
-
d.
|
41
|
-
|
42
|
-
|
45
|
+
@render_doc ||= begin
|
46
|
+
d = output_node.render_documents.first
|
47
|
+
if d.content_type
|
48
|
+
d.value.to_doc.to_s
|
49
|
+
else
|
50
|
+
d.url
|
51
|
+
end
|
43
52
|
end
|
44
53
|
end
|
45
54
|
|
@@ -53,6 +53,13 @@ module Adhearsion
|
|
53
53
|
raise OptionError, "A dtmf-terminate-timeout value must be -1, 0, or a positive integer." if @dtmf_terminate_timeout < -1
|
54
54
|
raise OptionError, "An n-best-list-length value must be a positive integer." if @n_best_list_length && @n_best_list_length < 1
|
55
55
|
raise OptionError, "A speed-vs-accuracy value must be a positive integer." if @speed_vs_accuracy && @speed_vs_accuracy < 0
|
56
|
+
|
57
|
+
begin
|
58
|
+
grammars
|
59
|
+
rescue => e
|
60
|
+
logger.error e
|
61
|
+
raise OptionError, 'The requested grammars could not be parsed.'
|
62
|
+
end
|
56
63
|
end
|
57
64
|
|
58
65
|
def execute_app(app, *args)
|
@@ -111,7 +118,7 @@ module Adhearsion
|
|
111
118
|
end
|
112
119
|
|
113
120
|
def grammars
|
114
|
-
input_node.grammars.map do |d|
|
121
|
+
@grammars ||= input_node.grammars.map do |d|
|
115
122
|
if d.content_type
|
116
123
|
d.value.to_doc.to_s
|
117
124
|
else
|
data/lib/adhearsion/version.rb
CHANGED
@@ -151,6 +151,16 @@ module Adhearsion
|
|
151
151
|
end
|
152
152
|
end
|
153
153
|
|
154
|
+
context 'with a document that cannot be parsed' do
|
155
|
+
let(:output_command_options) { { render_documents: [{value: 'http://example.com/doc1.ssml'}] } }
|
156
|
+
|
157
|
+
it "should return an error and not execute any actions" do
|
158
|
+
subject.execute
|
159
|
+
error = Adhearsion::ProtocolError.new.setup 'option error', 'The requested render document could not be parsed.'
|
160
|
+
expect(original_command.response(0.1)).to eq(error)
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
154
164
|
context 'unset' do
|
155
165
|
let(:output_command_options) { {} }
|
156
166
|
|
@@ -485,6 +495,16 @@ module Adhearsion
|
|
485
495
|
end
|
486
496
|
end
|
487
497
|
|
498
|
+
context 'with a grammar that cannot be parsed' do
|
499
|
+
let(:input_command_options) { { grammars: [{value: 'http://example.com/grammar1.grxml'}] } }
|
500
|
+
|
501
|
+
it "should return an error and not execute any actions" do
|
502
|
+
subject.execute
|
503
|
+
error = Adhearsion::ProtocolError.new.setup 'option error', 'The requested grammars could not be parsed.'
|
504
|
+
expect(original_command.response(0.1)).to eq(error)
|
505
|
+
end
|
506
|
+
end
|
507
|
+
|
488
508
|
context 'unset' do
|
489
509
|
let(:input_command_options) { {} }
|
490
510
|
|
@@ -168,6 +168,11 @@ module Adhearsion
|
|
168
168
|
|
169
169
|
it 'sends an error in response to the command' do
|
170
170
|
subject.execute_call_command command
|
171
|
+
expect(command.response(1)).to eq(Adhearsion::ProtocolError.new.setup(:error, "Unknown error executing command on call #{call_id}", call_id))
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'fails to find the call for later commands' do
|
175
|
+
subject.execute_call_command command
|
171
176
|
|
172
177
|
expect(subject.call_with_id(call_id)).to be_nil
|
173
178
|
|
@@ -175,6 +180,21 @@ module Adhearsion
|
|
175
180
|
subject.execute_call_command other_command
|
176
181
|
expect(other_command.response).to eq(Adhearsion::ProtocolError.new.setup(:item_not_found, "Could not find a call with ID #{call_id}", call_id))
|
177
182
|
end
|
183
|
+
|
184
|
+
it 'triggers an exception event' do
|
185
|
+
latch = CountDownLatch.new 1
|
186
|
+
ex = lo = nil
|
187
|
+
Events.exception do |e, l|
|
188
|
+
ex, lo = e, l
|
189
|
+
latch.countdown!
|
190
|
+
end
|
191
|
+
|
192
|
+
subject.execute_call_command command
|
193
|
+
|
194
|
+
expect(latch.wait(1)).to be true
|
195
|
+
expect(ex).to be_a StandardError
|
196
|
+
expect(lo).to be subject.logger
|
197
|
+
end
|
178
198
|
end
|
179
199
|
end
|
180
200
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adhearsion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.
|
4
|
+
version: 3.0.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jay Phillips
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2016-01-07 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activesupport
|
@@ -53,14 +53,14 @@ dependencies:
|
|
53
53
|
requirements:
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '1.
|
56
|
+
version: '1.2'
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '1.
|
63
|
+
version: '1.2'
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
65
|
name: bundler
|
66
66
|
requirement: !ruby/object:Gem::Requirement
|
@@ -867,7 +867,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
867
867
|
version: 1.3.1
|
868
868
|
requirements: []
|
869
869
|
rubyforge_project:
|
870
|
-
rubygems_version: 2.
|
870
|
+
rubygems_version: 2.5.1
|
871
871
|
signing_key:
|
872
872
|
specification_version: 4
|
873
873
|
summary: Adhearsion, open-source telephony development framework
|