github.com/aavshr/aws-sdk-go@v1.41.3/service/lexruntimev2/api.go (about)

     1  // Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
     2  
     3  package lexruntimev2
     4  
     5  import (
     6  	"bytes"
     7  	"fmt"
     8  	"io"
     9  	"sync"
    10  	"time"
    11  
    12  	"github.com/aavshr/aws-sdk-go/aws"
    13  	"github.com/aavshr/aws-sdk-go/aws/awserr"
    14  	"github.com/aavshr/aws-sdk-go/aws/awsutil"
    15  	"github.com/aavshr/aws-sdk-go/aws/client"
    16  	"github.com/aavshr/aws-sdk-go/aws/request"
    17  	"github.com/aavshr/aws-sdk-go/aws/signer/v4"
    18  	"github.com/aavshr/aws-sdk-go/private/protocol"
    19  	"github.com/aavshr/aws-sdk-go/private/protocol/eventstream"
    20  	"github.com/aavshr/aws-sdk-go/private/protocol/eventstream/eventstreamapi"
    21  	"github.com/aavshr/aws-sdk-go/private/protocol/rest"
    22  	"github.com/aavshr/aws-sdk-go/private/protocol/restjson"
    23  )
    24  
    25  const opDeleteSession = "DeleteSession"
    26  
    27  // DeleteSessionRequest generates a "aws/request.Request" representing the
    28  // client's request for the DeleteSession operation. The "output" return
    29  // value will be populated with the request's response once the request completes
    30  // successfully.
    31  //
    32  // Use "Send" method on the returned Request to send the API call to the service.
    33  // the "output" return value is not valid until after Send returns without error.
    34  //
    35  // See DeleteSession for more information on using the DeleteSession
    36  // API call, and error handling.
    37  //
    38  // This method is useful when you want to inject custom logic or configuration
    39  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
    40  //
    41  //
    42  //    // Example sending a request using the DeleteSessionRequest method.
    43  //    req, resp := client.DeleteSessionRequest(params)
    44  //
    45  //    err := req.Send()
    46  //    if err == nil { // resp is now filled
    47  //        fmt.Println(resp)
    48  //    }
    49  //
    50  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/DeleteSession
    51  func (c *LexRuntimeV2) DeleteSessionRequest(input *DeleteSessionInput) (req *request.Request, output *DeleteSessionOutput) {
    52  	op := &request.Operation{
    53  		Name:       opDeleteSession,
    54  		HTTPMethod: "DELETE",
    55  		HTTPPath:   "/bots/{botId}/botAliases/{botAliasId}/botLocales/{localeId}/sessions/{sessionId}",
    56  	}
    57  
    58  	if input == nil {
    59  		input = &DeleteSessionInput{}
    60  	}
    61  
    62  	output = &DeleteSessionOutput{}
    63  	req = c.newRequest(op, input, output)
    64  	return
    65  }
    66  
    67  // DeleteSession API operation for Amazon Lex Runtime V2.
    68  //
    69  // Removes session information for a specified bot, alias, and user ID.
    70  //
    71  // You can use this operation to restart a conversation with a bot. When you
    72  // remove a session, the entire history of the session is removed so that you
    73  // can start again.
    74  //
    75  // You don't need to delete a session. Sessions have a time limit and will expire.
    76  // Set the session time limit when you create the bot. The default is 5 minutes,
    77  // but you can specify anything between 1 minute and 24 hours.
    78  //
    79  // If you specify a bot or alias ID that doesn't exist, you receive a BadRequestException.
    80  //
    81  // If the locale doesn't exist in the bot, or if the locale hasn't been enables
    82  // for the alias, you receive a BadRequestException.
    83  //
    84  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
    85  // with awserr.Error's Code and Message methods to get detailed information about
    86  // the error.
    87  //
    88  // See the AWS API reference guide for Amazon Lex Runtime V2's
    89  // API operation DeleteSession for usage and error information.
    90  //
    91  // Returned Error Types:
    92  //   * AccessDeniedException
    93  //
    94  //   * ResourceNotFoundException
    95  //
    96  //   * ValidationException
    97  //
    98  //   * ThrottlingException
    99  //
   100  //   * InternalServerException
   101  //
   102  //   * ConflictException
   103  //
   104  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/DeleteSession
   105  func (c *LexRuntimeV2) DeleteSession(input *DeleteSessionInput) (*DeleteSessionOutput, error) {
   106  	req, out := c.DeleteSessionRequest(input)
   107  	return out, req.Send()
   108  }
   109  
   110  // DeleteSessionWithContext is the same as DeleteSession with the addition of
   111  // the ability to pass a context and additional request options.
   112  //
   113  // See DeleteSession for details on how to use this API operation.
   114  //
   115  // The context must be non-nil and will be used for request cancellation. If
   116  // the context is nil a panic will occur. In the future the SDK may create
   117  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   118  // for more information on using Contexts.
   119  func (c *LexRuntimeV2) DeleteSessionWithContext(ctx aws.Context, input *DeleteSessionInput, opts ...request.Option) (*DeleteSessionOutput, error) {
   120  	req, out := c.DeleteSessionRequest(input)
   121  	req.SetContext(ctx)
   122  	req.ApplyOptions(opts...)
   123  	return out, req.Send()
   124  }
   125  
   126  const opGetSession = "GetSession"
   127  
   128  // GetSessionRequest generates a "aws/request.Request" representing the
   129  // client's request for the GetSession operation. The "output" return
   130  // value will be populated with the request's response once the request completes
   131  // successfully.
   132  //
   133  // Use "Send" method on the returned Request to send the API call to the service.
   134  // the "output" return value is not valid until after Send returns without error.
   135  //
   136  // See GetSession for more information on using the GetSession
   137  // API call, and error handling.
   138  //
   139  // This method is useful when you want to inject custom logic or configuration
   140  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   141  //
   142  //
   143  //    // Example sending a request using the GetSessionRequest method.
   144  //    req, resp := client.GetSessionRequest(params)
   145  //
   146  //    err := req.Send()
   147  //    if err == nil { // resp is now filled
   148  //        fmt.Println(resp)
   149  //    }
   150  //
   151  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/GetSession
   152  func (c *LexRuntimeV2) GetSessionRequest(input *GetSessionInput) (req *request.Request, output *GetSessionOutput) {
   153  	op := &request.Operation{
   154  		Name:       opGetSession,
   155  		HTTPMethod: "GET",
   156  		HTTPPath:   "/bots/{botId}/botAliases/{botAliasId}/botLocales/{localeId}/sessions/{sessionId}",
   157  	}
   158  
   159  	if input == nil {
   160  		input = &GetSessionInput{}
   161  	}
   162  
   163  	output = &GetSessionOutput{}
   164  	req = c.newRequest(op, input, output)
   165  	return
   166  }
   167  
   168  // GetSession API operation for Amazon Lex Runtime V2.
   169  //
   170  // Returns session information for a specified bot, alias, and user.
   171  //
   172  // For example, you can use this operation to retrieve session information for
   173  // a user that has left a long-running session in use.
   174  //
   175  // If the bot, alias, or session identifier doesn't exist, Amazon Lex V2 returns
   176  // a BadRequestException. If the locale doesn't exist or is not enabled for
   177  // the alias, you receive a BadRequestException.
   178  //
   179  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   180  // with awserr.Error's Code and Message methods to get detailed information about
   181  // the error.
   182  //
   183  // See the AWS API reference guide for Amazon Lex Runtime V2's
   184  // API operation GetSession for usage and error information.
   185  //
   186  // Returned Error Types:
   187  //   * AccessDeniedException
   188  //
   189  //   * ResourceNotFoundException
   190  //
   191  //   * ValidationException
   192  //
   193  //   * ThrottlingException
   194  //
   195  //   * InternalServerException
   196  //
   197  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/GetSession
   198  func (c *LexRuntimeV2) GetSession(input *GetSessionInput) (*GetSessionOutput, error) {
   199  	req, out := c.GetSessionRequest(input)
   200  	return out, req.Send()
   201  }
   202  
   203  // GetSessionWithContext is the same as GetSession with the addition of
   204  // the ability to pass a context and additional request options.
   205  //
   206  // See GetSession for details on how to use this API operation.
   207  //
   208  // The context must be non-nil and will be used for request cancellation. If
   209  // the context is nil a panic will occur. In the future the SDK may create
   210  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   211  // for more information on using Contexts.
   212  func (c *LexRuntimeV2) GetSessionWithContext(ctx aws.Context, input *GetSessionInput, opts ...request.Option) (*GetSessionOutput, error) {
   213  	req, out := c.GetSessionRequest(input)
   214  	req.SetContext(ctx)
   215  	req.ApplyOptions(opts...)
   216  	return out, req.Send()
   217  }
   218  
   219  const opPutSession = "PutSession"
   220  
   221  // PutSessionRequest generates a "aws/request.Request" representing the
   222  // client's request for the PutSession operation. The "output" return
   223  // value will be populated with the request's response once the request completes
   224  // successfully.
   225  //
   226  // Use "Send" method on the returned Request to send the API call to the service.
   227  // the "output" return value is not valid until after Send returns without error.
   228  //
   229  // See PutSession for more information on using the PutSession
   230  // API call, and error handling.
   231  //
   232  // This method is useful when you want to inject custom logic or configuration
   233  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   234  //
   235  //
   236  //    // Example sending a request using the PutSessionRequest method.
   237  //    req, resp := client.PutSessionRequest(params)
   238  //
   239  //    err := req.Send()
   240  //    if err == nil { // resp is now filled
   241  //        fmt.Println(resp)
   242  //    }
   243  //
   244  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/PutSession
   245  func (c *LexRuntimeV2) PutSessionRequest(input *PutSessionInput) (req *request.Request, output *PutSessionOutput) {
   246  	op := &request.Operation{
   247  		Name:       opPutSession,
   248  		HTTPMethod: "POST",
   249  		HTTPPath:   "/bots/{botId}/botAliases/{botAliasId}/botLocales/{localeId}/sessions/{sessionId}",
   250  	}
   251  
   252  	if input == nil {
   253  		input = &PutSessionInput{}
   254  	}
   255  
   256  	output = &PutSessionOutput{}
   257  	req = c.newRequest(op, input, output)
   258  	return
   259  }
   260  
   261  // PutSession API operation for Amazon Lex Runtime V2.
   262  //
   263  // Creates a new session or modifies an existing session with an Amazon Lex
   264  // V2 bot. Use this operation to enable your application to set the state of
   265  // the bot.
   266  //
   267  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   268  // with awserr.Error's Code and Message methods to get detailed information about
   269  // the error.
   270  //
   271  // See the AWS API reference guide for Amazon Lex Runtime V2's
   272  // API operation PutSession for usage and error information.
   273  //
   274  // Returned Error Types:
   275  //   * AccessDeniedException
   276  //
   277  //   * ResourceNotFoundException
   278  //
   279  //   * ValidationException
   280  //
   281  //   * ThrottlingException
   282  //
   283  //   * InternalServerException
   284  //
   285  //   * ConflictException
   286  //
   287  //   * DependencyFailedException
   288  //
   289  //   * BadGatewayException
   290  //
   291  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/PutSession
   292  func (c *LexRuntimeV2) PutSession(input *PutSessionInput) (*PutSessionOutput, error) {
   293  	req, out := c.PutSessionRequest(input)
   294  	return out, req.Send()
   295  }
   296  
   297  // PutSessionWithContext is the same as PutSession with the addition of
   298  // the ability to pass a context and additional request options.
   299  //
   300  // See PutSession for details on how to use this API operation.
   301  //
   302  // The context must be non-nil and will be used for request cancellation. If
   303  // the context is nil a panic will occur. In the future the SDK may create
   304  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   305  // for more information on using Contexts.
   306  func (c *LexRuntimeV2) PutSessionWithContext(ctx aws.Context, input *PutSessionInput, opts ...request.Option) (*PutSessionOutput, error) {
   307  	req, out := c.PutSessionRequest(input)
   308  	req.SetContext(ctx)
   309  	req.ApplyOptions(opts...)
   310  	return out, req.Send()
   311  }
   312  
   313  const opRecognizeText = "RecognizeText"
   314  
   315  // RecognizeTextRequest generates a "aws/request.Request" representing the
   316  // client's request for the RecognizeText operation. The "output" return
   317  // value will be populated with the request's response once the request completes
   318  // successfully.
   319  //
   320  // Use "Send" method on the returned Request to send the API call to the service.
   321  // the "output" return value is not valid until after Send returns without error.
   322  //
   323  // See RecognizeText for more information on using the RecognizeText
   324  // API call, and error handling.
   325  //
   326  // This method is useful when you want to inject custom logic or configuration
   327  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   328  //
   329  //
   330  //    // Example sending a request using the RecognizeTextRequest method.
   331  //    req, resp := client.RecognizeTextRequest(params)
   332  //
   333  //    err := req.Send()
   334  //    if err == nil { // resp is now filled
   335  //        fmt.Println(resp)
   336  //    }
   337  //
   338  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/RecognizeText
   339  func (c *LexRuntimeV2) RecognizeTextRequest(input *RecognizeTextInput) (req *request.Request, output *RecognizeTextOutput) {
   340  	op := &request.Operation{
   341  		Name:       opRecognizeText,
   342  		HTTPMethod: "POST",
   343  		HTTPPath:   "/bots/{botId}/botAliases/{botAliasId}/botLocales/{localeId}/sessions/{sessionId}/text",
   344  	}
   345  
   346  	if input == nil {
   347  		input = &RecognizeTextInput{}
   348  	}
   349  
   350  	output = &RecognizeTextOutput{}
   351  	req = c.newRequest(op, input, output)
   352  	return
   353  }
   354  
   355  // RecognizeText API operation for Amazon Lex Runtime V2.
   356  //
   357  // Sends user input to Amazon Lex V2. Client applications use this API to send
   358  // requests to Amazon Lex V2 at runtime. Amazon Lex V2 then interprets the user
   359  // input using the machine learning model that it build for the bot.
   360  //
   361  // In response, Amazon Lex V2 returns the next message to convey to the user
   362  // and an optional response card to display.
   363  //
   364  // If the optional post-fulfillment response is specified, the messages are
   365  // returned as follows. For more information, see PostFulfillmentStatusSpecification
   366  // (https://docs.aws.amazon.com/lexv2/latest/dg/API_PostFulfillmentStatusSpecification.html).
   367  //
   368  //    * Success message - Returned if the Lambda function completes successfully
   369  //    and the intent state is fulfilled or ready fulfillment if the message
   370  //    is present.
   371  //
   372  //    * Failed message - The failed message is returned if the Lambda function
   373  //    throws an exception or if the Lambda function returns a failed intent
   374  //    state without a message.
   375  //
   376  //    * Timeout message - If you don't configure a timeout message and a timeout,
   377  //    and the Lambda function doesn't return within 30 seconds, the timeout
   378  //    message is returned. If you configure a timeout, the timeout message is
   379  //    returned when the period times out.
   380  //
   381  // For more information, see Completion message (https://docs.aws.amazon.com/lexv2/latest/dg/streaming-progress.html#progress-complete.html).
   382  //
   383  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   384  // with awserr.Error's Code and Message methods to get detailed information about
   385  // the error.
   386  //
   387  // See the AWS API reference guide for Amazon Lex Runtime V2's
   388  // API operation RecognizeText for usage and error information.
   389  //
   390  // Returned Error Types:
   391  //   * AccessDeniedException
   392  //
   393  //   * ResourceNotFoundException
   394  //
   395  //   * ValidationException
   396  //
   397  //   * ThrottlingException
   398  //
   399  //   * InternalServerException
   400  //
   401  //   * ConflictException
   402  //
   403  //   * DependencyFailedException
   404  //
   405  //   * BadGatewayException
   406  //
   407  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/RecognizeText
   408  func (c *LexRuntimeV2) RecognizeText(input *RecognizeTextInput) (*RecognizeTextOutput, error) {
   409  	req, out := c.RecognizeTextRequest(input)
   410  	return out, req.Send()
   411  }
   412  
   413  // RecognizeTextWithContext is the same as RecognizeText with the addition of
   414  // the ability to pass a context and additional request options.
   415  //
   416  // See RecognizeText for details on how to use this API operation.
   417  //
   418  // The context must be non-nil and will be used for request cancellation. If
   419  // the context is nil a panic will occur. In the future the SDK may create
   420  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   421  // for more information on using Contexts.
   422  func (c *LexRuntimeV2) RecognizeTextWithContext(ctx aws.Context, input *RecognizeTextInput, opts ...request.Option) (*RecognizeTextOutput, error) {
   423  	req, out := c.RecognizeTextRequest(input)
   424  	req.SetContext(ctx)
   425  	req.ApplyOptions(opts...)
   426  	return out, req.Send()
   427  }
   428  
   429  const opRecognizeUtterance = "RecognizeUtterance"
   430  
   431  // RecognizeUtteranceRequest generates a "aws/request.Request" representing the
   432  // client's request for the RecognizeUtterance operation. The "output" return
   433  // value will be populated with the request's response once the request completes
   434  // successfully.
   435  //
   436  // Use "Send" method on the returned Request to send the API call to the service.
   437  // the "output" return value is not valid until after Send returns without error.
   438  //
   439  // See RecognizeUtterance for more information on using the RecognizeUtterance
   440  // API call, and error handling.
   441  //
   442  // This method is useful when you want to inject custom logic or configuration
   443  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   444  //
   445  //
   446  //    // Example sending a request using the RecognizeUtteranceRequest method.
   447  //    req, resp := client.RecognizeUtteranceRequest(params)
   448  //
   449  //    err := req.Send()
   450  //    if err == nil { // resp is now filled
   451  //        fmt.Println(resp)
   452  //    }
   453  //
   454  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/RecognizeUtterance
   455  func (c *LexRuntimeV2) RecognizeUtteranceRequest(input *RecognizeUtteranceInput) (req *request.Request, output *RecognizeUtteranceOutput) {
   456  	op := &request.Operation{
   457  		Name:       opRecognizeUtterance,
   458  		HTTPMethod: "POST",
   459  		HTTPPath:   "/bots/{botId}/botAliases/{botAliasId}/botLocales/{localeId}/sessions/{sessionId}/utterance",
   460  	}
   461  
   462  	if input == nil {
   463  		input = &RecognizeUtteranceInput{}
   464  	}
   465  
   466  	output = &RecognizeUtteranceOutput{}
   467  	req = c.newRequest(op, input, output)
   468  	req.Handlers.Sign.Remove(v4.SignRequestHandler)
   469  	handler := v4.BuildNamedHandler("v4.CustomSignerHandler", v4.WithUnsignedPayload)
   470  	req.Handlers.Sign.PushFrontNamed(handler)
   471  	return
   472  }
   473  
   474  // RecognizeUtterance API operation for Amazon Lex Runtime V2.
   475  //
   476  // Sends user input to Amazon Lex V2. You can send text or speech. Clients use
   477  // this API to send text and audio requests to Amazon Lex V2 at runtime. Amazon
   478  // Lex V2 interprets the user input using the machine learning model built for
   479  // the bot.
   480  //
   481  // The following request fields must be compressed with gzip and then base64
   482  // encoded before you send them to Amazon Lex V2.
   483  //
   484  //    * requestAttributes
   485  //
   486  //    * sessionState
   487  //
   488  // The following response fields are compressed using gzip and then base64 encoded
   489  // by Amazon Lex V2. Before you can use these fields, you must decode and decompress
   490  // them.
   491  //
   492  //    * inputTranscript
   493  //
   494  //    * interpretations
   495  //
   496  //    * messages
   497  //
   498  //    * requestAttributes
   499  //
   500  //    * sessionState
   501  //
   502  // The example contains a Java application that compresses and encodes a Java
   503  // object to send to Amazon Lex V2, and a second that decodes and decompresses
   504  // a response from Amazon Lex V2.
   505  //
   506  // If the optional post-fulfillment response is specified, the messages are
   507  // returned as follows. For more information, see PostFulfillmentStatusSpecification
   508  // (https://docs.aws.amazon.com/lexv2/latest/dg/API_PostFulfillmentStatusSpecification.html).
   509  //
   510  //    * Success message - Returned if the Lambda function completes successfully
   511  //    and the intent state is fulfilled or ready fulfillment if the message
   512  //    is present.
   513  //
   514  //    * Failed message - The failed message is returned if the Lambda function
   515  //    throws an exception or if the Lambda function returns a failed intent
   516  //    state without a message.
   517  //
   518  //    * Timeout message - If you don't configure a timeout message and a timeout,
   519  //    and the Lambda function doesn't return within 30 seconds, the timeout
   520  //    message is returned. If you configure a timeout, the timeout message is
   521  //    returned when the period times out.
   522  //
   523  // For more information, see Completion message (https://docs.aws.amazon.com/lexv2/latest/dg/streaming-progress.html#progress-complete.html).
   524  //
   525  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   526  // with awserr.Error's Code and Message methods to get detailed information about
   527  // the error.
   528  //
   529  // See the AWS API reference guide for Amazon Lex Runtime V2's
   530  // API operation RecognizeUtterance for usage and error information.
   531  //
   532  // Returned Error Types:
   533  //   * AccessDeniedException
   534  //
   535  //   * ResourceNotFoundException
   536  //
   537  //   * ValidationException
   538  //
   539  //   * ThrottlingException
   540  //
   541  //   * InternalServerException
   542  //
   543  //   * ConflictException
   544  //
   545  //   * DependencyFailedException
   546  //
   547  //   * BadGatewayException
   548  //
   549  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/RecognizeUtterance
   550  func (c *LexRuntimeV2) RecognizeUtterance(input *RecognizeUtteranceInput) (*RecognizeUtteranceOutput, error) {
   551  	req, out := c.RecognizeUtteranceRequest(input)
   552  	return out, req.Send()
   553  }
   554  
   555  // RecognizeUtteranceWithContext is the same as RecognizeUtterance with the addition of
   556  // the ability to pass a context and additional request options.
   557  //
   558  // See RecognizeUtterance for details on how to use this API operation.
   559  //
   560  // The context must be non-nil and will be used for request cancellation. If
   561  // the context is nil a panic will occur. In the future the SDK may create
   562  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   563  // for more information on using Contexts.
   564  func (c *LexRuntimeV2) RecognizeUtteranceWithContext(ctx aws.Context, input *RecognizeUtteranceInput, opts ...request.Option) (*RecognizeUtteranceOutput, error) {
   565  	req, out := c.RecognizeUtteranceRequest(input)
   566  	req.SetContext(ctx)
   567  	req.ApplyOptions(opts...)
   568  	return out, req.Send()
   569  }
   570  
   571  const opStartConversation = "StartConversation"
   572  
   573  // StartConversationRequest generates a "aws/request.Request" representing the
   574  // client's request for the StartConversation operation. The "output" return
   575  // value will be populated with the request's response once the request completes
   576  // successfully.
   577  //
   578  // Use "Send" method on the returned Request to send the API call to the service.
   579  // the "output" return value is not valid until after Send returns without error.
   580  //
   581  // See StartConversation for more information on using the StartConversation
   582  // API call, and error handling.
   583  //
   584  // This method is useful when you want to inject custom logic or configuration
   585  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   586  //
   587  //
   588  //    // Example sending a request using the StartConversationRequest method.
   589  //    req, resp := client.StartConversationRequest(params)
   590  //
   591  //    err := req.Send()
   592  //    if err == nil { // resp is now filled
   593  //        fmt.Println(resp)
   594  //    }
   595  //
   596  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/StartConversation
   597  func (c *LexRuntimeV2) StartConversationRequest(input *StartConversationInput) (req *request.Request, output *StartConversationOutput) {
   598  	op := &request.Operation{
   599  		Name:       opStartConversation,
   600  		HTTPMethod: "POST",
   601  		HTTPPath:   "/bots/{botId}/botAliases/{botAliasId}/botLocales/{localeId}/sessions/{sessionId}/conversation",
   602  	}
   603  
   604  	if input == nil {
   605  		input = &StartConversationInput{}
   606  	}
   607  
   608  	output = &StartConversationOutput{}
   609  	req = c.newRequest(op, input, output)
   610  	req.Handlers.UnmarshalMeta.PushBack(
   611  		protocol.RequireHTTPMinProtocol{Major: 2}.Handler,
   612  	)
   613  
   614  	es := NewStartConversationEventStream()
   615  	output.eventStream = es
   616  
   617  	req.Handlers.Sign.PushFront(es.setupInputPipe)
   618  	req.Handlers.UnmarshalError.PushBackNamed(request.NamedHandler{
   619  		Name: "InputPipeCloser",
   620  		Fn: func(r *request.Request) {
   621  			err := es.closeInputPipe()
   622  			if err != nil {
   623  				r.Error = awserr.New(eventstreamapi.InputWriterCloseErrorCode, err.Error(), r.Error)
   624  			}
   625  		},
   626  	})
   627  	req.Handlers.Build.PushBack(request.WithSetRequestHeaders(map[string]string{
   628  		"Content-Type":         "application/vnd.amazon.eventstream",
   629  		"X-Amz-Content-Sha256": "STREAMING-AWS4-HMAC-SHA256-EVENTS",
   630  	}))
   631  	req.Handlers.Build.Swap(restjson.BuildHandler.Name, rest.BuildHandler)
   632  	req.Handlers.Send.Swap(client.LogHTTPRequestHandler.Name, client.LogHTTPRequestHeaderHandler)
   633  	req.Handlers.Unmarshal.PushBack(es.runInputStream)
   634  
   635  	req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
   636  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, rest.UnmarshalHandler)
   637  	req.Handlers.Unmarshal.PushBack(es.runOutputStream)
   638  	req.Handlers.Unmarshal.PushBack(es.runOnStreamPartClose)
   639  	return
   640  }
   641  
   642  // StartConversation API operation for Amazon Lex Runtime V2.
   643  //
   644  // Starts an HTTP/2 bidirectional event stream that enables you to send audio,
   645  // text, or DTMF input in real time. After your application starts a conversation,
   646  // users send input to Amazon Lex V2 as a stream of events. Amazon Lex V2 processes
   647  // the incoming events and responds with streaming text or audio events.
   648  //
   649  // Audio input must be in the following format: audio/lpcm sample-rate=8000
   650  // sample-size-bits=16 channel-count=1; is-big-endian=false.
   651  //
   652  // If the optional post-fulfillment response is specified, the messages are
   653  // returned as follows. For more information, see PostFulfillmentStatusSpecification
   654  // (https://docs.aws.amazon.com/lexv2/latest/dg/API_PostFulfillmentStatusSpecification.html).
   655  //
   656  //    * Success message - Returned if the Lambda function completes successfully
   657  //    and the intent state is fulfilled or ready fulfillment if the message
   658  //    is present.
   659  //
   660  //    * Failed message - The failed message is returned if the Lambda function
   661  //    throws an exception or if the Lambda function returns a failed intent
   662  //    state without a message.
   663  //
   664  //    * Timeout message - If you don't configure a timeout message and a timeout,
   665  //    and the Lambda function doesn't return within 30 seconds, the timeout
   666  //    message is returned. If you configure a timeout, the timeout message is
   667  //    returned when the period times out.
   668  //
   669  // For more information, see Completion message (https://docs.aws.amazon.com/lexv2/latest/dg/streaming-progress.html#progress-complete.html).
   670  //
   671  // If the optional update message is configured, it is played at the specified
   672  // frequency while the Lambda function is running and the update message state
   673  // is active. If the fulfillment update message is not active, the Lambda function
   674  // runs with a 30 second timeout.
   675  //
   676  // For more information, see Update message (https://docs.aws.amazon.com/lexv2/latest/dg/streaming-progress.html#progress-update.html)
   677  //
   678  // The StartConversation operation is supported only in the following SDKs:
   679  //
   680  //    * AWS SDK for C++ (https://docs.aws.amazon.com/goto/SdkForCpp/runtime.lex.v2-2020-08-07/StartConversation)
   681  //
   682  //    * AWS SDK for Java V2 (https://docs.aws.amazon.com/goto/SdkForJavaV2/runtime.lex.v2-2020-08-07/StartConversation)
   683  //
   684  //    * AWS SDK for Ruby V3 (https://docs.aws.amazon.com/goto/SdkForRubyV3/runtime.lex.v2-2020-08-07/StartConversation)
   685  //
   686  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   687  // with awserr.Error's Code and Message methods to get detailed information about
   688  // the error.
   689  //
   690  // See the AWS API reference guide for Amazon Lex Runtime V2's
   691  // API operation StartConversation for usage and error information.
   692  //
   693  // Returned Error Types:
   694  //   * AccessDeniedException
   695  //
   696  //   * ValidationException
   697  //
   698  //   * ThrottlingException
   699  //
   700  //   * InternalServerException
   701  //
   702  // See also, https://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/StartConversation
   703  func (c *LexRuntimeV2) StartConversation(input *StartConversationInput) (*StartConversationOutput, error) {
   704  	req, out := c.StartConversationRequest(input)
   705  	return out, req.Send()
   706  }
   707  
   708  // StartConversationWithContext is the same as StartConversation with the addition of
   709  // the ability to pass a context and additional request options.
   710  //
   711  // See StartConversation for details on how to use this API operation.
   712  //
   713  // The context must be non-nil and will be used for request cancellation. If
   714  // the context is nil a panic will occur. In the future the SDK may create
   715  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   716  // for more information on using Contexts.
   717  func (c *LexRuntimeV2) StartConversationWithContext(ctx aws.Context, input *StartConversationInput, opts ...request.Option) (*StartConversationOutput, error) {
   718  	req, out := c.StartConversationRequest(input)
   719  	req.SetContext(ctx)
   720  	req.ApplyOptions(opts...)
   721  	return out, req.Send()
   722  }
   723  
   724  var _ awserr.Error
   725  
   726  // StartConversationEventStream provides the event stream handling for the StartConversation.
   727  //
   728  // For testing and mocking the event stream this type should be initialized via
   729  // the NewStartConversationEventStream constructor function. Using the functional options
   730  // to pass in nested mock behavior.
   731  type StartConversationEventStream struct {
   732  
   733  	// Writer is the EventStream writer for the StartConversationRequestEventStream
   734  	// events. This value is automatically set by the SDK when the API call is made
   735  	// Use this member when unit testing your code with the SDK to mock out the
   736  	// EventStream Writer.
   737  	//
   738  	// Must not be nil.
   739  	Writer StartConversationRequestEventStreamWriter
   740  
   741  	inputWriter io.WriteCloser
   742  
   743  	// Reader is the EventStream reader for the StartConversationResponseEventStream
   744  	// events. This value is automatically set by the SDK when the API call is made
   745  	// Use this member when unit testing your code with the SDK to mock out the
   746  	// EventStream Reader.
   747  	//
   748  	// Must not be nil.
   749  	Reader StartConversationResponseEventStreamReader
   750  
   751  	outputReader io.ReadCloser
   752  
   753  	done      chan struct{}
   754  	closeOnce sync.Once
   755  	err       *eventstreamapi.OnceError
   756  }
   757  
   758  // NewStartConversationEventStream initializes an StartConversationEventStream.
   759  // This function should only be used for testing and mocking the StartConversationEventStream
   760  // stream within your application.
   761  //
   762  // The Writer member must be set before writing events to the stream.
   763  //
   764  // The Reader member must be set before reading events from the stream.
   765  //
   766  //   es := NewStartConversationEventStream(func(o *StartConversationEventStream{
   767  //       es.Writer = myMockStreamWriter
   768  //       es.Reader = myMockStreamReader
   769  //   })
   770  func NewStartConversationEventStream(opts ...func(*StartConversationEventStream)) *StartConversationEventStream {
   771  	es := &StartConversationEventStream{
   772  		done: make(chan struct{}),
   773  		err:  eventstreamapi.NewOnceError(),
   774  	}
   775  
   776  	for _, fn := range opts {
   777  		fn(es)
   778  	}
   779  
   780  	return es
   781  }
   782  
   783  func (es *StartConversationEventStream) runOnStreamPartClose(r *request.Request) {
   784  	if es.done == nil {
   785  		return
   786  	}
   787  	go es.waitStreamPartClose()
   788  
   789  }
   790  
   791  func (es *StartConversationEventStream) waitStreamPartClose() {
   792  	var inputErrCh <-chan struct{}
   793  	if v, ok := es.Writer.(interface{ ErrorSet() <-chan struct{} }); ok {
   794  		inputErrCh = v.ErrorSet()
   795  	}
   796  	var outputErrCh <-chan struct{}
   797  	if v, ok := es.Reader.(interface{ ErrorSet() <-chan struct{} }); ok {
   798  		outputErrCh = v.ErrorSet()
   799  	}
   800  	var outputClosedCh <-chan struct{}
   801  	if v, ok := es.Reader.(interface{ Closed() <-chan struct{} }); ok {
   802  		outputClosedCh = v.Closed()
   803  	}
   804  
   805  	select {
   806  	case <-es.done:
   807  	case <-inputErrCh:
   808  		es.err.SetError(es.Writer.Err())
   809  		es.Close()
   810  	case <-outputErrCh:
   811  		es.err.SetError(es.Reader.Err())
   812  		es.Close()
   813  	case <-outputClosedCh:
   814  		if err := es.Reader.Err(); err != nil {
   815  			es.err.SetError(es.Reader.Err())
   816  		}
   817  		es.Close()
   818  	}
   819  }
   820  
   821  func (es *StartConversationEventStream) setupInputPipe(r *request.Request) {
   822  	inputReader, inputWriter := io.Pipe()
   823  	r.SetStreamingBody(inputReader)
   824  	es.inputWriter = inputWriter
   825  }
   826  
   827  // Closes the input-pipe writer
   828  func (es *StartConversationEventStream) closeInputPipe() error {
   829  	if es.inputWriter != nil {
   830  		return es.inputWriter.Close()
   831  	}
   832  	return nil
   833  }
   834  
   835  // Send writes the event to the stream blocking until the event is written.
   836  // Returns an error if the event was not written.
   837  //
   838  // These events are:
   839  //
   840  //     * AudioInputEvent
   841  //     * ConfigurationEvent
   842  //     * DTMFInputEvent
   843  //     * DisconnectionEvent
   844  //     * PlaybackCompletionEvent
   845  //     * TextInputEvent
   846  func (es *StartConversationEventStream) Send(ctx aws.Context, event StartConversationRequestEventStreamEvent) error {
   847  	return es.Writer.Send(ctx, event)
   848  }
   849  
   850  func (es *StartConversationEventStream) runInputStream(r *request.Request) {
   851  	var opts []func(*eventstream.Encoder)
   852  	if r.Config.Logger != nil && r.Config.LogLevel.Matches(aws.LogDebugWithEventStreamBody) {
   853  		opts = append(opts, eventstream.EncodeWithLogger(r.Config.Logger))
   854  	}
   855  	var encoder eventstreamapi.Encoder = eventstream.NewEncoder(es.inputWriter, opts...)
   856  
   857  	var closer aws.MultiCloser
   858  	sigSeed, err := v4.GetSignedRequestSignature(r.HTTPRequest)
   859  	if err != nil {
   860  		r.Error = awserr.New(request.ErrCodeSerialization,
   861  			"unable to get initial request's signature", err)
   862  		return
   863  	}
   864  	signer := eventstreamapi.NewSignEncoder(
   865  		v4.NewStreamSigner(r.ClientInfo.SigningRegion, r.ClientInfo.SigningName,
   866  			sigSeed, r.Config.Credentials),
   867  		encoder,
   868  	)
   869  	encoder = signer
   870  	closer = append(closer, signer)
   871  	closer = append(closer, es.inputWriter)
   872  
   873  	eventWriter := eventstreamapi.NewEventWriter(encoder,
   874  		protocol.HandlerPayloadMarshal{
   875  			Marshalers: r.Handlers.BuildStream,
   876  		},
   877  		eventTypeForStartConversationRequestEventStreamEvent,
   878  	)
   879  
   880  	es.Writer = &writeStartConversationRequestEventStream{
   881  		StreamWriter: eventstreamapi.NewStreamWriter(eventWriter, closer),
   882  	}
   883  }
   884  
   885  // Events returns a channel to read events from.
   886  //
   887  // These events are:
   888  //
   889  //     * AudioResponseEvent
   890  //     * HeartbeatEvent
   891  //     * IntentResultEvent
   892  //     * PlaybackInterruptionEvent
   893  //     * TextResponseEvent
   894  //     * TranscriptEvent
   895  //     * StartConversationResponseEventStreamUnknownEvent
   896  func (es *StartConversationEventStream) Events() <-chan StartConversationResponseEventStreamEvent {
   897  	return es.Reader.Events()
   898  }
   899  
   900  func (es *StartConversationEventStream) runOutputStream(r *request.Request) {
   901  	var opts []func(*eventstream.Decoder)
   902  	if r.Config.Logger != nil && r.Config.LogLevel.Matches(aws.LogDebugWithEventStreamBody) {
   903  		opts = append(opts, eventstream.DecodeWithLogger(r.Config.Logger))
   904  	}
   905  
   906  	unmarshalerForEvent := unmarshalerForStartConversationResponseEventStreamEvent{
   907  		metadata: protocol.ResponseMetadata{
   908  			StatusCode: r.HTTPResponse.StatusCode,
   909  			RequestID:  r.RequestID,
   910  		},
   911  	}.UnmarshalerForEventName
   912  
   913  	decoder := eventstream.NewDecoder(r.HTTPResponse.Body, opts...)
   914  	eventReader := eventstreamapi.NewEventReader(decoder,
   915  		protocol.HandlerPayloadUnmarshal{
   916  			Unmarshalers: r.Handlers.UnmarshalStream,
   917  		},
   918  		unmarshalerForEvent,
   919  	)
   920  
   921  	es.outputReader = r.HTTPResponse.Body
   922  	es.Reader = newReadStartConversationResponseEventStream(eventReader)
   923  }
   924  
   925  // Close closes the stream. This will also cause the stream to be closed.
   926  // Close must be called when done using the stream API. Not calling Close
   927  // may result in resource leaks.
   928  //
   929  // Will close the underlying EventStream writer, and no more events can be
   930  // sent.
   931  //
   932  // You can use the closing of the Reader's Events channel to terminate your
   933  // application's read from the API's stream.
   934  //
   935  func (es *StartConversationEventStream) Close() (err error) {
   936  	es.closeOnce.Do(es.safeClose)
   937  	return es.Err()
   938  }
   939  
   940  func (es *StartConversationEventStream) safeClose() {
   941  	if es.done != nil {
   942  		close(es.done)
   943  	}
   944  
   945  	t := time.NewTicker(time.Second)
   946  	defer t.Stop()
   947  	writeCloseDone := make(chan error)
   948  	go func() {
   949  		if err := es.Writer.Close(); err != nil {
   950  			es.err.SetError(err)
   951  		}
   952  		close(writeCloseDone)
   953  	}()
   954  	select {
   955  	case <-t.C:
   956  	case <-writeCloseDone:
   957  	}
   958  	if err := es.closeInputPipe(); err != nil {
   959  		es.err.SetError(err)
   960  	}
   961  
   962  	es.Reader.Close()
   963  	if es.outputReader != nil {
   964  		es.outputReader.Close()
   965  	}
   966  }
   967  
   968  // Err returns any error that occurred while reading or writing EventStream
   969  // Events from the service API's response. Returns nil if there were no errors.
   970  func (es *StartConversationEventStream) Err() error {
   971  	if err := es.err.Err(); err != nil {
   972  		return err
   973  	}
   974  	if err := es.Writer.Err(); err != nil {
   975  		return err
   976  	}
   977  	if err := es.Reader.Err(); err != nil {
   978  		return err
   979  	}
   980  
   981  	return nil
   982  }
   983  
   984  type AccessDeniedException struct {
   985  	_            struct{}                  `type:"structure"`
   986  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
   987  
   988  	Message_ *string `locationName:"message" type:"string"`
   989  }
   990  
   991  // String returns the string representation.
   992  //
   993  // API parameter values that are decorated as "sensitive" in the API will not
   994  // be included in the string output. The member name will be present, but the
   995  // value will be replaced with "sensitive".
   996  func (s AccessDeniedException) String() string {
   997  	return awsutil.Prettify(s)
   998  }
   999  
  1000  // GoString returns the string representation.
  1001  //
  1002  // API parameter values that are decorated as "sensitive" in the API will not
  1003  // be included in the string output. The member name will be present, but the
  1004  // value will be replaced with "sensitive".
  1005  func (s AccessDeniedException) GoString() string {
  1006  	return s.String()
  1007  }
  1008  
  1009  // The AccessDeniedException is and event in the StartConversationResponseEventStream group of events.
  1010  func (s *AccessDeniedException) eventStartConversationResponseEventStream() {}
  1011  
  1012  // UnmarshalEvent unmarshals the EventStream Message into the AccessDeniedException value.
  1013  // This method is only used internally within the SDK's EventStream handling.
  1014  func (s *AccessDeniedException) UnmarshalEvent(
  1015  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1016  	msg eventstream.Message,
  1017  ) error {
  1018  	if err := payloadUnmarshaler.UnmarshalPayload(
  1019  		bytes.NewReader(msg.Payload), s,
  1020  	); err != nil {
  1021  		return err
  1022  	}
  1023  	return nil
  1024  }
  1025  
  1026  // MarshalEvent marshals the type into an stream event value. This method
  1027  // should only used internally within the SDK's EventStream handling.
  1028  func (s *AccessDeniedException) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1029  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.ExceptionMessageType))
  1030  	var buf bytes.Buffer
  1031  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1032  		return eventstream.Message{}, err
  1033  	}
  1034  	msg.Payload = buf.Bytes()
  1035  	return msg, err
  1036  }
  1037  
  1038  func newErrorAccessDeniedException(v protocol.ResponseMetadata) error {
  1039  	return &AccessDeniedException{
  1040  		RespMetadata: v,
  1041  	}
  1042  }
  1043  
  1044  // Code returns the exception type name.
  1045  func (s *AccessDeniedException) Code() string {
  1046  	return "AccessDeniedException"
  1047  }
  1048  
  1049  // Message returns the exception's message.
  1050  func (s *AccessDeniedException) Message() string {
  1051  	if s.Message_ != nil {
  1052  		return *s.Message_
  1053  	}
  1054  	return ""
  1055  }
  1056  
  1057  // OrigErr always returns nil, satisfies awserr.Error interface.
  1058  func (s *AccessDeniedException) OrigErr() error {
  1059  	return nil
  1060  }
  1061  
  1062  func (s *AccessDeniedException) Error() string {
  1063  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  1064  }
  1065  
  1066  // Status code returns the HTTP status code for the request's response error.
  1067  func (s *AccessDeniedException) StatusCode() int {
  1068  	return s.RespMetadata.StatusCode
  1069  }
  1070  
  1071  // RequestID returns the service's response RequestID for request.
  1072  func (s *AccessDeniedException) RequestID() string {
  1073  	return s.RespMetadata.RequestID
  1074  }
  1075  
  1076  // Contains information about the contexts that a user is using in a session.
  1077  // You can configure Amazon Lex V2 to set a context when an intent is fulfilled,
  1078  // or you can set a context using the , , or operations.
  1079  //
  1080  // Use a context to indicate to Amazon Lex V2 intents that should be used as
  1081  // follow-up intents. For example, if the active context is order-fulfilled,
  1082  // only intents that have order-fulfilled configured as a trigger are considered
  1083  // for follow up.
  1084  type ActiveContext struct {
  1085  	_ struct{} `type:"structure"`
  1086  
  1087  	// A list of contexts active for the request. A context can be activated when
  1088  	// a previous intent is fulfilled, or by including the context in the request.
  1089  	//
  1090  	// If you don't specify a list of contexts, Amazon Lex V2 will use the current
  1091  	// list of contexts for the session. If you specify an empty list, all contexts
  1092  	// for the session are cleared.
  1093  	//
  1094  	// ContextAttributes is a required field
  1095  	ContextAttributes map[string]*string `locationName:"contextAttributes" type:"map" required:"true"`
  1096  
  1097  	// The name of the context.
  1098  	//
  1099  	// Name is a required field
  1100  	Name *string `locationName:"name" min:"1" type:"string" required:"true"`
  1101  
  1102  	// Indicates the number of turns or seconds that the context is active. Once
  1103  	// the time to live expires, the context is no longer returned in a response.
  1104  	//
  1105  	// TimeToLive is a required field
  1106  	TimeToLive *ActiveContextTimeToLive `locationName:"timeToLive" type:"structure" required:"true"`
  1107  }
  1108  
  1109  // String returns the string representation.
  1110  //
  1111  // API parameter values that are decorated as "sensitive" in the API will not
  1112  // be included in the string output. The member name will be present, but the
  1113  // value will be replaced with "sensitive".
  1114  func (s ActiveContext) String() string {
  1115  	return awsutil.Prettify(s)
  1116  }
  1117  
  1118  // GoString returns the string representation.
  1119  //
  1120  // API parameter values that are decorated as "sensitive" in the API will not
  1121  // be included in the string output. The member name will be present, but the
  1122  // value will be replaced with "sensitive".
  1123  func (s ActiveContext) GoString() string {
  1124  	return s.String()
  1125  }
  1126  
  1127  // Validate inspects the fields of the type to determine if they are valid.
  1128  func (s *ActiveContext) Validate() error {
  1129  	invalidParams := request.ErrInvalidParams{Context: "ActiveContext"}
  1130  	if s.ContextAttributes == nil {
  1131  		invalidParams.Add(request.NewErrParamRequired("ContextAttributes"))
  1132  	}
  1133  	if s.Name == nil {
  1134  		invalidParams.Add(request.NewErrParamRequired("Name"))
  1135  	}
  1136  	if s.Name != nil && len(*s.Name) < 1 {
  1137  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  1138  	}
  1139  	if s.TimeToLive == nil {
  1140  		invalidParams.Add(request.NewErrParamRequired("TimeToLive"))
  1141  	}
  1142  	if s.TimeToLive != nil {
  1143  		if err := s.TimeToLive.Validate(); err != nil {
  1144  			invalidParams.AddNested("TimeToLive", err.(request.ErrInvalidParams))
  1145  		}
  1146  	}
  1147  
  1148  	if invalidParams.Len() > 0 {
  1149  		return invalidParams
  1150  	}
  1151  	return nil
  1152  }
  1153  
  1154  // SetContextAttributes sets the ContextAttributes field's value.
  1155  func (s *ActiveContext) SetContextAttributes(v map[string]*string) *ActiveContext {
  1156  	s.ContextAttributes = v
  1157  	return s
  1158  }
  1159  
  1160  // SetName sets the Name field's value.
  1161  func (s *ActiveContext) SetName(v string) *ActiveContext {
  1162  	s.Name = &v
  1163  	return s
  1164  }
  1165  
  1166  // SetTimeToLive sets the TimeToLive field's value.
  1167  func (s *ActiveContext) SetTimeToLive(v *ActiveContextTimeToLive) *ActiveContext {
  1168  	s.TimeToLive = v
  1169  	return s
  1170  }
  1171  
  1172  // The time that a context is active. You can specify the time to live in seconds
  1173  // or in conversation turns.
  1174  type ActiveContextTimeToLive struct {
  1175  	_ struct{} `type:"structure"`
  1176  
  1177  	// The number of seconds that the context is active. You can specify between
  1178  	// 5 and 86400 seconds (24 hours).
  1179  	//
  1180  	// TimeToLiveInSeconds is a required field
  1181  	TimeToLiveInSeconds *int64 `locationName:"timeToLiveInSeconds" min:"5" type:"integer" required:"true"`
  1182  
  1183  	// The number of turns that the context is active. You can specify up to 20
  1184  	// turns. Each request and response from the bot is a turn.
  1185  	//
  1186  	// TurnsToLive is a required field
  1187  	TurnsToLive *int64 `locationName:"turnsToLive" min:"1" type:"integer" required:"true"`
  1188  }
  1189  
  1190  // String returns the string representation.
  1191  //
  1192  // API parameter values that are decorated as "sensitive" in the API will not
  1193  // be included in the string output. The member name will be present, but the
  1194  // value will be replaced with "sensitive".
  1195  func (s ActiveContextTimeToLive) String() string {
  1196  	return awsutil.Prettify(s)
  1197  }
  1198  
  1199  // GoString returns the string representation.
  1200  //
  1201  // API parameter values that are decorated as "sensitive" in the API will not
  1202  // be included in the string output. The member name will be present, but the
  1203  // value will be replaced with "sensitive".
  1204  func (s ActiveContextTimeToLive) GoString() string {
  1205  	return s.String()
  1206  }
  1207  
  1208  // Validate inspects the fields of the type to determine if they are valid.
  1209  func (s *ActiveContextTimeToLive) Validate() error {
  1210  	invalidParams := request.ErrInvalidParams{Context: "ActiveContextTimeToLive"}
  1211  	if s.TimeToLiveInSeconds == nil {
  1212  		invalidParams.Add(request.NewErrParamRequired("TimeToLiveInSeconds"))
  1213  	}
  1214  	if s.TimeToLiveInSeconds != nil && *s.TimeToLiveInSeconds < 5 {
  1215  		invalidParams.Add(request.NewErrParamMinValue("TimeToLiveInSeconds", 5))
  1216  	}
  1217  	if s.TurnsToLive == nil {
  1218  		invalidParams.Add(request.NewErrParamRequired("TurnsToLive"))
  1219  	}
  1220  	if s.TurnsToLive != nil && *s.TurnsToLive < 1 {
  1221  		invalidParams.Add(request.NewErrParamMinValue("TurnsToLive", 1))
  1222  	}
  1223  
  1224  	if invalidParams.Len() > 0 {
  1225  		return invalidParams
  1226  	}
  1227  	return nil
  1228  }
  1229  
  1230  // SetTimeToLiveInSeconds sets the TimeToLiveInSeconds field's value.
  1231  func (s *ActiveContextTimeToLive) SetTimeToLiveInSeconds(v int64) *ActiveContextTimeToLive {
  1232  	s.TimeToLiveInSeconds = &v
  1233  	return s
  1234  }
  1235  
  1236  // SetTurnsToLive sets the TurnsToLive field's value.
  1237  func (s *ActiveContextTimeToLive) SetTurnsToLive(v int64) *ActiveContextTimeToLive {
  1238  	s.TurnsToLive = &v
  1239  	return s
  1240  }
  1241  
  1242  // Represents a chunk of audio sent from the client application to Amazon Lex
  1243  // V2. The audio is all or part of an utterance from the user.
  1244  //
  1245  // Amazon Lex V2 accumulates audio chunks until it recognizes a natural pause
  1246  // in speech before processing the input.
  1247  type AudioInputEvent struct {
  1248  	_ struct{} `type:"structure"`
  1249  
  1250  	// An encoded stream of audio.
  1251  	// AudioChunk is automatically base64 encoded/decoded by the SDK.
  1252  	AudioChunk []byte `locationName:"audioChunk" type:"blob"`
  1253  
  1254  	// A timestamp set by the client of the date and time that the event was sent
  1255  	// to Amazon Lex V2.
  1256  	ClientTimestampMillis *int64 `locationName:"clientTimestampMillis" type:"long"`
  1257  
  1258  	// The encoding used for the audio chunk. You must use 8 KHz PCM 16-bit mono-channel
  1259  	// little-endian format. The value of the field should be:
  1260  	//
  1261  	// audio/lpcm; sample-rate=8000; sample-size-bits=16; channel-count=1; is-big-endian=false
  1262  	//
  1263  	// ContentType is a required field
  1264  	ContentType *string `locationName:"contentType" min:"1" type:"string" required:"true"`
  1265  
  1266  	// A unique identifier that your application assigns to the event. You can use
  1267  	// this to identify events in logs.
  1268  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  1269  }
  1270  
  1271  // String returns the string representation.
  1272  //
  1273  // API parameter values that are decorated as "sensitive" in the API will not
  1274  // be included in the string output. The member name will be present, but the
  1275  // value will be replaced with "sensitive".
  1276  func (s AudioInputEvent) String() string {
  1277  	return awsutil.Prettify(s)
  1278  }
  1279  
  1280  // GoString returns the string representation.
  1281  //
  1282  // API parameter values that are decorated as "sensitive" in the API will not
  1283  // be included in the string output. The member name will be present, but the
  1284  // value will be replaced with "sensitive".
  1285  func (s AudioInputEvent) GoString() string {
  1286  	return s.String()
  1287  }
  1288  
  1289  // SetAudioChunk sets the AudioChunk field's value.
  1290  func (s *AudioInputEvent) SetAudioChunk(v []byte) *AudioInputEvent {
  1291  	s.AudioChunk = v
  1292  	return s
  1293  }
  1294  
  1295  // SetClientTimestampMillis sets the ClientTimestampMillis field's value.
  1296  func (s *AudioInputEvent) SetClientTimestampMillis(v int64) *AudioInputEvent {
  1297  	s.ClientTimestampMillis = &v
  1298  	return s
  1299  }
  1300  
  1301  // SetContentType sets the ContentType field's value.
  1302  func (s *AudioInputEvent) SetContentType(v string) *AudioInputEvent {
  1303  	s.ContentType = &v
  1304  	return s
  1305  }
  1306  
  1307  // SetEventId sets the EventId field's value.
  1308  func (s *AudioInputEvent) SetEventId(v string) *AudioInputEvent {
  1309  	s.EventId = &v
  1310  	return s
  1311  }
  1312  
  1313  // The AudioInputEvent is and event in the StartConversationRequestEventStream group of events.
  1314  func (s *AudioInputEvent) eventStartConversationRequestEventStream() {}
  1315  
  1316  // UnmarshalEvent unmarshals the EventStream Message into the AudioInputEvent value.
  1317  // This method is only used internally within the SDK's EventStream handling.
  1318  func (s *AudioInputEvent) UnmarshalEvent(
  1319  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1320  	msg eventstream.Message,
  1321  ) error {
  1322  	if err := payloadUnmarshaler.UnmarshalPayload(
  1323  		bytes.NewReader(msg.Payload), s,
  1324  	); err != nil {
  1325  		return err
  1326  	}
  1327  	return nil
  1328  }
  1329  
  1330  // MarshalEvent marshals the type into an stream event value. This method
  1331  // should only used internally within the SDK's EventStream handling.
  1332  func (s *AudioInputEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1333  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  1334  	var buf bytes.Buffer
  1335  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1336  		return eventstream.Message{}, err
  1337  	}
  1338  	msg.Payload = buf.Bytes()
  1339  	return msg, err
  1340  }
  1341  
  1342  // An event sent from Amazon Lex V2 to your client application containing audio
  1343  // to play to the user.
  1344  type AudioResponseEvent struct {
  1345  	_ struct{} `type:"structure"`
  1346  
  1347  	// A chunk of the audio to play.
  1348  	// AudioChunk is automatically base64 encoded/decoded by the SDK.
  1349  	AudioChunk []byte `locationName:"audioChunk" type:"blob"`
  1350  
  1351  	// The encoding of the audio chunk. This is the same as the encoding configure
  1352  	// in the contentType field of the ConfigurationEvent.
  1353  	ContentType *string `locationName:"contentType" min:"1" type:"string"`
  1354  
  1355  	// A unique identifier of the event sent by Amazon Lex V2. The identifier is
  1356  	// in the form RESPONSE-N, where N is a number starting with one and incremented
  1357  	// for each event sent by Amazon Lex V2 in the current session.
  1358  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  1359  }
  1360  
  1361  // String returns the string representation.
  1362  //
  1363  // API parameter values that are decorated as "sensitive" in the API will not
  1364  // be included in the string output. The member name will be present, but the
  1365  // value will be replaced with "sensitive".
  1366  func (s AudioResponseEvent) String() string {
  1367  	return awsutil.Prettify(s)
  1368  }
  1369  
  1370  // GoString returns the string representation.
  1371  //
  1372  // API parameter values that are decorated as "sensitive" in the API will not
  1373  // be included in the string output. The member name will be present, but the
  1374  // value will be replaced with "sensitive".
  1375  func (s AudioResponseEvent) GoString() string {
  1376  	return s.String()
  1377  }
  1378  
  1379  // SetAudioChunk sets the AudioChunk field's value.
  1380  func (s *AudioResponseEvent) SetAudioChunk(v []byte) *AudioResponseEvent {
  1381  	s.AudioChunk = v
  1382  	return s
  1383  }
  1384  
  1385  // SetContentType sets the ContentType field's value.
  1386  func (s *AudioResponseEvent) SetContentType(v string) *AudioResponseEvent {
  1387  	s.ContentType = &v
  1388  	return s
  1389  }
  1390  
  1391  // SetEventId sets the EventId field's value.
  1392  func (s *AudioResponseEvent) SetEventId(v string) *AudioResponseEvent {
  1393  	s.EventId = &v
  1394  	return s
  1395  }
  1396  
  1397  // The AudioResponseEvent is and event in the StartConversationResponseEventStream group of events.
  1398  func (s *AudioResponseEvent) eventStartConversationResponseEventStream() {}
  1399  
  1400  // UnmarshalEvent unmarshals the EventStream Message into the AudioResponseEvent value.
  1401  // This method is only used internally within the SDK's EventStream handling.
  1402  func (s *AudioResponseEvent) UnmarshalEvent(
  1403  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1404  	msg eventstream.Message,
  1405  ) error {
  1406  	if err := payloadUnmarshaler.UnmarshalPayload(
  1407  		bytes.NewReader(msg.Payload), s,
  1408  	); err != nil {
  1409  		return err
  1410  	}
  1411  	return nil
  1412  }
  1413  
  1414  // MarshalEvent marshals the type into an stream event value. This method
  1415  // should only used internally within the SDK's EventStream handling.
  1416  func (s *AudioResponseEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1417  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  1418  	var buf bytes.Buffer
  1419  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1420  		return eventstream.Message{}, err
  1421  	}
  1422  	msg.Payload = buf.Bytes()
  1423  	return msg, err
  1424  }
  1425  
  1426  type BadGatewayException struct {
  1427  	_            struct{}                  `type:"structure"`
  1428  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  1429  
  1430  	Message_ *string `locationName:"message" type:"string"`
  1431  }
  1432  
  1433  // String returns the string representation.
  1434  //
  1435  // API parameter values that are decorated as "sensitive" in the API will not
  1436  // be included in the string output. The member name will be present, but the
  1437  // value will be replaced with "sensitive".
  1438  func (s BadGatewayException) String() string {
  1439  	return awsutil.Prettify(s)
  1440  }
  1441  
  1442  // GoString returns the string representation.
  1443  //
  1444  // API parameter values that are decorated as "sensitive" in the API will not
  1445  // be included in the string output. The member name will be present, but the
  1446  // value will be replaced with "sensitive".
  1447  func (s BadGatewayException) GoString() string {
  1448  	return s.String()
  1449  }
  1450  
  1451  // The BadGatewayException is and event in the StartConversationResponseEventStream group of events.
  1452  func (s *BadGatewayException) eventStartConversationResponseEventStream() {}
  1453  
  1454  // UnmarshalEvent unmarshals the EventStream Message into the BadGatewayException value.
  1455  // This method is only used internally within the SDK's EventStream handling.
  1456  func (s *BadGatewayException) UnmarshalEvent(
  1457  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1458  	msg eventstream.Message,
  1459  ) error {
  1460  	if err := payloadUnmarshaler.UnmarshalPayload(
  1461  		bytes.NewReader(msg.Payload), s,
  1462  	); err != nil {
  1463  		return err
  1464  	}
  1465  	return nil
  1466  }
  1467  
  1468  // MarshalEvent marshals the type into an stream event value. This method
  1469  // should only used internally within the SDK's EventStream handling.
  1470  func (s *BadGatewayException) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1471  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.ExceptionMessageType))
  1472  	var buf bytes.Buffer
  1473  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1474  		return eventstream.Message{}, err
  1475  	}
  1476  	msg.Payload = buf.Bytes()
  1477  	return msg, err
  1478  }
  1479  
  1480  func newErrorBadGatewayException(v protocol.ResponseMetadata) error {
  1481  	return &BadGatewayException{
  1482  		RespMetadata: v,
  1483  	}
  1484  }
  1485  
  1486  // Code returns the exception type name.
  1487  func (s *BadGatewayException) Code() string {
  1488  	return "BadGatewayException"
  1489  }
  1490  
  1491  // Message returns the exception's message.
  1492  func (s *BadGatewayException) Message() string {
  1493  	if s.Message_ != nil {
  1494  		return *s.Message_
  1495  	}
  1496  	return ""
  1497  }
  1498  
  1499  // OrigErr always returns nil, satisfies awserr.Error interface.
  1500  func (s *BadGatewayException) OrigErr() error {
  1501  	return nil
  1502  }
  1503  
  1504  func (s *BadGatewayException) Error() string {
  1505  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  1506  }
  1507  
  1508  // Status code returns the HTTP status code for the request's response error.
  1509  func (s *BadGatewayException) StatusCode() int {
  1510  	return s.RespMetadata.StatusCode
  1511  }
  1512  
  1513  // RequestID returns the service's response RequestID for request.
  1514  func (s *BadGatewayException) RequestID() string {
  1515  	return s.RespMetadata.RequestID
  1516  }
  1517  
  1518  // A button that appears on a response card show to the user.
  1519  type Button struct {
  1520  	_ struct{} `type:"structure"`
  1521  
  1522  	// The text that is displayed on the button.
  1523  	//
  1524  	// Text is a required field
  1525  	Text *string `locationName:"text" min:"1" type:"string" required:"true"`
  1526  
  1527  	// The value returned to Amazon Lex V2 when a user chooses the button.
  1528  	//
  1529  	// Value is a required field
  1530  	Value *string `locationName:"value" min:"1" type:"string" required:"true"`
  1531  }
  1532  
  1533  // String returns the string representation.
  1534  //
  1535  // API parameter values that are decorated as "sensitive" in the API will not
  1536  // be included in the string output. The member name will be present, but the
  1537  // value will be replaced with "sensitive".
  1538  func (s Button) String() string {
  1539  	return awsutil.Prettify(s)
  1540  }
  1541  
  1542  // GoString returns the string representation.
  1543  //
  1544  // API parameter values that are decorated as "sensitive" in the API will not
  1545  // be included in the string output. The member name will be present, but the
  1546  // value will be replaced with "sensitive".
  1547  func (s Button) GoString() string {
  1548  	return s.String()
  1549  }
  1550  
  1551  // Validate inspects the fields of the type to determine if they are valid.
  1552  func (s *Button) Validate() error {
  1553  	invalidParams := request.ErrInvalidParams{Context: "Button"}
  1554  	if s.Text == nil {
  1555  		invalidParams.Add(request.NewErrParamRequired("Text"))
  1556  	}
  1557  	if s.Text != nil && len(*s.Text) < 1 {
  1558  		invalidParams.Add(request.NewErrParamMinLen("Text", 1))
  1559  	}
  1560  	if s.Value == nil {
  1561  		invalidParams.Add(request.NewErrParamRequired("Value"))
  1562  	}
  1563  	if s.Value != nil && len(*s.Value) < 1 {
  1564  		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
  1565  	}
  1566  
  1567  	if invalidParams.Len() > 0 {
  1568  		return invalidParams
  1569  	}
  1570  	return nil
  1571  }
  1572  
  1573  // SetText sets the Text field's value.
  1574  func (s *Button) SetText(v string) *Button {
  1575  	s.Text = &v
  1576  	return s
  1577  }
  1578  
  1579  // SetValue sets the Value field's value.
  1580  func (s *Button) SetValue(v string) *Button {
  1581  	s.Value = &v
  1582  	return s
  1583  }
  1584  
  1585  // Provides a score that indicates the confidence that Amazon Lex V2 has that
  1586  // an intent is the one that satisfies the user's intent.
  1587  type ConfidenceScore struct {
  1588  	_ struct{} `type:"structure"`
  1589  
  1590  	// A score that indicates how confident Amazon Lex V2 is that an intent satisfies
  1591  	// the user's intent. Ranges between 0.00 and 1.00. Higher scores indicate higher
  1592  	// confidence.
  1593  	Score *float64 `locationName:"score" type:"double"`
  1594  }
  1595  
  1596  // String returns the string representation.
  1597  //
  1598  // API parameter values that are decorated as "sensitive" in the API will not
  1599  // be included in the string output. The member name will be present, but the
  1600  // value will be replaced with "sensitive".
  1601  func (s ConfidenceScore) String() string {
  1602  	return awsutil.Prettify(s)
  1603  }
  1604  
  1605  // GoString returns the string representation.
  1606  //
  1607  // API parameter values that are decorated as "sensitive" in the API will not
  1608  // be included in the string output. The member name will be present, but the
  1609  // value will be replaced with "sensitive".
  1610  func (s ConfidenceScore) GoString() string {
  1611  	return s.String()
  1612  }
  1613  
  1614  // SetScore sets the Score field's value.
  1615  func (s *ConfidenceScore) SetScore(v float64) *ConfidenceScore {
  1616  	s.Score = &v
  1617  	return s
  1618  }
  1619  
  1620  // The initial event sent from the application to Amazon Lex V2 to configure
  1621  // the conversation, including session and request attributes and the response
  1622  // content type.
  1623  type ConfigurationEvent struct {
  1624  	_ struct{} `type:"structure"`
  1625  
  1626  	// A timestamp set by the client of the date and time that the event was sent
  1627  	// to Amazon Lex V2.
  1628  	ClientTimestampMillis *int64 `locationName:"clientTimestampMillis" type:"long"`
  1629  
  1630  	// Determines whether Amazon Lex V2 should send audio responses to the client
  1631  	// application.
  1632  	//
  1633  	// Set this field to false when the client is operating in a playback mode where
  1634  	// audio responses are played to the user. If the client isn't operating in
  1635  	// playback mode, such as a text chat application, set this to true so that
  1636  	// Amazon Lex V2 doesn't wait for the prompt to finish playing on the client.
  1637  	DisablePlayback *bool `locationName:"disablePlayback" type:"boolean"`
  1638  
  1639  	// A unique identifier that your application assigns to the event. You can use
  1640  	// this to identify events in logs.
  1641  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  1642  
  1643  	// Request-specific information passed between the client application and Amazon
  1644  	// Lex V2.
  1645  	//
  1646  	// The namespace x-amz-lex: is reserved for special attributes. Don't create
  1647  	// any request attributes for prefix x-amz-lex:.
  1648  	RequestAttributes map[string]*string `locationName:"requestAttributes" type:"map"`
  1649  
  1650  	// The message that Amazon Lex V2 returns in the response can be either text
  1651  	// or speech based on the responseContentType value.
  1652  	//
  1653  	//    * If the value is text/plain;charset=utf-8, Amazon Lex V2 returns text
  1654  	//    in the response.
  1655  	//
  1656  	//    * If the value begins with audio/, Amazon Lex V2 returns speech in the
  1657  	//    response. Amazon Lex V2 uses Amazon Polly to generate the speech using
  1658  	//    the configuration that you specified in the requestContentType parameter.
  1659  	//    For example, if you specify audio/mpeg as the value, Amazon Lex V2 returns
  1660  	//    speech in the MPEG format.
  1661  	//
  1662  	//    * If the value is audio/pcm, the speech returned is audio/pcm in 16-bit,
  1663  	//    little-endian format.
  1664  	//
  1665  	//    * The following are the accepted values: audio/mpeg audio/ogg audio/pcm
  1666  	//    audio/* (defaults to mpeg) text/plain; charset=utf-8
  1667  	//
  1668  	// ResponseContentType is a required field
  1669  	ResponseContentType *string `locationName:"responseContentType" min:"1" type:"string" required:"true"`
  1670  
  1671  	// The state of the user's session with Amazon Lex V2.
  1672  	SessionState *SessionState `locationName:"sessionState" type:"structure"`
  1673  
  1674  	// A list of messages to send to the user.
  1675  	WelcomeMessages []*Message `locationName:"welcomeMessages" type:"list"`
  1676  }
  1677  
  1678  // String returns the string representation.
  1679  //
  1680  // API parameter values that are decorated as "sensitive" in the API will not
  1681  // be included in the string output. The member name will be present, but the
  1682  // value will be replaced with "sensitive".
  1683  func (s ConfigurationEvent) String() string {
  1684  	return awsutil.Prettify(s)
  1685  }
  1686  
  1687  // GoString returns the string representation.
  1688  //
  1689  // API parameter values that are decorated as "sensitive" in the API will not
  1690  // be included in the string output. The member name will be present, but the
  1691  // value will be replaced with "sensitive".
  1692  func (s ConfigurationEvent) GoString() string {
  1693  	return s.String()
  1694  }
  1695  
  1696  // SetClientTimestampMillis sets the ClientTimestampMillis field's value.
  1697  func (s *ConfigurationEvent) SetClientTimestampMillis(v int64) *ConfigurationEvent {
  1698  	s.ClientTimestampMillis = &v
  1699  	return s
  1700  }
  1701  
  1702  // SetDisablePlayback sets the DisablePlayback field's value.
  1703  func (s *ConfigurationEvent) SetDisablePlayback(v bool) *ConfigurationEvent {
  1704  	s.DisablePlayback = &v
  1705  	return s
  1706  }
  1707  
  1708  // SetEventId sets the EventId field's value.
  1709  func (s *ConfigurationEvent) SetEventId(v string) *ConfigurationEvent {
  1710  	s.EventId = &v
  1711  	return s
  1712  }
  1713  
  1714  // SetRequestAttributes sets the RequestAttributes field's value.
  1715  func (s *ConfigurationEvent) SetRequestAttributes(v map[string]*string) *ConfigurationEvent {
  1716  	s.RequestAttributes = v
  1717  	return s
  1718  }
  1719  
  1720  // SetResponseContentType sets the ResponseContentType field's value.
  1721  func (s *ConfigurationEvent) SetResponseContentType(v string) *ConfigurationEvent {
  1722  	s.ResponseContentType = &v
  1723  	return s
  1724  }
  1725  
  1726  // SetSessionState sets the SessionState field's value.
  1727  func (s *ConfigurationEvent) SetSessionState(v *SessionState) *ConfigurationEvent {
  1728  	s.SessionState = v
  1729  	return s
  1730  }
  1731  
  1732  // SetWelcomeMessages sets the WelcomeMessages field's value.
  1733  func (s *ConfigurationEvent) SetWelcomeMessages(v []*Message) *ConfigurationEvent {
  1734  	s.WelcomeMessages = v
  1735  	return s
  1736  }
  1737  
  1738  // The ConfigurationEvent is and event in the StartConversationRequestEventStream group of events.
  1739  func (s *ConfigurationEvent) eventStartConversationRequestEventStream() {}
  1740  
  1741  // UnmarshalEvent unmarshals the EventStream Message into the ConfigurationEvent value.
  1742  // This method is only used internally within the SDK's EventStream handling.
  1743  func (s *ConfigurationEvent) UnmarshalEvent(
  1744  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1745  	msg eventstream.Message,
  1746  ) error {
  1747  	if err := payloadUnmarshaler.UnmarshalPayload(
  1748  		bytes.NewReader(msg.Payload), s,
  1749  	); err != nil {
  1750  		return err
  1751  	}
  1752  	return nil
  1753  }
  1754  
  1755  // MarshalEvent marshals the type into an stream event value. This method
  1756  // should only used internally within the SDK's EventStream handling.
  1757  func (s *ConfigurationEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1758  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  1759  	var buf bytes.Buffer
  1760  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1761  		return eventstream.Message{}, err
  1762  	}
  1763  	msg.Payload = buf.Bytes()
  1764  	return msg, err
  1765  }
  1766  
  1767  type ConflictException struct {
  1768  	_            struct{}                  `type:"structure"`
  1769  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  1770  
  1771  	Message_ *string `locationName:"message" type:"string"`
  1772  }
  1773  
  1774  // String returns the string representation.
  1775  //
  1776  // API parameter values that are decorated as "sensitive" in the API will not
  1777  // be included in the string output. The member name will be present, but the
  1778  // value will be replaced with "sensitive".
  1779  func (s ConflictException) String() string {
  1780  	return awsutil.Prettify(s)
  1781  }
  1782  
  1783  // GoString returns the string representation.
  1784  //
  1785  // API parameter values that are decorated as "sensitive" in the API will not
  1786  // be included in the string output. The member name will be present, but the
  1787  // value will be replaced with "sensitive".
  1788  func (s ConflictException) GoString() string {
  1789  	return s.String()
  1790  }
  1791  
  1792  // The ConflictException is and event in the StartConversationResponseEventStream group of events.
  1793  func (s *ConflictException) eventStartConversationResponseEventStream() {}
  1794  
  1795  // UnmarshalEvent unmarshals the EventStream Message into the ConflictException value.
  1796  // This method is only used internally within the SDK's EventStream handling.
  1797  func (s *ConflictException) UnmarshalEvent(
  1798  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1799  	msg eventstream.Message,
  1800  ) error {
  1801  	if err := payloadUnmarshaler.UnmarshalPayload(
  1802  		bytes.NewReader(msg.Payload), s,
  1803  	); err != nil {
  1804  		return err
  1805  	}
  1806  	return nil
  1807  }
  1808  
  1809  // MarshalEvent marshals the type into an stream event value. This method
  1810  // should only used internally within the SDK's EventStream handling.
  1811  func (s *ConflictException) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1812  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.ExceptionMessageType))
  1813  	var buf bytes.Buffer
  1814  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1815  		return eventstream.Message{}, err
  1816  	}
  1817  	msg.Payload = buf.Bytes()
  1818  	return msg, err
  1819  }
  1820  
  1821  func newErrorConflictException(v protocol.ResponseMetadata) error {
  1822  	return &ConflictException{
  1823  		RespMetadata: v,
  1824  	}
  1825  }
  1826  
  1827  // Code returns the exception type name.
  1828  func (s *ConflictException) Code() string {
  1829  	return "ConflictException"
  1830  }
  1831  
  1832  // Message returns the exception's message.
  1833  func (s *ConflictException) Message() string {
  1834  	if s.Message_ != nil {
  1835  		return *s.Message_
  1836  	}
  1837  	return ""
  1838  }
  1839  
  1840  // OrigErr always returns nil, satisfies awserr.Error interface.
  1841  func (s *ConflictException) OrigErr() error {
  1842  	return nil
  1843  }
  1844  
  1845  func (s *ConflictException) Error() string {
  1846  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  1847  }
  1848  
  1849  // Status code returns the HTTP status code for the request's response error.
  1850  func (s *ConflictException) StatusCode() int {
  1851  	return s.RespMetadata.StatusCode
  1852  }
  1853  
  1854  // RequestID returns the service's response RequestID for request.
  1855  func (s *ConflictException) RequestID() string {
  1856  	return s.RespMetadata.RequestID
  1857  }
  1858  
  1859  // A DTMF character sent from the client application. DTMF characters are typically
  1860  // sent from a phone keypad to represent numbers. For example, you can have
  1861  // Amazon Lex V2 process a credit card number input from a phone.
  1862  type DTMFInputEvent struct {
  1863  	_ struct{} `type:"structure"`
  1864  
  1865  	// A timestamp set by the client of the date and time that the event was sent
  1866  	// to Amazon Lex V2.
  1867  	ClientTimestampMillis *int64 `locationName:"clientTimestampMillis" type:"long"`
  1868  
  1869  	// A unique identifier that your application assigns to the event. You can use
  1870  	// this to identify events in logs.
  1871  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  1872  
  1873  	// The DTMF character that the user pressed. The allowed characters are A -
  1874  	// D, 0 - 9, # and *.
  1875  	//
  1876  	// InputCharacter is a sensitive parameter and its value will be
  1877  	// replaced with "sensitive" in string returned by DTMFInputEvent's
  1878  	// String and GoString methods.
  1879  	//
  1880  	// InputCharacter is a required field
  1881  	InputCharacter *string `locationName:"inputCharacter" min:"1" type:"string" required:"true" sensitive:"true"`
  1882  }
  1883  
  1884  // String returns the string representation.
  1885  //
  1886  // API parameter values that are decorated as "sensitive" in the API will not
  1887  // be included in the string output. The member name will be present, but the
  1888  // value will be replaced with "sensitive".
  1889  func (s DTMFInputEvent) String() string {
  1890  	return awsutil.Prettify(s)
  1891  }
  1892  
  1893  // GoString returns the string representation.
  1894  //
  1895  // API parameter values that are decorated as "sensitive" in the API will not
  1896  // be included in the string output. The member name will be present, but the
  1897  // value will be replaced with "sensitive".
  1898  func (s DTMFInputEvent) GoString() string {
  1899  	return s.String()
  1900  }
  1901  
  1902  // SetClientTimestampMillis sets the ClientTimestampMillis field's value.
  1903  func (s *DTMFInputEvent) SetClientTimestampMillis(v int64) *DTMFInputEvent {
  1904  	s.ClientTimestampMillis = &v
  1905  	return s
  1906  }
  1907  
  1908  // SetEventId sets the EventId field's value.
  1909  func (s *DTMFInputEvent) SetEventId(v string) *DTMFInputEvent {
  1910  	s.EventId = &v
  1911  	return s
  1912  }
  1913  
  1914  // SetInputCharacter sets the InputCharacter field's value.
  1915  func (s *DTMFInputEvent) SetInputCharacter(v string) *DTMFInputEvent {
  1916  	s.InputCharacter = &v
  1917  	return s
  1918  }
  1919  
  1920  // The DTMFInputEvent is and event in the StartConversationRequestEventStream group of events.
  1921  func (s *DTMFInputEvent) eventStartConversationRequestEventStream() {}
  1922  
  1923  // UnmarshalEvent unmarshals the EventStream Message into the DTMFInputEvent value.
  1924  // This method is only used internally within the SDK's EventStream handling.
  1925  func (s *DTMFInputEvent) UnmarshalEvent(
  1926  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1927  	msg eventstream.Message,
  1928  ) error {
  1929  	if err := payloadUnmarshaler.UnmarshalPayload(
  1930  		bytes.NewReader(msg.Payload), s,
  1931  	); err != nil {
  1932  		return err
  1933  	}
  1934  	return nil
  1935  }
  1936  
  1937  // MarshalEvent marshals the type into an stream event value. This method
  1938  // should only used internally within the SDK's EventStream handling.
  1939  func (s *DTMFInputEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1940  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  1941  	var buf bytes.Buffer
  1942  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1943  		return eventstream.Message{}, err
  1944  	}
  1945  	msg.Payload = buf.Bytes()
  1946  	return msg, err
  1947  }
  1948  
  1949  type DeleteSessionInput struct {
  1950  	_ struct{} `type:"structure" nopayload:"true"`
  1951  
  1952  	// The alias identifier in use for the bot that contains the session data.
  1953  	//
  1954  	// BotAliasId is a required field
  1955  	BotAliasId *string `location:"uri" locationName:"botAliasId" type:"string" required:"true"`
  1956  
  1957  	// The identifier of the bot that contains the session data.
  1958  	//
  1959  	// BotId is a required field
  1960  	BotId *string `location:"uri" locationName:"botId" min:"10" type:"string" required:"true"`
  1961  
  1962  	// The locale where the session is in use.
  1963  	//
  1964  	// LocaleId is a required field
  1965  	LocaleId *string `location:"uri" locationName:"localeId" min:"1" type:"string" required:"true"`
  1966  
  1967  	// The identifier of the session to delete.
  1968  	//
  1969  	// SessionId is a required field
  1970  	SessionId *string `location:"uri" locationName:"sessionId" min:"2" type:"string" required:"true"`
  1971  }
  1972  
  1973  // String returns the string representation.
  1974  //
  1975  // API parameter values that are decorated as "sensitive" in the API will not
  1976  // be included in the string output. The member name will be present, but the
  1977  // value will be replaced with "sensitive".
  1978  func (s DeleteSessionInput) String() string {
  1979  	return awsutil.Prettify(s)
  1980  }
  1981  
  1982  // GoString returns the string representation.
  1983  //
  1984  // API parameter values that are decorated as "sensitive" in the API will not
  1985  // be included in the string output. The member name will be present, but the
  1986  // value will be replaced with "sensitive".
  1987  func (s DeleteSessionInput) GoString() string {
  1988  	return s.String()
  1989  }
  1990  
  1991  // Validate inspects the fields of the type to determine if they are valid.
  1992  func (s *DeleteSessionInput) Validate() error {
  1993  	invalidParams := request.ErrInvalidParams{Context: "DeleteSessionInput"}
  1994  	if s.BotAliasId == nil {
  1995  		invalidParams.Add(request.NewErrParamRequired("BotAliasId"))
  1996  	}
  1997  	if s.BotAliasId != nil && len(*s.BotAliasId) < 1 {
  1998  		invalidParams.Add(request.NewErrParamMinLen("BotAliasId", 1))
  1999  	}
  2000  	if s.BotId == nil {
  2001  		invalidParams.Add(request.NewErrParamRequired("BotId"))
  2002  	}
  2003  	if s.BotId != nil && len(*s.BotId) < 10 {
  2004  		invalidParams.Add(request.NewErrParamMinLen("BotId", 10))
  2005  	}
  2006  	if s.LocaleId == nil {
  2007  		invalidParams.Add(request.NewErrParamRequired("LocaleId"))
  2008  	}
  2009  	if s.LocaleId != nil && len(*s.LocaleId) < 1 {
  2010  		invalidParams.Add(request.NewErrParamMinLen("LocaleId", 1))
  2011  	}
  2012  	if s.SessionId == nil {
  2013  		invalidParams.Add(request.NewErrParamRequired("SessionId"))
  2014  	}
  2015  	if s.SessionId != nil && len(*s.SessionId) < 2 {
  2016  		invalidParams.Add(request.NewErrParamMinLen("SessionId", 2))
  2017  	}
  2018  
  2019  	if invalidParams.Len() > 0 {
  2020  		return invalidParams
  2021  	}
  2022  	return nil
  2023  }
  2024  
  2025  // SetBotAliasId sets the BotAliasId field's value.
  2026  func (s *DeleteSessionInput) SetBotAliasId(v string) *DeleteSessionInput {
  2027  	s.BotAliasId = &v
  2028  	return s
  2029  }
  2030  
  2031  // SetBotId sets the BotId field's value.
  2032  func (s *DeleteSessionInput) SetBotId(v string) *DeleteSessionInput {
  2033  	s.BotId = &v
  2034  	return s
  2035  }
  2036  
  2037  // SetLocaleId sets the LocaleId field's value.
  2038  func (s *DeleteSessionInput) SetLocaleId(v string) *DeleteSessionInput {
  2039  	s.LocaleId = &v
  2040  	return s
  2041  }
  2042  
  2043  // SetSessionId sets the SessionId field's value.
  2044  func (s *DeleteSessionInput) SetSessionId(v string) *DeleteSessionInput {
  2045  	s.SessionId = &v
  2046  	return s
  2047  }
  2048  
  2049  type DeleteSessionOutput struct {
  2050  	_ struct{} `type:"structure"`
  2051  
  2052  	// The alias identifier in use for the bot that contained the session data.
  2053  	BotAliasId *string `locationName:"botAliasId" type:"string"`
  2054  
  2055  	// The identifier of the bot that contained the session data.
  2056  	BotId *string `locationName:"botId" min:"10" type:"string"`
  2057  
  2058  	// The locale where the session was used.
  2059  	LocaleId *string `locationName:"localeId" min:"1" type:"string"`
  2060  
  2061  	// The identifier of the deleted session.
  2062  	SessionId *string `locationName:"sessionId" min:"2" type:"string"`
  2063  }
  2064  
  2065  // String returns the string representation.
  2066  //
  2067  // API parameter values that are decorated as "sensitive" in the API will not
  2068  // be included in the string output. The member name will be present, but the
  2069  // value will be replaced with "sensitive".
  2070  func (s DeleteSessionOutput) String() string {
  2071  	return awsutil.Prettify(s)
  2072  }
  2073  
  2074  // GoString returns the string representation.
  2075  //
  2076  // API parameter values that are decorated as "sensitive" in the API will not
  2077  // be included in the string output. The member name will be present, but the
  2078  // value will be replaced with "sensitive".
  2079  func (s DeleteSessionOutput) GoString() string {
  2080  	return s.String()
  2081  }
  2082  
  2083  // SetBotAliasId sets the BotAliasId field's value.
  2084  func (s *DeleteSessionOutput) SetBotAliasId(v string) *DeleteSessionOutput {
  2085  	s.BotAliasId = &v
  2086  	return s
  2087  }
  2088  
  2089  // SetBotId sets the BotId field's value.
  2090  func (s *DeleteSessionOutput) SetBotId(v string) *DeleteSessionOutput {
  2091  	s.BotId = &v
  2092  	return s
  2093  }
  2094  
  2095  // SetLocaleId sets the LocaleId field's value.
  2096  func (s *DeleteSessionOutput) SetLocaleId(v string) *DeleteSessionOutput {
  2097  	s.LocaleId = &v
  2098  	return s
  2099  }
  2100  
  2101  // SetSessionId sets the SessionId field's value.
  2102  func (s *DeleteSessionOutput) SetSessionId(v string) *DeleteSessionOutput {
  2103  	s.SessionId = &v
  2104  	return s
  2105  }
  2106  
  2107  type DependencyFailedException struct {
  2108  	_            struct{}                  `type:"structure"`
  2109  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  2110  
  2111  	Message_ *string `locationName:"message" type:"string"`
  2112  }
  2113  
  2114  // String returns the string representation.
  2115  //
  2116  // API parameter values that are decorated as "sensitive" in the API will not
  2117  // be included in the string output. The member name will be present, but the
  2118  // value will be replaced with "sensitive".
  2119  func (s DependencyFailedException) String() string {
  2120  	return awsutil.Prettify(s)
  2121  }
  2122  
  2123  // GoString returns the string representation.
  2124  //
  2125  // API parameter values that are decorated as "sensitive" in the API will not
  2126  // be included in the string output. The member name will be present, but the
  2127  // value will be replaced with "sensitive".
  2128  func (s DependencyFailedException) GoString() string {
  2129  	return s.String()
  2130  }
  2131  
  2132  // The DependencyFailedException is and event in the StartConversationResponseEventStream group of events.
  2133  func (s *DependencyFailedException) eventStartConversationResponseEventStream() {}
  2134  
  2135  // UnmarshalEvent unmarshals the EventStream Message into the DependencyFailedException value.
  2136  // This method is only used internally within the SDK's EventStream handling.
  2137  func (s *DependencyFailedException) UnmarshalEvent(
  2138  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  2139  	msg eventstream.Message,
  2140  ) error {
  2141  	if err := payloadUnmarshaler.UnmarshalPayload(
  2142  		bytes.NewReader(msg.Payload), s,
  2143  	); err != nil {
  2144  		return err
  2145  	}
  2146  	return nil
  2147  }
  2148  
  2149  // MarshalEvent marshals the type into an stream event value. This method
  2150  // should only used internally within the SDK's EventStream handling.
  2151  func (s *DependencyFailedException) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  2152  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.ExceptionMessageType))
  2153  	var buf bytes.Buffer
  2154  	if err = pm.MarshalPayload(&buf, s); err != nil {
  2155  		return eventstream.Message{}, err
  2156  	}
  2157  	msg.Payload = buf.Bytes()
  2158  	return msg, err
  2159  }
  2160  
  2161  func newErrorDependencyFailedException(v protocol.ResponseMetadata) error {
  2162  	return &DependencyFailedException{
  2163  		RespMetadata: v,
  2164  	}
  2165  }
  2166  
  2167  // Code returns the exception type name.
  2168  func (s *DependencyFailedException) Code() string {
  2169  	return "DependencyFailedException"
  2170  }
  2171  
  2172  // Message returns the exception's message.
  2173  func (s *DependencyFailedException) Message() string {
  2174  	if s.Message_ != nil {
  2175  		return *s.Message_
  2176  	}
  2177  	return ""
  2178  }
  2179  
  2180  // OrigErr always returns nil, satisfies awserr.Error interface.
  2181  func (s *DependencyFailedException) OrigErr() error {
  2182  	return nil
  2183  }
  2184  
  2185  func (s *DependencyFailedException) Error() string {
  2186  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  2187  }
  2188  
  2189  // Status code returns the HTTP status code for the request's response error.
  2190  func (s *DependencyFailedException) StatusCode() int {
  2191  	return s.RespMetadata.StatusCode
  2192  }
  2193  
  2194  // RequestID returns the service's response RequestID for request.
  2195  func (s *DependencyFailedException) RequestID() string {
  2196  	return s.RespMetadata.RequestID
  2197  }
  2198  
  2199  // The next action that Amazon Lex V2 should take.
  2200  type DialogAction struct {
  2201  	_ struct{} `type:"structure"`
  2202  
  2203  	// The name of the slot that should be elicited from the user.
  2204  	SlotToElicit *string `locationName:"slotToElicit" min:"1" type:"string"`
  2205  
  2206  	// The next action that the bot should take in its interaction with the user.
  2207  	// The possible values are:
  2208  	//
  2209  	//    * Close - Indicates that there will not be a response from the user. For
  2210  	//    example, the statement "Your order has been placed" does not require a
  2211  	//    response.
  2212  	//
  2213  	//    * ConfirmIntent - The next action is asking the user if the intent is
  2214  	//    complete and ready to be fulfilled. This is a yes/no question such as
  2215  	//    "Place the order?"
  2216  	//
  2217  	//    * Delegate - The next action is determined by Amazon Lex V2.
  2218  	//
  2219  	//    * ElicitSlot - The next action is to elicit a slot value from the user.
  2220  	//
  2221  	// Type is a required field
  2222  	Type *string `locationName:"type" type:"string" required:"true" enum:"DialogActionType"`
  2223  }
  2224  
  2225  // String returns the string representation.
  2226  //
  2227  // API parameter values that are decorated as "sensitive" in the API will not
  2228  // be included in the string output. The member name will be present, but the
  2229  // value will be replaced with "sensitive".
  2230  func (s DialogAction) String() string {
  2231  	return awsutil.Prettify(s)
  2232  }
  2233  
  2234  // GoString returns the string representation.
  2235  //
  2236  // API parameter values that are decorated as "sensitive" in the API will not
  2237  // be included in the string output. The member name will be present, but the
  2238  // value will be replaced with "sensitive".
  2239  func (s DialogAction) GoString() string {
  2240  	return s.String()
  2241  }
  2242  
  2243  // Validate inspects the fields of the type to determine if they are valid.
  2244  func (s *DialogAction) Validate() error {
  2245  	invalidParams := request.ErrInvalidParams{Context: "DialogAction"}
  2246  	if s.SlotToElicit != nil && len(*s.SlotToElicit) < 1 {
  2247  		invalidParams.Add(request.NewErrParamMinLen("SlotToElicit", 1))
  2248  	}
  2249  	if s.Type == nil {
  2250  		invalidParams.Add(request.NewErrParamRequired("Type"))
  2251  	}
  2252  
  2253  	if invalidParams.Len() > 0 {
  2254  		return invalidParams
  2255  	}
  2256  	return nil
  2257  }
  2258  
  2259  // SetSlotToElicit sets the SlotToElicit field's value.
  2260  func (s *DialogAction) SetSlotToElicit(v string) *DialogAction {
  2261  	s.SlotToElicit = &v
  2262  	return s
  2263  }
  2264  
  2265  // SetType sets the Type field's value.
  2266  func (s *DialogAction) SetType(v string) *DialogAction {
  2267  	s.Type = &v
  2268  	return s
  2269  }
  2270  
  2271  // A notification from the client that it is disconnecting from Amazon Lex V2.
  2272  // Sending a DisconnectionEvent event is optional, but can help identify a conversation
  2273  // in logs.
  2274  type DisconnectionEvent struct {
  2275  	_ struct{} `type:"structure"`
  2276  
  2277  	// A timestamp set by the client of the date and time that the event was sent
  2278  	// to Amazon Lex V2.
  2279  	ClientTimestampMillis *int64 `locationName:"clientTimestampMillis" type:"long"`
  2280  
  2281  	// A unique identifier that your application assigns to the event. You can use
  2282  	// this to identify events in logs.
  2283  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  2284  }
  2285  
  2286  // String returns the string representation.
  2287  //
  2288  // API parameter values that are decorated as "sensitive" in the API will not
  2289  // be included in the string output. The member name will be present, but the
  2290  // value will be replaced with "sensitive".
  2291  func (s DisconnectionEvent) String() string {
  2292  	return awsutil.Prettify(s)
  2293  }
  2294  
  2295  // GoString returns the string representation.
  2296  //
  2297  // API parameter values that are decorated as "sensitive" in the API will not
  2298  // be included in the string output. The member name will be present, but the
  2299  // value will be replaced with "sensitive".
  2300  func (s DisconnectionEvent) GoString() string {
  2301  	return s.String()
  2302  }
  2303  
  2304  // SetClientTimestampMillis sets the ClientTimestampMillis field's value.
  2305  func (s *DisconnectionEvent) SetClientTimestampMillis(v int64) *DisconnectionEvent {
  2306  	s.ClientTimestampMillis = &v
  2307  	return s
  2308  }
  2309  
  2310  // SetEventId sets the EventId field's value.
  2311  func (s *DisconnectionEvent) SetEventId(v string) *DisconnectionEvent {
  2312  	s.EventId = &v
  2313  	return s
  2314  }
  2315  
  2316  // The DisconnectionEvent is and event in the StartConversationRequestEventStream group of events.
  2317  func (s *DisconnectionEvent) eventStartConversationRequestEventStream() {}
  2318  
  2319  // UnmarshalEvent unmarshals the EventStream Message into the DisconnectionEvent value.
  2320  // This method is only used internally within the SDK's EventStream handling.
  2321  func (s *DisconnectionEvent) UnmarshalEvent(
  2322  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  2323  	msg eventstream.Message,
  2324  ) error {
  2325  	if err := payloadUnmarshaler.UnmarshalPayload(
  2326  		bytes.NewReader(msg.Payload), s,
  2327  	); err != nil {
  2328  		return err
  2329  	}
  2330  	return nil
  2331  }
  2332  
  2333  // MarshalEvent marshals the type into an stream event value. This method
  2334  // should only used internally within the SDK's EventStream handling.
  2335  func (s *DisconnectionEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  2336  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  2337  	var buf bytes.Buffer
  2338  	if err = pm.MarshalPayload(&buf, s); err != nil {
  2339  		return eventstream.Message{}, err
  2340  	}
  2341  	msg.Payload = buf.Bytes()
  2342  	return msg, err
  2343  }
  2344  
  2345  type GetSessionInput struct {
  2346  	_ struct{} `type:"structure" nopayload:"true"`
  2347  
  2348  	// The alias identifier in use for the bot that contains the session data.
  2349  	//
  2350  	// BotAliasId is a required field
  2351  	BotAliasId *string `location:"uri" locationName:"botAliasId" type:"string" required:"true"`
  2352  
  2353  	// The identifier of the bot that contains the session data.
  2354  	//
  2355  	// BotId is a required field
  2356  	BotId *string `location:"uri" locationName:"botId" min:"10" type:"string" required:"true"`
  2357  
  2358  	// The locale where the session is in use.
  2359  	//
  2360  	// LocaleId is a required field
  2361  	LocaleId *string `location:"uri" locationName:"localeId" min:"1" type:"string" required:"true"`
  2362  
  2363  	// The identifier of the session to return.
  2364  	//
  2365  	// SessionId is a required field
  2366  	SessionId *string `location:"uri" locationName:"sessionId" min:"2" type:"string" required:"true"`
  2367  }
  2368  
  2369  // String returns the string representation.
  2370  //
  2371  // API parameter values that are decorated as "sensitive" in the API will not
  2372  // be included in the string output. The member name will be present, but the
  2373  // value will be replaced with "sensitive".
  2374  func (s GetSessionInput) String() string {
  2375  	return awsutil.Prettify(s)
  2376  }
  2377  
  2378  // GoString returns the string representation.
  2379  //
  2380  // API parameter values that are decorated as "sensitive" in the API will not
  2381  // be included in the string output. The member name will be present, but the
  2382  // value will be replaced with "sensitive".
  2383  func (s GetSessionInput) GoString() string {
  2384  	return s.String()
  2385  }
  2386  
  2387  // Validate inspects the fields of the type to determine if they are valid.
  2388  func (s *GetSessionInput) Validate() error {
  2389  	invalidParams := request.ErrInvalidParams{Context: "GetSessionInput"}
  2390  	if s.BotAliasId == nil {
  2391  		invalidParams.Add(request.NewErrParamRequired("BotAliasId"))
  2392  	}
  2393  	if s.BotAliasId != nil && len(*s.BotAliasId) < 1 {
  2394  		invalidParams.Add(request.NewErrParamMinLen("BotAliasId", 1))
  2395  	}
  2396  	if s.BotId == nil {
  2397  		invalidParams.Add(request.NewErrParamRequired("BotId"))
  2398  	}
  2399  	if s.BotId != nil && len(*s.BotId) < 10 {
  2400  		invalidParams.Add(request.NewErrParamMinLen("BotId", 10))
  2401  	}
  2402  	if s.LocaleId == nil {
  2403  		invalidParams.Add(request.NewErrParamRequired("LocaleId"))
  2404  	}
  2405  	if s.LocaleId != nil && len(*s.LocaleId) < 1 {
  2406  		invalidParams.Add(request.NewErrParamMinLen("LocaleId", 1))
  2407  	}
  2408  	if s.SessionId == nil {
  2409  		invalidParams.Add(request.NewErrParamRequired("SessionId"))
  2410  	}
  2411  	if s.SessionId != nil && len(*s.SessionId) < 2 {
  2412  		invalidParams.Add(request.NewErrParamMinLen("SessionId", 2))
  2413  	}
  2414  
  2415  	if invalidParams.Len() > 0 {
  2416  		return invalidParams
  2417  	}
  2418  	return nil
  2419  }
  2420  
  2421  // SetBotAliasId sets the BotAliasId field's value.
  2422  func (s *GetSessionInput) SetBotAliasId(v string) *GetSessionInput {
  2423  	s.BotAliasId = &v
  2424  	return s
  2425  }
  2426  
  2427  // SetBotId sets the BotId field's value.
  2428  func (s *GetSessionInput) SetBotId(v string) *GetSessionInput {
  2429  	s.BotId = &v
  2430  	return s
  2431  }
  2432  
  2433  // SetLocaleId sets the LocaleId field's value.
  2434  func (s *GetSessionInput) SetLocaleId(v string) *GetSessionInput {
  2435  	s.LocaleId = &v
  2436  	return s
  2437  }
  2438  
  2439  // SetSessionId sets the SessionId field's value.
  2440  func (s *GetSessionInput) SetSessionId(v string) *GetSessionInput {
  2441  	s.SessionId = &v
  2442  	return s
  2443  }
  2444  
  2445  type GetSessionOutput struct {
  2446  	_ struct{} `type:"structure"`
  2447  
  2448  	// A list of intents that Amazon Lex V2 determined might satisfy the user's
  2449  	// utterance.
  2450  	//
  2451  	// Each interpretation includes the intent, a score that indicates how confident
  2452  	// Amazon Lex V2 is that the interpretation is the correct one, and an optional
  2453  	// sentiment response that indicates the sentiment expressed in the utterance.
  2454  	Interpretations []*Interpretation `locationName:"interpretations" type:"list"`
  2455  
  2456  	// A list of messages that were last sent to the user. The messages are ordered
  2457  	// based on the order that your returned the messages from your Lambda function
  2458  	// or the order that messages are defined in the bot.
  2459  	Messages []*Message `locationName:"messages" type:"list"`
  2460  
  2461  	// The identifier of the returned session.
  2462  	SessionId *string `locationName:"sessionId" min:"1" type:"string"`
  2463  
  2464  	// Represents the current state of the dialog between the user and the bot.
  2465  	//
  2466  	// You can use this to determine the progress of the conversation and what the
  2467  	// next action might be.
  2468  	SessionState *SessionState `locationName:"sessionState" type:"structure"`
  2469  }
  2470  
  2471  // String returns the string representation.
  2472  //
  2473  // API parameter values that are decorated as "sensitive" in the API will not
  2474  // be included in the string output. The member name will be present, but the
  2475  // value will be replaced with "sensitive".
  2476  func (s GetSessionOutput) String() string {
  2477  	return awsutil.Prettify(s)
  2478  }
  2479  
  2480  // GoString returns the string representation.
  2481  //
  2482  // API parameter values that are decorated as "sensitive" in the API will not
  2483  // be included in the string output. The member name will be present, but the
  2484  // value will be replaced with "sensitive".
  2485  func (s GetSessionOutput) GoString() string {
  2486  	return s.String()
  2487  }
  2488  
  2489  // SetInterpretations sets the Interpretations field's value.
  2490  func (s *GetSessionOutput) SetInterpretations(v []*Interpretation) *GetSessionOutput {
  2491  	s.Interpretations = v
  2492  	return s
  2493  }
  2494  
  2495  // SetMessages sets the Messages field's value.
  2496  func (s *GetSessionOutput) SetMessages(v []*Message) *GetSessionOutput {
  2497  	s.Messages = v
  2498  	return s
  2499  }
  2500  
  2501  // SetSessionId sets the SessionId field's value.
  2502  func (s *GetSessionOutput) SetSessionId(v string) *GetSessionOutput {
  2503  	s.SessionId = &v
  2504  	return s
  2505  }
  2506  
  2507  // SetSessionState sets the SessionState field's value.
  2508  func (s *GetSessionOutput) SetSessionState(v *SessionState) *GetSessionOutput {
  2509  	s.SessionState = v
  2510  	return s
  2511  }
  2512  
  2513  // Event that Amazon Lex V2 sends to indicate that the stream is still open
  2514  // between the client application and Amazon Lex V2
  2515  type HeartbeatEvent struct {
  2516  	_ struct{} `type:"structure"`
  2517  
  2518  	// A unique identifier of the event sent by Amazon Lex V2. The identifier is
  2519  	// in the form RESPONSE-N, where N is a number starting with one and incremented
  2520  	// for each event sent by Amazon Lex V2 in the current session.
  2521  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  2522  }
  2523  
  2524  // String returns the string representation.
  2525  //
  2526  // API parameter values that are decorated as "sensitive" in the API will not
  2527  // be included in the string output. The member name will be present, but the
  2528  // value will be replaced with "sensitive".
  2529  func (s HeartbeatEvent) String() string {
  2530  	return awsutil.Prettify(s)
  2531  }
  2532  
  2533  // GoString returns the string representation.
  2534  //
  2535  // API parameter values that are decorated as "sensitive" in the API will not
  2536  // be included in the string output. The member name will be present, but the
  2537  // value will be replaced with "sensitive".
  2538  func (s HeartbeatEvent) GoString() string {
  2539  	return s.String()
  2540  }
  2541  
  2542  // SetEventId sets the EventId field's value.
  2543  func (s *HeartbeatEvent) SetEventId(v string) *HeartbeatEvent {
  2544  	s.EventId = &v
  2545  	return s
  2546  }
  2547  
  2548  // The HeartbeatEvent is and event in the StartConversationResponseEventStream group of events.
  2549  func (s *HeartbeatEvent) eventStartConversationResponseEventStream() {}
  2550  
  2551  // UnmarshalEvent unmarshals the EventStream Message into the HeartbeatEvent value.
  2552  // This method is only used internally within the SDK's EventStream handling.
  2553  func (s *HeartbeatEvent) UnmarshalEvent(
  2554  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  2555  	msg eventstream.Message,
  2556  ) error {
  2557  	if err := payloadUnmarshaler.UnmarshalPayload(
  2558  		bytes.NewReader(msg.Payload), s,
  2559  	); err != nil {
  2560  		return err
  2561  	}
  2562  	return nil
  2563  }
  2564  
  2565  // MarshalEvent marshals the type into an stream event value. This method
  2566  // should only used internally within the SDK's EventStream handling.
  2567  func (s *HeartbeatEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  2568  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  2569  	var buf bytes.Buffer
  2570  	if err = pm.MarshalPayload(&buf, s); err != nil {
  2571  		return eventstream.Message{}, err
  2572  	}
  2573  	msg.Payload = buf.Bytes()
  2574  	return msg, err
  2575  }
  2576  
  2577  // A card that is shown to the user by a messaging platform. You define the
  2578  // contents of the card, the card is displayed by the platform.
  2579  //
  2580  // When you use a response card, the response from the user is constrained to
  2581  // the text associated with a button on the card.
  2582  type ImageResponseCard struct {
  2583  	_ struct{} `type:"structure"`
  2584  
  2585  	// A list of buttons that should be displayed on the response card. The arrangement
  2586  	// of the buttons is determined by the platform that displays the button.
  2587  	Buttons []*Button `locationName:"buttons" type:"list"`
  2588  
  2589  	// The URL of an image to display on the response card. The image URL must be
  2590  	// publicly available so that the platform displaying the response card has
  2591  	// access to the image.
  2592  	ImageUrl *string `locationName:"imageUrl" min:"1" type:"string"`
  2593  
  2594  	// The subtitle to display on the response card. The format of the subtitle
  2595  	// is determined by the platform displaying the response card.
  2596  	Subtitle *string `locationName:"subtitle" min:"1" type:"string"`
  2597  
  2598  	// The title to display on the response card. The format of the title is determined
  2599  	// by the platform displaying the response card.
  2600  	//
  2601  	// Title is a required field
  2602  	Title *string `locationName:"title" min:"1" type:"string" required:"true"`
  2603  }
  2604  
  2605  // String returns the string representation.
  2606  //
  2607  // API parameter values that are decorated as "sensitive" in the API will not
  2608  // be included in the string output. The member name will be present, but the
  2609  // value will be replaced with "sensitive".
  2610  func (s ImageResponseCard) String() string {
  2611  	return awsutil.Prettify(s)
  2612  }
  2613  
  2614  // GoString returns the string representation.
  2615  //
  2616  // API parameter values that are decorated as "sensitive" in the API will not
  2617  // be included in the string output. The member name will be present, but the
  2618  // value will be replaced with "sensitive".
  2619  func (s ImageResponseCard) GoString() string {
  2620  	return s.String()
  2621  }
  2622  
  2623  // Validate inspects the fields of the type to determine if they are valid.
  2624  func (s *ImageResponseCard) Validate() error {
  2625  	invalidParams := request.ErrInvalidParams{Context: "ImageResponseCard"}
  2626  	if s.ImageUrl != nil && len(*s.ImageUrl) < 1 {
  2627  		invalidParams.Add(request.NewErrParamMinLen("ImageUrl", 1))
  2628  	}
  2629  	if s.Subtitle != nil && len(*s.Subtitle) < 1 {
  2630  		invalidParams.Add(request.NewErrParamMinLen("Subtitle", 1))
  2631  	}
  2632  	if s.Title == nil {
  2633  		invalidParams.Add(request.NewErrParamRequired("Title"))
  2634  	}
  2635  	if s.Title != nil && len(*s.Title) < 1 {
  2636  		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
  2637  	}
  2638  	if s.Buttons != nil {
  2639  		for i, v := range s.Buttons {
  2640  			if v == nil {
  2641  				continue
  2642  			}
  2643  			if err := v.Validate(); err != nil {
  2644  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Buttons", i), err.(request.ErrInvalidParams))
  2645  			}
  2646  		}
  2647  	}
  2648  
  2649  	if invalidParams.Len() > 0 {
  2650  		return invalidParams
  2651  	}
  2652  	return nil
  2653  }
  2654  
  2655  // SetButtons sets the Buttons field's value.
  2656  func (s *ImageResponseCard) SetButtons(v []*Button) *ImageResponseCard {
  2657  	s.Buttons = v
  2658  	return s
  2659  }
  2660  
  2661  // SetImageUrl sets the ImageUrl field's value.
  2662  func (s *ImageResponseCard) SetImageUrl(v string) *ImageResponseCard {
  2663  	s.ImageUrl = &v
  2664  	return s
  2665  }
  2666  
  2667  // SetSubtitle sets the Subtitle field's value.
  2668  func (s *ImageResponseCard) SetSubtitle(v string) *ImageResponseCard {
  2669  	s.Subtitle = &v
  2670  	return s
  2671  }
  2672  
  2673  // SetTitle sets the Title field's value.
  2674  func (s *ImageResponseCard) SetTitle(v string) *ImageResponseCard {
  2675  	s.Title = &v
  2676  	return s
  2677  }
  2678  
  2679  // The current intent that Amazon Lex V2 is attempting to fulfill.
  2680  type Intent struct {
  2681  	_ struct{} `type:"structure"`
  2682  
  2683  	// Contains information about whether fulfillment of the intent has been confirmed.
  2684  	ConfirmationState *string `locationName:"confirmationState" type:"string" enum:"ConfirmationState"`
  2685  
  2686  	// The name of the intent.
  2687  	//
  2688  	// Name is a required field
  2689  	Name *string `locationName:"name" min:"1" type:"string" required:"true"`
  2690  
  2691  	// A map of all of the slots for the intent. The name of the slot maps to the
  2692  	// value of the slot. If a slot has not been filled, the value is null.
  2693  	Slots map[string]*Slot `locationName:"slots" type:"map"`
  2694  
  2695  	// Contains fulfillment information for the intent.
  2696  	State *string `locationName:"state" type:"string" enum:"IntentState"`
  2697  }
  2698  
  2699  // String returns the string representation.
  2700  //
  2701  // API parameter values that are decorated as "sensitive" in the API will not
  2702  // be included in the string output. The member name will be present, but the
  2703  // value will be replaced with "sensitive".
  2704  func (s Intent) String() string {
  2705  	return awsutil.Prettify(s)
  2706  }
  2707  
  2708  // GoString returns the string representation.
  2709  //
  2710  // API parameter values that are decorated as "sensitive" in the API will not
  2711  // be included in the string output. The member name will be present, but the
  2712  // value will be replaced with "sensitive".
  2713  func (s Intent) GoString() string {
  2714  	return s.String()
  2715  }
  2716  
  2717  // Validate inspects the fields of the type to determine if they are valid.
  2718  func (s *Intent) Validate() error {
  2719  	invalidParams := request.ErrInvalidParams{Context: "Intent"}
  2720  	if s.Name == nil {
  2721  		invalidParams.Add(request.NewErrParamRequired("Name"))
  2722  	}
  2723  	if s.Name != nil && len(*s.Name) < 1 {
  2724  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  2725  	}
  2726  	if s.Slots != nil {
  2727  		for i, v := range s.Slots {
  2728  			if v == nil {
  2729  				continue
  2730  			}
  2731  			if err := v.Validate(); err != nil {
  2732  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Slots", i), err.(request.ErrInvalidParams))
  2733  			}
  2734  		}
  2735  	}
  2736  
  2737  	if invalidParams.Len() > 0 {
  2738  		return invalidParams
  2739  	}
  2740  	return nil
  2741  }
  2742  
  2743  // SetConfirmationState sets the ConfirmationState field's value.
  2744  func (s *Intent) SetConfirmationState(v string) *Intent {
  2745  	s.ConfirmationState = &v
  2746  	return s
  2747  }
  2748  
  2749  // SetName sets the Name field's value.
  2750  func (s *Intent) SetName(v string) *Intent {
  2751  	s.Name = &v
  2752  	return s
  2753  }
  2754  
  2755  // SetSlots sets the Slots field's value.
  2756  func (s *Intent) SetSlots(v map[string]*Slot) *Intent {
  2757  	s.Slots = v
  2758  	return s
  2759  }
  2760  
  2761  // SetState sets the State field's value.
  2762  func (s *Intent) SetState(v string) *Intent {
  2763  	s.State = &v
  2764  	return s
  2765  }
  2766  
  2767  // Contains the current state of the conversation between the client application
  2768  // and Amazon Lex V2.
  2769  type IntentResultEvent struct {
  2770  	_ struct{} `type:"structure"`
  2771  
  2772  	// A unique identifier of the event sent by Amazon Lex V2. The identifier is
  2773  	// in the form RESPONSE-N, where N is a number starting with one and incremented
  2774  	// for each event sent by Amazon Lex V2 in the current session.
  2775  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  2776  
  2777  	// Indicates whether the input to the operation was text or speech.
  2778  	InputMode *string `locationName:"inputMode" type:"string" enum:"InputMode"`
  2779  
  2780  	// A list of intents that Amazon Lex V2 determined might satisfy the user's
  2781  	// utterance.
  2782  	//
  2783  	// Each interpretation includes the intent, a score that indicates how confident
  2784  	// Amazon Lex V2 is that the interpretation is the correct one, and an optional
  2785  	// sentiment response that indicates the sentiment expressed in the utterance.
  2786  	Interpretations []*Interpretation `locationName:"interpretations" type:"list"`
  2787  
  2788  	// The attributes sent in the request.
  2789  	RequestAttributes map[string]*string `locationName:"requestAttributes" type:"map"`
  2790  
  2791  	// The identifier of the session in use.
  2792  	SessionId *string `locationName:"sessionId" min:"2" type:"string"`
  2793  
  2794  	// The state of the user's session with Amazon Lex V2.
  2795  	SessionState *SessionState `locationName:"sessionState" type:"structure"`
  2796  }
  2797  
  2798  // String returns the string representation.
  2799  //
  2800  // API parameter values that are decorated as "sensitive" in the API will not
  2801  // be included in the string output. The member name will be present, but the
  2802  // value will be replaced with "sensitive".
  2803  func (s IntentResultEvent) String() string {
  2804  	return awsutil.Prettify(s)
  2805  }
  2806  
  2807  // GoString returns the string representation.
  2808  //
  2809  // API parameter values that are decorated as "sensitive" in the API will not
  2810  // be included in the string output. The member name will be present, but the
  2811  // value will be replaced with "sensitive".
  2812  func (s IntentResultEvent) GoString() string {
  2813  	return s.String()
  2814  }
  2815  
  2816  // SetEventId sets the EventId field's value.
  2817  func (s *IntentResultEvent) SetEventId(v string) *IntentResultEvent {
  2818  	s.EventId = &v
  2819  	return s
  2820  }
  2821  
  2822  // SetInputMode sets the InputMode field's value.
  2823  func (s *IntentResultEvent) SetInputMode(v string) *IntentResultEvent {
  2824  	s.InputMode = &v
  2825  	return s
  2826  }
  2827  
  2828  // SetInterpretations sets the Interpretations field's value.
  2829  func (s *IntentResultEvent) SetInterpretations(v []*Interpretation) *IntentResultEvent {
  2830  	s.Interpretations = v
  2831  	return s
  2832  }
  2833  
  2834  // SetRequestAttributes sets the RequestAttributes field's value.
  2835  func (s *IntentResultEvent) SetRequestAttributes(v map[string]*string) *IntentResultEvent {
  2836  	s.RequestAttributes = v
  2837  	return s
  2838  }
  2839  
  2840  // SetSessionId sets the SessionId field's value.
  2841  func (s *IntentResultEvent) SetSessionId(v string) *IntentResultEvent {
  2842  	s.SessionId = &v
  2843  	return s
  2844  }
  2845  
  2846  // SetSessionState sets the SessionState field's value.
  2847  func (s *IntentResultEvent) SetSessionState(v *SessionState) *IntentResultEvent {
  2848  	s.SessionState = v
  2849  	return s
  2850  }
  2851  
  2852  // The IntentResultEvent is and event in the StartConversationResponseEventStream group of events.
  2853  func (s *IntentResultEvent) eventStartConversationResponseEventStream() {}
  2854  
  2855  // UnmarshalEvent unmarshals the EventStream Message into the IntentResultEvent value.
  2856  // This method is only used internally within the SDK's EventStream handling.
  2857  func (s *IntentResultEvent) UnmarshalEvent(
  2858  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  2859  	msg eventstream.Message,
  2860  ) error {
  2861  	if err := payloadUnmarshaler.UnmarshalPayload(
  2862  		bytes.NewReader(msg.Payload), s,
  2863  	); err != nil {
  2864  		return err
  2865  	}
  2866  	return nil
  2867  }
  2868  
  2869  // MarshalEvent marshals the type into an stream event value. This method
  2870  // should only used internally within the SDK's EventStream handling.
  2871  func (s *IntentResultEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  2872  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  2873  	var buf bytes.Buffer
  2874  	if err = pm.MarshalPayload(&buf, s); err != nil {
  2875  		return eventstream.Message{}, err
  2876  	}
  2877  	msg.Payload = buf.Bytes()
  2878  	return msg, err
  2879  }
  2880  
  2881  type InternalServerException struct {
  2882  	_            struct{}                  `type:"structure"`
  2883  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  2884  
  2885  	Message_ *string `locationName:"message" type:"string"`
  2886  }
  2887  
  2888  // String returns the string representation.
  2889  //
  2890  // API parameter values that are decorated as "sensitive" in the API will not
  2891  // be included in the string output. The member name will be present, but the
  2892  // value will be replaced with "sensitive".
  2893  func (s InternalServerException) String() string {
  2894  	return awsutil.Prettify(s)
  2895  }
  2896  
  2897  // GoString returns the string representation.
  2898  //
  2899  // API parameter values that are decorated as "sensitive" in the API will not
  2900  // be included in the string output. The member name will be present, but the
  2901  // value will be replaced with "sensitive".
  2902  func (s InternalServerException) GoString() string {
  2903  	return s.String()
  2904  }
  2905  
  2906  // The InternalServerException is and event in the StartConversationResponseEventStream group of events.
  2907  func (s *InternalServerException) eventStartConversationResponseEventStream() {}
  2908  
  2909  // UnmarshalEvent unmarshals the EventStream Message into the InternalServerException value.
  2910  // This method is only used internally within the SDK's EventStream handling.
  2911  func (s *InternalServerException) UnmarshalEvent(
  2912  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  2913  	msg eventstream.Message,
  2914  ) error {
  2915  	if err := payloadUnmarshaler.UnmarshalPayload(
  2916  		bytes.NewReader(msg.Payload), s,
  2917  	); err != nil {
  2918  		return err
  2919  	}
  2920  	return nil
  2921  }
  2922  
  2923  // MarshalEvent marshals the type into an stream event value. This method
  2924  // should only used internally within the SDK's EventStream handling.
  2925  func (s *InternalServerException) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  2926  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.ExceptionMessageType))
  2927  	var buf bytes.Buffer
  2928  	if err = pm.MarshalPayload(&buf, s); err != nil {
  2929  		return eventstream.Message{}, err
  2930  	}
  2931  	msg.Payload = buf.Bytes()
  2932  	return msg, err
  2933  }
  2934  
  2935  func newErrorInternalServerException(v protocol.ResponseMetadata) error {
  2936  	return &InternalServerException{
  2937  		RespMetadata: v,
  2938  	}
  2939  }
  2940  
  2941  // Code returns the exception type name.
  2942  func (s *InternalServerException) Code() string {
  2943  	return "InternalServerException"
  2944  }
  2945  
  2946  // Message returns the exception's message.
  2947  func (s *InternalServerException) Message() string {
  2948  	if s.Message_ != nil {
  2949  		return *s.Message_
  2950  	}
  2951  	return ""
  2952  }
  2953  
  2954  // OrigErr always returns nil, satisfies awserr.Error interface.
  2955  func (s *InternalServerException) OrigErr() error {
  2956  	return nil
  2957  }
  2958  
  2959  func (s *InternalServerException) Error() string {
  2960  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  2961  }
  2962  
  2963  // Status code returns the HTTP status code for the request's response error.
  2964  func (s *InternalServerException) StatusCode() int {
  2965  	return s.RespMetadata.StatusCode
  2966  }
  2967  
  2968  // RequestID returns the service's response RequestID for request.
  2969  func (s *InternalServerException) RequestID() string {
  2970  	return s.RespMetadata.RequestID
  2971  }
  2972  
  2973  // An intent that Amazon Lex V2 determined might satisfy the user's utterance.
  2974  // The intents are ordered by the confidence score.
  2975  type Interpretation struct {
  2976  	_ struct{} `type:"structure"`
  2977  
  2978  	// A list of intents that might satisfy the user's utterance. The intents are
  2979  	// ordered by the confidence score.
  2980  	Intent *Intent `locationName:"intent" type:"structure"`
  2981  
  2982  	// Determines the threshold where Amazon Lex V2 will insert the AMAZON.FallbackIntent,
  2983  	// AMAZON.KendraSearchIntent, or both when returning alternative intents in
  2984  	// a response. AMAZON.FallbackIntent and AMAZON.KendraSearchIntent are only
  2985  	// inserted if they are configured for the bot.
  2986  	NluConfidence *ConfidenceScore `locationName:"nluConfidence" type:"structure"`
  2987  
  2988  	// The sentiment expressed in an utterance.
  2989  	//
  2990  	// When the bot is configured to send utterances to Amazon Comprehend for sentiment
  2991  	// analysis, this field contains the result of the analysis.
  2992  	SentimentResponse *SentimentResponse `locationName:"sentimentResponse" type:"structure"`
  2993  }
  2994  
  2995  // String returns the string representation.
  2996  //
  2997  // API parameter values that are decorated as "sensitive" in the API will not
  2998  // be included in the string output. The member name will be present, but the
  2999  // value will be replaced with "sensitive".
  3000  func (s Interpretation) String() string {
  3001  	return awsutil.Prettify(s)
  3002  }
  3003  
  3004  // GoString returns the string representation.
  3005  //
  3006  // API parameter values that are decorated as "sensitive" in the API will not
  3007  // be included in the string output. The member name will be present, but the
  3008  // value will be replaced with "sensitive".
  3009  func (s Interpretation) GoString() string {
  3010  	return s.String()
  3011  }
  3012  
  3013  // SetIntent sets the Intent field's value.
  3014  func (s *Interpretation) SetIntent(v *Intent) *Interpretation {
  3015  	s.Intent = v
  3016  	return s
  3017  }
  3018  
  3019  // SetNluConfidence sets the NluConfidence field's value.
  3020  func (s *Interpretation) SetNluConfidence(v *ConfidenceScore) *Interpretation {
  3021  	s.NluConfidence = v
  3022  	return s
  3023  }
  3024  
  3025  // SetSentimentResponse sets the SentimentResponse field's value.
  3026  func (s *Interpretation) SetSentimentResponse(v *SentimentResponse) *Interpretation {
  3027  	s.SentimentResponse = v
  3028  	return s
  3029  }
  3030  
  3031  // Container for text that is returned to the customer..
  3032  type Message struct {
  3033  	_ struct{} `type:"structure"`
  3034  
  3035  	// The text of the message.
  3036  	//
  3037  	// Content is a sensitive parameter and its value will be
  3038  	// replaced with "sensitive" in string returned by Message's
  3039  	// String and GoString methods.
  3040  	Content *string `locationName:"content" min:"1" type:"string" sensitive:"true"`
  3041  
  3042  	// Indicates the type of response.
  3043  	//
  3044  	// ContentType is a required field
  3045  	ContentType *string `locationName:"contentType" type:"string" required:"true" enum:"MessageContentType"`
  3046  
  3047  	// A card that is shown to the user by a messaging platform. You define the
  3048  	// contents of the card, the card is displayed by the platform.
  3049  	//
  3050  	// When you use a response card, the response from the user is constrained to
  3051  	// the text associated with a button on the card.
  3052  	ImageResponseCard *ImageResponseCard `locationName:"imageResponseCard" type:"structure"`
  3053  }
  3054  
  3055  // String returns the string representation.
  3056  //
  3057  // API parameter values that are decorated as "sensitive" in the API will not
  3058  // be included in the string output. The member name will be present, but the
  3059  // value will be replaced with "sensitive".
  3060  func (s Message) String() string {
  3061  	return awsutil.Prettify(s)
  3062  }
  3063  
  3064  // GoString returns the string representation.
  3065  //
  3066  // API parameter values that are decorated as "sensitive" in the API will not
  3067  // be included in the string output. The member name will be present, but the
  3068  // value will be replaced with "sensitive".
  3069  func (s Message) GoString() string {
  3070  	return s.String()
  3071  }
  3072  
  3073  // Validate inspects the fields of the type to determine if they are valid.
  3074  func (s *Message) Validate() error {
  3075  	invalidParams := request.ErrInvalidParams{Context: "Message"}
  3076  	if s.Content != nil && len(*s.Content) < 1 {
  3077  		invalidParams.Add(request.NewErrParamMinLen("Content", 1))
  3078  	}
  3079  	if s.ContentType == nil {
  3080  		invalidParams.Add(request.NewErrParamRequired("ContentType"))
  3081  	}
  3082  	if s.ImageResponseCard != nil {
  3083  		if err := s.ImageResponseCard.Validate(); err != nil {
  3084  			invalidParams.AddNested("ImageResponseCard", err.(request.ErrInvalidParams))
  3085  		}
  3086  	}
  3087  
  3088  	if invalidParams.Len() > 0 {
  3089  		return invalidParams
  3090  	}
  3091  	return nil
  3092  }
  3093  
  3094  // SetContent sets the Content field's value.
  3095  func (s *Message) SetContent(v string) *Message {
  3096  	s.Content = &v
  3097  	return s
  3098  }
  3099  
  3100  // SetContentType sets the ContentType field's value.
  3101  func (s *Message) SetContentType(v string) *Message {
  3102  	s.ContentType = &v
  3103  	return s
  3104  }
  3105  
  3106  // SetImageResponseCard sets the ImageResponseCard field's value.
  3107  func (s *Message) SetImageResponseCard(v *ImageResponseCard) *Message {
  3108  	s.ImageResponseCard = v
  3109  	return s
  3110  }
  3111  
  3112  // Event sent from the client application to Amazon Lex V2 to indicate that
  3113  // playback of audio is complete and that Amazon Lex V2 should start processing
  3114  // the user's input.
  3115  type PlaybackCompletionEvent struct {
  3116  	_ struct{} `type:"structure"`
  3117  
  3118  	// A timestamp set by the client of the date and time that the event was sent
  3119  	// to Amazon Lex V2.
  3120  	ClientTimestampMillis *int64 `locationName:"clientTimestampMillis" type:"long"`
  3121  
  3122  	// A unique identifier that your application assigns to the event. You can use
  3123  	// this to identify events in logs.
  3124  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  3125  }
  3126  
  3127  // String returns the string representation.
  3128  //
  3129  // API parameter values that are decorated as "sensitive" in the API will not
  3130  // be included in the string output. The member name will be present, but the
  3131  // value will be replaced with "sensitive".
  3132  func (s PlaybackCompletionEvent) String() string {
  3133  	return awsutil.Prettify(s)
  3134  }
  3135  
  3136  // GoString returns the string representation.
  3137  //
  3138  // API parameter values that are decorated as "sensitive" in the API will not
  3139  // be included in the string output. The member name will be present, but the
  3140  // value will be replaced with "sensitive".
  3141  func (s PlaybackCompletionEvent) GoString() string {
  3142  	return s.String()
  3143  }
  3144  
  3145  // SetClientTimestampMillis sets the ClientTimestampMillis field's value.
  3146  func (s *PlaybackCompletionEvent) SetClientTimestampMillis(v int64) *PlaybackCompletionEvent {
  3147  	s.ClientTimestampMillis = &v
  3148  	return s
  3149  }
  3150  
  3151  // SetEventId sets the EventId field's value.
  3152  func (s *PlaybackCompletionEvent) SetEventId(v string) *PlaybackCompletionEvent {
  3153  	s.EventId = &v
  3154  	return s
  3155  }
  3156  
  3157  // The PlaybackCompletionEvent is and event in the StartConversationRequestEventStream group of events.
  3158  func (s *PlaybackCompletionEvent) eventStartConversationRequestEventStream() {}
  3159  
  3160  // UnmarshalEvent unmarshals the EventStream Message into the PlaybackCompletionEvent value.
  3161  // This method is only used internally within the SDK's EventStream handling.
  3162  func (s *PlaybackCompletionEvent) UnmarshalEvent(
  3163  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  3164  	msg eventstream.Message,
  3165  ) error {
  3166  	if err := payloadUnmarshaler.UnmarshalPayload(
  3167  		bytes.NewReader(msg.Payload), s,
  3168  	); err != nil {
  3169  		return err
  3170  	}
  3171  	return nil
  3172  }
  3173  
  3174  // MarshalEvent marshals the type into an stream event value. This method
  3175  // should only used internally within the SDK's EventStream handling.
  3176  func (s *PlaybackCompletionEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  3177  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  3178  	var buf bytes.Buffer
  3179  	if err = pm.MarshalPayload(&buf, s); err != nil {
  3180  		return eventstream.Message{}, err
  3181  	}
  3182  	msg.Payload = buf.Bytes()
  3183  	return msg, err
  3184  }
  3185  
  3186  // Event sent from Amazon Lex V2 to indicate to the client application should
  3187  // stop playback of audio. For example, if the client is playing a prompt that
  3188  // asks for the user's telephone number, the user might start to say the phone
  3189  // number before the prompt is complete. Amazon Lex V2 sends this event to the
  3190  // client application to indicate that the user is responding and that Amazon
  3191  // Lex V2 is processing their input.
  3192  type PlaybackInterruptionEvent struct {
  3193  	_ struct{} `type:"structure"`
  3194  
  3195  	// The identifier of the event that contained the audio, DTMF, or text that
  3196  	// caused the interruption.
  3197  	CausedByEventId *string `locationName:"causedByEventId" min:"2" type:"string"`
  3198  
  3199  	// A unique identifier of the event sent by Amazon Lex V2. The identifier is
  3200  	// in the form RESPONSE-N, where N is a number starting with one and incremented
  3201  	// for each event sent by Amazon Lex V2 in the current session.
  3202  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  3203  
  3204  	// Indicates the type of user input that Amazon Lex V2 detected.
  3205  	EventReason *string `locationName:"eventReason" type:"string" enum:"PlaybackInterruptionReason"`
  3206  }
  3207  
  3208  // String returns the string representation.
  3209  //
  3210  // API parameter values that are decorated as "sensitive" in the API will not
  3211  // be included in the string output. The member name will be present, but the
  3212  // value will be replaced with "sensitive".
  3213  func (s PlaybackInterruptionEvent) String() string {
  3214  	return awsutil.Prettify(s)
  3215  }
  3216  
  3217  // GoString returns the string representation.
  3218  //
  3219  // API parameter values that are decorated as "sensitive" in the API will not
  3220  // be included in the string output. The member name will be present, but the
  3221  // value will be replaced with "sensitive".
  3222  func (s PlaybackInterruptionEvent) GoString() string {
  3223  	return s.String()
  3224  }
  3225  
  3226  // SetCausedByEventId sets the CausedByEventId field's value.
  3227  func (s *PlaybackInterruptionEvent) SetCausedByEventId(v string) *PlaybackInterruptionEvent {
  3228  	s.CausedByEventId = &v
  3229  	return s
  3230  }
  3231  
  3232  // SetEventId sets the EventId field's value.
  3233  func (s *PlaybackInterruptionEvent) SetEventId(v string) *PlaybackInterruptionEvent {
  3234  	s.EventId = &v
  3235  	return s
  3236  }
  3237  
  3238  // SetEventReason sets the EventReason field's value.
  3239  func (s *PlaybackInterruptionEvent) SetEventReason(v string) *PlaybackInterruptionEvent {
  3240  	s.EventReason = &v
  3241  	return s
  3242  }
  3243  
  3244  // The PlaybackInterruptionEvent is and event in the StartConversationResponseEventStream group of events.
  3245  func (s *PlaybackInterruptionEvent) eventStartConversationResponseEventStream() {}
  3246  
  3247  // UnmarshalEvent unmarshals the EventStream Message into the PlaybackInterruptionEvent value.
  3248  // This method is only used internally within the SDK's EventStream handling.
  3249  func (s *PlaybackInterruptionEvent) UnmarshalEvent(
  3250  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  3251  	msg eventstream.Message,
  3252  ) error {
  3253  	if err := payloadUnmarshaler.UnmarshalPayload(
  3254  		bytes.NewReader(msg.Payload), s,
  3255  	); err != nil {
  3256  		return err
  3257  	}
  3258  	return nil
  3259  }
  3260  
  3261  // MarshalEvent marshals the type into an stream event value. This method
  3262  // should only used internally within the SDK's EventStream handling.
  3263  func (s *PlaybackInterruptionEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  3264  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  3265  	var buf bytes.Buffer
  3266  	if err = pm.MarshalPayload(&buf, s); err != nil {
  3267  		return eventstream.Message{}, err
  3268  	}
  3269  	msg.Payload = buf.Bytes()
  3270  	return msg, err
  3271  }
  3272  
  3273  type PutSessionInput struct {
  3274  	_ struct{} `type:"structure"`
  3275  
  3276  	// The alias identifier of the bot that receives the session data.
  3277  	//
  3278  	// BotAliasId is a required field
  3279  	BotAliasId *string `location:"uri" locationName:"botAliasId" type:"string" required:"true"`
  3280  
  3281  	// The identifier of the bot that receives the session data.
  3282  	//
  3283  	// BotId is a required field
  3284  	BotId *string `location:"uri" locationName:"botId" min:"10" type:"string" required:"true"`
  3285  
  3286  	// The locale where the session is in use.
  3287  	//
  3288  	// LocaleId is a required field
  3289  	LocaleId *string `location:"uri" locationName:"localeId" min:"1" type:"string" required:"true"`
  3290  
  3291  	// A list of messages to send to the user. Messages are sent in the order that
  3292  	// they are defined in the list.
  3293  	Messages []*Message `locationName:"messages" type:"list"`
  3294  
  3295  	// Request-specific information passed between Amazon Lex V2 and the client
  3296  	// application.
  3297  	//
  3298  	// The namespace x-amz-lex: is reserved for special attributes. Don't create
  3299  	// any request attributes with the prefix x-amz-lex:.
  3300  	RequestAttributes map[string]*string `locationName:"requestAttributes" type:"map"`
  3301  
  3302  	// The message that Amazon Lex V2 returns in the response can be either text
  3303  	// or speech depending on the value of this parameter.
  3304  	//
  3305  	//    * If the value is text/plain; charset=utf-8, Amazon Lex V2 returns text
  3306  	//    in the response.
  3307  	ResponseContentType *string `location:"header" locationName:"ResponseContentType" min:"1" type:"string"`
  3308  
  3309  	// The identifier of the session that receives the session data.
  3310  	//
  3311  	// SessionId is a required field
  3312  	SessionId *string `location:"uri" locationName:"sessionId" min:"2" type:"string" required:"true"`
  3313  
  3314  	// Sets the state of the session with the user. You can use this to set the
  3315  	// current intent, attributes, context, and dialog action. Use the dialog action
  3316  	// to determine the next step that Amazon Lex V2 should use in the conversation
  3317  	// with the user.
  3318  	//
  3319  	// SessionState is a required field
  3320  	SessionState *SessionState `locationName:"sessionState" type:"structure" required:"true"`
  3321  }
  3322  
  3323  // String returns the string representation.
  3324  //
  3325  // API parameter values that are decorated as "sensitive" in the API will not
  3326  // be included in the string output. The member name will be present, but the
  3327  // value will be replaced with "sensitive".
  3328  func (s PutSessionInput) String() string {
  3329  	return awsutil.Prettify(s)
  3330  }
  3331  
  3332  // GoString returns the string representation.
  3333  //
  3334  // API parameter values that are decorated as "sensitive" in the API will not
  3335  // be included in the string output. The member name will be present, but the
  3336  // value will be replaced with "sensitive".
  3337  func (s PutSessionInput) GoString() string {
  3338  	return s.String()
  3339  }
  3340  
  3341  // Validate inspects the fields of the type to determine if they are valid.
  3342  func (s *PutSessionInput) Validate() error {
  3343  	invalidParams := request.ErrInvalidParams{Context: "PutSessionInput"}
  3344  	if s.BotAliasId == nil {
  3345  		invalidParams.Add(request.NewErrParamRequired("BotAliasId"))
  3346  	}
  3347  	if s.BotAliasId != nil && len(*s.BotAliasId) < 1 {
  3348  		invalidParams.Add(request.NewErrParamMinLen("BotAliasId", 1))
  3349  	}
  3350  	if s.BotId == nil {
  3351  		invalidParams.Add(request.NewErrParamRequired("BotId"))
  3352  	}
  3353  	if s.BotId != nil && len(*s.BotId) < 10 {
  3354  		invalidParams.Add(request.NewErrParamMinLen("BotId", 10))
  3355  	}
  3356  	if s.LocaleId == nil {
  3357  		invalidParams.Add(request.NewErrParamRequired("LocaleId"))
  3358  	}
  3359  	if s.LocaleId != nil && len(*s.LocaleId) < 1 {
  3360  		invalidParams.Add(request.NewErrParamMinLen("LocaleId", 1))
  3361  	}
  3362  	if s.ResponseContentType != nil && len(*s.ResponseContentType) < 1 {
  3363  		invalidParams.Add(request.NewErrParamMinLen("ResponseContentType", 1))
  3364  	}
  3365  	if s.SessionId == nil {
  3366  		invalidParams.Add(request.NewErrParamRequired("SessionId"))
  3367  	}
  3368  	if s.SessionId != nil && len(*s.SessionId) < 2 {
  3369  		invalidParams.Add(request.NewErrParamMinLen("SessionId", 2))
  3370  	}
  3371  	if s.SessionState == nil {
  3372  		invalidParams.Add(request.NewErrParamRequired("SessionState"))
  3373  	}
  3374  	if s.Messages != nil {
  3375  		for i, v := range s.Messages {
  3376  			if v == nil {
  3377  				continue
  3378  			}
  3379  			if err := v.Validate(); err != nil {
  3380  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Messages", i), err.(request.ErrInvalidParams))
  3381  			}
  3382  		}
  3383  	}
  3384  	if s.SessionState != nil {
  3385  		if err := s.SessionState.Validate(); err != nil {
  3386  			invalidParams.AddNested("SessionState", err.(request.ErrInvalidParams))
  3387  		}
  3388  	}
  3389  
  3390  	if invalidParams.Len() > 0 {
  3391  		return invalidParams
  3392  	}
  3393  	return nil
  3394  }
  3395  
  3396  // SetBotAliasId sets the BotAliasId field's value.
  3397  func (s *PutSessionInput) SetBotAliasId(v string) *PutSessionInput {
  3398  	s.BotAliasId = &v
  3399  	return s
  3400  }
  3401  
  3402  // SetBotId sets the BotId field's value.
  3403  func (s *PutSessionInput) SetBotId(v string) *PutSessionInput {
  3404  	s.BotId = &v
  3405  	return s
  3406  }
  3407  
  3408  // SetLocaleId sets the LocaleId field's value.
  3409  func (s *PutSessionInput) SetLocaleId(v string) *PutSessionInput {
  3410  	s.LocaleId = &v
  3411  	return s
  3412  }
  3413  
  3414  // SetMessages sets the Messages field's value.
  3415  func (s *PutSessionInput) SetMessages(v []*Message) *PutSessionInput {
  3416  	s.Messages = v
  3417  	return s
  3418  }
  3419  
  3420  // SetRequestAttributes sets the RequestAttributes field's value.
  3421  func (s *PutSessionInput) SetRequestAttributes(v map[string]*string) *PutSessionInput {
  3422  	s.RequestAttributes = v
  3423  	return s
  3424  }
  3425  
  3426  // SetResponseContentType sets the ResponseContentType field's value.
  3427  func (s *PutSessionInput) SetResponseContentType(v string) *PutSessionInput {
  3428  	s.ResponseContentType = &v
  3429  	return s
  3430  }
  3431  
  3432  // SetSessionId sets the SessionId field's value.
  3433  func (s *PutSessionInput) SetSessionId(v string) *PutSessionInput {
  3434  	s.SessionId = &v
  3435  	return s
  3436  }
  3437  
  3438  // SetSessionState sets the SessionState field's value.
  3439  func (s *PutSessionInput) SetSessionState(v *SessionState) *PutSessionInput {
  3440  	s.SessionState = v
  3441  	return s
  3442  }
  3443  
  3444  type PutSessionOutput struct {
  3445  	_ struct{} `type:"structure" payload:"AudioStream"`
  3446  
  3447  	// If the requested content type was audio, the audio version of the message
  3448  	// to convey to the user.
  3449  	AudioStream io.ReadCloser `locationName:"audioStream" type:"blob"`
  3450  
  3451  	// The type of response. Same as the type specified in the responseContentType
  3452  	// field in the request.
  3453  	ContentType *string `location:"header" locationName:"Content-Type" min:"1" type:"string"`
  3454  
  3455  	// A list of messages that were last sent to the user. The messages are ordered
  3456  	// based on how you return the messages from you Lambda function or the order
  3457  	// that the messages are defined in the bot.
  3458  	Messages *string `location:"header" locationName:"x-amz-lex-messages" min:"1" type:"string"`
  3459  
  3460  	// Request-specific information passed between the client application and Amazon
  3461  	// Lex V2. These are the same as the requestAttribute parameter in the call
  3462  	// to the PutSession operation.
  3463  	RequestAttributes *string `location:"header" locationName:"x-amz-lex-request-attributes" min:"1" type:"string"`
  3464  
  3465  	// The identifier of the session that received the data.
  3466  	SessionId *string `location:"header" locationName:"x-amz-lex-session-id" min:"2" type:"string"`
  3467  
  3468  	// Represents the current state of the dialog between the user and the bot.
  3469  	//
  3470  	// Use this to determine the progress of the conversation and what the next
  3471  	// action may be.
  3472  	SessionState *string `location:"header" locationName:"x-amz-lex-session-state" min:"1" type:"string"`
  3473  }
  3474  
  3475  // String returns the string representation.
  3476  //
  3477  // API parameter values that are decorated as "sensitive" in the API will not
  3478  // be included in the string output. The member name will be present, but the
  3479  // value will be replaced with "sensitive".
  3480  func (s PutSessionOutput) String() string {
  3481  	return awsutil.Prettify(s)
  3482  }
  3483  
  3484  // GoString returns the string representation.
  3485  //
  3486  // API parameter values that are decorated as "sensitive" in the API will not
  3487  // be included in the string output. The member name will be present, but the
  3488  // value will be replaced with "sensitive".
  3489  func (s PutSessionOutput) GoString() string {
  3490  	return s.String()
  3491  }
  3492  
  3493  // SetAudioStream sets the AudioStream field's value.
  3494  func (s *PutSessionOutput) SetAudioStream(v io.ReadCloser) *PutSessionOutput {
  3495  	s.AudioStream = v
  3496  	return s
  3497  }
  3498  
  3499  // SetContentType sets the ContentType field's value.
  3500  func (s *PutSessionOutput) SetContentType(v string) *PutSessionOutput {
  3501  	s.ContentType = &v
  3502  	return s
  3503  }
  3504  
  3505  // SetMessages sets the Messages field's value.
  3506  func (s *PutSessionOutput) SetMessages(v string) *PutSessionOutput {
  3507  	s.Messages = &v
  3508  	return s
  3509  }
  3510  
  3511  // SetRequestAttributes sets the RequestAttributes field's value.
  3512  func (s *PutSessionOutput) SetRequestAttributes(v string) *PutSessionOutput {
  3513  	s.RequestAttributes = &v
  3514  	return s
  3515  }
  3516  
  3517  // SetSessionId sets the SessionId field's value.
  3518  func (s *PutSessionOutput) SetSessionId(v string) *PutSessionOutput {
  3519  	s.SessionId = &v
  3520  	return s
  3521  }
  3522  
  3523  // SetSessionState sets the SessionState field's value.
  3524  func (s *PutSessionOutput) SetSessionState(v string) *PutSessionOutput {
  3525  	s.SessionState = &v
  3526  	return s
  3527  }
  3528  
  3529  type RecognizeTextInput struct {
  3530  	_ struct{} `type:"structure"`
  3531  
  3532  	// The alias identifier in use for the bot that processes the request.
  3533  	//
  3534  	// BotAliasId is a required field
  3535  	BotAliasId *string `location:"uri" locationName:"botAliasId" type:"string" required:"true"`
  3536  
  3537  	// The identifier of the bot that processes the request.
  3538  	//
  3539  	// BotId is a required field
  3540  	BotId *string `location:"uri" locationName:"botId" min:"10" type:"string" required:"true"`
  3541  
  3542  	// The locale where the session is in use.
  3543  	//
  3544  	// LocaleId is a required field
  3545  	LocaleId *string `location:"uri" locationName:"localeId" min:"1" type:"string" required:"true"`
  3546  
  3547  	// Request-specific information passed between the client application and Amazon
  3548  	// Lex V2
  3549  	//
  3550  	// The namespace x-amz-lex: is reserved for special attributes. Don't create
  3551  	// any request attributes with the prefix x-amz-lex:.
  3552  	RequestAttributes map[string]*string `locationName:"requestAttributes" type:"map"`
  3553  
  3554  	// The identifier of the user session that is having the conversation.
  3555  	//
  3556  	// SessionId is a required field
  3557  	SessionId *string `location:"uri" locationName:"sessionId" min:"2" type:"string" required:"true"`
  3558  
  3559  	// The current state of the dialog between the user and the bot.
  3560  	SessionState *SessionState `locationName:"sessionState" type:"structure"`
  3561  
  3562  	// The text that the user entered. Amazon Lex V2 interprets this text.
  3563  	//
  3564  	// Text is a sensitive parameter and its value will be
  3565  	// replaced with "sensitive" in string returned by RecognizeTextInput's
  3566  	// String and GoString methods.
  3567  	//
  3568  	// Text is a required field
  3569  	Text *string `locationName:"text" min:"1" type:"string" required:"true" sensitive:"true"`
  3570  }
  3571  
  3572  // String returns the string representation.
  3573  //
  3574  // API parameter values that are decorated as "sensitive" in the API will not
  3575  // be included in the string output. The member name will be present, but the
  3576  // value will be replaced with "sensitive".
  3577  func (s RecognizeTextInput) String() string {
  3578  	return awsutil.Prettify(s)
  3579  }
  3580  
  3581  // GoString returns the string representation.
  3582  //
  3583  // API parameter values that are decorated as "sensitive" in the API will not
  3584  // be included in the string output. The member name will be present, but the
  3585  // value will be replaced with "sensitive".
  3586  func (s RecognizeTextInput) GoString() string {
  3587  	return s.String()
  3588  }
  3589  
  3590  // Validate inspects the fields of the type to determine if they are valid.
  3591  func (s *RecognizeTextInput) Validate() error {
  3592  	invalidParams := request.ErrInvalidParams{Context: "RecognizeTextInput"}
  3593  	if s.BotAliasId == nil {
  3594  		invalidParams.Add(request.NewErrParamRequired("BotAliasId"))
  3595  	}
  3596  	if s.BotAliasId != nil && len(*s.BotAliasId) < 1 {
  3597  		invalidParams.Add(request.NewErrParamMinLen("BotAliasId", 1))
  3598  	}
  3599  	if s.BotId == nil {
  3600  		invalidParams.Add(request.NewErrParamRequired("BotId"))
  3601  	}
  3602  	if s.BotId != nil && len(*s.BotId) < 10 {
  3603  		invalidParams.Add(request.NewErrParamMinLen("BotId", 10))
  3604  	}
  3605  	if s.LocaleId == nil {
  3606  		invalidParams.Add(request.NewErrParamRequired("LocaleId"))
  3607  	}
  3608  	if s.LocaleId != nil && len(*s.LocaleId) < 1 {
  3609  		invalidParams.Add(request.NewErrParamMinLen("LocaleId", 1))
  3610  	}
  3611  	if s.SessionId == nil {
  3612  		invalidParams.Add(request.NewErrParamRequired("SessionId"))
  3613  	}
  3614  	if s.SessionId != nil && len(*s.SessionId) < 2 {
  3615  		invalidParams.Add(request.NewErrParamMinLen("SessionId", 2))
  3616  	}
  3617  	if s.Text == nil {
  3618  		invalidParams.Add(request.NewErrParamRequired("Text"))
  3619  	}
  3620  	if s.Text != nil && len(*s.Text) < 1 {
  3621  		invalidParams.Add(request.NewErrParamMinLen("Text", 1))
  3622  	}
  3623  	if s.SessionState != nil {
  3624  		if err := s.SessionState.Validate(); err != nil {
  3625  			invalidParams.AddNested("SessionState", err.(request.ErrInvalidParams))
  3626  		}
  3627  	}
  3628  
  3629  	if invalidParams.Len() > 0 {
  3630  		return invalidParams
  3631  	}
  3632  	return nil
  3633  }
  3634  
  3635  // SetBotAliasId sets the BotAliasId field's value.
  3636  func (s *RecognizeTextInput) SetBotAliasId(v string) *RecognizeTextInput {
  3637  	s.BotAliasId = &v
  3638  	return s
  3639  }
  3640  
  3641  // SetBotId sets the BotId field's value.
  3642  func (s *RecognizeTextInput) SetBotId(v string) *RecognizeTextInput {
  3643  	s.BotId = &v
  3644  	return s
  3645  }
  3646  
  3647  // SetLocaleId sets the LocaleId field's value.
  3648  func (s *RecognizeTextInput) SetLocaleId(v string) *RecognizeTextInput {
  3649  	s.LocaleId = &v
  3650  	return s
  3651  }
  3652  
  3653  // SetRequestAttributes sets the RequestAttributes field's value.
  3654  func (s *RecognizeTextInput) SetRequestAttributes(v map[string]*string) *RecognizeTextInput {
  3655  	s.RequestAttributes = v
  3656  	return s
  3657  }
  3658  
  3659  // SetSessionId sets the SessionId field's value.
  3660  func (s *RecognizeTextInput) SetSessionId(v string) *RecognizeTextInput {
  3661  	s.SessionId = &v
  3662  	return s
  3663  }
  3664  
  3665  // SetSessionState sets the SessionState field's value.
  3666  func (s *RecognizeTextInput) SetSessionState(v *SessionState) *RecognizeTextInput {
  3667  	s.SessionState = v
  3668  	return s
  3669  }
  3670  
  3671  // SetText sets the Text field's value.
  3672  func (s *RecognizeTextInput) SetText(v string) *RecognizeTextInput {
  3673  	s.Text = &v
  3674  	return s
  3675  }
  3676  
  3677  type RecognizeTextOutput struct {
  3678  	_ struct{} `type:"structure"`
  3679  
  3680  	// A list of intents that Amazon Lex V2 determined might satisfy the user's
  3681  	// utterance.
  3682  	//
  3683  	// Each interpretation includes the intent, a score that indicates now confident
  3684  	// Amazon Lex V2 is that the interpretation is the correct one, and an optional
  3685  	// sentiment response that indicates the sentiment expressed in the utterance.
  3686  	Interpretations []*Interpretation `locationName:"interpretations" type:"list"`
  3687  
  3688  	// A list of messages last sent to the user. The messages are ordered based
  3689  	// on the order that you returned the messages from your Lambda function or
  3690  	// the order that the messages are defined in the bot.
  3691  	Messages []*Message `locationName:"messages" type:"list"`
  3692  
  3693  	// The attributes sent in the request.
  3694  	RequestAttributes map[string]*string `locationName:"requestAttributes" type:"map"`
  3695  
  3696  	// The identifier of the session in use.
  3697  	SessionId *string `locationName:"sessionId" min:"2" type:"string"`
  3698  
  3699  	// Represents the current state of the dialog between the user and the bot.
  3700  	//
  3701  	// Use this to determine the progress of the conversation and what the next
  3702  	// action may be.
  3703  	SessionState *SessionState `locationName:"sessionState" type:"structure"`
  3704  }
  3705  
  3706  // String returns the string representation.
  3707  //
  3708  // API parameter values that are decorated as "sensitive" in the API will not
  3709  // be included in the string output. The member name will be present, but the
  3710  // value will be replaced with "sensitive".
  3711  func (s RecognizeTextOutput) String() string {
  3712  	return awsutil.Prettify(s)
  3713  }
  3714  
  3715  // GoString returns the string representation.
  3716  //
  3717  // API parameter values that are decorated as "sensitive" in the API will not
  3718  // be included in the string output. The member name will be present, but the
  3719  // value will be replaced with "sensitive".
  3720  func (s RecognizeTextOutput) GoString() string {
  3721  	return s.String()
  3722  }
  3723  
  3724  // SetInterpretations sets the Interpretations field's value.
  3725  func (s *RecognizeTextOutput) SetInterpretations(v []*Interpretation) *RecognizeTextOutput {
  3726  	s.Interpretations = v
  3727  	return s
  3728  }
  3729  
  3730  // SetMessages sets the Messages field's value.
  3731  func (s *RecognizeTextOutput) SetMessages(v []*Message) *RecognizeTextOutput {
  3732  	s.Messages = v
  3733  	return s
  3734  }
  3735  
  3736  // SetRequestAttributes sets the RequestAttributes field's value.
  3737  func (s *RecognizeTextOutput) SetRequestAttributes(v map[string]*string) *RecognizeTextOutput {
  3738  	s.RequestAttributes = v
  3739  	return s
  3740  }
  3741  
  3742  // SetSessionId sets the SessionId field's value.
  3743  func (s *RecognizeTextOutput) SetSessionId(v string) *RecognizeTextOutput {
  3744  	s.SessionId = &v
  3745  	return s
  3746  }
  3747  
  3748  // SetSessionState sets the SessionState field's value.
  3749  func (s *RecognizeTextOutput) SetSessionState(v *SessionState) *RecognizeTextOutput {
  3750  	s.SessionState = v
  3751  	return s
  3752  }
  3753  
  3754  type RecognizeUtteranceInput struct {
  3755  	_ struct{} `type:"structure" payload:"InputStream"`
  3756  
  3757  	// The alias identifier in use for the bot that should receive the request.
  3758  	//
  3759  	// BotAliasId is a required field
  3760  	BotAliasId *string `location:"uri" locationName:"botAliasId" type:"string" required:"true"`
  3761  
  3762  	// The identifier of the bot that should receive the request.
  3763  	//
  3764  	// BotId is a required field
  3765  	BotId *string `location:"uri" locationName:"botId" min:"10" type:"string" required:"true"`
  3766  
  3767  	// User input in PCM or Opus audio format or text format as described in the
  3768  	// requestContentType parameter.
  3769  	//
  3770  	// To use an non-seekable io.Reader for this request wrap the io.Reader with
  3771  	// "aws.ReadSeekCloser". The SDK will not retry request errors for non-seekable
  3772  	// readers. This will allow the SDK to send the reader's payload as chunked
  3773  	// transfer encoding.
  3774  	InputStream io.ReadSeeker `locationName:"inputStream" type:"blob"`
  3775  
  3776  	// The locale where the session is in use.
  3777  	//
  3778  	// LocaleId is a required field
  3779  	LocaleId *string `location:"uri" locationName:"localeId" min:"1" type:"string" required:"true"`
  3780  
  3781  	// Request-specific information passed between the client application and Amazon
  3782  	// Lex V2
  3783  	//
  3784  	// The namespace x-amz-lex: is reserved for special attributes. Don't create
  3785  	// any request attributes for prefix x-amz-lex:.
  3786  	//
  3787  	// The requestAttributes field must be compressed using gzip and then base64
  3788  	// encoded before sending to Amazon Lex V2.
  3789  	//
  3790  	// RequestAttributes is a sensitive parameter and its value will be
  3791  	// replaced with "sensitive" in string returned by RecognizeUtteranceInput's
  3792  	// String and GoString methods.
  3793  	RequestAttributes *string `location:"header" locationName:"x-amz-lex-request-attributes" type:"string" sensitive:"true"`
  3794  
  3795  	// Indicates the format for audio input or that the content is text. The header
  3796  	// must start with one of the following prefixes:
  3797  	//
  3798  	//    * PCM format, audio data must be in little-endian byte order. audio/l16;
  3799  	//    rate=16000; channels=1 audio/x-l16; sample-rate=16000; channel-count=1
  3800  	//    audio/lpcm; sample-rate=8000; sample-size-bits=16; channel-count=1; is-big-endian=false
  3801  	//
  3802  	//    * Opus format audio/x-cbr-opus-with-preamble;preamble-size=0;bit-rate=256000;frame-size-milliseconds=4
  3803  	//
  3804  	//    * Text format text/plain; charset=utf-8
  3805  	//
  3806  	// RequestContentType is a required field
  3807  	RequestContentType *string `location:"header" locationName:"Content-Type" min:"1" type:"string" required:"true"`
  3808  
  3809  	// The message that Amazon Lex V2 returns in the response can be either text
  3810  	// or speech based on the responseContentType value.
  3811  	//
  3812  	//    * If the value is text/plain;charset=utf-8, Amazon Lex V2 returns text
  3813  	//    in the response.
  3814  	//
  3815  	//    * If the value begins with audio/, Amazon Lex V2 returns speech in the
  3816  	//    response. Amazon Lex V2 uses Amazon Polly to generate the speech using
  3817  	//    the configuration that you specified in the requestContentType parameter.
  3818  	//    For example, if you specify audio/mpeg as the value, Amazon Lex V2 returns
  3819  	//    speech in the MPEG format.
  3820  	//
  3821  	//    * If the value is audio/pcm, the speech returned is audio/pcm at 16 KHz
  3822  	//    in 16-bit, little-endian format.
  3823  	//
  3824  	//    * The following are the accepted values: audio/mpeg audio/ogg audio/pcm
  3825  	//    (16 KHz) audio/* (defaults to mpeg) text/plain; charset=utf-8
  3826  	ResponseContentType *string `location:"header" locationName:"Response-Content-Type" min:"1" type:"string"`
  3827  
  3828  	// The identifier of the session in use.
  3829  	//
  3830  	// SessionId is a required field
  3831  	SessionId *string `location:"uri" locationName:"sessionId" min:"2" type:"string" required:"true"`
  3832  
  3833  	// Sets the state of the session with the user. You can use this to set the
  3834  	// current intent, attributes, context, and dialog action. Use the dialog action
  3835  	// to determine the next step that Amazon Lex V2 should use in the conversation
  3836  	// with the user.
  3837  	//
  3838  	// The sessionState field must be compressed using gzip and then base64 encoded
  3839  	// before sending to Amazon Lex V2.
  3840  	//
  3841  	// SessionState is a sensitive parameter and its value will be
  3842  	// replaced with "sensitive" in string returned by RecognizeUtteranceInput's
  3843  	// String and GoString methods.
  3844  	SessionState *string `location:"header" locationName:"x-amz-lex-session-state" type:"string" sensitive:"true"`
  3845  }
  3846  
  3847  // String returns the string representation.
  3848  //
  3849  // API parameter values that are decorated as "sensitive" in the API will not
  3850  // be included in the string output. The member name will be present, but the
  3851  // value will be replaced with "sensitive".
  3852  func (s RecognizeUtteranceInput) String() string {
  3853  	return awsutil.Prettify(s)
  3854  }
  3855  
  3856  // GoString returns the string representation.
  3857  //
  3858  // API parameter values that are decorated as "sensitive" in the API will not
  3859  // be included in the string output. The member name will be present, but the
  3860  // value will be replaced with "sensitive".
  3861  func (s RecognizeUtteranceInput) GoString() string {
  3862  	return s.String()
  3863  }
  3864  
  3865  // Validate inspects the fields of the type to determine if they are valid.
  3866  func (s *RecognizeUtteranceInput) Validate() error {
  3867  	invalidParams := request.ErrInvalidParams{Context: "RecognizeUtteranceInput"}
  3868  	if s.BotAliasId == nil {
  3869  		invalidParams.Add(request.NewErrParamRequired("BotAliasId"))
  3870  	}
  3871  	if s.BotAliasId != nil && len(*s.BotAliasId) < 1 {
  3872  		invalidParams.Add(request.NewErrParamMinLen("BotAliasId", 1))
  3873  	}
  3874  	if s.BotId == nil {
  3875  		invalidParams.Add(request.NewErrParamRequired("BotId"))
  3876  	}
  3877  	if s.BotId != nil && len(*s.BotId) < 10 {
  3878  		invalidParams.Add(request.NewErrParamMinLen("BotId", 10))
  3879  	}
  3880  	if s.LocaleId == nil {
  3881  		invalidParams.Add(request.NewErrParamRequired("LocaleId"))
  3882  	}
  3883  	if s.LocaleId != nil && len(*s.LocaleId) < 1 {
  3884  		invalidParams.Add(request.NewErrParamMinLen("LocaleId", 1))
  3885  	}
  3886  	if s.RequestContentType == nil {
  3887  		invalidParams.Add(request.NewErrParamRequired("RequestContentType"))
  3888  	}
  3889  	if s.RequestContentType != nil && len(*s.RequestContentType) < 1 {
  3890  		invalidParams.Add(request.NewErrParamMinLen("RequestContentType", 1))
  3891  	}
  3892  	if s.ResponseContentType != nil && len(*s.ResponseContentType) < 1 {
  3893  		invalidParams.Add(request.NewErrParamMinLen("ResponseContentType", 1))
  3894  	}
  3895  	if s.SessionId == nil {
  3896  		invalidParams.Add(request.NewErrParamRequired("SessionId"))
  3897  	}
  3898  	if s.SessionId != nil && len(*s.SessionId) < 2 {
  3899  		invalidParams.Add(request.NewErrParamMinLen("SessionId", 2))
  3900  	}
  3901  
  3902  	if invalidParams.Len() > 0 {
  3903  		return invalidParams
  3904  	}
  3905  	return nil
  3906  }
  3907  
  3908  // SetBotAliasId sets the BotAliasId field's value.
  3909  func (s *RecognizeUtteranceInput) SetBotAliasId(v string) *RecognizeUtteranceInput {
  3910  	s.BotAliasId = &v
  3911  	return s
  3912  }
  3913  
  3914  // SetBotId sets the BotId field's value.
  3915  func (s *RecognizeUtteranceInput) SetBotId(v string) *RecognizeUtteranceInput {
  3916  	s.BotId = &v
  3917  	return s
  3918  }
  3919  
  3920  // SetInputStream sets the InputStream field's value.
  3921  func (s *RecognizeUtteranceInput) SetInputStream(v io.ReadSeeker) *RecognizeUtteranceInput {
  3922  	s.InputStream = v
  3923  	return s
  3924  }
  3925  
  3926  // SetLocaleId sets the LocaleId field's value.
  3927  func (s *RecognizeUtteranceInput) SetLocaleId(v string) *RecognizeUtteranceInput {
  3928  	s.LocaleId = &v
  3929  	return s
  3930  }
  3931  
  3932  // SetRequestAttributes sets the RequestAttributes field's value.
  3933  func (s *RecognizeUtteranceInput) SetRequestAttributes(v string) *RecognizeUtteranceInput {
  3934  	s.RequestAttributes = &v
  3935  	return s
  3936  }
  3937  
  3938  // SetRequestContentType sets the RequestContentType field's value.
  3939  func (s *RecognizeUtteranceInput) SetRequestContentType(v string) *RecognizeUtteranceInput {
  3940  	s.RequestContentType = &v
  3941  	return s
  3942  }
  3943  
  3944  // SetResponseContentType sets the ResponseContentType field's value.
  3945  func (s *RecognizeUtteranceInput) SetResponseContentType(v string) *RecognizeUtteranceInput {
  3946  	s.ResponseContentType = &v
  3947  	return s
  3948  }
  3949  
  3950  // SetSessionId sets the SessionId field's value.
  3951  func (s *RecognizeUtteranceInput) SetSessionId(v string) *RecognizeUtteranceInput {
  3952  	s.SessionId = &v
  3953  	return s
  3954  }
  3955  
  3956  // SetSessionState sets the SessionState field's value.
  3957  func (s *RecognizeUtteranceInput) SetSessionState(v string) *RecognizeUtteranceInput {
  3958  	s.SessionState = &v
  3959  	return s
  3960  }
  3961  
  3962  type RecognizeUtteranceOutput struct {
  3963  	_ struct{} `type:"structure" payload:"AudioStream"`
  3964  
  3965  	// The prompt or statement to send to the user. This is based on the bot configuration
  3966  	// and context. For example, if Amazon Lex V2 did not understand the user intent,
  3967  	// it sends the clarificationPrompt configured for the bot. If the intent requires
  3968  	// confirmation before taking the fulfillment action, it sends the confirmationPrompt.
  3969  	// Another example: Suppose that the Lambda function successfully fulfilled
  3970  	// the intent, and sent a message to convey to the user. Then Amazon Lex V2
  3971  	// sends that message in the response.
  3972  	AudioStream io.ReadCloser `locationName:"audioStream" type:"blob"`
  3973  
  3974  	// Content type as specified in the responseContentType in the request.
  3975  	ContentType *string `location:"header" locationName:"Content-Type" min:"1" type:"string"`
  3976  
  3977  	// Indicates whether the input mode to the operation was text or speech.
  3978  	InputMode *string `location:"header" locationName:"x-amz-lex-input-mode" min:"1" type:"string"`
  3979  
  3980  	// The text used to process the request.
  3981  	//
  3982  	// If the input was an audio stream, the inputTranscript field contains the
  3983  	// text extracted from the audio stream. This is the text that is actually processed
  3984  	// to recognize intents and slot values. You can use this information to determine
  3985  	// if Amazon Lex V2 is correctly processing the audio that you send.
  3986  	//
  3987  	// The inputTranscript field is compressed with gzip and then base64 encoded.
  3988  	// Before you can use the contents of the field, you must decode and decompress
  3989  	// the contents. See the example for a simple function to decode and decompress
  3990  	// the contents.
  3991  	InputTranscript *string `location:"header" locationName:"x-amz-lex-input-transcript" min:"1" type:"string"`
  3992  
  3993  	// A list of intents that Amazon Lex V2 determined might satisfy the user's
  3994  	// utterance.
  3995  	//
  3996  	// Each interpretation includes the intent, a score that indicates how confident
  3997  	// Amazon Lex V2 is that the interpretation is the correct one, and an optional
  3998  	// sentiment response that indicates the sentiment expressed in the utterance.
  3999  	//
  4000  	// The interpretations field is compressed with gzip and then base64 encoded.
  4001  	// Before you can use the contents of the field, you must decode and decompress
  4002  	// the contents. See the example for a simple function to decode and decompress
  4003  	// the contents.
  4004  	Interpretations *string `location:"header" locationName:"x-amz-lex-interpretations" min:"1" type:"string"`
  4005  
  4006  	// A list of messages that were last sent to the user. The messages are ordered
  4007  	// based on the order that you returned the messages from your Lambda function
  4008  	// or the order that the messages are defined in the bot.
  4009  	//
  4010  	// The messages field is compressed with gzip and then base64 encoded. Before
  4011  	// you can use the contents of the field, you must decode and decompress the
  4012  	// contents. See the example for a simple function to decode and decompress
  4013  	// the contents.
  4014  	Messages *string `location:"header" locationName:"x-amz-lex-messages" min:"1" type:"string"`
  4015  
  4016  	// The attributes sent in the request.
  4017  	//
  4018  	// The requestAttributes field is compressed with gzip and then base64 encoded.
  4019  	// Before you can use the contents of the field, you must decode and decompress
  4020  	// the contents.
  4021  	RequestAttributes *string `location:"header" locationName:"x-amz-lex-request-attributes" min:"1" type:"string"`
  4022  
  4023  	// The identifier of the session in use.
  4024  	SessionId *string `location:"header" locationName:"x-amz-lex-session-id" min:"2" type:"string"`
  4025  
  4026  	// Represents the current state of the dialog between the user and the bot.
  4027  	//
  4028  	// Use this to determine the progress of the conversation and what the next
  4029  	// action might be.
  4030  	//
  4031  	// The sessionState field is compressed with gzip and then base64 encoded. Before
  4032  	// you can use the contents of the field, you must decode and decompress the
  4033  	// contents. See the example for a simple function to decode and decompress
  4034  	// the contents.
  4035  	SessionState *string `location:"header" locationName:"x-amz-lex-session-state" min:"1" type:"string"`
  4036  }
  4037  
  4038  // String returns the string representation.
  4039  //
  4040  // API parameter values that are decorated as "sensitive" in the API will not
  4041  // be included in the string output. The member name will be present, but the
  4042  // value will be replaced with "sensitive".
  4043  func (s RecognizeUtteranceOutput) String() string {
  4044  	return awsutil.Prettify(s)
  4045  }
  4046  
  4047  // GoString returns the string representation.
  4048  //
  4049  // API parameter values that are decorated as "sensitive" in the API will not
  4050  // be included in the string output. The member name will be present, but the
  4051  // value will be replaced with "sensitive".
  4052  func (s RecognizeUtteranceOutput) GoString() string {
  4053  	return s.String()
  4054  }
  4055  
  4056  // SetAudioStream sets the AudioStream field's value.
  4057  func (s *RecognizeUtteranceOutput) SetAudioStream(v io.ReadCloser) *RecognizeUtteranceOutput {
  4058  	s.AudioStream = v
  4059  	return s
  4060  }
  4061  
  4062  // SetContentType sets the ContentType field's value.
  4063  func (s *RecognizeUtteranceOutput) SetContentType(v string) *RecognizeUtteranceOutput {
  4064  	s.ContentType = &v
  4065  	return s
  4066  }
  4067  
  4068  // SetInputMode sets the InputMode field's value.
  4069  func (s *RecognizeUtteranceOutput) SetInputMode(v string) *RecognizeUtteranceOutput {
  4070  	s.InputMode = &v
  4071  	return s
  4072  }
  4073  
  4074  // SetInputTranscript sets the InputTranscript field's value.
  4075  func (s *RecognizeUtteranceOutput) SetInputTranscript(v string) *RecognizeUtteranceOutput {
  4076  	s.InputTranscript = &v
  4077  	return s
  4078  }
  4079  
  4080  // SetInterpretations sets the Interpretations field's value.
  4081  func (s *RecognizeUtteranceOutput) SetInterpretations(v string) *RecognizeUtteranceOutput {
  4082  	s.Interpretations = &v
  4083  	return s
  4084  }
  4085  
  4086  // SetMessages sets the Messages field's value.
  4087  func (s *RecognizeUtteranceOutput) SetMessages(v string) *RecognizeUtteranceOutput {
  4088  	s.Messages = &v
  4089  	return s
  4090  }
  4091  
  4092  // SetRequestAttributes sets the RequestAttributes field's value.
  4093  func (s *RecognizeUtteranceOutput) SetRequestAttributes(v string) *RecognizeUtteranceOutput {
  4094  	s.RequestAttributes = &v
  4095  	return s
  4096  }
  4097  
  4098  // SetSessionId sets the SessionId field's value.
  4099  func (s *RecognizeUtteranceOutput) SetSessionId(v string) *RecognizeUtteranceOutput {
  4100  	s.SessionId = &v
  4101  	return s
  4102  }
  4103  
  4104  // SetSessionState sets the SessionState field's value.
  4105  func (s *RecognizeUtteranceOutput) SetSessionState(v string) *RecognizeUtteranceOutput {
  4106  	s.SessionState = &v
  4107  	return s
  4108  }
  4109  
  4110  type ResourceNotFoundException struct {
  4111  	_            struct{}                  `type:"structure"`
  4112  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  4113  
  4114  	Message_ *string `locationName:"message" type:"string"`
  4115  }
  4116  
  4117  // String returns the string representation.
  4118  //
  4119  // API parameter values that are decorated as "sensitive" in the API will not
  4120  // be included in the string output. The member name will be present, but the
  4121  // value will be replaced with "sensitive".
  4122  func (s ResourceNotFoundException) String() string {
  4123  	return awsutil.Prettify(s)
  4124  }
  4125  
  4126  // GoString returns the string representation.
  4127  //
  4128  // API parameter values that are decorated as "sensitive" in the API will not
  4129  // be included in the string output. The member name will be present, but the
  4130  // value will be replaced with "sensitive".
  4131  func (s ResourceNotFoundException) GoString() string {
  4132  	return s.String()
  4133  }
  4134  
  4135  // The ResourceNotFoundException is and event in the StartConversationResponseEventStream group of events.
  4136  func (s *ResourceNotFoundException) eventStartConversationResponseEventStream() {}
  4137  
  4138  // UnmarshalEvent unmarshals the EventStream Message into the ResourceNotFoundException value.
  4139  // This method is only used internally within the SDK's EventStream handling.
  4140  func (s *ResourceNotFoundException) UnmarshalEvent(
  4141  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  4142  	msg eventstream.Message,
  4143  ) error {
  4144  	if err := payloadUnmarshaler.UnmarshalPayload(
  4145  		bytes.NewReader(msg.Payload), s,
  4146  	); err != nil {
  4147  		return err
  4148  	}
  4149  	return nil
  4150  }
  4151  
  4152  // MarshalEvent marshals the type into an stream event value. This method
  4153  // should only used internally within the SDK's EventStream handling.
  4154  func (s *ResourceNotFoundException) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  4155  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.ExceptionMessageType))
  4156  	var buf bytes.Buffer
  4157  	if err = pm.MarshalPayload(&buf, s); err != nil {
  4158  		return eventstream.Message{}, err
  4159  	}
  4160  	msg.Payload = buf.Bytes()
  4161  	return msg, err
  4162  }
  4163  
  4164  func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
  4165  	return &ResourceNotFoundException{
  4166  		RespMetadata: v,
  4167  	}
  4168  }
  4169  
  4170  // Code returns the exception type name.
  4171  func (s *ResourceNotFoundException) Code() string {
  4172  	return "ResourceNotFoundException"
  4173  }
  4174  
  4175  // Message returns the exception's message.
  4176  func (s *ResourceNotFoundException) Message() string {
  4177  	if s.Message_ != nil {
  4178  		return *s.Message_
  4179  	}
  4180  	return ""
  4181  }
  4182  
  4183  // OrigErr always returns nil, satisfies awserr.Error interface.
  4184  func (s *ResourceNotFoundException) OrigErr() error {
  4185  	return nil
  4186  }
  4187  
  4188  func (s *ResourceNotFoundException) Error() string {
  4189  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  4190  }
  4191  
  4192  // Status code returns the HTTP status code for the request's response error.
  4193  func (s *ResourceNotFoundException) StatusCode() int {
  4194  	return s.RespMetadata.StatusCode
  4195  }
  4196  
  4197  // RequestID returns the service's response RequestID for request.
  4198  func (s *ResourceNotFoundException) RequestID() string {
  4199  	return s.RespMetadata.RequestID
  4200  }
  4201  
  4202  // Provides information about the sentiment expressed in a user's response in
  4203  // a conversation. Sentiments are determined using Amazon Comprehend. Sentiments
  4204  // are only returned if they are enabled for the bot.
  4205  //
  4206  // For more information, see Determine Sentiment (https://docs.aws.amazon.com/comprehend/latest/dg/how-sentiment.html)
  4207  // in the Amazon Comprehend developer guide.
  4208  type SentimentResponse struct {
  4209  	_ struct{} `type:"structure"`
  4210  
  4211  	// The overall sentiment expressed in the user's response. This is the sentiment
  4212  	// most likely expressed by the user based on the analysis by Amazon Comprehend.
  4213  	Sentiment *string `locationName:"sentiment" type:"string" enum:"SentimentType"`
  4214  
  4215  	// The individual sentiment responses for the utterance.
  4216  	SentimentScore *SentimentScore `locationName:"sentimentScore" type:"structure"`
  4217  }
  4218  
  4219  // String returns the string representation.
  4220  //
  4221  // API parameter values that are decorated as "sensitive" in the API will not
  4222  // be included in the string output. The member name will be present, but the
  4223  // value will be replaced with "sensitive".
  4224  func (s SentimentResponse) String() string {
  4225  	return awsutil.Prettify(s)
  4226  }
  4227  
  4228  // GoString returns the string representation.
  4229  //
  4230  // API parameter values that are decorated as "sensitive" in the API will not
  4231  // be included in the string output. The member name will be present, but the
  4232  // value will be replaced with "sensitive".
  4233  func (s SentimentResponse) GoString() string {
  4234  	return s.String()
  4235  }
  4236  
  4237  // SetSentiment sets the Sentiment field's value.
  4238  func (s *SentimentResponse) SetSentiment(v string) *SentimentResponse {
  4239  	s.Sentiment = &v
  4240  	return s
  4241  }
  4242  
  4243  // SetSentimentScore sets the SentimentScore field's value.
  4244  func (s *SentimentResponse) SetSentimentScore(v *SentimentScore) *SentimentResponse {
  4245  	s.SentimentScore = v
  4246  	return s
  4247  }
  4248  
  4249  // The individual sentiment responses for the utterance.
  4250  type SentimentScore struct {
  4251  	_ struct{} `type:"structure"`
  4252  
  4253  	// The level of confidence that Amazon Comprehend has in the accuracy of its
  4254  	// detection of the MIXED sentiment.
  4255  	Mixed *float64 `locationName:"mixed" type:"double"`
  4256  
  4257  	// The level of confidence that Amazon Comprehend has in the accuracy of its
  4258  	// detection of the NEGATIVE sentiment.
  4259  	Negative *float64 `locationName:"negative" type:"double"`
  4260  
  4261  	// The level of confidence that Amazon Comprehend has in the accuracy of its
  4262  	// detection of the NEUTRAL sentiment.
  4263  	Neutral *float64 `locationName:"neutral" type:"double"`
  4264  
  4265  	// The level of confidence that Amazon Comprehend has in the accuracy of its
  4266  	// detection of the POSITIVE sentiment.
  4267  	Positive *float64 `locationName:"positive" type:"double"`
  4268  }
  4269  
  4270  // String returns the string representation.
  4271  //
  4272  // API parameter values that are decorated as "sensitive" in the API will not
  4273  // be included in the string output. The member name will be present, but the
  4274  // value will be replaced with "sensitive".
  4275  func (s SentimentScore) String() string {
  4276  	return awsutil.Prettify(s)
  4277  }
  4278  
  4279  // GoString returns the string representation.
  4280  //
  4281  // API parameter values that are decorated as "sensitive" in the API will not
  4282  // be included in the string output. The member name will be present, but the
  4283  // value will be replaced with "sensitive".
  4284  func (s SentimentScore) GoString() string {
  4285  	return s.String()
  4286  }
  4287  
  4288  // SetMixed sets the Mixed field's value.
  4289  func (s *SentimentScore) SetMixed(v float64) *SentimentScore {
  4290  	s.Mixed = &v
  4291  	return s
  4292  }
  4293  
  4294  // SetNegative sets the Negative field's value.
  4295  func (s *SentimentScore) SetNegative(v float64) *SentimentScore {
  4296  	s.Negative = &v
  4297  	return s
  4298  }
  4299  
  4300  // SetNeutral sets the Neutral field's value.
  4301  func (s *SentimentScore) SetNeutral(v float64) *SentimentScore {
  4302  	s.Neutral = &v
  4303  	return s
  4304  }
  4305  
  4306  // SetPositive sets the Positive field's value.
  4307  func (s *SentimentScore) SetPositive(v float64) *SentimentScore {
  4308  	s.Positive = &v
  4309  	return s
  4310  }
  4311  
  4312  // The state of the user's session with Amazon Lex V2.
  4313  type SessionState struct {
  4314  	_ struct{} `type:"structure"`
  4315  
  4316  	// One or more contexts that indicate to Amazon Lex V2 the context of a request.
  4317  	// When a context is active, Amazon Lex V2 considers intents with the matching
  4318  	// context as a trigger as the next intent in a session.
  4319  	ActiveContexts []*ActiveContext `locationName:"activeContexts" type:"list"`
  4320  
  4321  	// The next step that Amazon Lex V2 should take in the conversation with a user.
  4322  	DialogAction *DialogAction `locationName:"dialogAction" type:"structure"`
  4323  
  4324  	// The active intent that Amazon Lex V2 is processing.
  4325  	Intent *Intent `locationName:"intent" type:"structure"`
  4326  
  4327  	OriginatingRequestId *string `locationName:"originatingRequestId" min:"1" type:"string"`
  4328  
  4329  	// Map of key/value pairs representing session-specific context information.
  4330  	// It contains application information passed between Amazon Lex V2 and a client
  4331  	// application.
  4332  	SessionAttributes map[string]*string `locationName:"sessionAttributes" type:"map"`
  4333  }
  4334  
  4335  // String returns the string representation.
  4336  //
  4337  // API parameter values that are decorated as "sensitive" in the API will not
  4338  // be included in the string output. The member name will be present, but the
  4339  // value will be replaced with "sensitive".
  4340  func (s SessionState) String() string {
  4341  	return awsutil.Prettify(s)
  4342  }
  4343  
  4344  // GoString returns the string representation.
  4345  //
  4346  // API parameter values that are decorated as "sensitive" in the API will not
  4347  // be included in the string output. The member name will be present, but the
  4348  // value will be replaced with "sensitive".
  4349  func (s SessionState) GoString() string {
  4350  	return s.String()
  4351  }
  4352  
  4353  // Validate inspects the fields of the type to determine if they are valid.
  4354  func (s *SessionState) Validate() error {
  4355  	invalidParams := request.ErrInvalidParams{Context: "SessionState"}
  4356  	if s.OriginatingRequestId != nil && len(*s.OriginatingRequestId) < 1 {
  4357  		invalidParams.Add(request.NewErrParamMinLen("OriginatingRequestId", 1))
  4358  	}
  4359  	if s.ActiveContexts != nil {
  4360  		for i, v := range s.ActiveContexts {
  4361  			if v == nil {
  4362  				continue
  4363  			}
  4364  			if err := v.Validate(); err != nil {
  4365  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ActiveContexts", i), err.(request.ErrInvalidParams))
  4366  			}
  4367  		}
  4368  	}
  4369  	if s.DialogAction != nil {
  4370  		if err := s.DialogAction.Validate(); err != nil {
  4371  			invalidParams.AddNested("DialogAction", err.(request.ErrInvalidParams))
  4372  		}
  4373  	}
  4374  	if s.Intent != nil {
  4375  		if err := s.Intent.Validate(); err != nil {
  4376  			invalidParams.AddNested("Intent", err.(request.ErrInvalidParams))
  4377  		}
  4378  	}
  4379  
  4380  	if invalidParams.Len() > 0 {
  4381  		return invalidParams
  4382  	}
  4383  	return nil
  4384  }
  4385  
  4386  // SetActiveContexts sets the ActiveContexts field's value.
  4387  func (s *SessionState) SetActiveContexts(v []*ActiveContext) *SessionState {
  4388  	s.ActiveContexts = v
  4389  	return s
  4390  }
  4391  
  4392  // SetDialogAction sets the DialogAction field's value.
  4393  func (s *SessionState) SetDialogAction(v *DialogAction) *SessionState {
  4394  	s.DialogAction = v
  4395  	return s
  4396  }
  4397  
  4398  // SetIntent sets the Intent field's value.
  4399  func (s *SessionState) SetIntent(v *Intent) *SessionState {
  4400  	s.Intent = v
  4401  	return s
  4402  }
  4403  
  4404  // SetOriginatingRequestId sets the OriginatingRequestId field's value.
  4405  func (s *SessionState) SetOriginatingRequestId(v string) *SessionState {
  4406  	s.OriginatingRequestId = &v
  4407  	return s
  4408  }
  4409  
  4410  // SetSessionAttributes sets the SessionAttributes field's value.
  4411  func (s *SessionState) SetSessionAttributes(v map[string]*string) *SessionState {
  4412  	s.SessionAttributes = v
  4413  	return s
  4414  }
  4415  
  4416  // A value that Amazon Lex V2 uses to fulfill an intent.
  4417  type Slot struct {
  4418  	_ struct{} `type:"structure"`
  4419  
  4420  	// When the shape value is List, it indicates that the values field contains
  4421  	// a list of slot values. When the value is Scalar, it indicates that the value
  4422  	// field contains a single value.
  4423  	Shape *string `locationName:"shape" type:"string" enum:"Shape"`
  4424  
  4425  	// The current value of the slot.
  4426  	Value *Value `locationName:"value" type:"structure"`
  4427  
  4428  	// A list of one or more values that the user provided for the slot. For example,
  4429  	// if a for a slot that elicits pizza toppings, the values might be "pepperoni"
  4430  	// and "pineapple."
  4431  	Values []*Slot `locationName:"values" type:"list"`
  4432  }
  4433  
  4434  // String returns the string representation.
  4435  //
  4436  // API parameter values that are decorated as "sensitive" in the API will not
  4437  // be included in the string output. The member name will be present, but the
  4438  // value will be replaced with "sensitive".
  4439  func (s Slot) String() string {
  4440  	return awsutil.Prettify(s)
  4441  }
  4442  
  4443  // GoString returns the string representation.
  4444  //
  4445  // API parameter values that are decorated as "sensitive" in the API will not
  4446  // be included in the string output. The member name will be present, but the
  4447  // value will be replaced with "sensitive".
  4448  func (s Slot) GoString() string {
  4449  	return s.String()
  4450  }
  4451  
  4452  // Validate inspects the fields of the type to determine if they are valid.
  4453  func (s *Slot) Validate() error {
  4454  	invalidParams := request.ErrInvalidParams{Context: "Slot"}
  4455  	if s.Value != nil {
  4456  		if err := s.Value.Validate(); err != nil {
  4457  			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
  4458  		}
  4459  	}
  4460  	if s.Values != nil {
  4461  		for i, v := range s.Values {
  4462  			if v == nil {
  4463  				continue
  4464  			}
  4465  			if err := v.Validate(); err != nil {
  4466  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
  4467  			}
  4468  		}
  4469  	}
  4470  
  4471  	if invalidParams.Len() > 0 {
  4472  		return invalidParams
  4473  	}
  4474  	return nil
  4475  }
  4476  
  4477  // SetShape sets the Shape field's value.
  4478  func (s *Slot) SetShape(v string) *Slot {
  4479  	s.Shape = &v
  4480  	return s
  4481  }
  4482  
  4483  // SetValue sets the Value field's value.
  4484  func (s *Slot) SetValue(v *Value) *Slot {
  4485  	s.Value = v
  4486  	return s
  4487  }
  4488  
  4489  // SetValues sets the Values field's value.
  4490  func (s *Slot) SetValues(v []*Slot) *Slot {
  4491  	s.Values = v
  4492  	return s
  4493  }
  4494  
  4495  type StartConversationInput struct {
  4496  	_ struct{} `type:"structure" payload:"RequestEventStream"`
  4497  
  4498  	// The alias identifier in use for the bot that processes the request.
  4499  	//
  4500  	// BotAliasId is a required field
  4501  	BotAliasId *string `location:"uri" locationName:"botAliasId" type:"string" required:"true"`
  4502  
  4503  	// The identifier of the bot to process the request.
  4504  	//
  4505  	// BotId is a required field
  4506  	BotId *string `location:"uri" locationName:"botId" min:"10" type:"string" required:"true"`
  4507  
  4508  	// The conversation type that you are using the Amazon Lex V2. If the conversation
  4509  	// mode is AUDIO you can send both audio and DTMF information. If the mode is
  4510  	// TEXT you can only send text.
  4511  	ConversationMode *string `location:"header" locationName:"x-amz-lex-conversation-mode" type:"string" enum:"ConversationMode"`
  4512  
  4513  	// The locale where the session is in use.
  4514  	//
  4515  	// LocaleId is a required field
  4516  	LocaleId *string `location:"uri" locationName:"localeId" min:"1" type:"string" required:"true"`
  4517  
  4518  	// The identifier of the user session that is having the conversation.
  4519  	//
  4520  	// SessionId is a required field
  4521  	SessionId *string `location:"uri" locationName:"sessionId" min:"2" type:"string" required:"true"`
  4522  }
  4523  
  4524  // String returns the string representation.
  4525  //
  4526  // API parameter values that are decorated as "sensitive" in the API will not
  4527  // be included in the string output. The member name will be present, but the
  4528  // value will be replaced with "sensitive".
  4529  func (s StartConversationInput) String() string {
  4530  	return awsutil.Prettify(s)
  4531  }
  4532  
  4533  // GoString returns the string representation.
  4534  //
  4535  // API parameter values that are decorated as "sensitive" in the API will not
  4536  // be included in the string output. The member name will be present, but the
  4537  // value will be replaced with "sensitive".
  4538  func (s StartConversationInput) GoString() string {
  4539  	return s.String()
  4540  }
  4541  
  4542  // Validate inspects the fields of the type to determine if they are valid.
  4543  func (s *StartConversationInput) Validate() error {
  4544  	invalidParams := request.ErrInvalidParams{Context: "StartConversationInput"}
  4545  	if s.BotAliasId == nil {
  4546  		invalidParams.Add(request.NewErrParamRequired("BotAliasId"))
  4547  	}
  4548  	if s.BotAliasId != nil && len(*s.BotAliasId) < 1 {
  4549  		invalidParams.Add(request.NewErrParamMinLen("BotAliasId", 1))
  4550  	}
  4551  	if s.BotId == nil {
  4552  		invalidParams.Add(request.NewErrParamRequired("BotId"))
  4553  	}
  4554  	if s.BotId != nil && len(*s.BotId) < 10 {
  4555  		invalidParams.Add(request.NewErrParamMinLen("BotId", 10))
  4556  	}
  4557  	if s.LocaleId == nil {
  4558  		invalidParams.Add(request.NewErrParamRequired("LocaleId"))
  4559  	}
  4560  	if s.LocaleId != nil && len(*s.LocaleId) < 1 {
  4561  		invalidParams.Add(request.NewErrParamMinLen("LocaleId", 1))
  4562  	}
  4563  	if s.SessionId == nil {
  4564  		invalidParams.Add(request.NewErrParamRequired("SessionId"))
  4565  	}
  4566  	if s.SessionId != nil && len(*s.SessionId) < 2 {
  4567  		invalidParams.Add(request.NewErrParamMinLen("SessionId", 2))
  4568  	}
  4569  
  4570  	if invalidParams.Len() > 0 {
  4571  		return invalidParams
  4572  	}
  4573  	return nil
  4574  }
  4575  
  4576  // SetBotAliasId sets the BotAliasId field's value.
  4577  func (s *StartConversationInput) SetBotAliasId(v string) *StartConversationInput {
  4578  	s.BotAliasId = &v
  4579  	return s
  4580  }
  4581  
  4582  // SetBotId sets the BotId field's value.
  4583  func (s *StartConversationInput) SetBotId(v string) *StartConversationInput {
  4584  	s.BotId = &v
  4585  	return s
  4586  }
  4587  
  4588  // SetConversationMode sets the ConversationMode field's value.
  4589  func (s *StartConversationInput) SetConversationMode(v string) *StartConversationInput {
  4590  	s.ConversationMode = &v
  4591  	return s
  4592  }
  4593  
  4594  // SetLocaleId sets the LocaleId field's value.
  4595  func (s *StartConversationInput) SetLocaleId(v string) *StartConversationInput {
  4596  	s.LocaleId = &v
  4597  	return s
  4598  }
  4599  
  4600  // SetSessionId sets the SessionId field's value.
  4601  func (s *StartConversationInput) SetSessionId(v string) *StartConversationInput {
  4602  	s.SessionId = &v
  4603  	return s
  4604  }
  4605  
  4606  type StartConversationOutput struct {
  4607  	_ struct{} `type:"structure" payload:"ResponseEventStream"`
  4608  
  4609  	eventStream *StartConversationEventStream
  4610  }
  4611  
  4612  // String returns the string representation.
  4613  //
  4614  // API parameter values that are decorated as "sensitive" in the API will not
  4615  // be included in the string output. The member name will be present, but the
  4616  // value will be replaced with "sensitive".
  4617  func (s StartConversationOutput) String() string {
  4618  	return awsutil.Prettify(s)
  4619  }
  4620  
  4621  // GoString returns the string representation.
  4622  //
  4623  // API parameter values that are decorated as "sensitive" in the API will not
  4624  // be included in the string output. The member name will be present, but the
  4625  // value will be replaced with "sensitive".
  4626  func (s StartConversationOutput) GoString() string {
  4627  	return s.String()
  4628  }
  4629  
  4630  // GetStream returns the type to interact with the event stream.
  4631  func (s *StartConversationOutput) GetStream() *StartConversationEventStream {
  4632  	return s.eventStream
  4633  }
  4634  
  4635  // StartConversationRequestEventStreamEvent groups together all EventStream
  4636  // events writes for StartConversationRequestEventStream.
  4637  //
  4638  // These events are:
  4639  //
  4640  //     * AudioInputEvent
  4641  //     * ConfigurationEvent
  4642  //     * DTMFInputEvent
  4643  //     * DisconnectionEvent
  4644  //     * PlaybackCompletionEvent
  4645  //     * TextInputEvent
  4646  type StartConversationRequestEventStreamEvent interface {
  4647  	eventStartConversationRequestEventStream()
  4648  	eventstreamapi.Marshaler
  4649  	eventstreamapi.Unmarshaler
  4650  }
  4651  
  4652  // StartConversationRequestEventStreamWriter provides the interface for writing events to the stream.
  4653  // The default implementation for this interface will be StartConversationRequestEventStream.
  4654  //
  4655  // The writer's Close method must allow multiple concurrent calls.
  4656  //
  4657  // These events are:
  4658  //
  4659  //     * AudioInputEvent
  4660  //     * ConfigurationEvent
  4661  //     * DTMFInputEvent
  4662  //     * DisconnectionEvent
  4663  //     * PlaybackCompletionEvent
  4664  //     * TextInputEvent
  4665  type StartConversationRequestEventStreamWriter interface {
  4666  	// Sends writes events to the stream blocking until the event has been
  4667  	// written. An error is returned if the write fails.
  4668  	Send(aws.Context, StartConversationRequestEventStreamEvent) error
  4669  
  4670  	// Close will stop the writer writing to the event stream.
  4671  	Close() error
  4672  
  4673  	// Returns any error that has occurred while writing to the event stream.
  4674  	Err() error
  4675  }
  4676  
  4677  type writeStartConversationRequestEventStream struct {
  4678  	*eventstreamapi.StreamWriter
  4679  }
  4680  
  4681  func (w *writeStartConversationRequestEventStream) Send(ctx aws.Context, event StartConversationRequestEventStreamEvent) error {
  4682  	return w.StreamWriter.Send(ctx, event)
  4683  }
  4684  
  4685  func eventTypeForStartConversationRequestEventStreamEvent(event eventstreamapi.Marshaler) (string, error) {
  4686  	switch event.(type) {
  4687  	case *AudioInputEvent:
  4688  		return "AudioInputEvent", nil
  4689  	case *ConfigurationEvent:
  4690  		return "ConfigurationEvent", nil
  4691  	case *DTMFInputEvent:
  4692  		return "DTMFInputEvent", nil
  4693  	case *DisconnectionEvent:
  4694  		return "DisconnectionEvent", nil
  4695  	case *PlaybackCompletionEvent:
  4696  		return "PlaybackCompletionEvent", nil
  4697  	case *TextInputEvent:
  4698  		return "TextInputEvent", nil
  4699  	default:
  4700  		return "", awserr.New(
  4701  			request.ErrCodeSerialization,
  4702  			fmt.Sprintf("unknown event type, %T, for StartConversationRequestEventStream", event),
  4703  			nil,
  4704  		)
  4705  	}
  4706  }
  4707  
  4708  // StartConversationResponseEventStreamEvent groups together all EventStream
  4709  // events writes for StartConversationResponseEventStream.
  4710  //
  4711  // These events are:
  4712  //
  4713  //     * AudioResponseEvent
  4714  //     * HeartbeatEvent
  4715  //     * IntentResultEvent
  4716  //     * PlaybackInterruptionEvent
  4717  //     * TextResponseEvent
  4718  //     * TranscriptEvent
  4719  type StartConversationResponseEventStreamEvent interface {
  4720  	eventStartConversationResponseEventStream()
  4721  	eventstreamapi.Marshaler
  4722  	eventstreamapi.Unmarshaler
  4723  }
  4724  
  4725  // StartConversationResponseEventStreamReader provides the interface for reading to the stream. The
  4726  // default implementation for this interface will be StartConversationResponseEventStream.
  4727  //
  4728  // The reader's Close method must allow multiple concurrent calls.
  4729  //
  4730  // These events are:
  4731  //
  4732  //     * AudioResponseEvent
  4733  //     * HeartbeatEvent
  4734  //     * IntentResultEvent
  4735  //     * PlaybackInterruptionEvent
  4736  //     * TextResponseEvent
  4737  //     * TranscriptEvent
  4738  //     * StartConversationResponseEventStreamUnknownEvent
  4739  type StartConversationResponseEventStreamReader interface {
  4740  	// Returns a channel of events as they are read from the event stream.
  4741  	Events() <-chan StartConversationResponseEventStreamEvent
  4742  
  4743  	// Close will stop the reader reading events from the stream.
  4744  	Close() error
  4745  
  4746  	// Returns any error that has occurred while reading from the event stream.
  4747  	Err() error
  4748  }
  4749  
  4750  type readStartConversationResponseEventStream struct {
  4751  	eventReader *eventstreamapi.EventReader
  4752  	stream      chan StartConversationResponseEventStreamEvent
  4753  	err         *eventstreamapi.OnceError
  4754  
  4755  	done      chan struct{}
  4756  	closeOnce sync.Once
  4757  }
  4758  
  4759  func newReadStartConversationResponseEventStream(eventReader *eventstreamapi.EventReader) *readStartConversationResponseEventStream {
  4760  	r := &readStartConversationResponseEventStream{
  4761  		eventReader: eventReader,
  4762  		stream:      make(chan StartConversationResponseEventStreamEvent),
  4763  		done:        make(chan struct{}),
  4764  		err:         eventstreamapi.NewOnceError(),
  4765  	}
  4766  	go r.readEventStream()
  4767  
  4768  	return r
  4769  }
  4770  
  4771  // Close will close the underlying event stream reader.
  4772  func (r *readStartConversationResponseEventStream) Close() error {
  4773  	r.closeOnce.Do(r.safeClose)
  4774  	return r.Err()
  4775  }
  4776  
  4777  func (r *readStartConversationResponseEventStream) ErrorSet() <-chan struct{} {
  4778  	return r.err.ErrorSet()
  4779  }
  4780  
  4781  func (r *readStartConversationResponseEventStream) Closed() <-chan struct{} {
  4782  	return r.done
  4783  }
  4784  
  4785  func (r *readStartConversationResponseEventStream) safeClose() {
  4786  	close(r.done)
  4787  }
  4788  
  4789  func (r *readStartConversationResponseEventStream) Err() error {
  4790  	return r.err.Err()
  4791  }
  4792  
  4793  func (r *readStartConversationResponseEventStream) Events() <-chan StartConversationResponseEventStreamEvent {
  4794  	return r.stream
  4795  }
  4796  
  4797  func (r *readStartConversationResponseEventStream) readEventStream() {
  4798  	defer r.Close()
  4799  	defer close(r.stream)
  4800  
  4801  	for {
  4802  		event, err := r.eventReader.ReadEvent()
  4803  		if err != nil {
  4804  			if err == io.EOF {
  4805  				return
  4806  			}
  4807  			select {
  4808  			case <-r.done:
  4809  				// If closed already ignore the error
  4810  				return
  4811  			default:
  4812  			}
  4813  			if _, ok := err.(*eventstreamapi.UnknownMessageTypeError); ok {
  4814  				continue
  4815  			}
  4816  			r.err.SetError(err)
  4817  			return
  4818  		}
  4819  
  4820  		select {
  4821  		case r.stream <- event.(StartConversationResponseEventStreamEvent):
  4822  		case <-r.done:
  4823  			return
  4824  		}
  4825  	}
  4826  }
  4827  
  4828  type unmarshalerForStartConversationResponseEventStreamEvent struct {
  4829  	metadata protocol.ResponseMetadata
  4830  }
  4831  
  4832  func (u unmarshalerForStartConversationResponseEventStreamEvent) UnmarshalerForEventName(eventType string) (eventstreamapi.Unmarshaler, error) {
  4833  	switch eventType {
  4834  	case "AudioResponseEvent":
  4835  		return &AudioResponseEvent{}, nil
  4836  	case "HeartbeatEvent":
  4837  		return &HeartbeatEvent{}, nil
  4838  	case "IntentResultEvent":
  4839  		return &IntentResultEvent{}, nil
  4840  	case "PlaybackInterruptionEvent":
  4841  		return &PlaybackInterruptionEvent{}, nil
  4842  	case "TextResponseEvent":
  4843  		return &TextResponseEvent{}, nil
  4844  	case "TranscriptEvent":
  4845  		return &TranscriptEvent{}, nil
  4846  	case "AccessDeniedException":
  4847  		return newErrorAccessDeniedException(u.metadata).(eventstreamapi.Unmarshaler), nil
  4848  	case "BadGatewayException":
  4849  		return newErrorBadGatewayException(u.metadata).(eventstreamapi.Unmarshaler), nil
  4850  	case "ConflictException":
  4851  		return newErrorConflictException(u.metadata).(eventstreamapi.Unmarshaler), nil
  4852  	case "DependencyFailedException":
  4853  		return newErrorDependencyFailedException(u.metadata).(eventstreamapi.Unmarshaler), nil
  4854  	case "InternalServerException":
  4855  		return newErrorInternalServerException(u.metadata).(eventstreamapi.Unmarshaler), nil
  4856  	case "ResourceNotFoundException":
  4857  		return newErrorResourceNotFoundException(u.metadata).(eventstreamapi.Unmarshaler), nil
  4858  	case "ThrottlingException":
  4859  		return newErrorThrottlingException(u.metadata).(eventstreamapi.Unmarshaler), nil
  4860  	case "ValidationException":
  4861  		return newErrorValidationException(u.metadata).(eventstreamapi.Unmarshaler), nil
  4862  	default:
  4863  		return &StartConversationResponseEventStreamUnknownEvent{Type: eventType}, nil
  4864  	}
  4865  }
  4866  
  4867  // StartConversationResponseEventStreamUnknownEvent provides a failsafe event for the
  4868  // StartConversationResponseEventStream group of events when an unknown event is received.
  4869  type StartConversationResponseEventStreamUnknownEvent struct {
  4870  	Type    string
  4871  	Message eventstream.Message
  4872  }
  4873  
  4874  // The StartConversationResponseEventStreamUnknownEvent is and event in the StartConversationResponseEventStream
  4875  // group of events.
  4876  func (s *StartConversationResponseEventStreamUnknownEvent) eventStartConversationResponseEventStream() {
  4877  }
  4878  
  4879  // MarshalEvent marshals the type into an stream event value. This method
  4880  // should only used internally within the SDK's EventStream handling.
  4881  func (e *StartConversationResponseEventStreamUnknownEvent) MarshalEvent(pm protocol.PayloadMarshaler) (
  4882  	msg eventstream.Message, err error,
  4883  ) {
  4884  	return e.Message.Clone(), nil
  4885  }
  4886  
  4887  // UnmarshalEvent unmarshals the EventStream Message into the StartConversationResponseEventStream value.
  4888  // This method is only used internally within the SDK's EventStream handling.
  4889  func (e *StartConversationResponseEventStreamUnknownEvent) UnmarshalEvent(
  4890  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  4891  	msg eventstream.Message,
  4892  ) error {
  4893  	e.Message = msg.Clone()
  4894  	return nil
  4895  }
  4896  
  4897  // The event sent from your client application to Amazon Lex V2 with text input
  4898  // from the user.
  4899  type TextInputEvent struct {
  4900  	_ struct{} `type:"structure"`
  4901  
  4902  	// A timestamp set by the client of the date and time that the event was sent
  4903  	// to Amazon Lex V2.
  4904  	ClientTimestampMillis *int64 `locationName:"clientTimestampMillis" type:"long"`
  4905  
  4906  	// A unique identifier that your application assigns to the event. You can use
  4907  	// this to identify events in logs.
  4908  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  4909  
  4910  	// The text from the user. Amazon Lex V2 processes this as a complete statement.
  4911  	//
  4912  	// Text is a sensitive parameter and its value will be
  4913  	// replaced with "sensitive" in string returned by TextInputEvent's
  4914  	// String and GoString methods.
  4915  	//
  4916  	// Text is a required field
  4917  	Text *string `locationName:"text" min:"1" type:"string" required:"true" sensitive:"true"`
  4918  }
  4919  
  4920  // String returns the string representation.
  4921  //
  4922  // API parameter values that are decorated as "sensitive" in the API will not
  4923  // be included in the string output. The member name will be present, but the
  4924  // value will be replaced with "sensitive".
  4925  func (s TextInputEvent) String() string {
  4926  	return awsutil.Prettify(s)
  4927  }
  4928  
  4929  // GoString returns the string representation.
  4930  //
  4931  // API parameter values that are decorated as "sensitive" in the API will not
  4932  // be included in the string output. The member name will be present, but the
  4933  // value will be replaced with "sensitive".
  4934  func (s TextInputEvent) GoString() string {
  4935  	return s.String()
  4936  }
  4937  
  4938  // SetClientTimestampMillis sets the ClientTimestampMillis field's value.
  4939  func (s *TextInputEvent) SetClientTimestampMillis(v int64) *TextInputEvent {
  4940  	s.ClientTimestampMillis = &v
  4941  	return s
  4942  }
  4943  
  4944  // SetEventId sets the EventId field's value.
  4945  func (s *TextInputEvent) SetEventId(v string) *TextInputEvent {
  4946  	s.EventId = &v
  4947  	return s
  4948  }
  4949  
  4950  // SetText sets the Text field's value.
  4951  func (s *TextInputEvent) SetText(v string) *TextInputEvent {
  4952  	s.Text = &v
  4953  	return s
  4954  }
  4955  
  4956  // The TextInputEvent is and event in the StartConversationRequestEventStream group of events.
  4957  func (s *TextInputEvent) eventStartConversationRequestEventStream() {}
  4958  
  4959  // UnmarshalEvent unmarshals the EventStream Message into the TextInputEvent value.
  4960  // This method is only used internally within the SDK's EventStream handling.
  4961  func (s *TextInputEvent) UnmarshalEvent(
  4962  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  4963  	msg eventstream.Message,
  4964  ) error {
  4965  	if err := payloadUnmarshaler.UnmarshalPayload(
  4966  		bytes.NewReader(msg.Payload), s,
  4967  	); err != nil {
  4968  		return err
  4969  	}
  4970  	return nil
  4971  }
  4972  
  4973  // MarshalEvent marshals the type into an stream event value. This method
  4974  // should only used internally within the SDK's EventStream handling.
  4975  func (s *TextInputEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  4976  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  4977  	var buf bytes.Buffer
  4978  	if err = pm.MarshalPayload(&buf, s); err != nil {
  4979  		return eventstream.Message{}, err
  4980  	}
  4981  	msg.Payload = buf.Bytes()
  4982  	return msg, err
  4983  }
  4984  
  4985  // The event sent from Amazon Lex V2 to your application with text to present
  4986  // to the user.
  4987  type TextResponseEvent struct {
  4988  	_ struct{} `type:"structure"`
  4989  
  4990  	// A unique identifier of the event sent by Amazon Lex V2. The identifier is
  4991  	// in the form RESPONSE-N, where N is a number starting with one and incremented
  4992  	// for each event sent by Amazon Lex V2 in the current session.
  4993  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  4994  
  4995  	// A list of messages to send to the user. Messages are ordered based on the
  4996  	// order that you returned the messages from your Lambda function or the order
  4997  	// that the messages are defined in the bot.
  4998  	Messages []*Message `locationName:"messages" type:"list"`
  4999  }
  5000  
  5001  // String returns the string representation.
  5002  //
  5003  // API parameter values that are decorated as "sensitive" in the API will not
  5004  // be included in the string output. The member name will be present, but the
  5005  // value will be replaced with "sensitive".
  5006  func (s TextResponseEvent) String() string {
  5007  	return awsutil.Prettify(s)
  5008  }
  5009  
  5010  // GoString returns the string representation.
  5011  //
  5012  // API parameter values that are decorated as "sensitive" in the API will not
  5013  // be included in the string output. The member name will be present, but the
  5014  // value will be replaced with "sensitive".
  5015  func (s TextResponseEvent) GoString() string {
  5016  	return s.String()
  5017  }
  5018  
  5019  // SetEventId sets the EventId field's value.
  5020  func (s *TextResponseEvent) SetEventId(v string) *TextResponseEvent {
  5021  	s.EventId = &v
  5022  	return s
  5023  }
  5024  
  5025  // SetMessages sets the Messages field's value.
  5026  func (s *TextResponseEvent) SetMessages(v []*Message) *TextResponseEvent {
  5027  	s.Messages = v
  5028  	return s
  5029  }
  5030  
  5031  // The TextResponseEvent is and event in the StartConversationResponseEventStream group of events.
  5032  func (s *TextResponseEvent) eventStartConversationResponseEventStream() {}
  5033  
  5034  // UnmarshalEvent unmarshals the EventStream Message into the TextResponseEvent value.
  5035  // This method is only used internally within the SDK's EventStream handling.
  5036  func (s *TextResponseEvent) UnmarshalEvent(
  5037  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  5038  	msg eventstream.Message,
  5039  ) error {
  5040  	if err := payloadUnmarshaler.UnmarshalPayload(
  5041  		bytes.NewReader(msg.Payload), s,
  5042  	); err != nil {
  5043  		return err
  5044  	}
  5045  	return nil
  5046  }
  5047  
  5048  // MarshalEvent marshals the type into an stream event value. This method
  5049  // should only used internally within the SDK's EventStream handling.
  5050  func (s *TextResponseEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  5051  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  5052  	var buf bytes.Buffer
  5053  	if err = pm.MarshalPayload(&buf, s); err != nil {
  5054  		return eventstream.Message{}, err
  5055  	}
  5056  	msg.Payload = buf.Bytes()
  5057  	return msg, err
  5058  }
  5059  
  5060  type ThrottlingException struct {
  5061  	_            struct{}                  `type:"structure"`
  5062  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  5063  
  5064  	Message_ *string `locationName:"message" type:"string"`
  5065  }
  5066  
  5067  // String returns the string representation.
  5068  //
  5069  // API parameter values that are decorated as "sensitive" in the API will not
  5070  // be included in the string output. The member name will be present, but the
  5071  // value will be replaced with "sensitive".
  5072  func (s ThrottlingException) String() string {
  5073  	return awsutil.Prettify(s)
  5074  }
  5075  
  5076  // GoString returns the string representation.
  5077  //
  5078  // API parameter values that are decorated as "sensitive" in the API will not
  5079  // be included in the string output. The member name will be present, but the
  5080  // value will be replaced with "sensitive".
  5081  func (s ThrottlingException) GoString() string {
  5082  	return s.String()
  5083  }
  5084  
  5085  // The ThrottlingException is and event in the StartConversationResponseEventStream group of events.
  5086  func (s *ThrottlingException) eventStartConversationResponseEventStream() {}
  5087  
  5088  // UnmarshalEvent unmarshals the EventStream Message into the ThrottlingException value.
  5089  // This method is only used internally within the SDK's EventStream handling.
  5090  func (s *ThrottlingException) UnmarshalEvent(
  5091  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  5092  	msg eventstream.Message,
  5093  ) error {
  5094  	if err := payloadUnmarshaler.UnmarshalPayload(
  5095  		bytes.NewReader(msg.Payload), s,
  5096  	); err != nil {
  5097  		return err
  5098  	}
  5099  	return nil
  5100  }
  5101  
  5102  // MarshalEvent marshals the type into an stream event value. This method
  5103  // should only used internally within the SDK's EventStream handling.
  5104  func (s *ThrottlingException) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  5105  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.ExceptionMessageType))
  5106  	var buf bytes.Buffer
  5107  	if err = pm.MarshalPayload(&buf, s); err != nil {
  5108  		return eventstream.Message{}, err
  5109  	}
  5110  	msg.Payload = buf.Bytes()
  5111  	return msg, err
  5112  }
  5113  
  5114  func newErrorThrottlingException(v protocol.ResponseMetadata) error {
  5115  	return &ThrottlingException{
  5116  		RespMetadata: v,
  5117  	}
  5118  }
  5119  
  5120  // Code returns the exception type name.
  5121  func (s *ThrottlingException) Code() string {
  5122  	return "ThrottlingException"
  5123  }
  5124  
  5125  // Message returns the exception's message.
  5126  func (s *ThrottlingException) Message() string {
  5127  	if s.Message_ != nil {
  5128  		return *s.Message_
  5129  	}
  5130  	return ""
  5131  }
  5132  
  5133  // OrigErr always returns nil, satisfies awserr.Error interface.
  5134  func (s *ThrottlingException) OrigErr() error {
  5135  	return nil
  5136  }
  5137  
  5138  func (s *ThrottlingException) Error() string {
  5139  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  5140  }
  5141  
  5142  // Status code returns the HTTP status code for the request's response error.
  5143  func (s *ThrottlingException) StatusCode() int {
  5144  	return s.RespMetadata.StatusCode
  5145  }
  5146  
  5147  // RequestID returns the service's response RequestID for request.
  5148  func (s *ThrottlingException) RequestID() string {
  5149  	return s.RespMetadata.RequestID
  5150  }
  5151  
  5152  // Event sent from Amazon Lex V2 to your client application that contains a
  5153  // transcript of voice audio.
  5154  type TranscriptEvent struct {
  5155  	_ struct{} `type:"structure"`
  5156  
  5157  	// A unique identifier of the event sent by Amazon Lex V2. The identifier is
  5158  	// in the form RESPONSE-N, where N is a number starting with one and incremented
  5159  	// for each event sent by Amazon Lex V2 in the current session.
  5160  	EventId *string `locationName:"eventId" min:"2" type:"string"`
  5161  
  5162  	// The transcript of the voice audio from the user.
  5163  	Transcript *string `locationName:"transcript" type:"string"`
  5164  }
  5165  
  5166  // String returns the string representation.
  5167  //
  5168  // API parameter values that are decorated as "sensitive" in the API will not
  5169  // be included in the string output. The member name will be present, but the
  5170  // value will be replaced with "sensitive".
  5171  func (s TranscriptEvent) String() string {
  5172  	return awsutil.Prettify(s)
  5173  }
  5174  
  5175  // GoString returns the string representation.
  5176  //
  5177  // API parameter values that are decorated as "sensitive" in the API will not
  5178  // be included in the string output. The member name will be present, but the
  5179  // value will be replaced with "sensitive".
  5180  func (s TranscriptEvent) GoString() string {
  5181  	return s.String()
  5182  }
  5183  
  5184  // SetEventId sets the EventId field's value.
  5185  func (s *TranscriptEvent) SetEventId(v string) *TranscriptEvent {
  5186  	s.EventId = &v
  5187  	return s
  5188  }
  5189  
  5190  // SetTranscript sets the Transcript field's value.
  5191  func (s *TranscriptEvent) SetTranscript(v string) *TranscriptEvent {
  5192  	s.Transcript = &v
  5193  	return s
  5194  }
  5195  
  5196  // The TranscriptEvent is and event in the StartConversationResponseEventStream group of events.
  5197  func (s *TranscriptEvent) eventStartConversationResponseEventStream() {}
  5198  
  5199  // UnmarshalEvent unmarshals the EventStream Message into the TranscriptEvent value.
  5200  // This method is only used internally within the SDK's EventStream handling.
  5201  func (s *TranscriptEvent) UnmarshalEvent(
  5202  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  5203  	msg eventstream.Message,
  5204  ) error {
  5205  	if err := payloadUnmarshaler.UnmarshalPayload(
  5206  		bytes.NewReader(msg.Payload), s,
  5207  	); err != nil {
  5208  		return err
  5209  	}
  5210  	return nil
  5211  }
  5212  
  5213  // MarshalEvent marshals the type into an stream event value. This method
  5214  // should only used internally within the SDK's EventStream handling.
  5215  func (s *TranscriptEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  5216  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  5217  	var buf bytes.Buffer
  5218  	if err = pm.MarshalPayload(&buf, s); err != nil {
  5219  		return eventstream.Message{}, err
  5220  	}
  5221  	msg.Payload = buf.Bytes()
  5222  	return msg, err
  5223  }
  5224  
  5225  type ValidationException struct {
  5226  	_            struct{}                  `type:"structure"`
  5227  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  5228  
  5229  	Message_ *string `locationName:"message" type:"string"`
  5230  }
  5231  
  5232  // String returns the string representation.
  5233  //
  5234  // API parameter values that are decorated as "sensitive" in the API will not
  5235  // be included in the string output. The member name will be present, but the
  5236  // value will be replaced with "sensitive".
  5237  func (s ValidationException) String() string {
  5238  	return awsutil.Prettify(s)
  5239  }
  5240  
  5241  // GoString returns the string representation.
  5242  //
  5243  // API parameter values that are decorated as "sensitive" in the API will not
  5244  // be included in the string output. The member name will be present, but the
  5245  // value will be replaced with "sensitive".
  5246  func (s ValidationException) GoString() string {
  5247  	return s.String()
  5248  }
  5249  
  5250  // The ValidationException is and event in the StartConversationResponseEventStream group of events.
  5251  func (s *ValidationException) eventStartConversationResponseEventStream() {}
  5252  
  5253  // UnmarshalEvent unmarshals the EventStream Message into the ValidationException value.
  5254  // This method is only used internally within the SDK's EventStream handling.
  5255  func (s *ValidationException) UnmarshalEvent(
  5256  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  5257  	msg eventstream.Message,
  5258  ) error {
  5259  	if err := payloadUnmarshaler.UnmarshalPayload(
  5260  		bytes.NewReader(msg.Payload), s,
  5261  	); err != nil {
  5262  		return err
  5263  	}
  5264  	return nil
  5265  }
  5266  
  5267  // MarshalEvent marshals the type into an stream event value. This method
  5268  // should only used internally within the SDK's EventStream handling.
  5269  func (s *ValidationException) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  5270  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.ExceptionMessageType))
  5271  	var buf bytes.Buffer
  5272  	if err = pm.MarshalPayload(&buf, s); err != nil {
  5273  		return eventstream.Message{}, err
  5274  	}
  5275  	msg.Payload = buf.Bytes()
  5276  	return msg, err
  5277  }
  5278  
  5279  func newErrorValidationException(v protocol.ResponseMetadata) error {
  5280  	return &ValidationException{
  5281  		RespMetadata: v,
  5282  	}
  5283  }
  5284  
  5285  // Code returns the exception type name.
  5286  func (s *ValidationException) Code() string {
  5287  	return "ValidationException"
  5288  }
  5289  
  5290  // Message returns the exception's message.
  5291  func (s *ValidationException) Message() string {
  5292  	if s.Message_ != nil {
  5293  		return *s.Message_
  5294  	}
  5295  	return ""
  5296  }
  5297  
  5298  // OrigErr always returns nil, satisfies awserr.Error interface.
  5299  func (s *ValidationException) OrigErr() error {
  5300  	return nil
  5301  }
  5302  
  5303  func (s *ValidationException) Error() string {
  5304  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  5305  }
  5306  
  5307  // Status code returns the HTTP status code for the request's response error.
  5308  func (s *ValidationException) StatusCode() int {
  5309  	return s.RespMetadata.StatusCode
  5310  }
  5311  
  5312  // RequestID returns the service's response RequestID for request.
  5313  func (s *ValidationException) RequestID() string {
  5314  	return s.RespMetadata.RequestID
  5315  }
  5316  
  5317  // The value of a slot.
  5318  type Value struct {
  5319  	_ struct{} `type:"structure"`
  5320  
  5321  	// The value that Amazon Lex V2 determines for the slot. The actual value depends
  5322  	// on the setting of the value selection strategy for the bot. You can choose
  5323  	// to use the value entered by the user, or you can have Amazon Lex V2 choose
  5324  	// the first value in the resolvedValues list.
  5325  	//
  5326  	// InterpretedValue is a required field
  5327  	InterpretedValue *string `locationName:"interpretedValue" min:"1" type:"string" required:"true"`
  5328  
  5329  	// The text of the utterance from the user that was entered for the slot.
  5330  	OriginalValue *string `locationName:"originalValue" min:"1" type:"string"`
  5331  
  5332  	// A list of additional values that have been recognized for the slot.
  5333  	ResolvedValues []*string `locationName:"resolvedValues" type:"list"`
  5334  }
  5335  
  5336  // String returns the string representation.
  5337  //
  5338  // API parameter values that are decorated as "sensitive" in the API will not
  5339  // be included in the string output. The member name will be present, but the
  5340  // value will be replaced with "sensitive".
  5341  func (s Value) String() string {
  5342  	return awsutil.Prettify(s)
  5343  }
  5344  
  5345  // GoString returns the string representation.
  5346  //
  5347  // API parameter values that are decorated as "sensitive" in the API will not
  5348  // be included in the string output. The member name will be present, but the
  5349  // value will be replaced with "sensitive".
  5350  func (s Value) GoString() string {
  5351  	return s.String()
  5352  }
  5353  
  5354  // Validate inspects the fields of the type to determine if they are valid.
  5355  func (s *Value) Validate() error {
  5356  	invalidParams := request.ErrInvalidParams{Context: "Value"}
  5357  	if s.InterpretedValue == nil {
  5358  		invalidParams.Add(request.NewErrParamRequired("InterpretedValue"))
  5359  	}
  5360  	if s.InterpretedValue != nil && len(*s.InterpretedValue) < 1 {
  5361  		invalidParams.Add(request.NewErrParamMinLen("InterpretedValue", 1))
  5362  	}
  5363  	if s.OriginalValue != nil && len(*s.OriginalValue) < 1 {
  5364  		invalidParams.Add(request.NewErrParamMinLen("OriginalValue", 1))
  5365  	}
  5366  
  5367  	if invalidParams.Len() > 0 {
  5368  		return invalidParams
  5369  	}
  5370  	return nil
  5371  }
  5372  
  5373  // SetInterpretedValue sets the InterpretedValue field's value.
  5374  func (s *Value) SetInterpretedValue(v string) *Value {
  5375  	s.InterpretedValue = &v
  5376  	return s
  5377  }
  5378  
  5379  // SetOriginalValue sets the OriginalValue field's value.
  5380  func (s *Value) SetOriginalValue(v string) *Value {
  5381  	s.OriginalValue = &v
  5382  	return s
  5383  }
  5384  
  5385  // SetResolvedValues sets the ResolvedValues field's value.
  5386  func (s *Value) SetResolvedValues(v []*string) *Value {
  5387  	s.ResolvedValues = v
  5388  	return s
  5389  }
  5390  
  5391  const (
  5392  	// ConfirmationStateConfirmed is a ConfirmationState enum value
  5393  	ConfirmationStateConfirmed = "Confirmed"
  5394  
  5395  	// ConfirmationStateDenied is a ConfirmationState enum value
  5396  	ConfirmationStateDenied = "Denied"
  5397  
  5398  	// ConfirmationStateNone is a ConfirmationState enum value
  5399  	ConfirmationStateNone = "None"
  5400  )
  5401  
  5402  // ConfirmationState_Values returns all elements of the ConfirmationState enum
  5403  func ConfirmationState_Values() []string {
  5404  	return []string{
  5405  		ConfirmationStateConfirmed,
  5406  		ConfirmationStateDenied,
  5407  		ConfirmationStateNone,
  5408  	}
  5409  }
  5410  
  5411  const (
  5412  	// ConversationModeAudio is a ConversationMode enum value
  5413  	ConversationModeAudio = "AUDIO"
  5414  
  5415  	// ConversationModeText is a ConversationMode enum value
  5416  	ConversationModeText = "TEXT"
  5417  )
  5418  
  5419  // ConversationMode_Values returns all elements of the ConversationMode enum
  5420  func ConversationMode_Values() []string {
  5421  	return []string{
  5422  		ConversationModeAudio,
  5423  		ConversationModeText,
  5424  	}
  5425  }
  5426  
  5427  const (
  5428  	// DialogActionTypeClose is a DialogActionType enum value
  5429  	DialogActionTypeClose = "Close"
  5430  
  5431  	// DialogActionTypeConfirmIntent is a DialogActionType enum value
  5432  	DialogActionTypeConfirmIntent = "ConfirmIntent"
  5433  
  5434  	// DialogActionTypeDelegate is a DialogActionType enum value
  5435  	DialogActionTypeDelegate = "Delegate"
  5436  
  5437  	// DialogActionTypeElicitIntent is a DialogActionType enum value
  5438  	DialogActionTypeElicitIntent = "ElicitIntent"
  5439  
  5440  	// DialogActionTypeElicitSlot is a DialogActionType enum value
  5441  	DialogActionTypeElicitSlot = "ElicitSlot"
  5442  
  5443  	// DialogActionTypeNone is a DialogActionType enum value
  5444  	DialogActionTypeNone = "None"
  5445  )
  5446  
  5447  // DialogActionType_Values returns all elements of the DialogActionType enum
  5448  func DialogActionType_Values() []string {
  5449  	return []string{
  5450  		DialogActionTypeClose,
  5451  		DialogActionTypeConfirmIntent,
  5452  		DialogActionTypeDelegate,
  5453  		DialogActionTypeElicitIntent,
  5454  		DialogActionTypeElicitSlot,
  5455  		DialogActionTypeNone,
  5456  	}
  5457  }
  5458  
  5459  const (
  5460  	// InputModeText is a InputMode enum value
  5461  	InputModeText = "Text"
  5462  
  5463  	// InputModeSpeech is a InputMode enum value
  5464  	InputModeSpeech = "Speech"
  5465  
  5466  	// InputModeDtmf is a InputMode enum value
  5467  	InputModeDtmf = "DTMF"
  5468  )
  5469  
  5470  // InputMode_Values returns all elements of the InputMode enum
  5471  func InputMode_Values() []string {
  5472  	return []string{
  5473  		InputModeText,
  5474  		InputModeSpeech,
  5475  		InputModeDtmf,
  5476  	}
  5477  }
  5478  
  5479  const (
  5480  	// IntentStateFailed is a IntentState enum value
  5481  	IntentStateFailed = "Failed"
  5482  
  5483  	// IntentStateFulfilled is a IntentState enum value
  5484  	IntentStateFulfilled = "Fulfilled"
  5485  
  5486  	// IntentStateInProgress is a IntentState enum value
  5487  	IntentStateInProgress = "InProgress"
  5488  
  5489  	// IntentStateReadyForFulfillment is a IntentState enum value
  5490  	IntentStateReadyForFulfillment = "ReadyForFulfillment"
  5491  
  5492  	// IntentStateWaiting is a IntentState enum value
  5493  	IntentStateWaiting = "Waiting"
  5494  
  5495  	// IntentStateFulfillmentInProgress is a IntentState enum value
  5496  	IntentStateFulfillmentInProgress = "FulfillmentInProgress"
  5497  )
  5498  
  5499  // IntentState_Values returns all elements of the IntentState enum
  5500  func IntentState_Values() []string {
  5501  	return []string{
  5502  		IntentStateFailed,
  5503  		IntentStateFulfilled,
  5504  		IntentStateInProgress,
  5505  		IntentStateReadyForFulfillment,
  5506  		IntentStateWaiting,
  5507  		IntentStateFulfillmentInProgress,
  5508  	}
  5509  }
  5510  
  5511  const (
  5512  	// MessageContentTypeCustomPayload is a MessageContentType enum value
  5513  	MessageContentTypeCustomPayload = "CustomPayload"
  5514  
  5515  	// MessageContentTypeImageResponseCard is a MessageContentType enum value
  5516  	MessageContentTypeImageResponseCard = "ImageResponseCard"
  5517  
  5518  	// MessageContentTypePlainText is a MessageContentType enum value
  5519  	MessageContentTypePlainText = "PlainText"
  5520  
  5521  	// MessageContentTypeSsml is a MessageContentType enum value
  5522  	MessageContentTypeSsml = "SSML"
  5523  )
  5524  
  5525  // MessageContentType_Values returns all elements of the MessageContentType enum
  5526  func MessageContentType_Values() []string {
  5527  	return []string{
  5528  		MessageContentTypeCustomPayload,
  5529  		MessageContentTypeImageResponseCard,
  5530  		MessageContentTypePlainText,
  5531  		MessageContentTypeSsml,
  5532  	}
  5533  }
  5534  
  5535  const (
  5536  	// PlaybackInterruptionReasonDtmfStartDetected is a PlaybackInterruptionReason enum value
  5537  	PlaybackInterruptionReasonDtmfStartDetected = "DTMF_START_DETECTED"
  5538  
  5539  	// PlaybackInterruptionReasonTextDetected is a PlaybackInterruptionReason enum value
  5540  	PlaybackInterruptionReasonTextDetected = "TEXT_DETECTED"
  5541  
  5542  	// PlaybackInterruptionReasonVoiceStartDetected is a PlaybackInterruptionReason enum value
  5543  	PlaybackInterruptionReasonVoiceStartDetected = "VOICE_START_DETECTED"
  5544  )
  5545  
  5546  // PlaybackInterruptionReason_Values returns all elements of the PlaybackInterruptionReason enum
  5547  func PlaybackInterruptionReason_Values() []string {
  5548  	return []string{
  5549  		PlaybackInterruptionReasonDtmfStartDetected,
  5550  		PlaybackInterruptionReasonTextDetected,
  5551  		PlaybackInterruptionReasonVoiceStartDetected,
  5552  	}
  5553  }
  5554  
  5555  const (
  5556  	// SentimentTypeMixed is a SentimentType enum value
  5557  	SentimentTypeMixed = "MIXED"
  5558  
  5559  	// SentimentTypeNegative is a SentimentType enum value
  5560  	SentimentTypeNegative = "NEGATIVE"
  5561  
  5562  	// SentimentTypeNeutral is a SentimentType enum value
  5563  	SentimentTypeNeutral = "NEUTRAL"
  5564  
  5565  	// SentimentTypePositive is a SentimentType enum value
  5566  	SentimentTypePositive = "POSITIVE"
  5567  )
  5568  
  5569  // SentimentType_Values returns all elements of the SentimentType enum
  5570  func SentimentType_Values() []string {
  5571  	return []string{
  5572  		SentimentTypeMixed,
  5573  		SentimentTypeNegative,
  5574  		SentimentTypeNeutral,
  5575  		SentimentTypePositive,
  5576  	}
  5577  }
  5578  
  5579  const (
  5580  	// ShapeScalar is a Shape enum value
  5581  	ShapeScalar = "Scalar"
  5582  
  5583  	// ShapeList is a Shape enum value
  5584  	ShapeList = "List"
  5585  )
  5586  
  5587  // Shape_Values returns all elements of the Shape enum
  5588  func Shape_Values() []string {
  5589  	return []string{
  5590  		ShapeScalar,
  5591  		ShapeList,
  5592  	}
  5593  }