alexa_modelbuilder 0.2.3 → 0.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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +1 -2
- data/lib/alexa_modelbuilder.rb +104 -4
- metadata +5 -4
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c5c978765d3aa5439483ae534a87d4b37424b09
|
4
|
+
data.tar.gz: 2e70d2a03514580b93fd33a816dcbb790f4059e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56434970f521ff0a790dcf9eda19daf899237a3d50a8a2db29171e731c757e68bed895f7d68fe742e83a1a9f323d039c3cb99339c415e08ba77172766297838a
|
7
|
+
data.tar.gz: 708e299b5b3be0894fcaa4d9d9eb25330064509147ea196212f373923ed74894aeb6faab2e10155a0396f7d4bb8deb0a8e52527a1800900d2f3f22976e3c68fe
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
�
|
2
|
-
� �&5'"�������%�m�����h�G��P�噞^���9�������$/�gZH���027����Sr���1V�g��I!s{�U�X��(�7���D�`�M�U2��
|
1
|
+
�(>�e�����vƃ��`���y{v>������o%-�^6��ߘn7�.%��l���c�TBهi��yA-��2��9��e��u�U����P�M������.���0E�U���;�epԣ3�pO�y��92�iV��<묧�!t(��բmQ������th��ۺ�=����~�F�_�qO�����f٢S4������s���d��4�(ʂH�##+�"uͶv����<�!!��p��I�
|
data/lib/alexa_modelbuilder.rb
CHANGED
@@ -9,9 +9,9 @@ require 'lineparser'
|
|
9
9
|
|
10
10
|
class AlexaModelBuilder
|
11
11
|
|
12
|
-
def initialize(s=nil, debug: false)
|
12
|
+
def initialize(s=nil, debug: false, locale: 'en-GB')
|
13
13
|
|
14
|
-
@debug = debug
|
14
|
+
@debug, @locale = debug, locale
|
15
15
|
parse(s) if s
|
16
16
|
|
17
17
|
end
|
@@ -80,7 +80,106 @@ class AlexaModelBuilder
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def to_h()
|
83
|
-
@
|
83
|
+
@h
|
84
|
+
end
|
85
|
+
|
86
|
+
def to_manifest()
|
87
|
+
JSON.pretty_generate(@manifest)
|
88
|
+
end
|
89
|
+
|
90
|
+
## A guideline of fields to include within the raw document
|
91
|
+
|
92
|
+
=begin
|
93
|
+
manifest
|
94
|
+
|
95
|
+
vendorId: [generate from vendors.first]
|
96
|
+
locale: input (default)
|
97
|
+
name: input
|
98
|
+
summary: input (default)
|
99
|
+
description: input (default)
|
100
|
+
keywords: input (default)
|
101
|
+
examplePhrases: [generate from intent utterances]
|
102
|
+
testingInstructions: input [generate from intent utterances]
|
103
|
+
endpoint: input
|
104
|
+
=end
|
105
|
+
|
106
|
+
def build_manifest(h)
|
107
|
+
|
108
|
+
manifest = {
|
109
|
+
"vendorId" => 'YOUR_VENDOR_ID',
|
110
|
+
"manifest" => {
|
111
|
+
"publishingInformation" => {
|
112
|
+
"locales" => {
|
113
|
+
},
|
114
|
+
"isAvailableWorldwide" => false,
|
115
|
+
"testingInstructions" => "1) Say 'Alexa, say something'",
|
116
|
+
"category" => "SMART_HOME",
|
117
|
+
"distributionCountries" => [
|
118
|
+
]
|
119
|
+
},
|
120
|
+
"apis" => {
|
121
|
+
"custom" => {
|
122
|
+
"endpoint" => {
|
123
|
+
"uri" => "https://someserver.com/alexaskills"
|
124
|
+
}
|
125
|
+
}
|
126
|
+
},
|
127
|
+
"manifestVersion" => "1.0",
|
128
|
+
"privacyAndCompliance" => {
|
129
|
+
"allowsPurchases" => false,
|
130
|
+
"locales" => {
|
131
|
+
},
|
132
|
+
"isExportCompliant" => true,
|
133
|
+
"isChildDirected" => false,
|
134
|
+
"usesPersonalInfo" => false
|
135
|
+
}
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
manifest['vendorId'] = h[:vendor_id] if h[:vendor_id]
|
140
|
+
m = manifest['manifest']
|
141
|
+
|
142
|
+
h[:locale] ||= @locale
|
143
|
+
|
144
|
+
|
145
|
+
info = {}
|
146
|
+
info['summary'] = h[:summary] || h[:name]
|
147
|
+
|
148
|
+
examples = ["Alexa, open %s." % h[:invocation]]
|
149
|
+
examples += h[:intent].select{|x| x.is_a? Array}.take(2).map do |x|
|
150
|
+
"Alexa, %s." % x.first[-1][:utterance].first
|
151
|
+
end
|
152
|
+
|
153
|
+
info['examplePhrases'] = examples
|
154
|
+
info['keywords'] = h[:keywords] ? h[:keywords] : \
|
155
|
+
h[:name].split.map(&:downcase)
|
156
|
+
|
157
|
+
info['name'] = h[:name] if h[:name]
|
158
|
+
info['description'] = h[:description] || info['summary']
|
159
|
+
|
160
|
+
m['publishingInformation']['locales'] = {h[:locale] => info}
|
161
|
+
countries = {gb: %w(GB US), us: %w(US GB)}
|
162
|
+
m['publishingInformation']['distributionCountries'] = \
|
163
|
+
countries[h[:locale][/[A-Z]+/].downcase.to_sym]
|
164
|
+
m['apis']['custom']['endpoint']['uri'] = h[:endpoint] if h[:endpoint]
|
165
|
+
|
166
|
+
toc = {
|
167
|
+
'termsOfUseUrl' => 'http://www.termsofuse.sampleskill.com',
|
168
|
+
'privacyPolicyUrl' => 'http://www.myprivacypolicy.sampleskill.com'
|
169
|
+
}
|
170
|
+
m['privacyAndCompliance']['locales'] = {h[:locale] => toc}
|
171
|
+
|
172
|
+
|
173
|
+
instruct = ["open %s" % h[:invocation]]
|
174
|
+
tests = instruct.map.with_index {|x, i| "%s) Say 'Alexa, %s'" % [i+1, x]}
|
175
|
+
m['publishingInformation']['testingInstructions'] = tests.join(' ')
|
176
|
+
|
177
|
+
manifest
|
178
|
+
end
|
179
|
+
|
180
|
+
|
181
|
+
def to_model()
|
182
|
+
JSON.pretty_generate(@interact_model)
|
84
183
|
end
|
85
184
|
|
86
185
|
def to_json(pretty: true)
|
@@ -130,7 +229,7 @@ class AlexaModelBuilder
|
|
130
229
|
puts 'a2: ' + a2.inspect if @debug
|
131
230
|
lp = LineParser.new a2, debug: @debug
|
132
231
|
lp.parse lines
|
133
|
-
h = lp.to_h
|
232
|
+
@h = h = lp.to_h
|
134
233
|
puts 'h: ' + h.inspect if @debug
|
135
234
|
|
136
235
|
model = {
|
@@ -200,6 +299,7 @@ class AlexaModelBuilder
|
|
200
299
|
|
201
300
|
end
|
202
301
|
|
302
|
+
@manifest = build_manifest h
|
203
303
|
@interact_model = model
|
204
304
|
|
205
305
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alexa_modelbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -41,7 +41,7 @@ dependencies:
|
|
41
41
|
version: '0.1'
|
42
42
|
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: 0.1.
|
44
|
+
version: 0.1.19
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
47
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -51,7 +51,7 @@ dependencies:
|
|
51
51
|
version: '0.1'
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.1.
|
54
|
+
version: 0.1.19
|
55
55
|
description:
|
56
56
|
email: james@jamesrobertson.eu
|
57
57
|
executables: []
|
@@ -82,5 +82,6 @@ rubyforge_project:
|
|
82
82
|
rubygems_version: 2.6.13
|
83
83
|
signing_key:
|
84
84
|
specification_version: 4
|
85
|
-
summary: Builds an Alexa Interaction Model
|
85
|
+
summary: Builds an Alexa Skills Interaction Model and optionally an Alexa Skills manigest
|
86
|
+
in JSON format from plain text
|
86
87
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|