alexa_toolbox 1.0.0 → 1.0.1

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: 410e7ebcc29c183541f1c4d5ad5b13e898ca1263
4
- data.tar.gz: 3507752cb6aa7791bf0c99db20fd00ceaf063e7a
3
+ metadata.gz: fd37cd19bb97de4723fc60c858e3b4c2a2af637b
4
+ data.tar.gz: de407de0f2d6409107f4319786fd06e6ba4a228f
5
5
  SHA512:
6
- metadata.gz: a21accae38d9aad6543ace3ab03eddd6d327b88999aee89c87b8e3deeba4b5a32b7ab03de1413022ebe0da3cbb0631ff58d5bf9a10955ca39a9fa77ef6a6cbb8
7
- data.tar.gz: 56918a9a6c88a5b562e5514b2e0b80dbbdc779ddc8c0869ef28696fbd9e5abda5e196c2889c17bafce50198bb64ed44ed21467d3a067f7d3bb60f211b7cbc488
6
+ metadata.gz: c822745695ce11cff21386472fd36cd1c8e1df50142cbab6b3f3bb0b0d59d553110e931d6ee0a23b39596e87cfe824621174e9d45fc21a4cfaaa2c6ce9d88ad6
7
+ data.tar.gz: 17eedcdcf1e1fe44289982706ec48b75ad1069c5338de63868a4dfffbb3982f39667c7eb047feb9d01177a90b4b1001578e4171f2cb55a1e4c23c52a01aa5319
data/Gemfile.lock CHANGED
@@ -3,13 +3,11 @@ PATH
3
3
  specs:
4
4
  alexa_toolbox (1.0.0)
5
5
  bundler (~> 1.14)
6
- deep_merge
7
6
  rake
8
7
 
9
8
  GEM
10
9
  remote: https://rubygems.org/
11
10
  specs:
12
- deep_merge (1.1.1)
13
11
  diff-lcs (1.3)
14
12
  rake (12.0.0)
15
13
  rspec (3.6.0)
data/README.md CHANGED
@@ -130,27 +130,218 @@ response.build_response
130
130
  ```ruby
131
131
  require 'alexa_toolbox'
132
132
  response = AlexaToolbox::Response.new
133
- # add_card(type,title,subtitle,content)
133
+ # add_card(type,title,content)
134
134
  # or
135
- # add_hash_card({ :type => type, :title => title, :subtitle => subtitle, :content => content })
136
- response.add_card("PlainText","Card Title","Card Subtitle","This card should have some interesting content for your user.")
135
+ # add_hash_card({ :type => type, :title => title, :content => content })
136
+ response.add_card("PlainText","Card Title","This card should have some interesting content for your user.")
137
137
  response.build_response
138
138
  ```
139
139
 
140
- #### Will generate a valid outputspeech response in JSON format:
140
+ ## Full Documentation
141
141
 
142
- ```JSON
143
- {
144
- "version": "1.0",
145
- "response": {
146
- "outputSpeech": {
147
- "type": "PlainText",
148
- "text": "Ruby is running ready!"
149
- },
150
- "shouldEndSession": true
151
- }
152
- }
142
+ ### Request
143
+
144
+ ##### Initialization:
145
+
146
+ ```ruby
147
+ request = AlexaToolbox::Request.new(json_request, {
148
+ :application_id => 'SKILL_APP_ID'
149
+ })
153
150
  ```
151
+ json_request should be a valid JSON request object.
152
+ If you are using Ruby on Rails, this will be the params variable in your controller.
153
+ While :application_id in the options hash is not required, part of Amazon Alexa security best practices is to compare request applicationId against your skill's application id. As such, I recommend this is set and you check validity (see below) before going further.
154
+ If you don't know where to find your application id, you can get it here:
155
+ [Get Your Application ID](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/handling-requests-sent-by-alexa#getting-the-application-id-for-a-skill)
156
+
157
+ ##### .valid?
158
+
159
+ Check if the request is valid and intended for your application.
160
+
161
+ ```ruby
162
+ request = AlexaToolbox::Request.new(json_request, {
163
+ :application_id => 'SKILL_APP_ID'
164
+ })
165
+ if request.valid?
166
+ # continue with your skill logic
167
+ else
168
+ # return 500 as per Amazon Alexa Documentation
169
+ end
170
+ ```
171
+
172
+ ##### .json
173
+
174
+ JSON representation of the request. Use this if you are familiar with the Alexa request structure and rules and don't wish to use AlexToolbox's request handling.
175
+
176
+ ```ruby
177
+ request = AlexaToolbox::Request.new(json_request, {
178
+ :application_id => 'SKILL_APP_ID'
179
+ })
180
+ request_json = request.json
181
+
182
+ request.json[:version]
183
+ # "1.0"
184
+ ```
185
+
186
+ ##### .type
187
+
188
+ Return the type of request being made.
189
+
190
+ Possible Types:
191
+ LaunchRequest
192
+ IntentRequest
193
+ SessionEndedRequest
194
+ AudioPlayer
195
+ System.ExceptionEncountered
196
+ PlaybackController.NextCommandIssued
197
+
198
+ For AudioPlayer requests, it will return as "AudioPlayer" and not the full request type.
199
+ AudioPlayer requests will have an .audioplayer object
200
+
201
+ ```ruby
202
+ request = AlexaToolbox::Request.new(json_request, {
203
+ :application_id => 'SKILL_APP_ID'
204
+ })
205
+ request.type
206
+ # "IntentRequest"
207
+ ```
208
+
209
+ ##### .version
210
+
211
+ Return the version of the request (always "1.0" currently)
212
+
213
+ ```ruby
214
+ request = AlexaToolbox::Request.new(json_request, {
215
+ :application_id => 'SKILL_APP_ID'
216
+ })
217
+ request.version
218
+ # "1.0"
219
+ ```
220
+
221
+ ##### .request_id
222
+
223
+ Return the requestId of the request
224
+
225
+ ```ruby
226
+ request = AlexaToolbox::Request.new(json_request, {
227
+ :application_id => 'SKILL_APP_ID'
228
+ })
229
+ request.request_id
230
+ # "EdwRequestId.d2fb326f-337d-4ca9-b99b-c308d7cbf8dd"
231
+ ```
232
+
233
+ ##### .locale
234
+
235
+ Return the locale of the request ("en-US","en-UK",etc.)
236
+
237
+ ```ruby
238
+ request = AlexaToolbox::Request.new(json_request, {
239
+ :application_id => 'SKILL_APP_ID'
240
+ })
241
+ request.locale
242
+ # "en-US"
243
+ ```
244
+
245
+ ##### .options
246
+
247
+ Read the options set for the request (this will house your application_id)
248
+
249
+ ```ruby
250
+ request = AlexaToolbox::Request.new(json_request, {
251
+ :application_id => 'SKILL_APP_ID'
252
+ })
253
+ request.options
254
+ # { :application_id => 'SKILL_APP_ID' }
255
+ ```
256
+
257
+ ##### .session
258
+
259
+ Access information on the session, view the session section for more information on the session object.
260
+ Is not included in AudioPlayer requests.
261
+
262
+ ```ruby
263
+ request = AlexaToolbox::Request.new(json_request, {
264
+ :application_id => 'SKILL_APP_ID'
265
+ })
266
+ request.session
267
+ ```
268
+
269
+ ##### .intent
270
+
271
+ Access information on the intent, view the intent section for more information on the intent object.
272
+ Is only included for requests with type "IntentRequest".
273
+
274
+ ```ruby
275
+ request = AlexaToolbox::Request.new(json_request, {
276
+ :application_id => 'SKILL_APP_ID'
277
+ })
278
+ request.intent
279
+ ```
280
+
281
+ ##### .audioplayer
282
+
283
+ Access information on the audioplayer, view the audioplayer section for more information on the audioplayer object.
284
+ Is only included for requests with type "AudioPlayer".
285
+
286
+ ```ruby
287
+ request = AlexaToolbox::Request.new(json_request, {
288
+ :application_id => 'SKILL_APP_ID'
289
+ })
290
+ request.audioplayer
291
+ ```
292
+
293
+ ##### .error
294
+
295
+ Access information for errors.
296
+ This is only included for requests with type "System.ExceptionEncountered" and "AudioPlayer".
297
+ error has two keys, :type and :message.
298
+
299
+ ```ruby
300
+ request = AlexaToolbox::Request.new(json_request, {
301
+ :application_id => 'SKILL_APP_ID'
302
+ })
303
+ request.error
304
+ # { :type => "MEDIA_ERROR_INVALID_REQUEST", :message => "Alexa recognized the request as being malformed. E.g. bad request, unauthorized, forbidden, not found, etc." }
305
+ ```
306
+
307
+ ##### .cause
308
+
309
+ Access information for error cause.
310
+ This is only included for requests with type "System.ExceptionEncountered".
311
+ cause has one keys, :requestId.
312
+
313
+ ```ruby
314
+ request = AlexaToolbox::Request.new(json_request, {
315
+ :application_id => 'SKILL_APP_ID'
316
+ })
317
+ request.cause
318
+ # { :requestId => "EdwRequestId.d2b326f-37d-4a9-b9b-c307cbf8d" }
319
+ ```
320
+
321
+ ##### .context
322
+
323
+ Access context information for the request, not always provided and may be phased out for most request types.
324
+
325
+ ```ruby
326
+ request = AlexaToolbox::Request.new(json_request, {
327
+ :application_id => 'SKILL_APP_ID'
328
+ })
329
+ request.context
330
+ ```
331
+
332
+
333
+ ### Session
334
+
335
+ ### Intent
336
+
337
+ ### Audioplayer
338
+
339
+ ### Context
340
+
341
+ ### Request
342
+
343
+ ### Address
344
+
154
345
 
155
346
  ## Troubleshooting
156
347
 
@@ -6,7 +6,6 @@ module AlexaToolbox
6
6
 
7
7
  class Request
8
8
  require 'json'
9
- require 'deep_merge'
10
9
  require 'alexa_toolbox/session'
11
10
  require 'alexa_toolbox/intent'
12
11
  require 'alexa_toolbox/audioplayer'
@@ -20,8 +19,7 @@ module AlexaToolbox
20
19
  end
21
20
 
22
21
  def initialize(json_request, options = {})
23
- options = options.deep_merge(self.class.default_options)
24
- @options = options
22
+ @options = options if options.key?(:application_id)
25
23
 
26
24
  @request_id = json_request[:request][:requestId]
27
25
  raise ArgumentError, 'Request ID not present' if @request_id.nil?
@@ -1,3 +1,3 @@
1
1
  module AlexaToolbox
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alexa_toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul McMahon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-15 00:00:00.000000000 Z
11
+ date: 2017-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: deep_merge
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rspec
57
43
  requirement: !ruby/object:Gem::Requirement