alexa_generator 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
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
|