adhearsion 3.0.0.beta2 → 3.0.0.rc1
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.
- 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
|