adhearsion-asr 1.2.0 → 1.3.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.
- checksums.yaml +4 -4
- data/.hound.yml +2 -0
- data/CHANGELOG.md +4 -0
- data/lib/adhearsion-asr/controller_methods.rb +3 -3
- data/lib/adhearsion-asr/prompt_builder.rb +7 -3
- data/lib/adhearsion-asr/version.rb +1 -1
- data/spec/adhearsion-asr/controller_methods_spec.rb +65 -14
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca0404794461dacc1ea767edf9c7a73ce39037e7
|
4
|
+
data.tar.gz: f8e0d64f713d2ac76a4aa4a88bb8b1a8f331f119
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15ee7ed592699c1b0790cb87b5265477eb0db3f60e82ca7223ba933a747e7cfdb6c8afe1f472873a56222266ad50e74a9f1631a4f2a7be4ea71ed4a3bbc12a4a
|
7
|
+
data.tar.gz: 77799f2386d1743d73837d49ab6f5cd4675018d84621f72b5c21edab5eec599633221b21233ef61b36b826b8e05d3a2c679a36ed7eec04623162bd97cc27fa25
|
data/.hound.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# [develop](https://github.com/adhearsion/adhearsion-asr)
|
2
2
|
|
3
|
+
# [v1.3.0](https://github.com/adhearsion/adhearsion-asr/compare/1.2.0...1.3.0) - [2015-04-24](https://rubygems.org/gems/adhearsion-asr/versions/1.3.0)
|
4
|
+
* Bugfix: Correctly handle nil prompts
|
5
|
+
* Feature: Allow disabling timeouts with -1
|
6
|
+
|
3
7
|
# [v1.2.0](https://github.com/adhearsion/adhearsion-asr/compare/1.1.1...1.2.0) - [2014-03-03](https://rubygems.org/gems/adhearsion-asr/versions/1.2.0)
|
4
8
|
* Feature: Allow setting `:mode` option to `:voice` for ASR menus
|
5
9
|
* Bugfix: Raise `Adhearsion::Hangup` to terminate controller execution when the call actor is dead
|
@@ -34,7 +34,7 @@ module AdhearsionASR
|
|
34
34
|
#
|
35
35
|
def ask(*args)
|
36
36
|
options = args.last.kind_of?(Hash) ? args.pop : {}
|
37
|
-
prompts = args.flatten
|
37
|
+
prompts = args.flatten.compact
|
38
38
|
|
39
39
|
if block_given?
|
40
40
|
logger.warn "You passed a block to #ask, but this functionality is not available in adhearsion-asr. If you're looking for the block validator functionality, you should avoid using it in favour of grammars, and it is deprecated in Adhearsion Core."
|
@@ -106,11 +106,11 @@ module AdhearsionASR
|
|
106
106
|
def menu(*args, &block)
|
107
107
|
raise ArgumentError, "You must specify a block to build the menu" unless block
|
108
108
|
options = args.last.kind_of?(Hash) ? args.pop : {}
|
109
|
-
prompts = args.flatten
|
109
|
+
prompts = args.flatten.compact
|
110
110
|
|
111
111
|
menu_builder = MenuBuilder.new(options, &block)
|
112
112
|
|
113
|
-
output_document = output_formatter.ssml_for_collection(prompts)
|
113
|
+
output_document = prompts.empty? ? nil : output_formatter.ssml_for_collection(prompts)
|
114
114
|
|
115
115
|
menu_builder.execute output_document, self
|
116
116
|
end
|
@@ -5,9 +5,9 @@ module AdhearsionASR
|
|
5
5
|
def initialize(output_document, grammars, options)
|
6
6
|
input_options = {
|
7
7
|
mode: options[:mode] || :dtmf,
|
8
|
-
initial_timeout: (options[:timeout] || Plugin.config.timeout)
|
9
|
-
inter_digit_timeout: (options[:timeout] || Plugin.config.timeout)
|
10
|
-
max_silence: (options[:timeout] || Plugin.config.timeout)
|
8
|
+
initial_timeout: timeout(options[:timeout] || Plugin.config.timeout),
|
9
|
+
inter_digit_timeout: timeout(options[:timeout] || Plugin.config.timeout),
|
10
|
+
max_silence: timeout(options[:timeout] || Plugin.config.timeout),
|
11
11
|
min_confidence: Plugin.config.min_confidence,
|
12
12
|
grammars: grammars,
|
13
13
|
recognizer: Plugin.config.recognizer,
|
@@ -64,5 +64,9 @@ module AdhearsionASR
|
|
64
64
|
logger.debug "Ask completed with result #{result.inspect}"
|
65
65
|
end
|
66
66
|
end
|
67
|
+
|
68
|
+
def timeout(value)
|
69
|
+
value > 0 ? value * 1000 : value
|
70
|
+
end
|
67
71
|
end
|
68
72
|
end
|
@@ -17,19 +17,6 @@ module AdhearsionASR
|
|
17
17
|
double call, write_command: true, id: call_id
|
18
18
|
end
|
19
19
|
|
20
|
-
def expect_message_waiting_for_utterance(message, fail = false)
|
21
|
-
expectation = controller.should_receive(:write_and_await_utterance).with message
|
22
|
-
if fail
|
23
|
-
expectation.and_raise fail
|
24
|
-
else
|
25
|
-
expectation.and_return message
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def expect_message_of_type_waiting_for_utterance(message)
|
30
|
-
controller.should_receive(:write_and_await_utterance).with(message.class).and_return message
|
31
|
-
end
|
32
|
-
|
33
20
|
def expect_component_execution(component, fail = false)
|
34
21
|
expectation = controller.should_receive(:execute_component_and_await_completion).ordered.with(component)
|
35
22
|
if fail
|
@@ -123,6 +110,15 @@ module AdhearsionASR
|
|
123
110
|
subject.ask prompts, limit: 5
|
124
111
|
end
|
125
112
|
|
113
|
+
context "with nil prompts" do
|
114
|
+
let(:prompts) { [nil, 'http://example.com/nice-to-meet-you.mp3', 'http://example.com/press-some-buttons.mp3'] }
|
115
|
+
|
116
|
+
it "executes a Prompt component with the correct prompts and grammar" do
|
117
|
+
expect_component_execution expected_prompt
|
118
|
+
subject.ask prompts, limit: 5
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
126
122
|
context "with no prompts" do
|
127
123
|
it "executes an Input component with the correct grammar" do
|
128
124
|
Punchblock::Component::Input.any_instance.stub complete_event: double(reason: reason)
|
@@ -131,6 +127,14 @@ module AdhearsionASR
|
|
131
127
|
end
|
132
128
|
end
|
133
129
|
|
130
|
+
context "with only nil prompts" do
|
131
|
+
it "executes an Input component with the correct grammar" do
|
132
|
+
Punchblock::Component::Input.any_instance.stub complete_event: double(reason: reason)
|
133
|
+
expect_component_execution Punchblock::Component::Input.new(expected_input_options)
|
134
|
+
subject.ask nil, limit: 5
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
134
138
|
context "with a block passed" do
|
135
139
|
it "executes but logs a warning about the block validator" do
|
136
140
|
expect_component_execution expected_prompt
|
@@ -313,6 +317,22 @@ module AdhearsionASR
|
|
313
317
|
end
|
314
318
|
end
|
315
319
|
|
320
|
+
context "with a negative timeout specified" do
|
321
|
+
let(:expected_grxml) { digit_limit_grammar }
|
322
|
+
|
323
|
+
before do
|
324
|
+
expected_input_options.merge! initial_timeout: -1,
|
325
|
+
inter_digit_timeout: -1,
|
326
|
+
max_silence: -1
|
327
|
+
end
|
328
|
+
|
329
|
+
it "executes a Prompt with correct timeout (initial, inter-digit & max-silence)" do
|
330
|
+
expect_component_execution expected_prompt
|
331
|
+
|
332
|
+
subject.ask prompts, limit: 5, timeout: -1
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
316
336
|
context "with a different default timeout" do
|
317
337
|
let(:expected_grxml) { digit_limit_grammar }
|
318
338
|
|
@@ -478,7 +498,7 @@ module AdhearsionASR
|
|
478
498
|
result.confidence.should == 1
|
479
499
|
result.utterance.should == '123'
|
480
500
|
result.interpretation.should == 'Foo'
|
481
|
-
result.nlsml.should == nlsml
|
501
|
+
result.nlsml.should == nlsml
|
482
502
|
end
|
483
503
|
|
484
504
|
context "with speech input" do
|
@@ -659,6 +679,37 @@ module AdhearsionASR
|
|
659
679
|
doo.should == :bar
|
660
680
|
end
|
661
681
|
|
682
|
+
context "with nil prompts" do
|
683
|
+
let(:prompts) { [nil, 'http://example.com/nice-to-meet-you.mp3', 'http://example.com/press-some-buttons.mp3'] }
|
684
|
+
|
685
|
+
it "executes a Prompt component with the correct prompts and grammar" do
|
686
|
+
expect_component_execution expected_prompt
|
687
|
+
subject.menu prompts do
|
688
|
+
match(1) {}
|
689
|
+
end
|
690
|
+
end
|
691
|
+
end
|
692
|
+
|
693
|
+
context "with no prompts" do
|
694
|
+
it "executes an Input component with the correct grammar" do
|
695
|
+
Punchblock::Component::Input.any_instance.stub complete_event: double(reason: reason)
|
696
|
+
expect_component_execution Punchblock::Component::Input.new(expected_input_options)
|
697
|
+
subject.menu do
|
698
|
+
match(1) {}
|
699
|
+
end
|
700
|
+
end
|
701
|
+
end
|
702
|
+
|
703
|
+
context "with only nil prompts" do
|
704
|
+
it "executes an Input component with the correct grammar" do
|
705
|
+
Punchblock::Component::Input.any_instance.stub complete_event: double(reason: reason)
|
706
|
+
expect_component_execution Punchblock::Component::Input.new(expected_input_options)
|
707
|
+
subject.menu nil do
|
708
|
+
match(1) {}
|
709
|
+
end
|
710
|
+
end
|
711
|
+
end
|
712
|
+
|
662
713
|
context "with interruptible: false" do
|
663
714
|
let(:expected_barge_in) { false }
|
664
715
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adhearsion-asr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Langfeld
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: adhearsion
|
@@ -130,6 +130,7 @@ extensions: []
|
|
130
130
|
extra_rdoc_files: []
|
131
131
|
files:
|
132
132
|
- ".gitignore"
|
133
|
+
- ".hound.yml"
|
133
134
|
- ".rspec"
|
134
135
|
- ".travis.yml"
|
135
136
|
- CHANGELOG.md
|
@@ -169,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
170
|
version: '0'
|
170
171
|
requirements: []
|
171
172
|
rubyforge_project: adhearsion-asr
|
172
|
-
rubygems_version: 2.
|
173
|
+
rubygems_version: 2.4.5
|
173
174
|
signing_key:
|
174
175
|
specification_version: 4
|
175
176
|
summary: Adds speech recognition support to Adhearsion as a plugin
|