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

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: 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