alexa_utteranceresponder 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/alexa_utteranceresponder.rb +71 -0
- metadata +111 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5bd7011b17dbb04ca5cee00862a2ec5677155017f6cd61167bb393c1364a30bf
|
4
|
+
data.tar.gz: 302cc6d9705d3b298404470e9df76ab20317a912843302db2757dc885a199eb9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 440f41c430c68306ed4e12f30e5af1c399d15697f56e6b2b9576a5cb0c0556aa0acaf89e7a2d2c28f6069c12b6dc67abfa7d636a71f1d1a0db4e6c6d49d17f68
|
7
|
+
data.tar.gz: 6970a20c2261e94cc88ada22171311df6b561163dc880b14c63ff8ab01cb3ae9bcd71563b354163aaa5c646fa6c920f92f4bae15001d203071d919c9fab7b605
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: alexa_utteranceresponder.rb
|
4
|
+
|
5
|
+
# description: Checks an utterance against an invocation keyword from
|
6
|
+
# the available skills and returns an Alexa formatted response
|
7
|
+
# to be passed to the skill's endpoint service.
|
8
|
+
|
9
|
+
require 'askio'
|
10
|
+
require 'alexa_modelbuilder'
|
11
|
+
|
12
|
+
|
13
|
+
class AlexaUtteranceResponder
|
14
|
+
using ColouredText
|
15
|
+
|
16
|
+
attr_reader :invocation
|
17
|
+
attr_accessor :deviceid
|
18
|
+
|
19
|
+
def initialize(modelmds=[], debug: false, userid: nil, deviceid: nil)
|
20
|
+
|
21
|
+
@debug, @userid, @deviceid = debug, userid, deviceid
|
22
|
+
|
23
|
+
@models = modelmds.inject({}) do |r,x|
|
24
|
+
|
25
|
+
amb = AlexaModelBuilder.new(x)
|
26
|
+
r.merge(amb.invocation => amb)
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
def ask(s, deviceid: @deviceid, &blk)
|
33
|
+
|
34
|
+
puts
|
35
|
+
puts ' debugger: s: ' + s.inspect if @debug
|
36
|
+
|
37
|
+
invocations = @models.keys.map {|invocation| invocation.gsub(/ /,'\s') }\
|
38
|
+
.join('|')
|
39
|
+
puts 'invocations: ' + invocations.inspect if @debug
|
40
|
+
|
41
|
+
regex = %r{
|
42
|
+
|
43
|
+
(?<ask>(?<action>tell|ask)\s(?<invocation>#{invocations})\s(?<request>.*)){0}
|
44
|
+
(?<open>(?<action>open)\s(?<invocation>#{invocations})){0}
|
45
|
+
\g<ask>|\g<open>
|
46
|
+
}x
|
47
|
+
|
48
|
+
r2 = s.downcase.gsub(/,/,'').match(regex)
|
49
|
+
|
50
|
+
puts ' debugger: r2: ' + r2.inspect if @debug
|
51
|
+
puts
|
52
|
+
|
53
|
+
return "hmmm, I don't know that one." unless r2
|
54
|
+
return respond() if r2[:action] == 'open'
|
55
|
+
|
56
|
+
puts '@models: ' + @models.inspect if @debug
|
57
|
+
amb = @models[r2[:invocation]]
|
58
|
+
puts 'amb: ' + amb.inspect if @debug
|
59
|
+
|
60
|
+
aio = AskIO.new(amb.to_manifest, amb.to_model, debug: @debug,
|
61
|
+
userid: @userid, deviceid: deviceid)
|
62
|
+
|
63
|
+
puts 'request: ' + r2[:request].inspect if @debug
|
64
|
+
r = aio.ask r2[:request], &blk
|
65
|
+
|
66
|
+
r ? r : "I'm sorry I didn't understand what you said"
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
metadata
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: alexa_utteranceresponder
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Robertson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkxMjEwMDAyMDU2WhcN
|
15
|
+
MjAxMjA5MDAyMDU2WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCu3PeI
|
17
|
+
Lxk8G56PIvhul8ZvKtppFg0qxlrgvDspkCEZgcugL3ZtacTZTwrdg8hqn/iCDJ+C
|
18
|
+
6XTpOEeDZl2ivB/uK8VJAG+7DR0sLQJSKDUF4VQebT5YDQI8kWn8pj3o6PnRe3g9
|
19
|
+
hBFl2Xa0BqyZS6gF1sjkbuekWoibPum3IUl8yNzOFCeqkjxElPvFVkGgjv8sMDxz
|
20
|
+
lw67d/df1hZeh+CzvdpAJox3wUbLeQnY/4XDDWi4F8lGRqJ+LcZmjZhmtBEtwilq
|
21
|
+
fk2yVsXhc326okhsZcODEbimOkKNZZy6yu/tYp+O0q8GF4CiLlG/Ks7/pdQCmwFN
|
22
|
+
HkzDOvO3dbCjvKgz+RQEH1RxDc3joQZ0GakHd4z1RxWqkhepqSq7uh675+0fM/0F
|
23
|
+
DS0Yt3g8H5Btu9Jf8sh1TNeVVoa/joZwGgQjwifQQg2WAVAXJLbHws7s5rkIFZlu
|
24
|
+
sreAJxhNUTSFHJMg0P0RfHOc8FtF2gefWrbC5HxY5XxvQUn44W+UacX6RxMCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUcmCZDdxG
|
26
|
+
JlBIHF18oaexVHJN3ZkwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAn9o4f4hrcETEGIgZeJ4vaJ9D+QtOmkCg5Gz3xzjY
|
29
|
+
SgebYOlc4+5Zb/ZihZ/SG9i5emZ61WHl2lF3PmsQ/tMx7VIx/Af/dl06KsKsTQNo
|
30
|
+
D3+PuErIcch6D+YBOy7co1AwUBODJBnK/2ghf1D4L0M/x8J4+Kw2FLT1nda0IBit
|
31
|
+
JR4fOa23UGAcnmKCHWmwVwhlDLwwhWNmygJH0xZqV2bVGz626T25//s9G6R3ovBL
|
32
|
+
G298lJ9KeogPI6dIWQ32/TR1t1jHz2PKwRl7F6GFP1zy8Z7Eb1DywdhvtCOcpmpu
|
33
|
+
aoi/OknHZpeuGcwLnTUw+UFc9z2MG6EFrPmMQP1qO2QjEgK2HT8NVNqFreinzqd/
|
34
|
+
dI9kVRfbePF09IK45TcAILKFIJMrPp7ESym5Kx5N8hFszBr0wZNVP0gIPMjao5Z6
|
35
|
+
et+EBeqz/UE1cHo1UQJ46zhnSgmyJAzu7CkkRXvmAL/vpbmZMsnwwMHlqzNFUj3Y
|
36
|
+
B0fryIJrom9l8P6WHMK+0kWS
|
37
|
+
-----END CERTIFICATE-----
|
38
|
+
date: 2019-12-10 00:00:00.000000000 Z
|
39
|
+
dependencies:
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: askio
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.1'
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 0.1.1
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0.1'
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 0.1.1
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: alexa_modelbuilder
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 0.5.0
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.5'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.5.0
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.5'
|
80
|
+
description:
|
81
|
+
email: james@jamesrobertson.eu
|
82
|
+
executables: []
|
83
|
+
extensions: []
|
84
|
+
extra_rdoc_files: []
|
85
|
+
files:
|
86
|
+
- lib/alexa_utteranceresponder.rb
|
87
|
+
homepage: https://github.com/jrobertson/alexa_utteranceresponder
|
88
|
+
licenses:
|
89
|
+
- MIT
|
90
|
+
metadata: {}
|
91
|
+
post_install_message:
|
92
|
+
rdoc_options: []
|
93
|
+
require_paths:
|
94
|
+
- lib
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
requirements: []
|
106
|
+
rubygems_version: 3.0.3
|
107
|
+
signing_key:
|
108
|
+
specification_version: 4
|
109
|
+
summary: Checks an utterance against an invocation keyword from the available skills
|
110
|
+
and returns an Alexa formatted response to be passed to the skill's endpoint service.
|
111
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|