aws-sdk-lexruntimeservice 1.0.0.rc1 → 1.0.0.rc2

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: 2a68af403e476909b53d65dcd4367610b56b8edf
4
- data.tar.gz: e716ca7adac060a4b06fe03dd74d73458f371227
3
+ metadata.gz: 064ad4c323c89dcdc169a87426b5b0a87476af90
4
+ data.tar.gz: 71d99d170a6778994ba1f23d73743f4fd27ef39a
5
5
  SHA512:
6
- metadata.gz: 8ab76ac4c43c1dab2b200d863d50cd8dfa460441c813a1bb32da6d1350c1d66e8f6b67ca97c9eee27d97b216c1f2d06191f7c060d553e3db584356ce318cb055
7
- data.tar.gz: 32fbb644e634ebd18710119bb599c094a53e5442060f731d235e580db5ad1e4b88a59571c790f2473d352f4310e2a06f032f2bc7bf67c031bff3d2dc1b795191
6
+ metadata.gz: 2c37948a0ce4176aa1168c8c1d2687ca989c6ebb82f61389533cf3e294eaaf3e6843b9bbee3fa6bf30240115824bc51e56c13f3f08bbc85b731b092181e56fb1
7
+ data.tar.gz: ee5751ca966d595d5162a23671082a93cfd302ec60bec49adb187425322339ad086109105cf9f021637659b4482fac30787d55ed557c1c50994f8c10df0ba49d
@@ -42,6 +42,6 @@ require_relative 'aws-sdk-lexruntimeservice/customizations'
42
42
  # @service
43
43
  module Aws::LexRuntimeService
44
44
 
45
- GEM_VERSION = '1.0.0.rc1'
45
+ GEM_VERSION = '1.0.0.rc2'
46
46
 
47
47
  end
@@ -18,6 +18,7 @@ require 'aws-sdk-core/plugins/regional_endpoint.rb'
18
18
  require 'aws-sdk-core/plugins/response_paging.rb'
19
19
  require 'aws-sdk-core/plugins/stub_responses.rb'
20
20
  require 'aws-sdk-core/plugins/idempotency_token.rb'
21
+ require 'aws-sdk-core/plugins/jsonvalue_converter.rb'
21
22
  require 'aws-sdk-core/plugins/signature_v4.rb'
22
23
  require 'aws-sdk-core/plugins/protocols/rest_json.rb'
23
24
 
@@ -45,6 +46,7 @@ module Aws::LexRuntimeService
45
46
  add_plugin(Aws::Plugins::ResponsePaging)
46
47
  add_plugin(Aws::Plugins::StubResponses)
47
48
  add_plugin(Aws::Plugins::IdempotencyToken)
49
+ add_plugin(Aws::Plugins::JsonvalueConverter)
48
50
  add_plugin(Aws::Plugins::SignatureV4)
49
51
  add_plugin(Aws::Plugins::Protocols::RestJson)
50
52
 
@@ -143,29 +145,63 @@ module Aws::LexRuntimeService
143
145
 
144
146
  # @!group API Operations
145
147
 
146
- # Sends user input text to Amazon Lex at runtime. Amazon Lex uses the
147
- # machine learning model that the service built for the application to
148
- # interpret user input.
148
+ # Sends user input (text or speech) to Amazon Lex. Clients use this API
149
+ # to send requests to Amazon Lex at runtime. Amazon Lex interprets the
150
+ # user input using the machine learning model that it built for the bot.
149
151
  #
150
- # In response, Amazon Lex returns the next message to convey to the user
151
- # (based on the context of the user interaction) and whether to expect a
152
- # user response to the message (`dialogState`). For example, consider
153
- # the following response messages:
152
+ # In response, Amazon Lex returns the next message to convey to the
153
+ # user. Consider the following example messages:
154
154
  #
155
- # * "What pizza toppings would you like?" In this case, the
156
- # `dialogState` would be `ElicitSlot` (that is, a user response is
157
- # expected).
155
+ # * For a user input "I would like a pizza," Amazon Lex might return a
156
+ # response with a message eliciting slot data (for example,
157
+ # `PizzaSize`): "What size pizza would you like?".
158
158
  #
159
- # * "Your order has been placed." In this case, Amazon Lex returns
160
- # one of the following `dialogState` values depending on how the
161
- # intent fulfillment is configured (see `fulfillmentActivity` in
162
- # `CreateIntent`):
159
+ # * After the user provides all of the pizza order information, Amazon
160
+ # Lex might return a response with a message to get user confirmation:
161
+ # "Order the pizza?".
163
162
  #
164
- # * `FulFilled` The intent fulfillment is configured through a
165
- # Lambda function.
163
+ # * After the user replies "Yes" to the confirmation prompt, Amazon
164
+ # Lex might return a conclusion statement: "Thank you, your cheese
165
+ # pizza has been ordered.".
166
166
  #
167
- # * `ReadyForFulfilment` The intent's `fulfillmentActivity` is to
168
- # simply return the intent data back to the client application.
167
+ # Not all Amazon Lex messages require a response from the user. For
168
+ # example, conclusion statements do not require a response. Some
169
+ # messages require only a yes or no response. In addition to the
170
+ # `message`, Amazon Lex provides additional context about the message in
171
+ # the response that you can use to enhance client behavior, such as
172
+ # displaying the appropriate client user interface. Consider the
173
+ # following examples:
174
+ #
175
+ # * If the message is to elicit slot data, Amazon Lex returns the
176
+ # following context information:
177
+ #
178
+ # * `x-amz-lex-dialog-state` header set to `ElicitSlot`
179
+ #
180
+ # * `x-amz-lex-intent-name` header set to the intent name in the
181
+ # current context
182
+ #
183
+ # * `x-amz-lex-slot-to-elicit` header set to the slot name for which
184
+ # the `message` is eliciting information
185
+ #
186
+ # * `x-amz-lex-slots` header set to a map of slots configured for the
187
+ # intent with their current values
188
+ #
189
+ # * If the message is a confirmation prompt, the
190
+ # `x-amz-lex-dialog-state` header is set to `Confirmation` and the
191
+ # `x-amz-lex-slot-to-elicit` header is omitted.
192
+ #
193
+ # * If the message is a clarification prompt configured for the intent,
194
+ # indicating that the user intent is not understood, the
195
+ # `x-amz-dialog-state` header is set to `ElicitIntent` and the
196
+ # `x-amz-slot-to-elicit` header is omitted.
197
+ #
198
+ # In addition, Amazon Lex also returns your application-specific
199
+ # `sessionAttributes`. For more information, see [Managing Conversation
200
+ # Context][1].
201
+ #
202
+ #
203
+ #
204
+ # [1]: http://docs.aws.amazon.com/lex/latest/dg/context-mgmt.html
169
205
  #
170
206
  # @option params [required, String] :bot_name
171
207
  # Name of the Amazon Lex bot.
@@ -174,11 +210,255 @@ module Aws::LexRuntimeService
174
210
  # Alias of the Amazon Lex bot.
175
211
  #
176
212
  # @option params [required, String] :user_id
177
- # User ID of your client application. Typically, each of your
178
- # application users should have a unique ID. Note the following
179
- # considerations:
213
+ # ID of the client application user. Typically, each of your application
214
+ # users should have a unique ID. The application developer decides the
215
+ # user IDs. At runtime, each request must include the user ID. Note the
216
+ # following considerations:
217
+ #
218
+ # * If you want a user to start conversation on one device and continue
219
+ # the conversation on another device, you might choose a user-specific
220
+ # identifier, such as the user's login, or Amazon Cognito user ID
221
+ # (assuming your application is using Amazon Cognito).
222
+ #
223
+ # * If you want the same user to be able to have two independent
224
+ # conversations on two different devices, you might choose
225
+ # device-specific identifier, such as device ID, or some globally
226
+ # unique identifier.
227
+ #
228
+ # @option params [String] :session_attributes
229
+ # You pass this value in the `x-amz-lex-session-attributes` HTTP header.
230
+ # The value must be map (keys and values must be strings) that is JSON
231
+ # serialized and then base64 encoded.
232
+ #
233
+ # A session represents dialog between a user and Amazon Lex. At runtime,
234
+ # a client application can pass contextual information, in the request
235
+ # to Amazon Lex. For example,
236
+ #
237
+ # * You might use session attributes to track the requestID of user
238
+ # requests.
239
+ #
240
+ # * In Getting Started Exercise 1, the example bot uses the price
241
+ # session attribute to maintain the price of flowers ordered (for
242
+ # example, "price":25). The code hook (Lambda function) sets this
243
+ # attribute based on the type of flowers ordered. For more
244
+ # information, see [Review the Details of Information Flow][1].
245
+ #
246
+ # * In the BookTrip bot exercise, the bot uses the `currentReservation`
247
+ # session attribute to maintains the slot data during the in-progress
248
+ # conversation to book a hotel or book a car. For more information,
249
+ # see [Details of Information Flow][2].
250
+ #
251
+ # Amazon Lex passes these session attributes to the Lambda functions
252
+ # configured for the intent In the your Lambda function, you can use the
253
+ # session attributes for initialization and customization (prompts).
254
+ # Some examples are:
255
+ #
256
+ # * Initialization - In a pizza ordering bot, if you pass user location
257
+ # (for example, `"Location : 111 Maple Street"`), then your Lambda
258
+ # function might use this information to determine the closest
259
+ # pizzeria to place the order (and perhaps set the storeAddress slot
260
+ # value as well).
261
+ #
262
+ # Personalized prompts - For example, you can configure prompts to
263
+ # refer to the user by name (for example, "Hey \[firstName\], what
264
+ # toppings would you like?"). You can pass the user's name as a
265
+ # session attribute ("firstName": "Joe") so that Amazon Lex can
266
+ # substitute the placeholder to provide a personalized prompt to the
267
+ # user ("Hey Joe, what toppings would you like?").
268
+ #
269
+ # <note markdown="1"> Amazon Lex does not persist session attributes.
270
+ #
271
+ # If you configured a code hook for the intent, Amazon Lex passes the
272
+ # incoming session attributes to the Lambda function. The Lambda
273
+ # function must return these session attributes if you want Amazon Lex
274
+ # to return them to the client.
275
+ #
276
+ # If there is no code hook configured for the intent Amazon Lex simply
277
+ # returns the session attributes to the client application.
278
+ #
279
+ # </note>
280
+ #
281
+ # **SDK automatically handles json encoding and base64 encoding for you
282
+ # when the required value (Hash, Array, etc.) is provided according to
283
+ # the description.**
284
+ #
285
+ #
286
+ #
287
+ # [1]: http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html
288
+ # [2]: http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html
289
+ #
290
+ # @option params [required, String] :content_type
291
+ # You pass this values as the `Content-Type` HTTP header.
292
+ #
293
+ # Indicates the audio format or text. The header value must start with
294
+ # one of the following prefixes:
295
+ #
296
+ # * PCM format
297
+ #
298
+ # * audio/l16; rate=16000; channels=1
299
+ #
300
+ # * audio/x-l16; sample-rate=16000; channel-count=1
301
+ #
302
+ # * Opus format
303
+ #
304
+ # * audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=1;
305
+ # frame-size-milliseconds=1.1
306
+ #
307
+ # ^
308
+ #
309
+ # * Text format
310
+ #
311
+ # * text/plain; charset=utf-8
312
+ #
313
+ # ^
314
+ #
315
+ # @option params [String] :accept
316
+ # You pass this value as the `Accept` HTTP header.
317
+ #
318
+ # The message Amazon Lex returns in the response can be either text or
319
+ # speech based on the `Accept` HTTP header value in the request.
320
+ #
321
+ # * If the value is `text/plain; charset=utf-8`, Amazon Lex returns text
322
+ # in the response.
323
+ #
324
+ # * If the value begins with `audio/`, Amazon Lex returns speech in the
325
+ # response. Amazon Lex uses Amazon Polly to generate the speech (using
326
+ # the configuration you specified in the `Accept` header). For
327
+ # example, if you specify `audio/mpeg` as the value, Amazon Lex
328
+ # returns speech in the MPEG format.
329
+ #
330
+ # The following are the accepted values:
331
+ #
332
+ # * audio/mpeg
333
+ #
334
+ # * audio/ogg
335
+ #
336
+ # * audio/pcm
337
+ #
338
+ # * text/plain; charset=utf-8
339
+ #
340
+ # * audio/* (defaults to mpeg)
341
+ #
342
+ # @option params [required, String, IO] :input_stream
343
+ # User input in PCM or Opus audio format or text format as described in
344
+ # the `Content-Type` HTTP header.
345
+ #
346
+ # @return [Types::PostContentResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
347
+ #
348
+ # * {Types::PostContentResponse#content_type #content_type} => String
349
+ # * {Types::PostContentResponse#intent_name #intent_name} => String
350
+ # * {Types::PostContentResponse#slots #slots} => String
351
+ # * {Types::PostContentResponse#session_attributes #session_attributes} => String
352
+ # * {Types::PostContentResponse#message #message} => String
353
+ # * {Types::PostContentResponse#dialog_state #dialog_state} => String
354
+ # * {Types::PostContentResponse#slot_to_elicit #slot_to_elicit} => String
355
+ # * {Types::PostContentResponse#input_transcript #input_transcript} => String
356
+ # * {Types::PostContentResponse#audio_stream #audio_stream} => IO
357
+ #
358
+ # @example Request syntax with placeholder values
359
+ #
360
+ # resp = client.post_content({
361
+ # bot_name: "BotName", # required
362
+ # bot_alias: "BotAlias", # required
363
+ # user_id: "UserId", # required
364
+ # session_attributes: "String",
365
+ # content_type: "HttpContentType", # required
366
+ # accept: "Accept",
367
+ # input_stream: "data", # required
368
+ # })
369
+ #
370
+ # @example Response structure
371
+ #
372
+ # resp.content_type #=> String
373
+ # resp.intent_name #=> String
374
+ # resp.slots #=> String
375
+ # resp.session_attributes #=> String
376
+ # resp.message #=> String
377
+ # resp.dialog_state #=> String, one of "ElicitIntent", "ConfirmIntent", "ElicitSlot", "Fulfilled", "ReadyForFulfillment", "Failed"
378
+ # resp.slot_to_elicit #=> String
379
+ # resp.input_transcript #=> String
380
+ # resp.audio_stream #=> IO
381
+ #
382
+ # @see http://docs.aws.amazon.com/goto/WebAPI/runtime.lex-2016-11-28/PostContent AWS API Documentation
383
+ #
384
+ # @overload post_content(params = {})
385
+ # @param [Hash] params ({})
386
+ def post_content(params = {}, options = {})
387
+ req = build_request(:post_content, params)
388
+ req.send_request(options)
389
+ end
390
+
391
+ # Sends user input (text-only) to Amazon Lex. Client applications can
392
+ # use this API to send requests to Amazon Lex at runtime. Amazon Lex
393
+ # then interprets the user input using the machine learning model it
394
+ # built for the bot.
395
+ #
396
+ # In response, Amazon Lex returns the next `message` to convey to the
397
+ # user an optional `responseCard` to display. Consider the following
398
+ # example messages:
399
+ #
400
+ # * For a user input "I would like a pizza", Amazon Lex might return a
401
+ # response with a message eliciting slot data (for example,
402
+ # PizzaSize): "What size pizza would you like?"
403
+ #
404
+ # * After the user provides all of the pizza order information, Amazon
405
+ # Lex might return a response with a message to obtain user
406
+ # confirmation "Proceed with the pizza order?".
407
+ #
408
+ # * After the user replies to a confirmation prompt with a "yes",
409
+ # Amazon Lex might return a conclusion statement: "Thank you, your
410
+ # cheese pizza has been ordered.".
411
+ #
412
+ # Not all Amazon Lex messages require a user response. For example, a
413
+ # conclusion statement does not require a response. Some messages
414
+ # require only a "yes" or "no" user response. In addition to the
415
+ # `message`, Amazon Lex provides additional context about the message in
416
+ # the response that you might use to enhance client behavior, for
417
+ # example, to display the appropriate client user interface. These are
418
+ # the `slotToElicit`, `dialogState`, `intentName`, and `slots` fields in
419
+ # the response. Consider the following examples:
420
+ #
421
+ # * If the message is to elicit slot data, Amazon Lex returns the
422
+ # following context information:
423
+ #
424
+ # * `dialogState` set to ElicitSlot
425
+ #
426
+ # * `intentName` set to the intent name in the current context
427
+ #
428
+ # * `slotToElicit` set to the slot name for which the `message` is
429
+ # eliciting information
430
+ #
431
+ # * `slots` set to a map of slots, configured for the intent, with
432
+ # currently known values
433
+ #
434
+ # * If the message is a confirmation prompt, the `dialogState` is set to
435
+ # ConfirmIntent and `SlotToElicit` is set to null.
436
+ #
437
+ # * If the message is a clarification prompt (configured for the intent)
438
+ # that indicates that user intent is not understood, the `dialogState`
439
+ # is set to ElicitIntent and `slotToElicit` is set to null.
440
+ #
441
+ # In addition, Amazon Lex also returns your application-specific
442
+ # `sessionAttributes`. For more information, see [Managing Conversation
443
+ # Context][1].
444
+ #
445
+ #
446
+ #
447
+ # [1]: http://docs.aws.amazon.com/lex/latest/dg/context-mgmt.html
448
+ #
449
+ # @option params [required, String] :bot_name
450
+ # The name of the Amazon Lex bot.
451
+ #
452
+ # @option params [required, String] :bot_alias
453
+ # The alias of the Amazon Lex bot.
454
+ #
455
+ # @option params [required, String] :user_id
456
+ # The ID of the client application user. The application developer
457
+ # decides the user IDs. At runtime, each request must include the user
458
+ # ID. Typically, each of your application users should have a unique ID.
459
+ # Note the following considerations:
180
460
  #
181
- # * If you want a user to start a conversation on one mobile device and
461
+ # * If you want a user to start a conversation on one device and
182
462
  # continue the conversation on another device, you might choose a
183
463
  # user-specific identifier, such as a login or Amazon Cognito user ID
184
464
  # (assuming your application is using Amazon Cognito).
@@ -189,44 +469,62 @@ module Aws::LexRuntimeService
189
469
  # unique identifier.
190
470
  #
191
471
  # @option params [Hash<String,String>] :session_attributes
192
- # A session represents the dialog between a user and Amazon Lex. At
193
- # runtime, a client application can pass contextual information (session
194
- # attributes) in the request. For example, `"FirstName" : "Joe"`. Amazon
195
- # Lex passes these session attributes to the AWS Lambda functions
196
- # configured for the intent (see `dialogCodeHook` and
197
- # `fulfillmentActivity.codeHook` in `CreateIntent`).
198
- #
199
- # In your Lambda function, you can use the session attributes for
200
- # customization. Some examples are:
201
- #
202
- # * In a pizza ordering application, if you can pass user location as a
203
- # session attribute (for example, `"Location" : "111 Maple street"`),
204
- # your Lambda function might use this information to determine the
205
- # closest pizzeria to place the order.
206
- #
207
- # * Use session attributes to personalize prompts. For example, you pass
208
- # in user name as a session attribute (`"FirstName" : "Joe"`), you
209
- # might configure subsequent prompts to refer to this attribute, as
210
- # `$session.FirstName"`. At runtime, Amazon Lex substitutes a real
211
- # value when it generates a prompt, such as "Hello Joe, what would
212
- # you like to order?"
472
+ # By using session attributes, a client application can pass contextual
473
+ # information in the request to Amazon Lex For example,
474
+ #
475
+ # * In Getting Started Exercise 1, the example bot uses the `price`
476
+ # session attribute to maintain the price of the flowers ordered (for
477
+ # example, "Price":25). The code hook (the Lambda function) sets
478
+ # this attribute based on the type of flowers ordered. For more
479
+ # information, see [Review the Details of Information Flow][1].
480
+ #
481
+ # * In the BookTrip bot exercise, the bot uses the `currentReservation`
482
+ # session attribute to maintain slot data during the in-progress
483
+ # conversation to book a hotel or book a car. For more information,
484
+ # see [Details of Information Flow][2].
485
+ #
486
+ # * You might use the session attributes (key, value pairs) to track the
487
+ # requestID of user requests.
488
+ #
489
+ # Amazon Lex simply passes these session attributes to the Lambda
490
+ # functions configured for the intent.
491
+ #
492
+ # In your Lambda function, you can also use the session attributes for
493
+ # initialization and customization (prompts and response cards). Some
494
+ # examples are:
495
+ #
496
+ # * Initialization - In a pizza ordering bot, if you can pass the user
497
+ # location as a session attribute (for example, `"Location" : "111
498
+ # Maple street"`), then your Lambda function might use this
499
+ # information to determine the closest pizzeria to place the order
500
+ # (perhaps to set the storeAddress slot value).
501
+ #
502
+ # * Personalize prompts - For example, you can configure prompts to
503
+ # refer to the user name. (For example, "Hey \[FirstName\], what
504
+ # toppings would you like?"). You can pass the user name as a session
505
+ # attribute (`"FirstName" : "Joe"`) so that Amazon Lex can substitute
506
+ # the placeholder to provide a personalize prompt to the user ("Hey
507
+ # Joe, what toppings would you like?").
213
508
  #
214
509
  # <note markdown="1"> Amazon Lex does not persist session attributes.
215
510
  #
216
- # If the intent is configured without a Lambda function to process the
217
- # intent (that is, the client application to process the intent), Amazon
218
- # Lex simply returns the session attributes back to the client
219
- # application.
511
+ # If you configure a code hook for the intent, Amazon Lex passes the
512
+ # incoming session attributes to the Lambda function. If you want Amazon
513
+ # Lex to return these session attributes back to the client, the Lambda
514
+ # function must return them.
220
515
  #
221
- # If the intent is configured with a Lambda function to process the
222
- # intent, Amazon Lex passes the incoming session attributes to the
223
- # Lambda function. The Lambda function must return these session
224
- # attributes if you want Amazon Lex to return them back to the client.
516
+ # If there is no code hook configured for the intent, Amazon Lex simply
517
+ # returns the session attributes back to the client application.
225
518
  #
226
519
  # </note>
227
520
  #
521
+ #
522
+ #
523
+ # [1]: http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html
524
+ # [2]: http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html
525
+ #
228
526
  # @option params [required, String] :input_text
229
- # Text user entered (Amazon Lex interprets this text).
527
+ # The text that the user entered (Amazon Lex interprets this text).
230
528
  #
231
529
  # @return [Types::PostTextResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
232
530
  #
@@ -293,7 +591,7 @@ module Aws::LexRuntimeService
293
591
  params: params,
294
592
  config: config)
295
593
  context[:gem_name] = 'aws-sdk-lexruntimeservice'
296
- context[:gem_version] = '1.0.0.rc1'
594
+ context[:gem_version] = '1.0.0.rc2'
297
595
  Seahorse::Client::Request.new(handlers, context)
298
596
  end
299
597
 
@@ -11,8 +11,10 @@ module Aws::LexRuntimeService
11
11
 
12
12
  include Seahorse::Model
13
13
 
14
+ Accept = Shapes::StringShape.new(name: 'Accept')
14
15
  BadGatewayException = Shapes::StructureShape.new(name: 'BadGatewayException')
15
16
  BadRequestException = Shapes::StructureShape.new(name: 'BadRequestException')
17
+ BlobStream = Shapes::BlobShape.new(name: 'BlobStream')
16
18
  BotAlias = Shapes::StringShape.new(name: 'BotAlias')
17
19
  BotName = Shapes::StringShape.new(name: 'BotName')
18
20
  Button = Shapes::StructureShape.new(name: 'Button')
@@ -24,19 +26,25 @@ module Aws::LexRuntimeService
24
26
  DialogState = Shapes::StringShape.new(name: 'DialogState')
25
27
  ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage')
26
28
  GenericAttachment = Shapes::StructureShape.new(name: 'GenericAttachment')
29
+ HttpContentType = Shapes::StringShape.new(name: 'HttpContentType')
27
30
  IntentName = Shapes::StringShape.new(name: 'IntentName')
28
31
  InternalFailureException = Shapes::StructureShape.new(name: 'InternalFailureException')
29
32
  LimitExceededException = Shapes::StructureShape.new(name: 'LimitExceededException')
30
33
  LoopDetectedException = Shapes::StructureShape.new(name: 'LoopDetectedException')
34
+ NotAcceptableException = Shapes::StructureShape.new(name: 'NotAcceptableException')
31
35
  NotFoundException = Shapes::StructureShape.new(name: 'NotFoundException')
36
+ PostContentRequest = Shapes::StructureShape.new(name: 'PostContentRequest')
37
+ PostContentResponse = Shapes::StructureShape.new(name: 'PostContentResponse')
32
38
  PostTextRequest = Shapes::StructureShape.new(name: 'PostTextRequest')
33
39
  PostTextResponse = Shapes::StructureShape.new(name: 'PostTextResponse')
40
+ RequestTimeoutException = Shapes::StructureShape.new(name: 'RequestTimeoutException')
34
41
  ResponseCard = Shapes::StructureShape.new(name: 'ResponseCard')
35
42
  String = Shapes::StringShape.new(name: 'String')
36
43
  StringMap = Shapes::MapShape.new(name: 'StringMap')
37
44
  StringUrlWithLength = Shapes::StringShape.new(name: 'StringUrlWithLength')
38
45
  StringWithLength = Shapes::StringShape.new(name: 'StringWithLength')
39
46
  Text = Shapes::StringShape.new(name: 'Text')
47
+ UnsupportedMediaTypeException = Shapes::StructureShape.new(name: 'UnsupportedMediaTypeException')
40
48
  UserId = Shapes::StringShape.new(name: 'UserId')
41
49
  genericAttachmentList = Shapes::ListShape.new(name: 'genericAttachmentList')
42
50
  listOfButtons = Shapes::ListShape.new(name: 'listOfButtons')
@@ -52,6 +60,30 @@ module Aws::LexRuntimeService
52
60
  GenericAttachment.add_member(:buttons, Shapes::ShapeRef.new(shape: listOfButtons, location_name: "buttons"))
53
61
  GenericAttachment.struct_class = Types::GenericAttachment
54
62
 
63
+ PostContentRequest.add_member(:bot_name, Shapes::ShapeRef.new(shape: BotName, required: true, location: "uri", location_name: "botName"))
64
+ PostContentRequest.add_member(:bot_alias, Shapes::ShapeRef.new(shape: BotAlias, required: true, location: "uri", location_name: "botAlias"))
65
+ PostContentRequest.add_member(:user_id, Shapes::ShapeRef.new(shape: UserId, required: true, location: "uri", location_name: "userId"))
66
+ PostContentRequest.add_member(:session_attributes, Shapes::ShapeRef.new(shape: String, location: "header", location_name: "x-amz-lex-session-attributes", metadata: {"jsonvalue"=>true}))
67
+ PostContentRequest.add_member(:content_type, Shapes::ShapeRef.new(shape: HttpContentType, required: true, location: "header", location_name: "Content-Type"))
68
+ PostContentRequest.add_member(:accept, Shapes::ShapeRef.new(shape: Accept, location: "header", location_name: "Accept"))
69
+ PostContentRequest.add_member(:input_stream, Shapes::ShapeRef.new(shape: BlobStream, required: true, location_name: "inputStream"))
70
+ PostContentRequest.struct_class = Types::PostContentRequest
71
+ PostContentRequest[:payload] = :input_stream
72
+ PostContentRequest[:payload_member] = PostContentRequest.member(:input_stream)
73
+
74
+ PostContentResponse.add_member(:content_type, Shapes::ShapeRef.new(shape: HttpContentType, location: "header", location_name: "Content-Type"))
75
+ PostContentResponse.add_member(:intent_name, Shapes::ShapeRef.new(shape: IntentName, location: "header", location_name: "x-amz-lex-intent-name"))
76
+ PostContentResponse.add_member(:slots, Shapes::ShapeRef.new(shape: String, location: "header", location_name: "x-amz-lex-slots", metadata: {"jsonvalue"=>true}))
77
+ PostContentResponse.add_member(:session_attributes, Shapes::ShapeRef.new(shape: String, location: "header", location_name: "x-amz-lex-session-attributes", metadata: {"jsonvalue"=>true}))
78
+ PostContentResponse.add_member(:message, Shapes::ShapeRef.new(shape: Text, location: "header", location_name: "x-amz-lex-message"))
79
+ PostContentResponse.add_member(:dialog_state, Shapes::ShapeRef.new(shape: DialogState, location: "header", location_name: "x-amz-lex-dialog-state"))
80
+ PostContentResponse.add_member(:slot_to_elicit, Shapes::ShapeRef.new(shape: String, location: "header", location_name: "x-amz-lex-slot-to-elicit"))
81
+ PostContentResponse.add_member(:input_transcript, Shapes::ShapeRef.new(shape: String, location: "header", location_name: "x-amz-lex-input-transcript"))
82
+ PostContentResponse.add_member(:audio_stream, Shapes::ShapeRef.new(shape: BlobStream, location_name: "audioStream"))
83
+ PostContentResponse.struct_class = Types::PostContentResponse
84
+ PostContentResponse[:payload] = :audio_stream
85
+ PostContentResponse[:payload_member] = PostContentResponse.member(:audio_stream)
86
+
55
87
  PostTextRequest.add_member(:bot_name, Shapes::ShapeRef.new(shape: BotName, required: true, location: "uri", location_name: "botName"))
56
88
  PostTextRequest.add_member(:bot_alias, Shapes::ShapeRef.new(shape: BotAlias, required: true, location: "uri", location_name: "botAlias"))
57
89
  PostTextRequest.add_member(:user_id, Shapes::ShapeRef.new(shape: UserId, required: true, location: "uri", location_name: "userId"))
@@ -95,6 +127,26 @@ module Aws::LexRuntimeService
95
127
  "signingName" => "lex",
96
128
  }
97
129
 
130
+ api.add_operation(:post_content, Seahorse::Model::Operation.new.tap do |o|
131
+ o.name = "PostContent"
132
+ o.http_method = "POST"
133
+ o.http_request_uri = "/bot/{botName}/alias/{botAlias}/user/{userId}/content"
134
+ o['authtype'] = "v4-unsigned-body"
135
+ o.input = Shapes::ShapeRef.new(shape: PostContentRequest)
136
+ o.output = Shapes::ShapeRef.new(shape: PostContentResponse)
137
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
138
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
139
+ o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
140
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
141
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
142
+ o.errors << Shapes::ShapeRef.new(shape: UnsupportedMediaTypeException)
143
+ o.errors << Shapes::ShapeRef.new(shape: NotAcceptableException)
144
+ o.errors << Shapes::ShapeRef.new(shape: RequestTimeoutException)
145
+ o.errors << Shapes::ShapeRef.new(shape: DependencyFailedException)
146
+ o.errors << Shapes::ShapeRef.new(shape: BadGatewayException)
147
+ o.errors << Shapes::ShapeRef.new(shape: LoopDetectedException)
148
+ end)
149
+
98
150
  api.add_operation(:post_text, Seahorse::Model::Operation.new.tap do |o|
99
151
  o.name = "PostText"
100
152
  o.http_method = "POST"
@@ -12,13 +12,13 @@ module Aws::LexRuntimeService
12
12
  # Slack, etc.)
13
13
  #
14
14
  # @!attribute [rw] text
15
- # Text visible to the user on the button.
15
+ # Text that is visible to the user on the button.
16
16
  # @return [String]
17
17
  #
18
18
  # @!attribute [rw] value
19
- # Value sent to Amazon Lex when user clicks the button. For example,
20
- # consider button text "NYC". When the user clicks the button, the
21
- # value sent can be "New York City".
19
+ # The value sent to Amazon Lex when a user chooses the button. For
20
+ # example, consider button text "NYC." When the user chooses the
21
+ # button, the value sent can be "New York City."
22
22
  # @return [String]
23
23
  #
24
24
  # @see http://docs.aws.amazon.com/goto/WebAPI/runtime.lex-2016-11-28/Button AWS API Documentation
@@ -33,22 +33,23 @@ module Aws::LexRuntimeService
33
33
  # could be an image, a button, a link, or text.
34
34
  #
35
35
  # @!attribute [rw] title
36
- # Title of the option.
36
+ # The title of the option.
37
37
  # @return [String]
38
38
  #
39
39
  # @!attribute [rw] sub_title
40
- # Subtitle shown below the title.
40
+ # The subtitle shown below the title.
41
41
  # @return [String]
42
42
  #
43
43
  # @!attribute [rw] attachment_link_url
44
+ # The URL of an attachment to the response card.
44
45
  # @return [String]
45
46
  #
46
47
  # @!attribute [rw] image_url
47
- # URL of an image that is displayed to the user.
48
+ # The URL of an image that is displayed to the user.
48
49
  # @return [String]
49
50
  #
50
51
  # @!attribute [rw] buttons
51
- # List of options to show to the user.
52
+ # The list of options to show to the user.
52
53
  # @return [Array<Types::Button>]
53
54
  #
54
55
  # @see http://docs.aws.amazon.com/goto/WebAPI/runtime.lex-2016-11-28/GenericAttachment AWS API Documentation
@@ -62,6 +63,294 @@ module Aws::LexRuntimeService
62
63
  include Aws::Structure
63
64
  end
64
65
 
66
+ # @note When making an API call, you may pass PostContentRequest
67
+ # data as a hash:
68
+ #
69
+ # {
70
+ # bot_name: "BotName", # required
71
+ # bot_alias: "BotAlias", # required
72
+ # user_id: "UserId", # required
73
+ # session_attributes: "String",
74
+ # content_type: "HttpContentType", # required
75
+ # accept: "Accept",
76
+ # input_stream: "data", # required
77
+ # }
78
+ #
79
+ # @!attribute [rw] bot_name
80
+ # Name of the Amazon Lex bot.
81
+ # @return [String]
82
+ #
83
+ # @!attribute [rw] bot_alias
84
+ # Alias of the Amazon Lex bot.
85
+ # @return [String]
86
+ #
87
+ # @!attribute [rw] user_id
88
+ # ID of the client application user. Typically, each of your
89
+ # application users should have a unique ID. The application developer
90
+ # decides the user IDs. At runtime, each request must include the user
91
+ # ID. Note the following considerations:
92
+ #
93
+ # * If you want a user to start conversation on one device and
94
+ # continue the conversation on another device, you might choose a
95
+ # user-specific identifier, such as the user's login, or Amazon
96
+ # Cognito user ID (assuming your application is using Amazon
97
+ # Cognito).
98
+ #
99
+ # * If you want the same user to be able to have two independent
100
+ # conversations on two different devices, you might choose
101
+ # device-specific identifier, such as device ID, or some globally
102
+ # unique identifier.
103
+ # @return [String]
104
+ #
105
+ # @!attribute [rw] session_attributes
106
+ # You pass this value in the `x-amz-lex-session-attributes` HTTP
107
+ # header. The value must be map (keys and values must be strings) that
108
+ # is JSON serialized and then base64 encoded.
109
+ #
110
+ # A session represents dialog between a user and Amazon Lex. At
111
+ # runtime, a client application can pass contextual information, in
112
+ # the request to Amazon Lex. For example,
113
+ #
114
+ # * You might use session attributes to track the requestID of user
115
+ # requests.
116
+ #
117
+ # * In Getting Started Exercise 1, the example bot uses the price
118
+ # session attribute to maintain the price of flowers ordered (for
119
+ # example, "price":25). The code hook (Lambda function) sets this
120
+ # attribute based on the type of flowers ordered. For more
121
+ # information, see [Review the Details of Information Flow][1].
122
+ #
123
+ # * In the BookTrip bot exercise, the bot uses the
124
+ # `currentReservation` session attribute to maintains the slot data
125
+ # during the in-progress conversation to book a hotel or book a car.
126
+ # For more information, see [Details of Information Flow][2].
127
+ #
128
+ # Amazon Lex passes these session attributes to the Lambda functions
129
+ # configured for the intent In the your Lambda function, you can use
130
+ # the session attributes for initialization and customization
131
+ # (prompts). Some examples are:
132
+ #
133
+ # * Initialization - In a pizza ordering bot, if you pass user
134
+ # location (for example, `"Location : 111 Maple Street"`), then your
135
+ # Lambda function might use this information to determine the
136
+ # closest pizzeria to place the order (and perhaps set the
137
+ # storeAddress slot value as well).
138
+ #
139
+ # Personalized prompts - For example, you can configure prompts to
140
+ # refer to the user by name (for example, "Hey \[firstName\], what
141
+ # toppings would you like?"). You can pass the user's name as a
142
+ # session attribute ("firstName": "Joe") so that Amazon Lex can
143
+ # substitute the placeholder to provide a personalized prompt to the
144
+ # user ("Hey Joe, what toppings would you like?").
145
+ #
146
+ # <note markdown="1"> Amazon Lex does not persist session attributes.
147
+ #
148
+ # If you configured a code hook for the intent, Amazon Lex passes the
149
+ # incoming session attributes to the Lambda function. The Lambda
150
+ # function must return these session attributes if you want Amazon Lex
151
+ # to return them to the client.
152
+ #
153
+ # If there is no code hook configured for the intent Amazon Lex simply
154
+ # returns the session attributes to the client application.
155
+ #
156
+ # </note>
157
+ #
158
+ #
159
+ #
160
+ # [1]: http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html
161
+ # [2]: http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html
162
+ # @return [String]
163
+ #
164
+ # @!attribute [rw] content_type
165
+ # You pass this values as the `Content-Type` HTTP header.
166
+ #
167
+ # Indicates the audio format or text. The header value must start with
168
+ # one of the following prefixes:
169
+ #
170
+ # * PCM format
171
+ #
172
+ # * audio/l16; rate=16000; channels=1
173
+ #
174
+ # * audio/x-l16; sample-rate=16000; channel-count=1
175
+ #
176
+ # * Opus format
177
+ #
178
+ # * audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=1;
179
+ # frame-size-milliseconds=1.1
180
+ #
181
+ # ^
182
+ #
183
+ # * Text format
184
+ #
185
+ # * text/plain; charset=utf-8
186
+ #
187
+ # ^
188
+ # @return [String]
189
+ #
190
+ # @!attribute [rw] accept
191
+ # You pass this value as the `Accept` HTTP header.
192
+ #
193
+ # The message Amazon Lex returns in the response can be either text or
194
+ # speech based on the `Accept` HTTP header value in the request.
195
+ #
196
+ # * If the value is `text/plain; charset=utf-8`, Amazon Lex returns
197
+ # text in the response.
198
+ #
199
+ # * If the value begins with `audio/`, Amazon Lex returns speech in
200
+ # the response. Amazon Lex uses Amazon Polly to generate the speech
201
+ # (using the configuration you specified in the `Accept` header).
202
+ # For example, if you specify `audio/mpeg` as the value, Amazon Lex
203
+ # returns speech in the MPEG format.
204
+ #
205
+ # The following are the accepted values:
206
+ #
207
+ # * audio/mpeg
208
+ #
209
+ # * audio/ogg
210
+ #
211
+ # * audio/pcm
212
+ #
213
+ # * text/plain; charset=utf-8
214
+ #
215
+ # * audio/* (defaults to mpeg)
216
+ # @return [String]
217
+ #
218
+ # @!attribute [rw] input_stream
219
+ # User input in PCM or Opus audio format or text format as described
220
+ # in the `Content-Type` HTTP header.
221
+ # @return [IO]
222
+ #
223
+ # @see http://docs.aws.amazon.com/goto/WebAPI/runtime.lex-2016-11-28/PostContentRequest AWS API Documentation
224
+ #
225
+ class PostContentRequest < Struct.new(
226
+ :bot_name,
227
+ :bot_alias,
228
+ :user_id,
229
+ :session_attributes,
230
+ :content_type,
231
+ :accept,
232
+ :input_stream)
233
+ include Aws::Structure
234
+ end
235
+
236
+ # @!attribute [rw] content_type
237
+ # Content type as specified in the `Accept` HTTP header in the
238
+ # request.
239
+ # @return [String]
240
+ #
241
+ # @!attribute [rw] intent_name
242
+ # Current user intent that Amazon Lex is aware of.
243
+ # @return [String]
244
+ #
245
+ # @!attribute [rw] slots
246
+ # Map of zero or more intent slots (name/value pairs) Amazon Lex
247
+ # detected from the user input during the conversation.
248
+ # @return [String]
249
+ #
250
+ # @!attribute [rw] session_attributes
251
+ # Map of key/value pairs representing the session-specific context
252
+ # information.
253
+ # @return [String]
254
+ #
255
+ # @!attribute [rw] message
256
+ # Message to convey to the user. It can come from the bot's
257
+ # configuration or a code hook (Lambda function). If the current
258
+ # intent is not configured with a code hook or if the code hook
259
+ # returned `Delegate` as the `dialogAction.type` in its response, then
260
+ # Amazon Lex decides the next course of action and selects an
261
+ # appropriate message from the bot configuration based on the current
262
+ # user interaction context. For example, if Amazon Lex is not able to
263
+ # understand the user input, it uses a clarification prompt message
264
+ # (For more information, see the Error Handling section in the Amazon
265
+ # Lex console). Another example: if the intent requires confirmation
266
+ # before fulfillment, then Amazon Lex uses the confirmation prompt
267
+ # message in the intent configuration. If the code hook returns a
268
+ # message, Amazon Lex passes it as-is in its response to the client.
269
+ # @return [String]
270
+ #
271
+ # @!attribute [rw] dialog_state
272
+ # Identifies the current state of the user interaction. Amazon Lex
273
+ # returns one of the following values as `dialogState`. The client can
274
+ # optionally use this information to customize the user interface.
275
+ #
276
+ # * `ElicitIntent` – Amazon Lex wants to elicit the user's intent.
277
+ # Consider the following examples:
278
+ #
279
+ # For example, a user might utter an intent ("I want to order a
280
+ # pizza"). If Amazon Lex cannot infer the user intent from this
281
+ # utterance, it will return this dialog state.
282
+ #
283
+ # * `ConfirmIntent` – Amazon Lex is expecting a "yes" or "no"
284
+ # response.
285
+ #
286
+ # For example, Amazon Lex wants user confirmation before fulfilling
287
+ # an intent. Instead of a simple "yes" or "no" response, a user
288
+ # might respond with additional information. For example, "yes, but
289
+ # make it a thick crust pizza" or "no, I want to order a drink."
290
+ # Amazon Lex can process such additional information (in these
291
+ # examples, update the crust type slot or change the intent from
292
+ # OrderPizza to OrderDrink).
293
+ #
294
+ # * `ElicitSlot` – Amazon Lex is expecting the value of a slot for the
295
+ # current intent.
296
+ #
297
+ # For example, suppose that in the response Amazon Lex sends this
298
+ # message: "What size pizza would you like?". A user might reply
299
+ # with the slot value (e.g., "medium"). The user might also
300
+ # provide additional information in the response (e.g., "medium
301
+ # thick crust pizza"). Amazon Lex can process such additional
302
+ # information appropriately.
303
+ #
304
+ # * `Fulfilled` – Conveys that the Lambda function has successfully
305
+ # fulfilled the intent.
306
+ #
307
+ # * `ReadyForFulfillment` – Conveys that the client has to fullfill
308
+ # the request.
309
+ #
310
+ # * `Failed` – Conveys that the conversation with the user failed.
311
+ #
312
+ # This can happen for various reasons, including that the user does
313
+ # not provide an appropriate response to prompts from the service
314
+ # (you can configure how many times Amazon Lex can prompt a user for
315
+ # specific information), or if the Lambda function fails to fulfill
316
+ # the intent.
317
+ # @return [String]
318
+ #
319
+ # @!attribute [rw] slot_to_elicit
320
+ # If the `dialogState` value is `ElicitSlot`, returns the name of the
321
+ # slot for which Amazon Lex is eliciting a value.
322
+ # @return [String]
323
+ #
324
+ # @!attribute [rw] input_transcript
325
+ # Transcript of the voice input to the operation.
326
+ # @return [String]
327
+ #
328
+ # @!attribute [rw] audio_stream
329
+ # The prompt (or statement) to convey to the user. This is based on
330
+ # the bot configuration and context. For example, if Amazon Lex did
331
+ # not understand the user intent, it sends the `clarificationPrompt`
332
+ # configured for the bot. If the intent requires confirmation before
333
+ # taking the fulfillment action, it sends the `confirmationPrompt`.
334
+ # Another example: Suppose that the Lambda function successfully
335
+ # fulfilled the intent, and sent a message to convey to the user. Then
336
+ # Amazon Lex sends that message in the response.
337
+ # @return [IO]
338
+ #
339
+ # @see http://docs.aws.amazon.com/goto/WebAPI/runtime.lex-2016-11-28/PostContentResponse AWS API Documentation
340
+ #
341
+ class PostContentResponse < Struct.new(
342
+ :content_type,
343
+ :intent_name,
344
+ :slots,
345
+ :session_attributes,
346
+ :message,
347
+ :dialog_state,
348
+ :slot_to_elicit,
349
+ :input_transcript,
350
+ :audio_stream)
351
+ include Aws::Structure
352
+ end
353
+
65
354
  # @note When making an API call, you may pass PostTextRequest
66
355
  # data as a hash:
67
356
  #
@@ -76,21 +365,22 @@ module Aws::LexRuntimeService
76
365
  # }
77
366
  #
78
367
  # @!attribute [rw] bot_name
79
- # Name of the Amazon Lex bot.
368
+ # The name of the Amazon Lex bot.
80
369
  # @return [String]
81
370
  #
82
371
  # @!attribute [rw] bot_alias
83
- # Alias of the Amazon Lex bot.
372
+ # The alias of the Amazon Lex bot.
84
373
  # @return [String]
85
374
  #
86
375
  # @!attribute [rw] user_id
87
- # User ID of your client application. Typically, each of your
88
- # application users should have a unique ID. Note the following
89
- # considerations:
90
- #
91
- # * If you want a user to start a conversation on one mobile device
92
- # and continue the conversation on another device, you might choose
93
- # a user-specific identifier, such as a login or Amazon Cognito user
376
+ # The ID of the client application user. The application developer
377
+ # decides the user IDs. At runtime, each request must include the user
378
+ # ID. Typically, each of your application users should have a unique
379
+ # ID. Note the following considerations:
380
+ #
381
+ # * If you want a user to start a conversation on one device and
382
+ # continue the conversation on another device, you might choose a
383
+ # user-specific identifier, such as a login or Amazon Cognito user
94
384
  # ID (assuming your application is using Amazon Cognito).
95
385
  #
96
386
  # * If you want the same user to be able to have two independent
@@ -100,45 +390,64 @@ module Aws::LexRuntimeService
100
390
  # @return [String]
101
391
  #
102
392
  # @!attribute [rw] session_attributes
103
- # A session represents the dialog between a user and Amazon Lex. At
104
- # runtime, a client application can pass contextual information
105
- # (session attributes) in the request. For example, `"FirstName" :
106
- # "Joe"`. Amazon Lex passes these session attributes to the AWS Lambda
107
- # functions configured for the intent (see `dialogCodeHook` and
108
- # `fulfillmentActivity.codeHook` in `CreateIntent`).
109
- #
110
- # In your Lambda function, you can use the session attributes for
111
- # customization. Some examples are:
112
- #
113
- # * In a pizza ordering application, if you can pass user location as
114
- # a session attribute (for example, `"Location" : "111 Maple
115
- # street"`), your Lambda function might use this information to
116
- # determine the closest pizzeria to place the order.
117
- #
118
- # * Use session attributes to personalize prompts. For example, you
119
- # pass in user name as a session attribute (`"FirstName" : "Joe"`),
120
- # you might configure subsequent prompts to refer to this attribute,
121
- # as `$session.FirstName"`. At runtime, Amazon Lex substitutes a
122
- # real value when it generates a prompt, such as "Hello Joe, what
123
- # would you like to order?"
393
+ # By using session attributes, a client application can pass
394
+ # contextual information in the request to Amazon Lex For example,
395
+ #
396
+ # * In Getting Started Exercise 1, the example bot uses the `price`
397
+ # session attribute to maintain the price of the flowers ordered
398
+ # (for example, "Price":25). The code hook (the Lambda function)
399
+ # sets this attribute based on the type of flowers ordered. For more
400
+ # information, see [Review the Details of Information Flow][1].
401
+ #
402
+ # * In the BookTrip bot exercise, the bot uses the
403
+ # `currentReservation` session attribute to maintain slot data
404
+ # during the in-progress conversation to book a hotel or book a car.
405
+ # For more information, see [Details of Information Flow][2].
406
+ #
407
+ # * You might use the session attributes (key, value pairs) to track
408
+ # the requestID of user requests.
409
+ #
410
+ # Amazon Lex simply passes these session attributes to the Lambda
411
+ # functions configured for the intent.
412
+ #
413
+ # In your Lambda function, you can also use the session attributes for
414
+ # initialization and customization (prompts and response cards). Some
415
+ # examples are:
416
+ #
417
+ # * Initialization - In a pizza ordering bot, if you can pass the user
418
+ # location as a session attribute (for example, `"Location" : "111
419
+ # Maple street"`), then your Lambda function might use this
420
+ # information to determine the closest pizzeria to place the order
421
+ # (perhaps to set the storeAddress slot value).
422
+ #
423
+ # * Personalize prompts - For example, you can configure prompts to
424
+ # refer to the user name. (For example, "Hey \[FirstName\], what
425
+ # toppings would you like?"). You can pass the user name as a
426
+ # session attribute (`"FirstName" : "Joe"`) so that Amazon Lex can
427
+ # substitute the placeholder to provide a personalize prompt to the
428
+ # user ("Hey Joe, what toppings would you like?").
124
429
  #
125
430
  # <note markdown="1"> Amazon Lex does not persist session attributes.
126
431
  #
127
- # If the intent is configured without a Lambda function to process the
128
- # intent (that is, the client application to process the intent),
129
- # Amazon Lex simply returns the session attributes back to the client
130
- # application.
432
+ # If you configure a code hook for the intent, Amazon Lex passes the
433
+ # incoming session attributes to the Lambda function. If you want
434
+ # Amazon Lex to return these session attributes back to the client,
435
+ # the Lambda function must return them.
131
436
  #
132
- # If the intent is configured with a Lambda function to process the
133
- # intent, Amazon Lex passes the incoming session attributes to the
134
- # Lambda function. The Lambda function must return these session
135
- # attributes if you want Amazon Lex to return them back to the client.
437
+ # If there is no code hook configured for the intent, Amazon Lex
438
+ # simply returns the session attributes back to the client
439
+ # application.
136
440
  #
137
441
  # </note>
442
+ #
443
+ #
444
+ #
445
+ # [1]: http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html
446
+ # [2]: http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html
138
447
  # @return [Hash<String,String>]
139
448
  #
140
449
  # @!attribute [rw] input_text
141
- # Text user entered (Amazon Lex interprets this text).
450
+ # The text that the user entered (Amazon Lex interprets this text).
142
451
  # @return [String]
143
452
  #
144
453
  # @see http://docs.aws.amazon.com/goto/WebAPI/runtime.lex-2016-11-28/PostTextRequest AWS API Documentation
@@ -153,96 +462,94 @@ module Aws::LexRuntimeService
153
462
  end
154
463
 
155
464
  # @!attribute [rw] intent_name
156
- # Intent Amazon Lex inferred from the user input text. This is one of
157
- # the intents configured for the bot.
465
+ # The current user intent that Amazon Lex is aware of.
158
466
  # @return [String]
159
467
  #
160
468
  # @!attribute [rw] slots
161
- # Intent slots (name/value pairs) Amazon Lex detected so far from the
162
- # user input in the conversation.
469
+ # The intent slots (name/value pairs) that Amazon Lex detected so far
470
+ # from the user input in the conversation.
163
471
  # @return [Hash<String,String>]
164
472
  #
165
473
  # @!attribute [rw] session_attributes
166
- # Map of key value pairs representing the session specific context
474
+ # A map of key-value pairs representing the session-specific context
167
475
  # information.
168
476
  # @return [Hash<String,String>]
169
477
  #
170
478
  # @!attribute [rw] message
171
- # Prompt (or statement) to convey to the user. This is based on the
172
- # application configuration and context. For example, if Amazon Lex
173
- # did not understand the user intent, it sends the
174
- # `clarificationPrompt` configured for the application. In another
175
- # example, if the intent requires confirmation before taking the
176
- # fulfillment action, it sends the `confirmationPrompt`. Suppose the
177
- # Lambda function successfully fulfilled the intent, and sent a
178
- # message to convey to the user. In that situation, Amazon Lex sends
179
- # that message in the response.
479
+ # A message to convey to the user. It can come from the bot's
480
+ # configuration or a code hook (Lambda function). If the current
481
+ # intent is not configured with a code hook or the code hook returned
482
+ # `Delegate` as the `dialogAction.type` in its response, then Amazon
483
+ # Lex decides the next course of action and selects an appropriate
484
+ # message from the bot configuration based on the current user
485
+ # interaction context. For example, if Amazon Lex is not able to
486
+ # understand the user input, it uses a clarification prompt message
487
+ # (for more information, see the Error Handling section in the Amazon
488
+ # Lex console). Another example: if the intent requires confirmation
489
+ # before fulfillment, then Amazon Lex uses the confirmation prompt
490
+ # message in the intent configuration. If the code hook returns a
491
+ # message, Amazon Lex passes it as-is in its response to the client.
180
492
  # @return [String]
181
493
  #
182
494
  # @!attribute [rw] dialog_state
183
- # Represents the message type to be conveyed to the user. For example:
184
- #
185
- # * `ElicitIntent` Amazon Lex wants to elicit user intent. For
186
- # example, Amazon Lex did not understand the first utterances such
187
- # as "I want to order pizza", which indicates the OrderPizza
188
- # intent. If Amazon Lex doesn't understand the intent, it returns
189
- # this `dialogState`. Another example is when your intent is
190
- # configured with a follow up prompt. For example, after OrderPizza
191
- # intent is fulfilled, the intent might have a follow up prompt such
192
- # as " Do you want to order a drink or desert?" In this case,
193
- # Amazon Lex returns this `dialogState`.
194
- #
195
- # * `ConfirmIntent` – Amazon Lex is expecting a yes/no response from
196
- # the user indicating whether to go ahead and fulfill the intent
197
- # (for example, OK to go ahead and order the pizza). In addition to
198
- # a yes/no reply, the user might provide a response with additional
199
- # slot information (either new slot information or changes to the
200
- # existing slot values). For example, "Yes, but change to thick
201
- # crust." Amazon Lex understands the additional information and
202
- # updates the intent slots accordingly.
203
- #
204
- # Consider another example. Before fulfilling an order, your
205
- # application might prompt for confirmation such as "Do you want to
206
- # place this pizza order?" A user might reply with "No, I want to
207
- # order a drink." Amazon Lex recognizes the new OrderDrink intent.
208
- #
209
- # * `ElicitSlot` – Amazon Lex is expecting a value of a slot for the
210
- # current intent. For example, suppose Amazon Lex asks, "What size
211
- # pizza would you like?" A user might reply with "Medium pepperoni
212
- # pizza." Amazon Lex recognizes the size and the topping as the two
213
- # separate slot values.
495
+ # Identifies the current state of the user interaction. Amazon Lex
496
+ # returns one of the following values as `dialogState`. The client can
497
+ # optionally use this information to customize the user interface.
214
498
  #
215
- # * `Fulfilled` – Conveys that the Lambda function has successfully
216
- # fulfilled the intent. If Lambda function returns a
217
- # statement/message to convey the fulfillment result, Amazon Lex
218
- # passes this string to the client. If not, Amazon Lex looks for
219
- # `conclusionStatement` that you configured for the intent.
220
- #
221
- # If both the Lambda function statement and the
222
- # `conclusionStatement` are missing, Amazon Lex throws a bad request
223
- # exception.
224
- #
225
- # * `ReadyForFulfillment` – conveys that the client has to do the
226
- # fulfillment work for the intent. This is the case when the current
227
- # intent is configured with `ReturnIntent` as the
228
- # `fulfillmentActivity `, where Amazon Lex returns this state to
229
- # client.
230
- #
231
- # * `Failed` Conversation with the user failed. Some of the reasons
232
- # for this `dialogState` are: after the configured number of
233
- # attempts the user didn't provide an appropriate response, or the
234
- # Lambda function failed to fulfill an intent.
499
+ # * `ElicitIntent` – Amazon Lex wants to elicit user intent.
500
+ #
501
+ # For example, a user might utter an intent ("I want to order a
502
+ # pizza"). If Amazon Lex cannot infer the user intent from this
503
+ # utterance, it will return this dialogState.
504
+ #
505
+ # * `ConfirmIntent` Amazon Lex is expecting a "yes" or "no"
506
+ # response.
507
+ #
508
+ # For example, Amazon Lex wants user confirmation before fulfilling
509
+ # an intent.
510
+ #
511
+ # Instead of a simple "yes" or "no," a user might respond with
512
+ # additional information. For example, "yes, but make it thick
513
+ # crust pizza" or "no, I want to order a drink". Amazon Lex can
514
+ # process such additional information (in these examples, update the
515
+ # crust type slot value, or change intent from OrderPizza to
516
+ # OrderDrink).
517
+ #
518
+ # * `ElicitSlot` Amazon Lex is expecting a slot value for the
519
+ # current intent.
520
+ #
521
+ # For example, suppose that in the response Amazon Lex sends this
522
+ # message: "What size pizza would you like?". A user might reply
523
+ # with the slot value (e.g., "medium"). The user might also
524
+ # provide additional information in the response (e.g., "medium
525
+ # thick crust pizza"). Amazon Lex can process such additional
526
+ # information appropriately.
527
+ #
528
+ # * `Fulfilled` – Conveys that the Lambda function configured for the
529
+ # intent has successfully fulfilled the intent.
530
+ #
531
+ # * `ReadyForFulfillment` – Conveys that the client has to fulfill the
532
+ # intent.
533
+ #
534
+ # * `Failed` – Conveys that the conversation with the user failed.
535
+ #
536
+ # This can happen for various reasons including that the user did
537
+ # not provide an appropriate response to prompts from the service
538
+ # (you can configure how many times Amazon Lex can prompt a user for
539
+ # specific information), or the Lambda function failed to fulfill
540
+ # the intent.
235
541
  # @return [String]
236
542
  #
237
543
  # @!attribute [rw] slot_to_elicit
238
- # If `dialogState` value is `ElicitSlot`, returns the name of the slot
239
- # for which Amazon Lex is eliciting a value.
544
+ # If the `dialogState` value is `ElicitSlot`, returns the name of the
545
+ # slot for which Amazon Lex is eliciting a value.
240
546
  # @return [String]
241
547
  #
242
548
  # @!attribute [rw] response_card
243
549
  # Represents the options that the user has to respond to the current
244
- # prompt. Amazon Lex sends this in the response only if the
245
- # `dialogState` value indicates that a user response is expected.
550
+ # prompt. Response Card can come from the bot configuration (in the
551
+ # Amazon Lex console, choose the settings button next to a slot) or
552
+ # from a code hook (Lambda function).
246
553
  # @return [Types::ResponseCard]
247
554
  #
248
555
  # @see http://docs.aws.amazon.com/goto/WebAPI/runtime.lex-2016-11-28/PostTextResponse AWS API Documentation
@@ -259,16 +566,16 @@ module Aws::LexRuntimeService
259
566
  end
260
567
 
261
568
  # If you configure a response card when creating your bots, Amazon Lex
262
- # substitutes the session attributes and slot values available, and then
263
- # returns it. The response card can also come from a Lambda function (
264
- # `dialogCodeHook` and `fulfillmentActivity` on an intent).
569
+ # substitutes the session attributes and slot values that are available,
570
+ # and then returns it. The response card can also come from a Lambda
571
+ # function ( `dialogCodeHook` and `fulfillmentActivity` on an intent).
265
572
  #
266
573
  # @!attribute [rw] version
267
- # Version of response card format.
574
+ # The version of the response card format.
268
575
  # @return [String]
269
576
  #
270
577
  # @!attribute [rw] content_type
271
- # Content type of the response.
578
+ # The content type of the response.
272
579
  # @return [String]
273
580
  #
274
581
  # @!attribute [rw] generic_attachments
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-lexruntimeservice
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
4
+ version: 1.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-07 00:00:00.000000000 Z
11
+ date: 2017-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core