adhearsion-asr 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG.md +4 -0
- data/Gemfile +0 -2
- data/lib/adhearsion-asr/controller_methods.rb +1 -0
- data/lib/adhearsion-asr/menu_builder.rb +1 -1
- data/lib/adhearsion-asr/prompt_builder.rb +3 -1
- data/lib/adhearsion-asr/version.rb +1 -1
- data/spec/adhearsion-asr/controller_methods_spec.rb +51 -1
- data/spec/spec_helper.rb +7 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d793ad00c79ebd46c18281cde5693d24d4ffc9e9
|
4
|
+
data.tar.gz: df0fac47487a8518063c7a27e353e04a755b82b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 575c331ebf7da9bc3b433ca2520eb503adba3410cb9ccea69274456f1343845de3c60d305a7130decd2adf15c7d14721cea2b131c739127fa91b4794318c36e9
|
7
|
+
data.tar.gz: f649369e4e60fe0ec247ca2eff8fe8c0efedea114b487f064a1921e9d69354ab334ecef329b3d32938d636a964d1dec3ee7d94a2e28f58d893ea7f8d56eb180d
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# [develop](https://github.com/adhearsion/adhearsion-asr)
|
2
2
|
|
3
|
+
# [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
|
+
* Feature: Allow setting `:mode` option to `:voice` for ASR menus
|
5
|
+
* Bugfix: Raise `Adhearsion::Hangup` to terminate controller execution when the call actor is dead
|
6
|
+
|
3
7
|
# [v1.1.1](https://github.com/adhearsion/adhearsion-asr/compare/1.1.0...1.1.1) - [2014-01-28](https://rubygems.org/gems/adhearsion-asr/versions/1.1.1)
|
4
8
|
* Bugfix: Handle stop completion reason smoothly
|
5
9
|
|
data/Gemfile
CHANGED
@@ -94,6 +94,7 @@ module AdhearsionASR
|
|
94
94
|
# @option options [Integer] :tries Number of tries allowed before failure
|
95
95
|
# @option options [Integer] :timeout Timeout in seconds before the first and between each input digit
|
96
96
|
# @option options [Boolean] :interruptible If the prompt should be interruptible or not. Defaults to true
|
97
|
+
# @option options [String, Symbol] :mode Input mode to accept. May be :voice or :dtmf.
|
97
98
|
# @option options [Hash] :input_options A hash of options passed directly to the Punchblock Input constructor
|
98
99
|
# @option options [Hash] :output_options A hash of options passed directly to the Punchblock Output constructor
|
99
100
|
#
|
@@ -84,7 +84,7 @@ module AdhearsionASR
|
|
84
84
|
raise ArgumentError, "You must specify one or more matches." if @matchers.count < 1
|
85
85
|
matchers = @matchers
|
86
86
|
|
87
|
-
RubySpeech::GRXML.draw mode: :dtmf, root: 'options', tag_format: 'semantics/1.0-literals' do
|
87
|
+
RubySpeech::GRXML.draw mode: (@options[:mode] || :dtmf), root: 'options', tag_format: 'semantics/1.0-literals' do
|
88
88
|
rule id: 'options', scope: 'public' do
|
89
89
|
item do
|
90
90
|
one_of do
|
@@ -4,7 +4,7 @@ module AdhearsionASR
|
|
4
4
|
class PromptBuilder
|
5
5
|
def initialize(output_document, grammars, options)
|
6
6
|
input_options = {
|
7
|
-
mode: :dtmf,
|
7
|
+
mode: options[:mode] || :dtmf,
|
8
8
|
initial_timeout: (options[:timeout] || Plugin.config.timeout) * 1000,
|
9
9
|
inter_digit_timeout: (options[:timeout] || Plugin.config.timeout) * 1000,
|
10
10
|
max_silence: (options[:timeout] || Plugin.config.timeout) * 1000,
|
@@ -32,6 +32,8 @@ module AdhearsionASR
|
|
32
32
|
controller.execute_component_and_await_completion @prompt
|
33
33
|
|
34
34
|
result @prompt.complete_event.reason
|
35
|
+
rescue Adhearsion::Call::ExpiredError
|
36
|
+
raise Adhearsion::Call::Hangup
|
35
37
|
end
|
36
38
|
|
37
39
|
private
|
@@ -50,6 +50,7 @@ module AdhearsionASR
|
|
50
50
|
end
|
51
51
|
|
52
52
|
before do
|
53
|
+
Adhearsion::Plugin.configure_plugins if Adhearsion::Plugin.respond_to?(:configure_plugins)
|
53
54
|
Adhearsion::Plugin.init_plugins
|
54
55
|
end
|
55
56
|
|
@@ -438,6 +439,14 @@ module AdhearsionASR
|
|
438
439
|
end
|
439
440
|
end
|
440
441
|
|
442
|
+
context "when the call is dead when trying to execute the prompt" do
|
443
|
+
before { call.terminate }
|
444
|
+
|
445
|
+
it "should raise Adhearsion::Call::Hangup" do
|
446
|
+
expect { subject.ask prompts, limit: 5 }.to raise_error Adhearsion::Call::Hangup
|
447
|
+
end
|
448
|
+
end
|
449
|
+
|
441
450
|
context "when a utterance is received" do
|
442
451
|
let(:expected_grxml) { digit_limit_grammar }
|
443
452
|
|
@@ -616,7 +625,7 @@ module AdhearsionASR
|
|
616
625
|
context "with no matches" do
|
617
626
|
it "should raise ArgumentError" do
|
618
627
|
expect do
|
619
|
-
subject.menu do
|
628
|
+
subject.menu "Hello?" do
|
620
629
|
end
|
621
630
|
end.to raise_error(ArgumentError, /specify one or more matches/)
|
622
631
|
end
|
@@ -804,6 +813,47 @@ module AdhearsionASR
|
|
804
813
|
end
|
805
814
|
end
|
806
815
|
|
816
|
+
context "when using ASR mode" do
|
817
|
+
before do
|
818
|
+
expected_input_options.merge! mode: :voice
|
819
|
+
end
|
820
|
+
|
821
|
+
let :expected_grxml do
|
822
|
+
RubySpeech::GRXML.draw mode: 'voice', root: 'options', tag_format: 'semantics/1.0-literals' do
|
823
|
+
rule id: 'options', scope: 'public' do
|
824
|
+
item do
|
825
|
+
one_of do
|
826
|
+
item do
|
827
|
+
tag { '0' }
|
828
|
+
'Hello world'
|
829
|
+
end
|
830
|
+
end
|
831
|
+
end
|
832
|
+
end
|
833
|
+
end
|
834
|
+
end
|
835
|
+
|
836
|
+
it "executes a Prompt with correct input mode, and the correct grammar mode" do
|
837
|
+
expect_component_execution expected_prompt
|
838
|
+
|
839
|
+
subject.menu prompts, mode: :voice do
|
840
|
+
match("Hello world") {}
|
841
|
+
end
|
842
|
+
end
|
843
|
+
end
|
844
|
+
|
845
|
+
context "when the call is dead when trying to execute the prompt" do
|
846
|
+
before { call.terminate }
|
847
|
+
|
848
|
+
it "should raise Adhearsion::Call::Hangup" do
|
849
|
+
expect do
|
850
|
+
subject.menu prompts do
|
851
|
+
match(1) {}
|
852
|
+
end
|
853
|
+
end.to raise_error Adhearsion::Call::Hangup
|
854
|
+
end
|
855
|
+
end
|
856
|
+
|
807
857
|
context "when input completes with an error" do
|
808
858
|
let(:reason) { Punchblock::Event::Complete::Error.new details: 'foobar' }
|
809
859
|
|
data/spec/spec_helper.rb
CHANGED
@@ -10,4 +10,11 @@ RSpec.configure do |config|
|
|
10
10
|
config.run_all_when_everything_filtered = true
|
11
11
|
|
12
12
|
config.backtrace_clean_patterns = [/rspec/]
|
13
|
+
|
14
|
+
config.before do
|
15
|
+
@current_datetime = DateTime.now
|
16
|
+
DateTime.stub now: @current_datetime
|
17
|
+
|
18
|
+
Punchblock.stub new_request_id: 'foo'
|
19
|
+
end
|
13
20
|
end
|
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.2.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: 2014-
|
11
|
+
date: 2014-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: adhearsion
|