alexa_generator 0.3.1 → 0.3.2
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aee459489effcc7826675de4ba5dc8b8f4565014
|
4
|
+
data.tar.gz: 27c1e1164ccc8a245323f3fe66e50526a92febd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 183ea342f89c463192ea44e39d677474a17b55458ca173aa1c30c9c7a6fa4d29277b815bb1d60f6281b7c25ec6ef3f67f25b8da276ac5d749ac7628a42e89610
|
7
|
+
data.tar.gz: fa998af973a54ae82761f5c82564a4a2a740b7a029d8448327595c8256863d73958c934a20397f486bf7188c033e24820e5bb690c18a42717e3c96aaed426dab
|
@@ -46,17 +46,21 @@ module AlexaGenerator
|
|
46
46
|
|
47
47
|
def intent_schema
|
48
48
|
intents = []
|
49
|
-
|
49
|
+
|
50
50
|
@intents.values.each do |intent|
|
51
|
-
slots
|
52
|
-
|
53
|
-
|
54
|
-
slots
|
51
|
+
if intent.slots.any?
|
52
|
+
slots = []
|
53
|
+
|
54
|
+
intent.slots.each do |slot|
|
55
|
+
slots << {name: slot.name, type: slot.type}
|
56
|
+
end
|
57
|
+
|
58
|
+
intents << {intent: intent.name, slots: slots}
|
59
|
+
else
|
60
|
+
intents << {intent: intent.name}
|
55
61
|
end
|
56
|
-
|
57
|
-
intents << {intent: intent.name, slots: slots}
|
58
62
|
end
|
59
|
-
|
63
|
+
|
60
64
|
{ intents: intents }
|
61
65
|
end
|
62
66
|
|
@@ -70,8 +74,8 @@ module AlexaGenerator
|
|
70
74
|
relevant_slots = template.referenced_slots
|
71
75
|
|
72
76
|
# Amazon wants only the LITERAL ones
|
73
|
-
relevant_slots.select! do |s|
|
74
|
-
AlexaGenerator::Slot::SlotType.literal?(slot_types[s.to_sym])
|
77
|
+
relevant_slots.select! do |s|
|
78
|
+
AlexaGenerator::Slot::SlotType.literal?(slot_types[s.to_sym])
|
75
79
|
end
|
76
80
|
|
77
81
|
# Compute all possible value bindings for the relevant slots
|
@@ -108,7 +112,7 @@ module AlexaGenerator
|
|
108
112
|
"#{intent_name} #{utterance}"
|
109
113
|
end
|
110
114
|
end
|
111
|
-
|
115
|
+
|
112
116
|
def slot_type_values(slot_type)
|
113
117
|
bindings = Set.new
|
114
118
|
@intents.values.each do |intent|
|
@@ -120,7 +124,7 @@ module AlexaGenerator
|
|
120
124
|
end
|
121
125
|
bindings.to_a
|
122
126
|
end
|
123
|
-
|
127
|
+
|
124
128
|
def custom_slot_types
|
125
129
|
slots = collect_slot_types
|
126
130
|
custom_types = slots.values.select do |x|
|
@@ -145,4 +149,4 @@ module AlexaGenerator
|
|
145
149
|
builder.create
|
146
150
|
end
|
147
151
|
end
|
148
|
-
end
|
152
|
+
end
|
@@ -53,8 +53,7 @@ describe AlexaGenerator::InteractionModel do
|
|
53
53
|
{
|
54
54
|
intents: [
|
55
55
|
{
|
56
|
-
intent: :"AMAZON.CancelIntent"
|
57
|
-
slots: []
|
56
|
+
intent: :"AMAZON.CancelIntent"
|
58
57
|
}
|
59
58
|
]
|
60
59
|
})
|
@@ -77,8 +76,7 @@ describe AlexaGenerator::InteractionModel do
|
|
77
76
|
{
|
78
77
|
intents: [
|
79
78
|
{
|
80
|
-
intent: :"AMAZON.CancelIntent"
|
81
|
-
slots: []
|
79
|
+
intent: :"AMAZON.CancelIntent"
|
82
80
|
},
|
83
81
|
{
|
84
82
|
intent: :IntentOne,
|
@@ -175,7 +173,7 @@ describe AlexaGenerator::InteractionModel do
|
|
175
173
|
AlexaGenerator::SlotBinding.new( :SlotThree, '6 a.m.' ),
|
176
174
|
AlexaGenerator::SlotBinding.new( :SlotThree, 'noon' ),
|
177
175
|
]
|
178
|
-
|
176
|
+
|
179
177
|
intents = [
|
180
178
|
AlexaGenerator::Intent.new(
|
181
179
|
:MyIntent, [
|
@@ -199,7 +197,7 @@ describe AlexaGenerator::InteractionModel do
|
|
199
197
|
expect(actual).to include('MyIntent Alexa, please {make me a sandwich|SlotOne} {SlotTwo} at {SlotThree}')
|
200
198
|
end
|
201
199
|
end
|
202
|
-
|
200
|
+
|
203
201
|
context 'with custom slot types' do
|
204
202
|
model = AlexaGenerator::InteractionModel.build do |iface|
|
205
203
|
iface.add_intent(:IntentOne) do |intent|
|
@@ -207,31 +205,31 @@ describe AlexaGenerator::InteractionModel do
|
|
207
205
|
slot.add_bindings(*%w(value1 value2 value3))
|
208
206
|
end
|
209
207
|
end
|
210
|
-
|
208
|
+
|
211
209
|
iface.add_intent(:IntentTwo) do |intent|
|
212
210
|
intent.add_slot(:SlotA, 'SlotType1') do |slot|
|
213
211
|
slot.add_binding('value4')
|
214
212
|
end
|
215
|
-
|
213
|
+
|
216
214
|
intent.add_slot(:SlotB, :SlotType2) do |slot|
|
217
215
|
slot.add_binding('valueA')
|
218
216
|
end
|
219
|
-
|
217
|
+
|
220
218
|
intent.add_slot(:SlabC, AlexaGenerator::Slot::SlotType::NUMBER)
|
221
219
|
end
|
222
220
|
end
|
223
|
-
|
221
|
+
|
224
222
|
it 'should map slot bindings appropriately' do
|
225
223
|
expect(model.custom_slot_types).to contain_exactly(*%w(SlotType1 SlotType2))
|
226
|
-
|
224
|
+
|
227
225
|
type1_bindings = model.slot_type_values('SlotType1')
|
228
226
|
expect(type1_bindings).to contain_exactly(*%w(value1 value2 value3 value4))
|
229
|
-
|
227
|
+
|
230
228
|
type2_bindings = model.slot_type_values('SlotType2')
|
231
229
|
expect(type2_bindings).to contain_exactly(*%w(valueA))
|
232
230
|
end
|
233
231
|
end
|
234
|
-
|
232
|
+
|
235
233
|
context 'with slots not having bindings' do
|
236
234
|
it 'should work' do
|
237
235
|
model = AlexaGenerator::InteractionModel.build do |iface|
|
@@ -242,4 +240,22 @@ describe AlexaGenerator::InteractionModel do
|
|
242
240
|
end
|
243
241
|
end
|
244
242
|
end
|
245
|
-
|
243
|
+
|
244
|
+
context 'with no slots' do
|
245
|
+
it 'should not show the slots field' do
|
246
|
+
iface = AlexaGenerator::InteractionModel.build do |iface|
|
247
|
+
iface.add_intent(AlexaGenerator::Intent::AmazonIntentType::CANCEL)
|
248
|
+
end
|
249
|
+
|
250
|
+
expect(iface).to be_an_instance_of(AlexaGenerator::InteractionModel)
|
251
|
+
expect(iface.intent_schema).to eq(
|
252
|
+
{
|
253
|
+
intents: [
|
254
|
+
{
|
255
|
+
intent: :"AMAZON.CancelIntent"
|
256
|
+
}
|
257
|
+
]
|
258
|
+
})
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alexa_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Mullins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|