// Code generated by smithy-go-codegen DO NOT EDIT. package lexruntimeservice import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/aws-sdk-go-v2/service/lexruntimeservice/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" "io" ) // Creates a new session or modifies an existing session with an Amazon Lex bot. // Use this operation to enable your application to set the state of the bot. For // more information, see Managing Sessions (https://docs.aws.amazon.com/lex/latest/dg/how-session-api.html) // . func (c *Client) PutSession(ctx context.Context, params *PutSessionInput, optFns ...func(*Options)) (*PutSessionOutput, error) { if params == nil { params = &PutSessionInput{} } result, metadata, err := c.invokeOperation(ctx, "PutSession", params, optFns, c.addOperationPutSessionMiddlewares) if err != nil { return nil, err } out := result.(*PutSessionOutput) out.ResultMetadata = metadata return out, nil } type PutSessionInput struct { // The alias in use for the bot that contains the session data. // // This member is required. BotAlias *string // The name of the bot that contains the session data. // // This member is required. BotName *string // The ID of the client application user. Amazon Lex uses this to identify a // user's conversation with your bot. // // This member is required. UserId *string // The message that Amazon Lex returns in the response can be either text or // speech based depending on the value of this field. // - If the value is text/plain; charset=utf-8 , Amazon Lex returns text in the // response. // - If the value begins with audio/ , Amazon Lex returns speech in the response. // Amazon Lex uses Amazon Polly to generate the speech in the configuration that // you specify. For example, if you specify audio/mpeg as the value, Amazon Lex // returns speech in the MPEG format. // - If the value is audio/pcm , the speech is returned as audio/pcm in 16-bit, // little endian format. // - The following are the accepted values: // - audio/mpeg // - audio/ogg // - audio/pcm // - audio/* (defaults to mpeg) // - text/plain; charset=utf-8 Accept *string // A list of contexts active for the request. A context can be activated when a // previous intent is fulfilled, or by including the context in the request, If you // don't specify a list of contexts, Amazon Lex will use the current list of // contexts for the session. If you specify an empty list, all contexts for the // session are cleared. ActiveContexts []types.ActiveContext // Sets the next action that the bot should take to fulfill the conversation. DialogAction *types.DialogAction // A summary of the recent intents for the bot. You can use the intent summary // view to set a checkpoint label on an intent and modify attributes of intents. // You can also use it to remove or add intent summary objects to the list. An // intent that you modify or add to the list must make sense for the bot. For // example, the intent name must be valid for the bot. You must provide valid // values for: // - intentName // - slot names // - slotToElict // If you send the recentIntentSummaryView parameter in a PutSession request, the // contents of the new summary view replaces the old summary view. For example, if // a GetSession request returns three intents in the summary view and you call // PutSession with one intent in the summary view, the next call to GetSession // will only return one intent. RecentIntentSummaryView []types.IntentSummary // Map of key/value pairs representing the session-specific context information. // It contains application information passed between Amazon Lex and a client // application. SessionAttributes map[string]string noSmithyDocumentSerde } type PutSessionOutput struct { // A list of active contexts for the session. // // This value conforms to the media type: application/json ActiveContexts *string // The audio version of the message to convey to the user. AudioStream io.ReadCloser // Content type as specified in the Accept HTTP header in the request. ContentType *string // - ConfirmIntent - Amazon Lex is expecting a "yes" or "no" response to confirm // the intent before fulfilling an intent. // - ElicitIntent - Amazon Lex wants to elicit the user's intent. // - ElicitSlot - Amazon Lex is expecting the value of a slot for the current // intent. // - Failed - Conveys that the conversation with the user has failed. This can // happen for various reasons, including the user does not provide an appropriate // response to prompts from the service, or if the Lambda function fails to fulfill // the intent. // - Fulfilled - Conveys that the Lambda function has sucessfully fulfilled the // intent. // - ReadyForFulfillment - Conveys that the client has to fulfill the intent. DialogState types.DialogState // The next message that should be presented to the user. The encodedMessage field // is base-64 encoded. You must decode the field before you can use the value. EncodedMessage *string // The name of the current intent. IntentName *string // The next message that should be presented to the user. You can only use this // field in the de-DE, en-AU, en-GB, en-US, es-419, es-ES, es-US, fr-CA, fr-FR, and // it-IT locales. In all other locales, the message field is null. You should use // the encodedMessage field instead. // // Deprecated: The message field is deprecated, use the encodedMessage field // instead. The message field is available only in the de-DE, en-AU, en-GB, en-US, // es-419, es-ES, es-US, fr-CA, fr-FR and it-IT locales. Message *string // The format of the response message. One of the following values: // - PlainText - The message contains plain UTF-8 text. // - CustomPayload - The message is a custom format for the client. // - SSML - The message contains text formatted for voice output. // - Composite - The message contains an escaped JSON object containing one or // more messages from the groups that messages were assigned to when the intent was // created. MessageFormat types.MessageFormatType // Map of key/value pairs representing session-specific context information. // // This value conforms to the media type: application/json SessionAttributes *string // A unique identifier for the session. SessionId *string // If the dialogState is ElicitSlot , returns the name of the slot for which Amazon // Lex is eliciting a value. SlotToElicit *string // Map of zero or more intent slots Amazon Lex detected from the user input during // the conversation. Amazon Lex creates a resolution list containing likely values // for a slot. The value that it returns is determined by the // valueSelectionStrategy selected when the slot type was created or updated. If // valueSelectionStrategy is set to ORIGINAL_VALUE , the value provided by the user // is returned, if the user value is similar to the slot values. If // valueSelectionStrategy is set to TOP_RESOLUTION Amazon Lex returns the first // value in the resolution list or, if there is no resolution list, null. If you // don't specify a valueSelectionStrategy the default is ORIGINAL_VALUE . // // This value conforms to the media type: application/json Slots *string // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata noSmithyDocumentSerde } func (c *Client) addOperationPutSessionMiddlewares(stack *middleware.Stack, options Options) (err error) { err = stack.Serialize.Add(&awsRestjson1_serializeOpPutSession{}, middleware.After) if err != nil { return err } err = stack.Deserialize.Add(&awsRestjson1_deserializeOpPutSession{}, middleware.After) if err != nil { return err } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { return err } if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { return err } if err = addRetryMiddlewares(stack, options); err != nil { return err } if err = addHTTPSignerV4Middleware(stack, options); err != nil { return err } if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { return err } if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { return err } if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { return err } if err = addOpPutSessionValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutSession(options.Region), middleware.Before); err != nil { return err } if err = awsmiddleware.AddRecursionDetection(stack); err != nil { return err } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { return err } if err = addRequestResponseLogging(stack, options); err != nil { return err } return nil } func newServiceMetadataMiddleware_opPutSession(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, SigningName: "lex", OperationName: "PutSession", } }