/* * Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.lexmodelbuilding; import org.w3c.dom.*; import java.net.*; import java.util.*; import javax.annotation.Generated; import org.apache.commons.logging.*; import com.amazonaws.*; import com.amazonaws.annotation.SdkInternalApi; import com.amazonaws.auth.*; import com.amazonaws.handlers.*; import com.amazonaws.http.*; import com.amazonaws.internal.*; import com.amazonaws.internal.auth.*; import com.amazonaws.metrics.*; import com.amazonaws.regions.*; import com.amazonaws.transform.*; import com.amazonaws.util.*; import com.amazonaws.protocol.json.*; import com.amazonaws.util.AWSRequestMetrics.Field; import com.amazonaws.annotation.ThreadSafe; import com.amazonaws.client.AwsSyncClientParams; import com.amazonaws.services.lexmodelbuilding.AmazonLexModelBuildingClientBuilder; import com.amazonaws.AmazonServiceException; import com.amazonaws.services.lexmodelbuilding.model.*; import com.amazonaws.services.lexmodelbuilding.model.transform.*; /** * Client for accessing Amazon Lex Model Building Service. All service calls made using this client are blocking, and * will not return until the service call completes. * <p> * <fullname>Amazon Lex Build-Time Actions</fullname> * <p> * Amazon Lex is an AWS service for building conversational voice and text interfaces. Use these actions to create, * update, and delete conversational bots for new and existing client applications. * </p> */ @ThreadSafe @Generated("com.amazonaws:aws-java-sdk-code-generator") public class AmazonLexModelBuildingClient extends AmazonWebServiceClient implements AmazonLexModelBuilding { /** Provider for AWS credentials. */ private final AWSCredentialsProvider awsCredentialsProvider; private static final Log log = LogFactory.getLog(AmazonLexModelBuilding.class); /** Default signing name for the service. */ private static final String DEFAULT_SIGNING_NAME = "lex"; /** Client configuration factory providing ClientConfigurations tailored to this client */ protected static final ClientConfigurationFactory configFactory = new ClientConfigurationFactory(); private final com.amazonaws.protocol.json.SdkJsonProtocolFactory protocolFactory = new com.amazonaws.protocol.json.SdkJsonProtocolFactory( new JsonClientMetadata() .withProtocolVersion("1.1") .withSupportsCbor(false) .withSupportsIon(false) .withContentTypeOverride("") .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InternalFailureException").withModeledClass( com.amazonaws.services.lexmodelbuilding.model.InternalFailureException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ResourceInUseException").withModeledClass( com.amazonaws.services.lexmodelbuilding.model.ResourceInUseException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("NotFoundException").withModeledClass( com.amazonaws.services.lexmodelbuilding.model.NotFoundException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("LimitExceededException").withModeledClass( com.amazonaws.services.lexmodelbuilding.model.LimitExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ConflictException").withModeledClass( com.amazonaws.services.lexmodelbuilding.model.ConflictException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("PreconditionFailedException").withModeledClass( com.amazonaws.services.lexmodelbuilding.model.PreconditionFailedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("BadRequestException").withModeledClass( com.amazonaws.services.lexmodelbuilding.model.BadRequestException.class)) .withBaseServiceExceptionClass(com.amazonaws.services.lexmodelbuilding.model.AmazonLexModelBuildingException.class)); public static AmazonLexModelBuildingClientBuilder builder() { return AmazonLexModelBuildingClientBuilder.standard(); } /** * Constructs a new client to invoke service methods on Amazon Lex Model Building Service using the specified * parameters. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param clientParams * Object providing client parameters. */ AmazonLexModelBuildingClient(AwsSyncClientParams clientParams) { super(clientParams); this.awsCredentialsProvider = clientParams.getCredentialsProvider(); init(); } private void init() { setServiceNameIntern(DEFAULT_SIGNING_NAME); setEndpointPrefix(ENDPOINT_PREFIX); // calling this.setEndPoint(...) will also modify the signer accordingly setEndpoint("models.lex.us-east-1.amazonaws.com"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s.addAll(chainFactory.newRequestHandlerChain("/com/amazonaws/services/lexmodelbuilding/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain("/com/amazonaws/services/lexmodelbuilding/request.handler2s")); requestHandler2s.addAll(chainFactory.getGlobalHandlers()); } /** * <p> * Creates a new version of the bot based on the <code>$LATEST</code> version. If the <code>$LATEST</code> version * of this resource hasn't changed since you created the last version, Amazon Lex doesn't create a new version. It * returns the last created version. * </p> * <note> * <p> * You can update only the <code>$LATEST</code> version of the bot. You can't update the numbered versions that you * create with the <code>CreateBotVersion</code> operation. * </p> * </note> * <p> * When you create the first version of a bot, Amazon Lex sets the version to 1. Subsequent versions increment by 1. * For more information, see <a>versioning-intro</a>. * </p> * <p> * This operation requires permission for the <code>lex:CreateBotVersion</code> action. * </p> * * @param createBotVersionRequest * @return Result of the CreateBotVersion operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws PreconditionFailedException * The checksum of the resource that you are trying to change does not match the checksum in the request. * Check the resource's checksum and try again. * @sample AmazonLexModelBuilding.CreateBotVersion * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/CreateBotVersion" target="_top">AWS * API Documentation</a> */ @Override public CreateBotVersionResult createBotVersion(CreateBotVersionRequest request) { request = beforeClientExecution(request); return executeCreateBotVersion(request); } @SdkInternalApi final CreateBotVersionResult executeCreateBotVersion(CreateBotVersionRequest createBotVersionRequest) { ExecutionContext executionContext = createExecutionContext(createBotVersionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateBotVersionRequest> request = null; Response<CreateBotVersionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateBotVersionRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(createBotVersionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<CreateBotVersionResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new CreateBotVersionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates a new version of an intent based on the <code>$LATEST</code> version of the intent. If the * <code>$LATEST</code> version of this intent hasn't changed since you last updated it, Amazon Lex doesn't create a * new version. It returns the last version you created. * </p> * <note> * <p> * You can update only the <code>$LATEST</code> version of the intent. You can't update the numbered versions that * you create with the <code>CreateIntentVersion</code> operation. * </p> * </note> * <p> * When you create a version of an intent, Amazon Lex sets the version to 1. Subsequent versions increment by 1. For * more information, see <a>versioning-intro</a>. * </p> * <p> * This operation requires permissions to perform the <code>lex:CreateIntentVersion</code> action. * </p> * * @param createIntentVersionRequest * @return Result of the CreateIntentVersion operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws PreconditionFailedException * The checksum of the resource that you are trying to change does not match the checksum in the request. * Check the resource's checksum and try again. * @sample AmazonLexModelBuilding.CreateIntentVersion * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/CreateIntentVersion" target="_top">AWS * API Documentation</a> */ @Override public CreateIntentVersionResult createIntentVersion(CreateIntentVersionRequest request) { request = beforeClientExecution(request); return executeCreateIntentVersion(request); } @SdkInternalApi final CreateIntentVersionResult executeCreateIntentVersion(CreateIntentVersionRequest createIntentVersionRequest) { ExecutionContext executionContext = createExecutionContext(createIntentVersionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateIntentVersionRequest> request = null; Response<CreateIntentVersionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateIntentVersionRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(createIntentVersionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<CreateIntentVersionResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new CreateIntentVersionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates a new version of a slot type based on the <code>$LATEST</code> version of the specified slot type. If the * <code>$LATEST</code> version of this resource has not changed since the last version that you created, Amazon Lex * doesn't create a new version. It returns the last version that you created. * </p> * <note> * <p> * You can update only the <code>$LATEST</code> version of a slot type. You can't update the numbered versions that * you create with the <code>CreateSlotTypeVersion</code> operation. * </p> * </note> * <p> * When you create a version of a slot type, Amazon Lex sets the version to 1. Subsequent versions increment by 1. * For more information, see <a>versioning-intro</a>. * </p> * <p> * This operation requires permissions for the <code>lex:CreateSlotTypeVersion</code> action. * </p> * * @param createSlotTypeVersionRequest * @return Result of the CreateSlotTypeVersion operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws PreconditionFailedException * The checksum of the resource that you are trying to change does not match the checksum in the request. * Check the resource's checksum and try again. * @sample AmazonLexModelBuilding.CreateSlotTypeVersion * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/CreateSlotTypeVersion" * target="_top">AWS API Documentation</a> */ @Override public CreateSlotTypeVersionResult createSlotTypeVersion(CreateSlotTypeVersionRequest request) { request = beforeClientExecution(request); return executeCreateSlotTypeVersion(request); } @SdkInternalApi final CreateSlotTypeVersionResult executeCreateSlotTypeVersion(CreateSlotTypeVersionRequest createSlotTypeVersionRequest) { ExecutionContext executionContext = createExecutionContext(createSlotTypeVersionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateSlotTypeVersionRequest> request = null; Response<CreateSlotTypeVersionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateSlotTypeVersionRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(createSlotTypeVersionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<CreateSlotTypeVersionResult>> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new CreateSlotTypeVersionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes all versions of the bot, including the <code>$LATEST</code> version. To delete a specific version of the * bot, use the operation. * </p> * <p> * If a bot has an alias, you can't delete it. Instead, the <code>DeleteBot</code> operation returns a * <code>ResourceInUseException</code> exception that includes a reference to the alias that refers to the bot. To * remove the reference to the bot, delete the alias. If you get the same exception again, delete the referring * alias until the <code>DeleteBot</code> operation is successful. * </p> * <p> * This operation requires permissions for the <code>lex:DeleteBot</code> action. * </p> * * @param deleteBotRequest * @return Result of the DeleteBot operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws ResourceInUseException * The resource that you are attempting to delete is referred to by another resource. Use this information * to remove references to the resource that you are trying to delete.</p> * <p> * The body of the exception contains a JSON object that describes the resource. * </p> * <p> * <code>{ "resourceType": BOT | BOTALIAS | BOTCHANNEL | INTENT,</code> * </p> * <p> * <code>"resourceReference": {</code> * </p> * <p> * <code>"name": <i>string</i>, "version": <i>string</i> } }</code> * @sample AmazonLexModelBuilding.DeleteBot * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/DeleteBot" target="_top">AWS API * Documentation</a> */ @Override public DeleteBotResult deleteBot(DeleteBotRequest request) { request = beforeClientExecution(request); return executeDeleteBot(request); } @SdkInternalApi final DeleteBotResult executeDeleteBot(DeleteBotRequest deleteBotRequest) { ExecutionContext executionContext = createExecutionContext(deleteBotRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteBotRequest> request = null; Response<DeleteBotResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteBotRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteBotRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DeleteBotResult>> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteBotResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes an alias for the specified bot. * </p> * <p> * You can't delete an alias that is used in the association between a bot and a messaging channel. If an alias is * used in a channel association, the <code>DeleteBot</code> operation returns a <code>ResourceInUseException</code> * exception that includes a reference to the channel association that refers to the bot. You can remove the * reference to the alias by deleting the channel association. If you get the same exception again, delete the * referring association until the <code>DeleteBotAlias</code> operation is successful. * </p> * * @param deleteBotAliasRequest * @return Result of the DeleteBotAlias operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws ResourceInUseException * The resource that you are attempting to delete is referred to by another resource. Use this information * to remove references to the resource that you are trying to delete.</p> * <p> * The body of the exception contains a JSON object that describes the resource. * </p> * <p> * <code>{ "resourceType": BOT | BOTALIAS | BOTCHANNEL | INTENT,</code> * </p> * <p> * <code>"resourceReference": {</code> * </p> * <p> * <code>"name": <i>string</i>, "version": <i>string</i> } }</code> * @sample AmazonLexModelBuilding.DeleteBotAlias * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/DeleteBotAlias" target="_top">AWS API * Documentation</a> */ @Override public DeleteBotAliasResult deleteBotAlias(DeleteBotAliasRequest request) { request = beforeClientExecution(request); return executeDeleteBotAlias(request); } @SdkInternalApi final DeleteBotAliasResult executeDeleteBotAlias(DeleteBotAliasRequest deleteBotAliasRequest) { ExecutionContext executionContext = createExecutionContext(deleteBotAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteBotAliasRequest> request = null; Response<DeleteBotAliasResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteBotAliasRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteBotAliasRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DeleteBotAliasResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteBotAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes the association between an Amazon Lex bot and a messaging platform. * </p> * <p> * This operation requires permission for the <code>lex:DeleteBotChannelAssociation</code> action. * </p> * * @param deleteBotChannelAssociationRequest * @return Result of the DeleteBotChannelAssociation operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.DeleteBotChannelAssociation * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/DeleteBotChannelAssociation" * target="_top">AWS API Documentation</a> */ @Override public DeleteBotChannelAssociationResult deleteBotChannelAssociation(DeleteBotChannelAssociationRequest request) { request = beforeClientExecution(request); return executeDeleteBotChannelAssociation(request); } @SdkInternalApi final DeleteBotChannelAssociationResult executeDeleteBotChannelAssociation(DeleteBotChannelAssociationRequest deleteBotChannelAssociationRequest) { ExecutionContext executionContext = createExecutionContext(deleteBotChannelAssociationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteBotChannelAssociationRequest> request = null; Response<DeleteBotChannelAssociationResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteBotChannelAssociationRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(deleteBotChannelAssociationRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DeleteBotChannelAssociationResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteBotChannelAssociationResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes a specific version of a bot. To delete all versions of a bot, use the operation. * </p> * <p> * This operation requires permissions for the <code>lex:DeleteBotVersion</code> action. * </p> * * @param deleteBotVersionRequest * @return Result of the DeleteBotVersion operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws ResourceInUseException * The resource that you are attempting to delete is referred to by another resource. Use this information * to remove references to the resource that you are trying to delete.</p> * <p> * The body of the exception contains a JSON object that describes the resource. * </p> * <p> * <code>{ "resourceType": BOT | BOTALIAS | BOTCHANNEL | INTENT,</code> * </p> * <p> * <code>"resourceReference": {</code> * </p> * <p> * <code>"name": <i>string</i>, "version": <i>string</i> } }</code> * @sample AmazonLexModelBuilding.DeleteBotVersion * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/DeleteBotVersion" target="_top">AWS * API Documentation</a> */ @Override public DeleteBotVersionResult deleteBotVersion(DeleteBotVersionRequest request) { request = beforeClientExecution(request); return executeDeleteBotVersion(request); } @SdkInternalApi final DeleteBotVersionResult executeDeleteBotVersion(DeleteBotVersionRequest deleteBotVersionRequest) { ExecutionContext executionContext = createExecutionContext(deleteBotVersionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteBotVersionRequest> request = null; Response<DeleteBotVersionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteBotVersionRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteBotVersionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DeleteBotVersionResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteBotVersionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes all versions of the intent, including the <code>$LATEST</code> version. To delete a specific version of * the intent, use the operation. * </p> * <p> * You can delete a version of an intent only if it is not referenced. To delete an intent that is referred to in * one or more bots (see <a>how-it-works</a>), you must remove those references first. * </p> * <note> * <p> * If you get the <code>ResourceInUseException</code> exception, it provides an example reference that shows where * the intent is referenced. To remove the reference to the intent, either update the bot or delete it. If you get * the same exception when you attempt to delete the intent again, repeat until the intent has no references and the * call to <code>DeleteIntent</code> is successful. * </p> * </note> * <p> * This operation requires permission for the <code>lex:DeleteIntent</code> action. * </p> * * @param deleteIntentRequest * @return Result of the DeleteIntent operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws ResourceInUseException * The resource that you are attempting to delete is referred to by another resource. Use this information * to remove references to the resource that you are trying to delete.</p> * <p> * The body of the exception contains a JSON object that describes the resource. * </p> * <p> * <code>{ "resourceType": BOT | BOTALIAS | BOTCHANNEL | INTENT,</code> * </p> * <p> * <code>"resourceReference": {</code> * </p> * <p> * <code>"name": <i>string</i>, "version": <i>string</i> } }</code> * @sample AmazonLexModelBuilding.DeleteIntent * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/DeleteIntent" target="_top">AWS API * Documentation</a> */ @Override public DeleteIntentResult deleteIntent(DeleteIntentRequest request) { request = beforeClientExecution(request); return executeDeleteIntent(request); } @SdkInternalApi final DeleteIntentResult executeDeleteIntent(DeleteIntentRequest deleteIntentRequest) { ExecutionContext executionContext = createExecutionContext(deleteIntentRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteIntentRequest> request = null; Response<DeleteIntentResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteIntentRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteIntentRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DeleteIntentResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteIntentResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes a specific version of an intent. To delete all versions of a intent, use the operation. * </p> * <p> * This operation requires permissions for the <code>lex:DeleteIntentVersion</code> action. * </p> * * @param deleteIntentVersionRequest * @return Result of the DeleteIntentVersion operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws ResourceInUseException * The resource that you are attempting to delete is referred to by another resource. Use this information * to remove references to the resource that you are trying to delete.</p> * <p> * The body of the exception contains a JSON object that describes the resource. * </p> * <p> * <code>{ "resourceType": BOT | BOTALIAS | BOTCHANNEL | INTENT,</code> * </p> * <p> * <code>"resourceReference": {</code> * </p> * <p> * <code>"name": <i>string</i>, "version": <i>string</i> } }</code> * @sample AmazonLexModelBuilding.DeleteIntentVersion * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/DeleteIntentVersion" target="_top">AWS * API Documentation</a> */ @Override public DeleteIntentVersionResult deleteIntentVersion(DeleteIntentVersionRequest request) { request = beforeClientExecution(request); return executeDeleteIntentVersion(request); } @SdkInternalApi final DeleteIntentVersionResult executeDeleteIntentVersion(DeleteIntentVersionRequest deleteIntentVersionRequest) { ExecutionContext executionContext = createExecutionContext(deleteIntentVersionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteIntentVersionRequest> request = null; Response<DeleteIntentVersionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteIntentVersionRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteIntentVersionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DeleteIntentVersionResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteIntentVersionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes all versions of the slot type, including the <code>$LATEST</code> version. To delete a specific version * of the slot type, use the operation. * </p> * <p> * You can delete a version of a slot type only if it is not referenced. To delete a slot type that is referred to * in one or more intents, you must remove those references first. * </p> * <note> * <p> * If you get the <code>ResourceInUseException</code> exception, the exception provides an example reference that * shows the intent where the slot type is referenced. To remove the reference to the slot type, either update the * intent or delete it. If you get the same exception when you attempt to delete the slot type again, repeat until * the slot type has no references and the <code>DeleteSlotType</code> call is successful. * </p> * </note> * <p> * This operation requires permission for the <code>lex:DeleteSlotType</code> action. * </p> * * @param deleteSlotTypeRequest * @return Result of the DeleteSlotType operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws ResourceInUseException * The resource that you are attempting to delete is referred to by another resource. Use this information * to remove references to the resource that you are trying to delete.</p> * <p> * The body of the exception contains a JSON object that describes the resource. * </p> * <p> * <code>{ "resourceType": BOT | BOTALIAS | BOTCHANNEL | INTENT,</code> * </p> * <p> * <code>"resourceReference": {</code> * </p> * <p> * <code>"name": <i>string</i>, "version": <i>string</i> } }</code> * @sample AmazonLexModelBuilding.DeleteSlotType * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/DeleteSlotType" target="_top">AWS API * Documentation</a> */ @Override public DeleteSlotTypeResult deleteSlotType(DeleteSlotTypeRequest request) { request = beforeClientExecution(request); return executeDeleteSlotType(request); } @SdkInternalApi final DeleteSlotTypeResult executeDeleteSlotType(DeleteSlotTypeRequest deleteSlotTypeRequest) { ExecutionContext executionContext = createExecutionContext(deleteSlotTypeRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteSlotTypeRequest> request = null; Response<DeleteSlotTypeResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteSlotTypeRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteSlotTypeRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DeleteSlotTypeResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteSlotTypeResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes a specific version of a slot type. To delete all versions of a slot type, use the operation. * </p> * <p> * This operation requires permissions for the <code>lex:DeleteSlotTypeVersion</code> action. * </p> * * @param deleteSlotTypeVersionRequest * @return Result of the DeleteSlotTypeVersion operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws ResourceInUseException * The resource that you are attempting to delete is referred to by another resource. Use this information * to remove references to the resource that you are trying to delete.</p> * <p> * The body of the exception contains a JSON object that describes the resource. * </p> * <p> * <code>{ "resourceType": BOT | BOTALIAS | BOTCHANNEL | INTENT,</code> * </p> * <p> * <code>"resourceReference": {</code> * </p> * <p> * <code>"name": <i>string</i>, "version": <i>string</i> } }</code> * @sample AmazonLexModelBuilding.DeleteSlotTypeVersion * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/DeleteSlotTypeVersion" * target="_top">AWS API Documentation</a> */ @Override public DeleteSlotTypeVersionResult deleteSlotTypeVersion(DeleteSlotTypeVersionRequest request) { request = beforeClientExecution(request); return executeDeleteSlotTypeVersion(request); } @SdkInternalApi final DeleteSlotTypeVersionResult executeDeleteSlotTypeVersion(DeleteSlotTypeVersionRequest deleteSlotTypeVersionRequest) { ExecutionContext executionContext = createExecutionContext(deleteSlotTypeVersionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteSlotTypeVersionRequest> request = null; Response<DeleteSlotTypeVersionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteSlotTypeVersionRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteSlotTypeVersionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DeleteSlotTypeVersionResult>> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteSlotTypeVersionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes stored utterances. * </p> * <p> * Amazon Lex stores the utterances that users send to your bot unless the <code>childDirected</code> field in the * bot is set to <code>true</code>. Utterances are stored for 15 days for use with the operation, and then stored * indefinately for use in improving the ability of your bot to respond to user input. * </p> * <p> * Use the <code>DeleteStoredUtterances</code> operation to manually delete stored utterances for a specific user. * </p> * <p> * This operation requires permissions for the <code>lex:DeleteUtterances</code> action. * </p> * * @param deleteUtterancesRequest * @return Result of the DeleteUtterances operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.DeleteUtterances * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/DeleteUtterances" target="_top">AWS * API Documentation</a> */ @Override public DeleteUtterancesResult deleteUtterances(DeleteUtterancesRequest request) { request = beforeClientExecution(request); return executeDeleteUtterances(request); } @SdkInternalApi final DeleteUtterancesResult executeDeleteUtterances(DeleteUtterancesRequest deleteUtterancesRequest) { ExecutionContext executionContext = createExecutionContext(deleteUtterancesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteUtterancesRequest> request = null; Response<DeleteUtterancesResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteUtterancesRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteUtterancesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<DeleteUtterancesResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteUtterancesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns metadata information for a specific bot. You must provide the bot name and the bot version or alias. * </p> * <p> * The GetBot operation requires permissions for the <code>lex:GetBot</code> action. * </p> * * @param getBotRequest * @return Result of the GetBot operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetBot * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetBot" target="_top">AWS API * Documentation</a> */ @Override public GetBotResult getBot(GetBotRequest request) { request = beforeClientExecution(request); return executeGetBot(request); } @SdkInternalApi final GetBotResult executeGetBot(GetBotRequest getBotRequest) { ExecutionContext executionContext = createExecutionContext(getBotRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetBotRequest> request = null; Response<GetBotResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetBotRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getBotRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetBotResult>> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetBotResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns information about an Amazon Lex bot alias. For more information about aliases, see * <a>versioning-aliases</a>. * </p> * <p> * This operation requires permissions for the <code>lex:GetBotAlias</code> action. * </p> * * @param getBotAliasRequest * @return Result of the GetBotAlias operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetBotAlias * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetBotAlias" target="_top">AWS API * Documentation</a> */ @Override public GetBotAliasResult getBotAlias(GetBotAliasRequest request) { request = beforeClientExecution(request); return executeGetBotAlias(request); } @SdkInternalApi final GetBotAliasResult executeGetBotAlias(GetBotAliasRequest getBotAliasRequest) { ExecutionContext executionContext = createExecutionContext(getBotAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetBotAliasRequest> request = null; Response<GetBotAliasResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetBotAliasRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getBotAliasRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetBotAliasResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetBotAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns a list of aliases for a specified Amazon Lex bot. * </p> * <p> * This operation requires permissions for the <code>lex:GetBotAliases</code> action. * </p> * * @param getBotAliasesRequest * @return Result of the GetBotAliases operation returned by the service. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetBotAliases * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetBotAliases" target="_top">AWS API * Documentation</a> */ @Override public GetBotAliasesResult getBotAliases(GetBotAliasesRequest request) { request = beforeClientExecution(request); return executeGetBotAliases(request); } @SdkInternalApi final GetBotAliasesResult executeGetBotAliases(GetBotAliasesRequest getBotAliasesRequest) { ExecutionContext executionContext = createExecutionContext(getBotAliasesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetBotAliasesRequest> request = null; Response<GetBotAliasesResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetBotAliasesRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getBotAliasesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetBotAliasesResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetBotAliasesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns information about the association between an Amazon Lex bot and a messaging platform. * </p> * <p> * This operation requires permissions for the <code>lex:GetBotChannelAssociation</code> action. * </p> * * @param getBotChannelAssociationRequest * @return Result of the GetBotChannelAssociation operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetBotChannelAssociation * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetBotChannelAssociation" * target="_top">AWS API Documentation</a> */ @Override public GetBotChannelAssociationResult getBotChannelAssociation(GetBotChannelAssociationRequest request) { request = beforeClientExecution(request); return executeGetBotChannelAssociation(request); } @SdkInternalApi final GetBotChannelAssociationResult executeGetBotChannelAssociation(GetBotChannelAssociationRequest getBotChannelAssociationRequest) { ExecutionContext executionContext = createExecutionContext(getBotChannelAssociationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetBotChannelAssociationRequest> request = null; Response<GetBotChannelAssociationResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetBotChannelAssociationRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(getBotChannelAssociationRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetBotChannelAssociationResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetBotChannelAssociationResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns a list of all of the channels associated with the specified bot. * </p> * <p> * The <code>GetBotChannelAssociations</code> operation requires permissions for the * <code>lex:GetBotChannelAssociations</code> action. * </p> * * @param getBotChannelAssociationsRequest * @return Result of the GetBotChannelAssociations operation returned by the service. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetBotChannelAssociations * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetBotChannelAssociations" * target="_top">AWS API Documentation</a> */ @Override public GetBotChannelAssociationsResult getBotChannelAssociations(GetBotChannelAssociationsRequest request) { request = beforeClientExecution(request); return executeGetBotChannelAssociations(request); } @SdkInternalApi final GetBotChannelAssociationsResult executeGetBotChannelAssociations(GetBotChannelAssociationsRequest getBotChannelAssociationsRequest) { ExecutionContext executionContext = createExecutionContext(getBotChannelAssociationsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetBotChannelAssociationsRequest> request = null; Response<GetBotChannelAssociationsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetBotChannelAssociationsRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(getBotChannelAssociationsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetBotChannelAssociationsResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetBotChannelAssociationsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Gets information about all of the versions of a bot. * </p> * <p> * The <code>GetBotVersions</code> operation returns a <code>BotMetadata</code> object for each version of a bot. * For example, if a bot has three numbered versions, the <code>GetBotVersions</code> operation returns four * <code>BotMetadata</code> objects in the response, one for each numbered version and one for the * <code>$LATEST</code> version. * </p> * <p> * The <code>GetBotVersions</code> operation always returns at least one version, the <code>$LATEST</code> version. * </p> * <p> * This operation requires permissions for the <code>lex:GetBotVersions</code> action. * </p> * * @param getBotVersionsRequest * @return Result of the GetBotVersions operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetBotVersions * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetBotVersions" target="_top">AWS API * Documentation</a> */ @Override public GetBotVersionsResult getBotVersions(GetBotVersionsRequest request) { request = beforeClientExecution(request); return executeGetBotVersions(request); } @SdkInternalApi final GetBotVersionsResult executeGetBotVersions(GetBotVersionsRequest getBotVersionsRequest) { ExecutionContext executionContext = createExecutionContext(getBotVersionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetBotVersionsRequest> request = null; Response<GetBotVersionsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetBotVersionsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getBotVersionsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetBotVersionsResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetBotVersionsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns bot information as follows: * </p> * <ul> * <li> * <p> * If you provide the <code>nameContains</code> field, the response includes information for the * <code>$LATEST</code> version of all bots whose name contains the specified string. * </p> * </li> * <li> * <p> * If you don't specify the <code>nameContains</code> field, the operation returns information about the * <code>$LATEST</code> version of all of your bots. * </p> * </li> * </ul> * <p> * This operation requires permission for the <code>lex:GetBots</code> action. * </p> * * @param getBotsRequest * @return Result of the GetBots operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetBots * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetBots" target="_top">AWS API * Documentation</a> */ @Override public GetBotsResult getBots(GetBotsRequest request) { request = beforeClientExecution(request); return executeGetBots(request); } @SdkInternalApi final GetBotsResult executeGetBots(GetBotsRequest getBotsRequest) { ExecutionContext executionContext = createExecutionContext(getBotsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetBotsRequest> request = null; Response<GetBotsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetBotsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getBotsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetBotsResult>> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetBotsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns information about a built-in intent. * </p> * <p> * This operation requires permission for the <code>lex:GetBuiltinIntent</code> action. * </p> * * @param getBuiltinIntentRequest * @return Result of the GetBuiltinIntent operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetBuiltinIntent * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetBuiltinIntent" target="_top">AWS * API Documentation</a> */ @Override public GetBuiltinIntentResult getBuiltinIntent(GetBuiltinIntentRequest request) { request = beforeClientExecution(request); return executeGetBuiltinIntent(request); } @SdkInternalApi final GetBuiltinIntentResult executeGetBuiltinIntent(GetBuiltinIntentRequest getBuiltinIntentRequest) { ExecutionContext executionContext = createExecutionContext(getBuiltinIntentRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetBuiltinIntentRequest> request = null; Response<GetBuiltinIntentResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetBuiltinIntentRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getBuiltinIntentRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetBuiltinIntentResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetBuiltinIntentResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Gets a list of built-in intents that meet the specified criteria. * </p> * <p> * This operation requires permission for the <code>lex:GetBuiltinIntents</code> action. * </p> * * @param getBuiltinIntentsRequest * @return Result of the GetBuiltinIntents operation returned by the service. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetBuiltinIntents * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetBuiltinIntents" target="_top">AWS * API Documentation</a> */ @Override public GetBuiltinIntentsResult getBuiltinIntents(GetBuiltinIntentsRequest request) { request = beforeClientExecution(request); return executeGetBuiltinIntents(request); } @SdkInternalApi final GetBuiltinIntentsResult executeGetBuiltinIntents(GetBuiltinIntentsRequest getBuiltinIntentsRequest) { ExecutionContext executionContext = createExecutionContext(getBuiltinIntentsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetBuiltinIntentsRequest> request = null; Response<GetBuiltinIntentsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetBuiltinIntentsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getBuiltinIntentsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetBuiltinIntentsResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetBuiltinIntentsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Gets a list of built-in slot types that meet the specified criteria. * </p> * <p> * For a list of built-in slot types, see <a href= * "https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/built-in-intent-ref/slot-type-reference" * >Slot Type Reference</a> in the <i>Alexa Skills Kit</i>. * </p> * <p> * This operation requires permission for the <code>lex:GetBuiltInSlotTypes</code> action. * </p> * * @param getBuiltinSlotTypesRequest * @return Result of the GetBuiltinSlotTypes operation returned by the service. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetBuiltinSlotTypes * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetBuiltinSlotTypes" target="_top">AWS * API Documentation</a> */ @Override public GetBuiltinSlotTypesResult getBuiltinSlotTypes(GetBuiltinSlotTypesRequest request) { request = beforeClientExecution(request); return executeGetBuiltinSlotTypes(request); } @SdkInternalApi final GetBuiltinSlotTypesResult executeGetBuiltinSlotTypes(GetBuiltinSlotTypesRequest getBuiltinSlotTypesRequest) { ExecutionContext executionContext = createExecutionContext(getBuiltinSlotTypesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetBuiltinSlotTypesRequest> request = null; Response<GetBuiltinSlotTypesResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetBuiltinSlotTypesRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getBuiltinSlotTypesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetBuiltinSlotTypesResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetBuiltinSlotTypesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns information about an intent. In addition to the intent name, you must specify the intent version. * </p> * <p> * This operation requires permissions to perform the <code>lex:GetIntent</code> action. * </p> * * @param getIntentRequest * @return Result of the GetIntent operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetIntent * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetIntent" target="_top">AWS API * Documentation</a> */ @Override public GetIntentResult getIntent(GetIntentRequest request) { request = beforeClientExecution(request); return executeGetIntent(request); } @SdkInternalApi final GetIntentResult executeGetIntent(GetIntentRequest getIntentRequest) { ExecutionContext executionContext = createExecutionContext(getIntentRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetIntentRequest> request = null; Response<GetIntentResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetIntentRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getIntentRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetIntentResult>> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetIntentResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Gets information about all of the versions of an intent. * </p> * <p> * The <code>GetIntentVersions</code> operation returns an <code>IntentMetadata</code> object for each version of an * intent. For example, if an intent has three numbered versions, the <code>GetIntentVersions</code> operation * returns four <code>IntentMetadata</code> objects in the response, one for each numbered version and one for the * <code>$LATEST</code> version. * </p> * <p> * The <code>GetIntentVersions</code> operation always returns at least one version, the <code>$LATEST</code> * version. * </p> * <p> * This operation requires permissions for the <code>lex:GetIntentVersions</code> action. * </p> * * @param getIntentVersionsRequest * @return Result of the GetIntentVersions operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetIntentVersions * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetIntentVersions" target="_top">AWS * API Documentation</a> */ @Override public GetIntentVersionsResult getIntentVersions(GetIntentVersionsRequest request) { request = beforeClientExecution(request); return executeGetIntentVersions(request); } @SdkInternalApi final GetIntentVersionsResult executeGetIntentVersions(GetIntentVersionsRequest getIntentVersionsRequest) { ExecutionContext executionContext = createExecutionContext(getIntentVersionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetIntentVersionsRequest> request = null; Response<GetIntentVersionsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetIntentVersionsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getIntentVersionsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetIntentVersionsResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetIntentVersionsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns intent information as follows: * </p> * <ul> * <li> * <p> * If you specify the <code>nameContains</code> field, returns the <code>$LATEST</code> version of all intents that * contain the specified string. * </p> * </li> * <li> * <p> * If you don't specify the <code>nameContains</code> field, returns information about the <code>$LATEST</code> * version of all intents. * </p> * </li> * </ul> * <p> * The operation requires permission for the <code>lex:GetIntents</code> action. * </p> * * @param getIntentsRequest * @return Result of the GetIntents operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetIntents * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetIntents" target="_top">AWS API * Documentation</a> */ @Override public GetIntentsResult getIntents(GetIntentsRequest request) { request = beforeClientExecution(request); return executeGetIntents(request); } @SdkInternalApi final GetIntentsResult executeGetIntents(GetIntentsRequest getIntentsRequest) { ExecutionContext executionContext = createExecutionContext(getIntentsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetIntentsRequest> request = null; Response<GetIntentsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetIntentsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getIntentsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetIntentsResult>> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetIntentsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns information about a specific version of a slot type. In addition to specifying the slot type name, you * must specify the slot type version. * </p> * <p> * This operation requires permissions for the <code>lex:GetSlotType</code> action. * </p> * * @param getSlotTypeRequest * @return Result of the GetSlotType operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetSlotType * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetSlotType" target="_top">AWS API * Documentation</a> */ @Override public GetSlotTypeResult getSlotType(GetSlotTypeRequest request) { request = beforeClientExecution(request); return executeGetSlotType(request); } @SdkInternalApi final GetSlotTypeResult executeGetSlotType(GetSlotTypeRequest getSlotTypeRequest) { ExecutionContext executionContext = createExecutionContext(getSlotTypeRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetSlotTypeRequest> request = null; Response<GetSlotTypeResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetSlotTypeRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getSlotTypeRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetSlotTypeResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetSlotTypeResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Gets information about all versions of a slot type. * </p> * <p> * The <code>GetSlotTypeVersions</code> operation returns a <code>SlotTypeMetadata</code> object for each version of * a slot type. For example, if a slot type has three numbered versions, the <code>GetSlotTypeVersions</code> * operation returns four <code>SlotTypeMetadata</code> objects in the response, one for each numbered version and * one for the <code>$LATEST</code> version. * </p> * <p> * The <code>GetSlotTypeVersions</code> operation always returns at least one version, the <code>$LATEST</code> * version. * </p> * <p> * This operation requires permissions for the <code>lex:GetSlotTypeVersions</code> action. * </p> * * @param getSlotTypeVersionsRequest * @return Result of the GetSlotTypeVersions operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetSlotTypeVersions * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetSlotTypeVersions" target="_top">AWS * API Documentation</a> */ @Override public GetSlotTypeVersionsResult getSlotTypeVersions(GetSlotTypeVersionsRequest request) { request = beforeClientExecution(request); return executeGetSlotTypeVersions(request); } @SdkInternalApi final GetSlotTypeVersionsResult executeGetSlotTypeVersions(GetSlotTypeVersionsRequest getSlotTypeVersionsRequest) { ExecutionContext executionContext = createExecutionContext(getSlotTypeVersionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetSlotTypeVersionsRequest> request = null; Response<GetSlotTypeVersionsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetSlotTypeVersionsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getSlotTypeVersionsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetSlotTypeVersionsResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetSlotTypeVersionsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns slot type information as follows: * </p> * <ul> * <li> * <p> * If you specify the <code>nameContains</code> field, returns the <code>$LATEST</code> version of all slot types * that contain the specified string. * </p> * </li> * <li> * <p> * If you don't specify the <code>nameContains</code> field, returns information about the <code>$LATEST</code> * version of all slot types. * </p> * </li> * </ul> * <p> * The operation requires permission for the <code>lex:GetSlotTypes</code> action. * </p> * * @param getSlotTypesRequest * @return Result of the GetSlotTypes operation returned by the service. * @throws NotFoundException * The resource specified in the request was not found. Check the resource and try again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetSlotTypes * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetSlotTypes" target="_top">AWS API * Documentation</a> */ @Override public GetSlotTypesResult getSlotTypes(GetSlotTypesRequest request) { request = beforeClientExecution(request); return executeGetSlotTypes(request); } @SdkInternalApi final GetSlotTypesResult executeGetSlotTypes(GetSlotTypesRequest getSlotTypesRequest) { ExecutionContext executionContext = createExecutionContext(getSlotTypesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetSlotTypesRequest> request = null; Response<GetSlotTypesResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetSlotTypesRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getSlotTypesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetSlotTypesResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetSlotTypesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Use the <code>GetUtterancesView</code> operation to get information about the utterances that your users have * made to your bot. You can use this list to tune the utterances that your bot responds to. * </p> * <p> * For example, say that you have created a bot to order flowers. After your users have used your bot for a while, * use the <code>GetUtterancesView</code> operation to see the requests that they have made and whether they have * been successful. You might find that the utterance "I want flowers" is not being recognized. You could add this * utterance to the <code>OrderFlowers</code> intent so that your bot recognizes that utterance. * </p> * <p> * After you publish a new version of a bot, you can get information about the old version and the new so that you * can compare the performance across the two versions. * </p> * <p> * Data is available for the last 15 days. You can request information for up to 5 versions in each request. The * response contains information about a maximum of 100 utterances for each version. * </p> * <p> * If the bot's <code>childDirected</code> field is set to <code>true</code>, utterances for the bot are not stored * and cannot be retrieved with the <code>GetUtterancesView</code> operation. For more information, see . * </p> * <p> * This operation requires permissions for the <code>lex:GetUtterancesView</code> action. * </p> * * @param getUtterancesViewRequest * @return Result of the GetUtterancesView operation returned by the service. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @sample AmazonLexModelBuilding.GetUtterancesView * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/GetUtterancesView" target="_top">AWS * API Documentation</a> */ @Override public GetUtterancesViewResult getUtterancesView(GetUtterancesViewRequest request) { request = beforeClientExecution(request); return executeGetUtterancesView(request); } @SdkInternalApi final GetUtterancesViewResult executeGetUtterancesView(GetUtterancesViewRequest getUtterancesViewRequest) { ExecutionContext executionContext = createExecutionContext(getUtterancesViewRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetUtterancesViewRequest> request = null; Response<GetUtterancesViewResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetUtterancesViewRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getUtterancesViewRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<GetUtterancesViewResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetUtterancesViewResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates an Amazon Lex conversational bot or replaces an existing bot. When you create or update a bot you only * required to specify a name. You can use this to add intents later, or to remove intents from an existing bot. * When you create a bot with a name only, the bot is created or updated but Amazon Lex returns the * <code/> response <code>FAILED</code>. You can build the bot after you add one or more intents. For more * information about Amazon Lex bots, see <a>how-it-works</a>. * </p> * <p> * If you specify the name of an existing bot, the fields in the request replace the existing values in the * <code>$LATEST</code> version of the bot. Amazon Lex removes any fields that you don't provide values for in the * request, except for the <code>idleTTLInSeconds</code> and <code>privacySettings</code> fields, which are set to * their default values. If you don't specify values for required fields, Amazon Lex throws an exception. * </p> * <p> * This operation requires permissions for the <code>lex:PutBot</code> action. For more information, see * <a>auth-and-access-control</a>. * </p> * * @param putBotRequest * @return Result of the PutBot operation returned by the service. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws PreconditionFailedException * The checksum of the resource that you are trying to change does not match the checksum in the request. * Check the resource's checksum and try again. * @sample AmazonLexModelBuilding.PutBot * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/PutBot" target="_top">AWS API * Documentation</a> */ @Override public PutBotResult putBot(PutBotRequest request) { request = beforeClientExecution(request); return executePutBot(request); } @SdkInternalApi final PutBotResult executePutBot(PutBotRequest putBotRequest) { ExecutionContext executionContext = createExecutionContext(putBotRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<PutBotRequest> request = null; Response<PutBotResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PutBotRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(putBotRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<PutBotResult>> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true).withHasStreamingSuccessResponse(false), new PutBotResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates an alias for the specified version of the bot or replaces an alias for the specified bot. To change the * version of the bot that the alias points to, replace the alias. For more information about aliases, see * <a>versioning-aliases</a>. * </p> * <p> * This operation requires permissions for the <code>lex:PutBotAlias</code> action. * </p> * * @param putBotAliasRequest * @return Result of the PutBotAlias operation returned by the service. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws PreconditionFailedException * The checksum of the resource that you are trying to change does not match the checksum in the request. * Check the resource's checksum and try again. * @sample AmazonLexModelBuilding.PutBotAlias * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/PutBotAlias" target="_top">AWS API * Documentation</a> */ @Override public PutBotAliasResult putBotAlias(PutBotAliasRequest request) { request = beforeClientExecution(request); return executePutBotAlias(request); } @SdkInternalApi final PutBotAliasResult executePutBotAlias(PutBotAliasRequest putBotAliasRequest) { ExecutionContext executionContext = createExecutionContext(putBotAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<PutBotAliasRequest> request = null; Response<PutBotAliasResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PutBotAliasRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(putBotAliasRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<PutBotAliasResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new PutBotAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates an intent or replaces an existing intent. * </p> * <p> * To define the interaction between the user and your bot, you use one or more intents. For a pizza ordering bot, * for example, you would create an <code>OrderPizza</code> intent. * </p> * <p> * To create an intent or replace an existing intent, you must provide the following: * </p> * <ul> * <li> * <p> * Intent name. For example, <code>OrderPizza</code>. * </p> * </li> * <li> * <p> * Sample utterances. For example, "Can I order a pizza, please." and "I want to order a pizza." * </p> * </li> * <li> * <p> * Information to be gathered. You specify slot types for the information that your bot will request from the user. * You can specify standard slot types, such as a date or a time, or custom slot types such as the size and crust of * a pizza. * </p> * </li> * <li> * <p> * How the intent will be fulfilled. You can provide a Lambda function or configure the intent to return the intent * information to the client application. If you use a Lambda function, when all of the intent information is * available, Amazon Lex invokes your Lambda function. If you configure your intent to return the intent information * to the client application. * </p> * </li> * </ul> * <p> * You can specify other optional information in the request, such as: * </p> * <ul> * <li> * <p> * A confirmation prompt to ask the user to confirm an intent. For example, "Shall I order your pizza?" * </p> * </li> * <li> * <p> * A conclusion statement to send to the user after the intent has been fulfilled. For example, * "I placed your pizza order." * </p> * </li> * <li> * <p> * A follow-up prompt that asks the user for additional activity. For example, asking * "Do you want to order a drink with your pizza?" * </p> * </li> * </ul> * <p> * If you specify an existing intent name to update the intent, Amazon Lex replaces the values in the * <code>$LATEST</code> version of the slot type with the values in the request. Amazon Lex removes fields that you * don't provide in the request. If you don't specify the required fields, Amazon Lex throws an exception. * </p> * <p> * For more information, see <a>how-it-works</a>. * </p> * <p> * This operation requires permissions for the <code>lex:PutIntent</code> action. * </p> * * @param putIntentRequest * @return Result of the PutIntent operation returned by the service. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws PreconditionFailedException * The checksum of the resource that you are trying to change does not match the checksum in the request. * Check the resource's checksum and try again. * @sample AmazonLexModelBuilding.PutIntent * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/PutIntent" target="_top">AWS API * Documentation</a> */ @Override public PutIntentResult putIntent(PutIntentRequest request) { request = beforeClientExecution(request); return executePutIntent(request); } @SdkInternalApi final PutIntentResult executePutIntent(PutIntentRequest putIntentRequest) { ExecutionContext executionContext = createExecutionContext(putIntentRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<PutIntentRequest> request = null; Response<PutIntentResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PutIntentRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(putIntentRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<PutIntentResult>> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true).withHasStreamingSuccessResponse(false), new PutIntentResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates a custom slot type or replaces an existing custom slot type. * </p> * <p> * To create a custom slot type, specify a name for the slot type and a set of enumeration values, which are the * values that a slot of this type can assume. For more information, see <a>how-it-works</a>. * </p> * <p> * If you specify the name of an existing slot type, the fields in the request replace the existing values in the * <code>$LATEST</code> version of the slot type. Amazon Lex removes the fields that you don't provide in the * request. If you don't specify required fields, Amazon Lex throws an exception. * </p> * <p> * This operation requires permissions for the <code>lex:PutSlotType</code> action. * </p> * * @param putSlotTypeRequest * @return Result of the PutSlotType operation returned by the service. * @throws ConflictException * There was a conflict processing the request. Try your request again. * @throws LimitExceededException * The request exceeded a limit. Try your request again. * @throws InternalFailureException * An internal Amazon Lex error occurred. Try your request again. * @throws BadRequestException * The request is not well formed. For example, a value is invalid or a required field is missing. Check the * field values, and try again. * @throws PreconditionFailedException * The checksum of the resource that you are trying to change does not match the checksum in the request. * Check the resource's checksum and try again. * @sample AmazonLexModelBuilding.PutSlotType * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/lex-models-2017-04-19/PutSlotType" target="_top">AWS API * Documentation</a> */ @Override public PutSlotTypeResult putSlotType(PutSlotTypeRequest request) { request = beforeClientExecution(request); return executePutSlotType(request); } @SdkInternalApi final PutSlotTypeResult executePutSlotType(PutSlotTypeRequest putSlotTypeRequest) { ExecutionContext executionContext = createExecutionContext(putSlotTypeRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<PutSlotTypeRequest> request = null; Response<PutSlotTypeResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PutSlotTypeRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(putSlotTypeRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler<AmazonWebServiceResponse<PutSlotTypeResult>> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new PutSlotTypeResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * Returns additional metadata for a previously executed successful, request, typically used for debugging issues * where a service isn't acting as expected. This data isn't considered part of the result data returned by an * operation, so it's available through this separate, diagnostic interface. * <p> * Response metadata is only cached for a limited period of time, so if you need to access this extra diagnostic * information for an executed request, you should use this method to retrieve it as soon as possible after * executing the request. * * @param request * The originally executed request * * @return The response metadata for the specified request, or null if none is available. */ public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } /** * Normal invoke with authentication. Credentials are required and may be overriden at the request level. **/ private <X, Y extends AmazonWebServiceRequest> Response<X> invoke(Request<Y> request, HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler, ExecutionContext executionContext) { executionContext.setCredentialsProvider(CredentialUtils.getCredentialsProvider(request.getOriginalRequest(), awsCredentialsProvider)); return doInvoke(request, responseHandler, executionContext); } /** * Invoke with no authentication. Credentials are not required and any credentials set on the client or request will * be ignored for this operation. **/ private <X, Y extends AmazonWebServiceRequest> Response<X> anonymousInvoke(Request<Y> request, HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler, ExecutionContext executionContext) { return doInvoke(request, responseHandler, executionContext); } /** * Invoke the request using the http client. Assumes credentials (or lack thereof) have been configured in the * ExecutionContext beforehand. **/ private <X, Y extends AmazonWebServiceRequest> Response<X> doInvoke(Request<Y> request, HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler, ExecutionContext executionContext) { request.setEndpoint(endpoint); request.setTimeOffset(timeOffset); HttpResponseHandler<AmazonServiceException> errorResponseHandler = protocolFactory.createErrorResponseHandler(new JsonErrorResponseMetadata()); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } }