All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.lexmodelbuilding.model.PutBotRequest Maven / Gradle / Ivy

/*
 * Copyright 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 software.amazon.awssdk.services.lexmodelbuilding.model;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.ListTrait;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList;
import software.amazon.awssdk.core.util.SdkAutoConstructList;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;

/**
 */
@Generated("software.amazon.awssdk:codegen")
public final class PutBotRequest extends LexModelBuildingRequest implements
        ToCopyableBuilder {
    private static final SdkField NAME_FIELD = SdkField. builder(MarshallingType.STRING).memberName("name")
            .getter(getter(PutBotRequest::name)).setter(setter(Builder::name))
            .traits(LocationTrait.builder().location(MarshallLocation.PATH).locationName("name").build()).build();

    private static final SdkField DESCRIPTION_FIELD = SdkField. builder(MarshallingType.STRING)
            .memberName("description").getter(getter(PutBotRequest::description)).setter(setter(Builder::description))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("description").build()).build();

    private static final SdkField> INTENTS_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .memberName("intents")
            .getter(getter(PutBotRequest::intents))
            .setter(setter(Builder::intents))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("intents").build(),
                    ListTrait
                            .builder()
                            .memberLocationName(null)
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.SDK_POJO)
                                            .constructor(Intent::builder)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("member").build()).build()).build()).build();

    private static final SdkField ENABLE_MODEL_IMPROVEMENTS_FIELD = SdkField. builder(MarshallingType.BOOLEAN)
            .memberName("enableModelImprovements").getter(getter(PutBotRequest::enableModelImprovements))
            .setter(setter(Builder::enableModelImprovements))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("enableModelImprovements").build())
            .build();

    private static final SdkField NLU_INTENT_CONFIDENCE_THRESHOLD_FIELD = SdkField
            . builder(MarshallingType.DOUBLE)
            .memberName("nluIntentConfidenceThreshold")
            .getter(getter(PutBotRequest::nluIntentConfidenceThreshold))
            .setter(setter(Builder::nluIntentConfidenceThreshold))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("nluIntentConfidenceThreshold")
                    .build()).build();

    private static final SdkField CLARIFICATION_PROMPT_FIELD = SdkField. builder(MarshallingType.SDK_POJO)
            .memberName("clarificationPrompt").getter(getter(PutBotRequest::clarificationPrompt))
            .setter(setter(Builder::clarificationPrompt)).constructor(Prompt::builder)
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("clarificationPrompt").build())
            .build();

    private static final SdkField ABORT_STATEMENT_FIELD = SdkField. builder(MarshallingType.SDK_POJO)
            .memberName("abortStatement").getter(getter(PutBotRequest::abortStatement)).setter(setter(Builder::abortStatement))
            .constructor(Statement::builder)
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("abortStatement").build()).build();

    private static final SdkField IDLE_SESSION_TTL_IN_SECONDS_FIELD = SdkField
            . builder(MarshallingType.INTEGER).memberName("idleSessionTTLInSeconds")
            .getter(getter(PutBotRequest::idleSessionTTLInSeconds)).setter(setter(Builder::idleSessionTTLInSeconds))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("idleSessionTTLInSeconds").build())
            .build();

    private static final SdkField VOICE_ID_FIELD = SdkField. builder(MarshallingType.STRING)
            .memberName("voiceId").getter(getter(PutBotRequest::voiceId)).setter(setter(Builder::voiceId))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("voiceId").build()).build();

    private static final SdkField CHECKSUM_FIELD = SdkField. builder(MarshallingType.STRING)
            .memberName("checksum").getter(getter(PutBotRequest::checksum)).setter(setter(Builder::checksum))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("checksum").build()).build();

    private static final SdkField PROCESS_BEHAVIOR_FIELD = SdkField. builder(MarshallingType.STRING)
            .memberName("processBehavior").getter(getter(PutBotRequest::processBehaviorAsString))
            .setter(setter(Builder::processBehavior))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("processBehavior").build()).build();

    private static final SdkField LOCALE_FIELD = SdkField. builder(MarshallingType.STRING).memberName("locale")
            .getter(getter(PutBotRequest::localeAsString)).setter(setter(Builder::locale))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("locale").build()).build();

    private static final SdkField CHILD_DIRECTED_FIELD = SdkField. builder(MarshallingType.BOOLEAN)
            .memberName("childDirected").getter(getter(PutBotRequest::childDirected)).setter(setter(Builder::childDirected))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("childDirected").build()).build();

    private static final SdkField DETECT_SENTIMENT_FIELD = SdkField. builder(MarshallingType.BOOLEAN)
            .memberName("detectSentiment").getter(getter(PutBotRequest::detectSentiment))
            .setter(setter(Builder::detectSentiment))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("detectSentiment").build()).build();

    private static final SdkField CREATE_VERSION_FIELD = SdkField. builder(MarshallingType.BOOLEAN)
            .memberName("createVersion").getter(getter(PutBotRequest::createVersion)).setter(setter(Builder::createVersion))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("createVersion").build()).build();

    private static final SdkField> TAGS_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .memberName("tags")
            .getter(getter(PutBotRequest::tags))
            .setter(setter(Builder::tags))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("tags").build(),
                    ListTrait
                            .builder()
                            .memberLocationName(null)
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.SDK_POJO)
                                            .constructor(Tag::builder)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("member").build()).build()).build()).build();

    private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(NAME_FIELD, DESCRIPTION_FIELD,
            INTENTS_FIELD, ENABLE_MODEL_IMPROVEMENTS_FIELD, NLU_INTENT_CONFIDENCE_THRESHOLD_FIELD, CLARIFICATION_PROMPT_FIELD,
            ABORT_STATEMENT_FIELD, IDLE_SESSION_TTL_IN_SECONDS_FIELD, VOICE_ID_FIELD, CHECKSUM_FIELD, PROCESS_BEHAVIOR_FIELD,
            LOCALE_FIELD, CHILD_DIRECTED_FIELD, DETECT_SENTIMENT_FIELD, CREATE_VERSION_FIELD, TAGS_FIELD));

    private final String name;

    private final String description;

    private final List intents;

    private final Boolean enableModelImprovements;

    private final Double nluIntentConfidenceThreshold;

    private final Prompt clarificationPrompt;

    private final Statement abortStatement;

    private final Integer idleSessionTTLInSeconds;

    private final String voiceId;

    private final String checksum;

    private final String processBehavior;

    private final String locale;

    private final Boolean childDirected;

    private final Boolean detectSentiment;

    private final Boolean createVersion;

    private final List tags;

    private PutBotRequest(BuilderImpl builder) {
        super(builder);
        this.name = builder.name;
        this.description = builder.description;
        this.intents = builder.intents;
        this.enableModelImprovements = builder.enableModelImprovements;
        this.nluIntentConfidenceThreshold = builder.nluIntentConfidenceThreshold;
        this.clarificationPrompt = builder.clarificationPrompt;
        this.abortStatement = builder.abortStatement;
        this.idleSessionTTLInSeconds = builder.idleSessionTTLInSeconds;
        this.voiceId = builder.voiceId;
        this.checksum = builder.checksum;
        this.processBehavior = builder.processBehavior;
        this.locale = builder.locale;
        this.childDirected = builder.childDirected;
        this.detectSentiment = builder.detectSentiment;
        this.createVersion = builder.createVersion;
        this.tags = builder.tags;
    }

    /**
     * 

* The name of the bot. The name is not case sensitive. *

* * @return The name of the bot. The name is not case sensitive. */ public final String name() { return name; } /** *

* A description of the bot. *

* * @return A description of the bot. */ public final String description() { return description; } /** * For responses, this returns true if the service returned a value for the Intents property. This DOES NOT check * that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property). This is * useful because the SDK will never return a null collection or map, but you may need to differentiate between the * service returning nothing (or null) and the service returning an empty collection or map. For requests, this * returns true if a value for the property was specified in the request builder, and false if a value was not * specified. */ public final boolean hasIntents() { return intents != null && !(intents instanceof SdkAutoConstructList); } /** *

* An array of Intent objects. Each intent represents a command that a user can express. For example, a * pizza ordering bot might support an OrderPizza intent. For more information, see how-it-works. *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

*

* This method will never return null. If you would like to know whether the service returned this field (so that * you can differentiate between null and empty), you can use the {@link #hasIntents} method. *

* * @return An array of Intent objects. Each intent represents a command that a user can express. For * example, a pizza ordering bot might support an OrderPizza intent. For more information, see * how-it-works. */ public final List intents() { return intents; } /** *

* Set to true to enable access to natural language understanding improvements. *

*

* When you set the enableModelImprovements parameter to true you can use the * nluIntentConfidenceThreshold parameter to configure confidence scores. For more information, see Confidence Scores. *

*

* You can only set the enableModelImprovements parameter in certain Regions. If you set the parameter * to true, your bot has access to accuracy improvements. *

*

* The Regions where you can set the enableModelImprovements parameter to true are: *

*
    *
  • *

    * US East (N. Virginia) (us-east-1) *

    *
  • *
  • *

    * US West (Oregon) (us-west-2) *

    *
  • *
  • *

    * Asia Pacific (Sydney) (ap-southeast-2) *

    *
  • *
  • *

    * EU (Ireland) (eu-west-1) *

    *
  • *
*

* In other Regions, the enableModelImprovements parameter is set to true by default. In * these Regions setting the parameter to false throws a ValidationException exception. *

* * @return Set to true to enable access to natural language understanding improvements.

*

* When you set the enableModelImprovements parameter to true you can use the * nluIntentConfidenceThreshold parameter to configure confidence scores. For more information, * see Confidence Scores. *

*

* You can only set the enableModelImprovements parameter in certain Regions. If you set the * parameter to true, your bot has access to accuracy improvements. *

*

* The Regions where you can set the enableModelImprovements parameter to true * are: *

*
    *
  • *

    * US East (N. Virginia) (us-east-1) *

    *
  • *
  • *

    * US West (Oregon) (us-west-2) *

    *
  • *
  • *

    * Asia Pacific (Sydney) (ap-southeast-2) *

    *
  • *
  • *

    * EU (Ireland) (eu-west-1) *

    *
  • *
*

* In other Regions, the enableModelImprovements parameter is set to true by * default. In these Regions setting the parameter to false throws a * ValidationException exception. */ public final Boolean enableModelImprovements() { return enableModelImprovements; } /** *

* Determines the threshold where Amazon Lex will insert the AMAZON.FallbackIntent, * AMAZON.KendraSearchIntent, or both when returning alternative intents in a PostContent or PostText response. * AMAZON.FallbackIntent and AMAZON.KendraSearchIntent are only inserted if they are * configured for the bot. *

*

* You must set the enableModelImprovements parameter to true to use confidence scores in * the following regions. *

*
    *
  • *

    * US East (N. Virginia) (us-east-1) *

    *
  • *
  • *

    * US West (Oregon) (us-west-2) *

    *
  • *
  • *

    * Asia Pacific (Sydney) (ap-southeast-2) *

    *
  • *
  • *

    * EU (Ireland) (eu-west-1) *

    *
  • *
*

* In other Regions, the enableModelImprovements parameter is set to true by default. *

*

* For example, suppose a bot is configured with the confidence threshold of 0.80 and the * AMAZON.FallbackIntent. Amazon Lex returns three alternative intents with the following confidence * scores: IntentA (0.70), IntentB (0.60), IntentC (0.50). The response from the PostText operation * would be: *

*
    *
  • *

    * AMAZON.FallbackIntent *

    *
  • *
  • *

    * IntentA *

    *
  • *
  • *

    * IntentB *

    *
  • *
  • *

    * IntentC *

    *
  • *
* * @return Determines the threshold where Amazon Lex will insert the AMAZON.FallbackIntent, * AMAZON.KendraSearchIntent, or both when returning alternative intents in a PostContent or PostText response. * AMAZON.FallbackIntent and AMAZON.KendraSearchIntent are only inserted if they * are configured for the bot.

*

* You must set the enableModelImprovements parameter to true to use confidence * scores in the following regions. *

*
    *
  • *

    * US East (N. Virginia) (us-east-1) *

    *
  • *
  • *

    * US West (Oregon) (us-west-2) *

    *
  • *
  • *

    * Asia Pacific (Sydney) (ap-southeast-2) *

    *
  • *
  • *

    * EU (Ireland) (eu-west-1) *

    *
  • *
*

* In other Regions, the enableModelImprovements parameter is set to true by * default. *

*

* For example, suppose a bot is configured with the confidence threshold of 0.80 and the * AMAZON.FallbackIntent. Amazon Lex returns three alternative intents with the following * confidence scores: IntentA (0.70), IntentB (0.60), IntentC (0.50). The response from the * PostText operation would be: *

*
    *
  • *

    * AMAZON.FallbackIntent *

    *
  • *
  • *

    * IntentA *

    *
  • *
  • *

    * IntentB *

    *
  • *
  • *

    * IntentC *

    *
  • */ public final Double nluIntentConfidenceThreshold() { return nluIntentConfidenceThreshold; } /** *

    * When Amazon Lex doesn't understand the user's intent, it uses this message to get clarification. To specify how * many times Amazon Lex should repeat the clarification prompt, use the maxAttempts field. If Amazon * Lex still doesn't understand, it sends the message in the abortStatement field. *

    *

    * When you create a clarification prompt, make sure that it suggests the correct response from the user. for * example, for a bot that orders pizza and drinks, you might create this clarification prompt: * "What would you like to do? You can say 'Order a pizza' or 'Order a drink.'" *

    *

    * If you have defined a fallback intent, it will be invoked if the clarification prompt is repeated the number of * times defined in the maxAttempts field. For more information, see AMAZON.FallbackIntent. *

    *

    * If you don't define a clarification prompt, at runtime Amazon Lex will return a 400 Bad Request exception in * three cases: *

    *
      *
    • *

      * Follow-up prompt - When the user responds to a follow-up prompt but does not provide an intent. For example, in * response to a follow-up prompt that says "Would you like anything else today?" the user says "Yes." Amazon Lex * will return a 400 Bad Request exception because it does not have a clarification prompt to send to the user to * get an intent. *

      *
    • *
    • *

      * Lambda function - When using a Lambda function, you return an ElicitIntent dialog type. Since Amazon * Lex does not have a clarification prompt to get an intent from the user, it returns a 400 Bad Request exception. *

      *
    • *
    • *

      * PutSession operation - When using the PutSession operation, you send an ElicitIntent * dialog type. Since Amazon Lex does not have a clarification prompt to get an intent from the user, it returns a * 400 Bad Request exception. *

      *
    • *
    * * @return When Amazon Lex doesn't understand the user's intent, it uses this message to get clarification. To * specify how many times Amazon Lex should repeat the clarification prompt, use the * maxAttempts field. If Amazon Lex still doesn't understand, it sends the message in the * abortStatement field.

    *

    * When you create a clarification prompt, make sure that it suggests the correct response from the user. * for example, for a bot that orders pizza and drinks, you might create this clarification prompt: * "What would you like to do? You can say 'Order a pizza' or 'Order a drink.'" *

    *

    * If you have defined a fallback intent, it will be invoked if the clarification prompt is repeated the * number of times defined in the maxAttempts field. For more information, see * AMAZON.FallbackIntent. *

    *

    * If you don't define a clarification prompt, at runtime Amazon Lex will return a 400 Bad Request exception * in three cases: *

    *
      *
    • *

      * Follow-up prompt - When the user responds to a follow-up prompt but does not provide an intent. For * example, in response to a follow-up prompt that says "Would you like anything else today?" the user says * "Yes." Amazon Lex will return a 400 Bad Request exception because it does not have a clarification prompt * to send to the user to get an intent. *

      *
    • *
    • *

      * Lambda function - When using a Lambda function, you return an ElicitIntent dialog type. * Since Amazon Lex does not have a clarification prompt to get an intent from the user, it returns a 400 * Bad Request exception. *

      *
    • *
    • *

      * PutSession operation - When using the PutSession operation, you send an * ElicitIntent dialog type. Since Amazon Lex does not have a clarification prompt to get an * intent from the user, it returns a 400 Bad Request exception. *

      *
    • */ public final Prompt clarificationPrompt() { return clarificationPrompt; } /** *

      * When Amazon Lex can't understand the user's input in context, it tries to elicit the information a few times. * After that, Amazon Lex sends the message defined in abortStatement to the user, and then cancels the * conversation. To set the number of retries, use the valueElicitationPrompt field for the slot type. *

      *

      * For example, in a pizza ordering bot, Amazon Lex might ask a user "What type of crust would you like?" If the * user's response is not one of the expected responses (for example, "thin crust, "deep dish," etc.), Amazon Lex * tries to elicit a correct response a few more times. *

      *

      * For example, in a pizza ordering application, OrderPizza might be one of the intents. This intent * might require the CrustType slot. You specify the valueElicitationPrompt field when you * create the CrustType slot. *

      *

      * If you have defined a fallback intent the cancel statement will not be sent to the user, the fallback intent is * used instead. For more information, see AMAZON.FallbackIntent. *

      * * @return When Amazon Lex can't understand the user's input in context, it tries to elicit the information a few * times. After that, Amazon Lex sends the message defined in abortStatement to the user, and * then cancels the conversation. To set the number of retries, use the valueElicitationPrompt * field for the slot type.

      *

      * For example, in a pizza ordering bot, Amazon Lex might ask a user "What type of crust would you like?" If * the user's response is not one of the expected responses (for example, "thin crust, "deep dish," etc.), * Amazon Lex tries to elicit a correct response a few more times. *

      *

      * For example, in a pizza ordering application, OrderPizza might be one of the intents. This * intent might require the CrustType slot. You specify the valueElicitationPrompt * field when you create the CrustType slot. *

      *

      * If you have defined a fallback intent the cancel statement will not be sent to the user, the fallback * intent is used instead. For more information, see * AMAZON.FallbackIntent. */ public final Statement abortStatement() { return abortStatement; } /** *

      * The maximum time in seconds that Amazon Lex retains the data gathered in a conversation. *

      *

      * A user interaction session remains active for the amount of time specified. If no conversation occurs during this * time, the session expires and Amazon Lex deletes any data provided before the timeout. *

      *

      * For example, suppose that a user chooses the OrderPizza intent, but gets sidetracked halfway through placing an * order. If the user doesn't complete the order within the specified time, Amazon Lex discards the slot information * that it gathered, and the user must start over. *

      *

      * If you don't include the idleSessionTTLInSeconds element in a PutBot operation request, * Amazon Lex uses the default value. This is also true if the request replaces an existing bot. *

      *

      * The default is 300 seconds (5 minutes). *

      * * @return The maximum time in seconds that Amazon Lex retains the data gathered in a conversation.

      *

      * A user interaction session remains active for the amount of time specified. If no conversation occurs * during this time, the session expires and Amazon Lex deletes any data provided before the timeout. *

      *

      * For example, suppose that a user chooses the OrderPizza intent, but gets sidetracked halfway through * placing an order. If the user doesn't complete the order within the specified time, Amazon Lex discards * the slot information that it gathered, and the user must start over. *

      *

      * If you don't include the idleSessionTTLInSeconds element in a PutBot operation * request, Amazon Lex uses the default value. This is also true if the request replaces an existing bot. *

      *

      * The default is 300 seconds (5 minutes). */ public final Integer idleSessionTTLInSeconds() { return idleSessionTTLInSeconds; } /** *

      * The Amazon Polly voice ID that you want Amazon Lex to use for voice interactions with the user. The locale * configured for the voice must match the locale of the bot. For more information, see Voices in Amazon Polly in the Amazon * Polly Developer Guide. *

      * * @return The Amazon Polly voice ID that you want Amazon Lex to use for voice interactions with the user. The * locale configured for the voice must match the locale of the bot. For more information, see Voices in Amazon Polly in the * Amazon Polly Developer Guide. */ public final String voiceId() { return voiceId; } /** *

      * Identifies a specific revision of the $LATEST version. *

      *

      * When you create a new bot, leave the checksum field blank. If you specify a checksum you get a * BadRequestException exception. *

      *

      * When you want to update a bot, set the checksum field to the checksum of the most recent revision of * the $LATEST version. If you don't specify the checksum field, or if the checksum does * not match the $LATEST version, you get a PreconditionFailedException exception. *

      * * @return Identifies a specific revision of the $LATEST version.

      *

      * When you create a new bot, leave the checksum field blank. If you specify a checksum you get * a BadRequestException exception. *

      *

      * When you want to update a bot, set the checksum field to the checksum of the most recent * revision of the $LATEST version. If you don't specify the checksum field, or * if the checksum does not match the $LATEST version, you get a * PreconditionFailedException exception. */ public final String checksum() { return checksum; } /** *

      * If you set the processBehavior element to BUILD, Amazon Lex builds the bot so that it * can be run. If you set the element to SAVE Amazon Lex saves the bot, but doesn't build it. *

      *

      * If you don't specify this value, the default value is BUILD. *

      *

      * If the service returns an enum value that is not available in the current SDK version, {@link #processBehavior} * will return {@link ProcessBehavior#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available * from {@link #processBehaviorAsString}. *

      * * @return If you set the processBehavior element to BUILD, Amazon Lex builds the bot so * that it can be run. If you set the element to SAVE Amazon Lex saves the bot, but doesn't * build it.

      *

      * If you don't specify this value, the default value is BUILD. * @see ProcessBehavior */ public final ProcessBehavior processBehavior() { return ProcessBehavior.fromValue(processBehavior); } /** *

      * If you set the processBehavior element to BUILD, Amazon Lex builds the bot so that it * can be run. If you set the element to SAVE Amazon Lex saves the bot, but doesn't build it. *

      *

      * If you don't specify this value, the default value is BUILD. *

      *

      * If the service returns an enum value that is not available in the current SDK version, {@link #processBehavior} * will return {@link ProcessBehavior#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available * from {@link #processBehaviorAsString}. *

      * * @return If you set the processBehavior element to BUILD, Amazon Lex builds the bot so * that it can be run. If you set the element to SAVE Amazon Lex saves the bot, but doesn't * build it.

      *

      * If you don't specify this value, the default value is BUILD. * @see ProcessBehavior */ public final String processBehaviorAsString() { return processBehavior; } /** *

      * Specifies the target locale for the bot. Any intent used in the bot must be compatible with the locale of the * bot. *

      *

      * The default is en-US. *

      *

      * If the service returns an enum value that is not available in the current SDK version, {@link #locale} will * return {@link Locale#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #localeAsString}. *

      * * @return Specifies the target locale for the bot. Any intent used in the bot must be compatible with the locale of * the bot.

      *

      * The default is en-US. * @see Locale */ public final Locale locale() { return Locale.fromValue(locale); } /** *

      * Specifies the target locale for the bot. Any intent used in the bot must be compatible with the locale of the * bot. *

      *

      * The default is en-US. *

      *

      * If the service returns an enum value that is not available in the current SDK version, {@link #locale} will * return {@link Locale#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #localeAsString}. *

      * * @return Specifies the target locale for the bot. Any intent used in the bot must be compatible with the locale of * the bot.

      *

      * The default is en-US. * @see Locale */ public final String localeAsString() { return locale; } /** *

      * For each Amazon Lex bot created with the Amazon Lex Model Building Service, you must specify whether your use of * Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole or in * part, to children under age 13 and subject to the Children's Online Privacy Protection Act (COPPA) by specifying * true or false in the childDirected field. By specifying true * in the childDirected field, you confirm that your use of Amazon Lex is related to a website, * program, or other application that is directed or targeted, in whole or in part, to children under age 13 and * subject to COPPA. By specifying false in the childDirected field, you confirm that your * use of Amazon Lex is not related to a website, program, or other application that is directed or targeted, * in whole or in part, to children under age 13 and subject to COPPA. You may not specify a default value for the * childDirected field that does not accurately reflect whether your use of Amazon Lex is related to a * website, program, or other application that is directed or targeted, in whole or in part, to children under age * 13 and subject to COPPA. *

      *

      * If your use of Amazon Lex relates to a website, program, or other application that is directed in whole or in * part, to children under age 13, you must obtain any required verifiable parental consent under COPPA. For * information regarding the use of Amazon Lex in connection with websites, programs, or other applications that are * directed or targeted, in whole or in part, to children under age 13, see the Amazon Lex FAQ. *

      * * @return For each Amazon Lex bot created with the Amazon Lex Model Building Service, you must specify whether your * use of Amazon Lex is related to a website, program, or other application that is directed or targeted, in * whole or in part, to children under age 13 and subject to the Children's Online Privacy Protection Act * (COPPA) by specifying true or false in the childDirected field. By * specifying true in the childDirected field, you confirm that your use of Amazon * Lex is related to a website, program, or other application that is directed or targeted, in whole * or in part, to children under age 13 and subject to COPPA. By specifying false in the * childDirected field, you confirm that your use of Amazon Lex is not related to a * website, program, or other application that is directed or targeted, in whole or in part, to children * under age 13 and subject to COPPA. You may not specify a default value for the childDirected * field that does not accurately reflect whether your use of Amazon Lex is related to a website, program, * or other application that is directed or targeted, in whole or in part, to children under age 13 and * subject to COPPA.

      *

      * If your use of Amazon Lex relates to a website, program, or other application that is directed in whole * or in part, to children under age 13, you must obtain any required verifiable parental consent under * COPPA. For information regarding the use of Amazon Lex in connection with websites, programs, or other * applications that are directed or targeted, in whole or in part, to children under age 13, see the Amazon Lex FAQ. */ public final Boolean childDirected() { return childDirected; } /** *

      * When set to true user utterances are sent to Amazon Comprehend for sentiment analysis. If you don't * specify detectSentiment, the default is false. *

      * * @return When set to true user utterances are sent to Amazon Comprehend for sentiment analysis. If * you don't specify detectSentiment, the default is false. */ public final Boolean detectSentiment() { return detectSentiment; } /** *

      * When set to true a new numbered version of the bot is created. This is the same as calling the * CreateBotVersion operation. If you don't specify createVersion, the default is * false. *

      * * @return When set to true a new numbered version of the bot is created. This is the same as calling * the CreateBotVersion operation. If you don't specify createVersion, the default * is false. */ public final Boolean createVersion() { return createVersion; } /** * For responses, this returns true if the service returned a value for the Tags property. This DOES NOT check that * the value is non-empty (for which, you should check the {@code isEmpty()} method on the property). This is useful * because the SDK will never return a null collection or map, but you may need to differentiate between the service * returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true * if a value for the property was specified in the request builder, and false if a value was not specified. */ public final boolean hasTags() { return tags != null && !(tags instanceof SdkAutoConstructList); } /** *

      * A list of tags to add to the bot. You can only add tags when you create a bot, you can't use the * PutBot operation to update the tags on a bot. To update tags, use the TagResource * operation. *

      *

      * Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

      *

      * This method will never return null. If you would like to know whether the service returned this field (so that * you can differentiate between null and empty), you can use the {@link #hasTags} method. *

      * * @return A list of tags to add to the bot. You can only add tags when you create a bot, you can't use the * PutBot operation to update the tags on a bot. To update tags, use the * TagResource operation. */ public final List tags() { return tags; } @Override public Builder toBuilder() { return new BuilderImpl(this); } public static Builder builder() { return new BuilderImpl(); } public static Class serializableBuilderClass() { return BuilderImpl.class; } @Override public final int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + super.hashCode(); hashCode = 31 * hashCode + Objects.hashCode(name()); hashCode = 31 * hashCode + Objects.hashCode(description()); hashCode = 31 * hashCode + Objects.hashCode(hasIntents() ? intents() : null); hashCode = 31 * hashCode + Objects.hashCode(enableModelImprovements()); hashCode = 31 * hashCode + Objects.hashCode(nluIntentConfidenceThreshold()); hashCode = 31 * hashCode + Objects.hashCode(clarificationPrompt()); hashCode = 31 * hashCode + Objects.hashCode(abortStatement()); hashCode = 31 * hashCode + Objects.hashCode(idleSessionTTLInSeconds()); hashCode = 31 * hashCode + Objects.hashCode(voiceId()); hashCode = 31 * hashCode + Objects.hashCode(checksum()); hashCode = 31 * hashCode + Objects.hashCode(processBehaviorAsString()); hashCode = 31 * hashCode + Objects.hashCode(localeAsString()); hashCode = 31 * hashCode + Objects.hashCode(childDirected()); hashCode = 31 * hashCode + Objects.hashCode(detectSentiment()); hashCode = 31 * hashCode + Objects.hashCode(createVersion()); hashCode = 31 * hashCode + Objects.hashCode(hasTags() ? tags() : null); return hashCode; } @Override public final boolean equals(Object obj) { return super.equals(obj) && equalsBySdkFields(obj); } @Override public final boolean equalsBySdkFields(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof PutBotRequest)) { return false; } PutBotRequest other = (PutBotRequest) obj; return Objects.equals(name(), other.name()) && Objects.equals(description(), other.description()) && hasIntents() == other.hasIntents() && Objects.equals(intents(), other.intents()) && Objects.equals(enableModelImprovements(), other.enableModelImprovements()) && Objects.equals(nluIntentConfidenceThreshold(), other.nluIntentConfidenceThreshold()) && Objects.equals(clarificationPrompt(), other.clarificationPrompt()) && Objects.equals(abortStatement(), other.abortStatement()) && Objects.equals(idleSessionTTLInSeconds(), other.idleSessionTTLInSeconds()) && Objects.equals(voiceId(), other.voiceId()) && Objects.equals(checksum(), other.checksum()) && Objects.equals(processBehaviorAsString(), other.processBehaviorAsString()) && Objects.equals(localeAsString(), other.localeAsString()) && Objects.equals(childDirected(), other.childDirected()) && Objects.equals(detectSentiment(), other.detectSentiment()) && Objects.equals(createVersion(), other.createVersion()) && hasTags() == other.hasTags() && Objects.equals(tags(), other.tags()); } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. */ @Override public final String toString() { return ToString.builder("PutBotRequest").add("Name", name()).add("Description", description()) .add("Intents", hasIntents() ? intents() : null).add("EnableModelImprovements", enableModelImprovements()) .add("NluIntentConfidenceThreshold", nluIntentConfidenceThreshold()) .add("ClarificationPrompt", clarificationPrompt()).add("AbortStatement", abortStatement()) .add("IdleSessionTTLInSeconds", idleSessionTTLInSeconds()).add("VoiceId", voiceId()).add("Checksum", checksum()) .add("ProcessBehavior", processBehaviorAsString()).add("Locale", localeAsString()) .add("ChildDirected", childDirected()).add("DetectSentiment", detectSentiment()) .add("CreateVersion", createVersion()).add("Tags", hasTags() ? tags() : null).build(); } public final Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "name": return Optional.ofNullable(clazz.cast(name())); case "description": return Optional.ofNullable(clazz.cast(description())); case "intents": return Optional.ofNullable(clazz.cast(intents())); case "enableModelImprovements": return Optional.ofNullable(clazz.cast(enableModelImprovements())); case "nluIntentConfidenceThreshold": return Optional.ofNullable(clazz.cast(nluIntentConfidenceThreshold())); case "clarificationPrompt": return Optional.ofNullable(clazz.cast(clarificationPrompt())); case "abortStatement": return Optional.ofNullable(clazz.cast(abortStatement())); case "idleSessionTTLInSeconds": return Optional.ofNullable(clazz.cast(idleSessionTTLInSeconds())); case "voiceId": return Optional.ofNullable(clazz.cast(voiceId())); case "checksum": return Optional.ofNullable(clazz.cast(checksum())); case "processBehavior": return Optional.ofNullable(clazz.cast(processBehaviorAsString())); case "locale": return Optional.ofNullable(clazz.cast(localeAsString())); case "childDirected": return Optional.ofNullable(clazz.cast(childDirected())); case "detectSentiment": return Optional.ofNullable(clazz.cast(detectSentiment())); case "createVersion": return Optional.ofNullable(clazz.cast(createVersion())); case "tags": return Optional.ofNullable(clazz.cast(tags())); default: return Optional.empty(); } } @Override public final List> sdkFields() { return SDK_FIELDS; } private static Function getter(Function g) { return obj -> g.apply((PutBotRequest) obj); } private static BiConsumer setter(BiConsumer s) { return (obj, val) -> s.accept((Builder) obj, val); } public interface Builder extends LexModelBuildingRequest.Builder, SdkPojo, CopyableBuilder { /** *

      * The name of the bot. The name is not case sensitive. *

      * * @param name * The name of the bot. The name is not case sensitive. * @return Returns a reference to this object so that method calls can be chained together. */ Builder name(String name); /** *

      * A description of the bot. *

      * * @param description * A description of the bot. * @return Returns a reference to this object so that method calls can be chained together. */ Builder description(String description); /** *

      * An array of Intent objects. Each intent represents a command that a user can express. For * example, a pizza ordering bot might support an OrderPizza intent. For more information, see * how-it-works. *

      * * @param intents * An array of Intent objects. Each intent represents a command that a user can express. For * example, a pizza ordering bot might support an OrderPizza intent. For more information, see * how-it-works. * @return Returns a reference to this object so that method calls can be chained together. */ Builder intents(Collection intents); /** *

      * An array of Intent objects. Each intent represents a command that a user can express. For * example, a pizza ordering bot might support an OrderPizza intent. For more information, see * how-it-works. *

      * * @param intents * An array of Intent objects. Each intent represents a command that a user can express. For * example, a pizza ordering bot might support an OrderPizza intent. For more information, see * how-it-works. * @return Returns a reference to this object so that method calls can be chained together. */ Builder intents(Intent... intents); /** *

      * An array of Intent objects. Each intent represents a command that a user can express. For * example, a pizza ordering bot might support an OrderPizza intent. For more information, see * how-it-works. *

      * This is a convenience method that creates an instance of the * {@link software.amazon.awssdk.services.lexmodelbuilding.model.Intent.Builder} avoiding the need to create one * manually via {@link software.amazon.awssdk.services.lexmodelbuilding.model.Intent#builder()}. * *

      * When the {@link Consumer} completes, * {@link software.amazon.awssdk.services.lexmodelbuilding.model.Intent.Builder#build()} is called immediately * and its result is passed to {@link #intents(List)}. * * @param intents * a consumer that will call methods on * {@link software.amazon.awssdk.services.lexmodelbuilding.model.Intent.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #intents(java.util.Collection) */ Builder intents(Consumer... intents); /** *

      * Set to true to enable access to natural language understanding improvements. *

      *

      * When you set the enableModelImprovements parameter to true you can use the * nluIntentConfidenceThreshold parameter to configure confidence scores. For more information, see * Confidence Scores. *

      *

      * You can only set the enableModelImprovements parameter in certain Regions. If you set the * parameter to true, your bot has access to accuracy improvements. *

      *

      * The Regions where you can set the enableModelImprovements parameter to true are: *

      *
        *
      • *

        * US East (N. Virginia) (us-east-1) *

        *
      • *
      • *

        * US West (Oregon) (us-west-2) *

        *
      • *
      • *

        * Asia Pacific (Sydney) (ap-southeast-2) *

        *
      • *
      • *

        * EU (Ireland) (eu-west-1) *

        *
      • *
      *

      * In other Regions, the enableModelImprovements parameter is set to true by default. * In these Regions setting the parameter to false throws a ValidationException * exception. *

      * * @param enableModelImprovements * Set to true to enable access to natural language understanding improvements.

      *

      * When you set the enableModelImprovements parameter to true you can use the * nluIntentConfidenceThreshold parameter to configure confidence scores. For more * information, see Confidence * Scores. *

      *

      * You can only set the enableModelImprovements parameter in certain Regions. If you set the * parameter to true, your bot has access to accuracy improvements. *

      *

      * The Regions where you can set the enableModelImprovements parameter to true * are: *

      *
        *
      • *

        * US East (N. Virginia) (us-east-1) *

        *
      • *
      • *

        * US West (Oregon) (us-west-2) *

        *
      • *
      • *

        * Asia Pacific (Sydney) (ap-southeast-2) *

        *
      • *
      • *

        * EU (Ireland) (eu-west-1) *

        *
      • *
      *

      * In other Regions, the enableModelImprovements parameter is set to true by * default. In these Regions setting the parameter to false throws a * ValidationException exception. * @return Returns a reference to this object so that method calls can be chained together. */ Builder enableModelImprovements(Boolean enableModelImprovements); /** *

      * Determines the threshold where Amazon Lex will insert the AMAZON.FallbackIntent, * AMAZON.KendraSearchIntent, or both when returning alternative intents in a PostContent or PostText response. * AMAZON.FallbackIntent and AMAZON.KendraSearchIntent are only inserted if they are * configured for the bot. *

      *

      * You must set the enableModelImprovements parameter to true to use confidence scores * in the following regions. *

      *
        *
      • *

        * US East (N. Virginia) (us-east-1) *

        *
      • *
      • *

        * US West (Oregon) (us-west-2) *

        *
      • *
      • *

        * Asia Pacific (Sydney) (ap-southeast-2) *

        *
      • *
      • *

        * EU (Ireland) (eu-west-1) *

        *
      • *
      *

      * In other Regions, the enableModelImprovements parameter is set to true by default. *

      *

      * For example, suppose a bot is configured with the confidence threshold of 0.80 and the * AMAZON.FallbackIntent. Amazon Lex returns three alternative intents with the following * confidence scores: IntentA (0.70), IntentB (0.60), IntentC (0.50). The response from the * PostText operation would be: *

      *
        *
      • *

        * AMAZON.FallbackIntent *

        *
      • *
      • *

        * IntentA *

        *
      • *
      • *

        * IntentB *

        *
      • *
      • *

        * IntentC *

        *
      • *
      * * @param nluIntentConfidenceThreshold * Determines the threshold where Amazon Lex will insert the AMAZON.FallbackIntent, * AMAZON.KendraSearchIntent, or both when returning alternative intents in a PostContent or PostText response. * AMAZON.FallbackIntent and AMAZON.KendraSearchIntent are only inserted if * they are configured for the bot.

      *

      * You must set the enableModelImprovements parameter to true to use confidence * scores in the following regions. *

      *
        *
      • *

        * US East (N. Virginia) (us-east-1) *

        *
      • *
      • *

        * US West (Oregon) (us-west-2) *

        *
      • *
      • *

        * Asia Pacific (Sydney) (ap-southeast-2) *

        *
      • *
      • *

        * EU (Ireland) (eu-west-1) *

        *
      • *
      *

      * In other Regions, the enableModelImprovements parameter is set to true by * default. *

      *

      * For example, suppose a bot is configured with the confidence threshold of 0.80 and the * AMAZON.FallbackIntent. Amazon Lex returns three alternative intents with the following * confidence scores: IntentA (0.70), IntentB (0.60), IntentC (0.50). The response from the * PostText operation would be: *

      *
        *
      • *

        * AMAZON.FallbackIntent *

        *
      • *
      • *

        * IntentA *

        *
      • *
      • *

        * IntentB *

        *
      • *
      • *

        * IntentC *

        *
      • * @return Returns a reference to this object so that method calls can be chained together. */ Builder nluIntentConfidenceThreshold(Double nluIntentConfidenceThreshold); /** *

        * When Amazon Lex doesn't understand the user's intent, it uses this message to get clarification. To specify * how many times Amazon Lex should repeat the clarification prompt, use the maxAttempts field. If * Amazon Lex still doesn't understand, it sends the message in the abortStatement field. *

        *

        * When you create a clarification prompt, make sure that it suggests the correct response from the user. for * example, for a bot that orders pizza and drinks, you might create this clarification prompt: * "What would you like to do? You can say 'Order a pizza' or 'Order a drink.'" *

        *

        * If you have defined a fallback intent, it will be invoked if the clarification prompt is repeated the number * of times defined in the maxAttempts field. For more information, see AMAZON.FallbackIntent. *

        *

        * If you don't define a clarification prompt, at runtime Amazon Lex will return a 400 Bad Request exception in * three cases: *

        *
          *
        • *

          * Follow-up prompt - When the user responds to a follow-up prompt but does not provide an intent. For example, * in response to a follow-up prompt that says "Would you like anything else today?" the user says "Yes." Amazon * Lex will return a 400 Bad Request exception because it does not have a clarification prompt to send to the * user to get an intent. *

          *
        • *
        • *

          * Lambda function - When using a Lambda function, you return an ElicitIntent dialog type. Since * Amazon Lex does not have a clarification prompt to get an intent from the user, it returns a 400 Bad Request * exception. *

          *
        • *
        • *

          * PutSession operation - When using the PutSession operation, you send an * ElicitIntent dialog type. Since Amazon Lex does not have a clarification prompt to get an intent * from the user, it returns a 400 Bad Request exception. *

          *
        • *
        * * @param clarificationPrompt * When Amazon Lex doesn't understand the user's intent, it uses this message to get clarification. To * specify how many times Amazon Lex should repeat the clarification prompt, use the * maxAttempts field. If Amazon Lex still doesn't understand, it sends the message in the * abortStatement field.

        *

        * When you create a clarification prompt, make sure that it suggests the correct response from the user. * for example, for a bot that orders pizza and drinks, you might create this clarification prompt: * "What would you like to do? You can say 'Order a pizza' or 'Order a drink.'" *

        *

        * If you have defined a fallback intent, it will be invoked if the clarification prompt is repeated the * number of times defined in the maxAttempts field. For more information, see * AMAZON.FallbackIntent. *

        *

        * If you don't define a clarification prompt, at runtime Amazon Lex will return a 400 Bad Request * exception in three cases: *

        *
          *
        • *

          * Follow-up prompt - When the user responds to a follow-up prompt but does not provide an intent. For * example, in response to a follow-up prompt that says "Would you like anything else today?" the user * says "Yes." Amazon Lex will return a 400 Bad Request exception because it does not have a * clarification prompt to send to the user to get an intent. *

          *
        • *
        • *

          * Lambda function - When using a Lambda function, you return an ElicitIntent dialog type. * Since Amazon Lex does not have a clarification prompt to get an intent from the user, it returns a 400 * Bad Request exception. *

          *
        • *
        • *

          * PutSession operation - When using the PutSession operation, you send an * ElicitIntent dialog type. Since Amazon Lex does not have a clarification prompt to get an * intent from the user, it returns a 400 Bad Request exception. *

          *
        • * @return Returns a reference to this object so that method calls can be chained together. */ Builder clarificationPrompt(Prompt clarificationPrompt); /** *

          * When Amazon Lex doesn't understand the user's intent, it uses this message to get clarification. To specify * how many times Amazon Lex should repeat the clarification prompt, use the maxAttempts field. If * Amazon Lex still doesn't understand, it sends the message in the abortStatement field. *

          *

          * When you create a clarification prompt, make sure that it suggests the correct response from the user. for * example, for a bot that orders pizza and drinks, you might create this clarification prompt: * "What would you like to do? You can say 'Order a pizza' or 'Order a drink.'" *

          *

          * If you have defined a fallback intent, it will be invoked if the clarification prompt is repeated the number * of times defined in the maxAttempts field. For more information, see AMAZON.FallbackIntent. *

          *

          * If you don't define a clarification prompt, at runtime Amazon Lex will return a 400 Bad Request exception in * three cases: *

          *
            *
          • *

            * Follow-up prompt - When the user responds to a follow-up prompt but does not provide an intent. For example, * in response to a follow-up prompt that says "Would you like anything else today?" the user says "Yes." Amazon * Lex will return a 400 Bad Request exception because it does not have a clarification prompt to send to the * user to get an intent. *

            *
          • *
          • *

            * Lambda function - When using a Lambda function, you return an ElicitIntent dialog type. Since * Amazon Lex does not have a clarification prompt to get an intent from the user, it returns a 400 Bad Request * exception. *

            *
          • *
          • *

            * PutSession operation - When using the PutSession operation, you send an * ElicitIntent dialog type. Since Amazon Lex does not have a clarification prompt to get an intent * from the user, it returns a 400 Bad Request exception. *

            *
          • *
          * This is a convenience method that creates an instance of the {@link Prompt.Builder} avoiding the need to * create one manually via {@link Prompt#builder()}. * *

          * When the {@link Consumer} completes, {@link Prompt.Builder#build()} is called immediately and its result is * passed to {@link #clarificationPrompt(Prompt)}. * * @param clarificationPrompt * a consumer that will call methods on {@link Prompt.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #clarificationPrompt(Prompt) */ default Builder clarificationPrompt(Consumer clarificationPrompt) { return clarificationPrompt(Prompt.builder().applyMutation(clarificationPrompt).build()); } /** *

          * When Amazon Lex can't understand the user's input in context, it tries to elicit the information a few times. * After that, Amazon Lex sends the message defined in abortStatement to the user, and then cancels * the conversation. To set the number of retries, use the valueElicitationPrompt field for the * slot type. *

          *

          * For example, in a pizza ordering bot, Amazon Lex might ask a user "What type of crust would you like?" If the * user's response is not one of the expected responses (for example, "thin crust, "deep dish," etc.), Amazon * Lex tries to elicit a correct response a few more times. *

          *

          * For example, in a pizza ordering application, OrderPizza might be one of the intents. This * intent might require the CrustType slot. You specify the valueElicitationPrompt * field when you create the CrustType slot. *

          *

          * If you have defined a fallback intent the cancel statement will not be sent to the user, the fallback intent * is used instead. For more information, see AMAZON.FallbackIntent. *

          * * @param abortStatement * When Amazon Lex can't understand the user's input in context, it tries to elicit the information a few * times. After that, Amazon Lex sends the message defined in abortStatement to the user, * and then cancels the conversation. To set the number of retries, use the * valueElicitationPrompt field for the slot type.

          *

          * For example, in a pizza ordering bot, Amazon Lex might ask a user "What type of crust would you like?" * If the user's response is not one of the expected responses (for example, "thin crust, "deep dish," * etc.), Amazon Lex tries to elicit a correct response a few more times. *

          *

          * For example, in a pizza ordering application, OrderPizza might be one of the intents. * This intent might require the CrustType slot. You specify the * valueElicitationPrompt field when you create the CrustType slot. *

          *

          * If you have defined a fallback intent the cancel statement will not be sent to the user, the fallback * intent is used instead. For more information, see * AMAZON.FallbackIntent. * @return Returns a reference to this object so that method calls can be chained together. */ Builder abortStatement(Statement abortStatement); /** *

          * When Amazon Lex can't understand the user's input in context, it tries to elicit the information a few times. * After that, Amazon Lex sends the message defined in abortStatement to the user, and then cancels * the conversation. To set the number of retries, use the valueElicitationPrompt field for the * slot type. *

          *

          * For example, in a pizza ordering bot, Amazon Lex might ask a user "What type of crust would you like?" If the * user's response is not one of the expected responses (for example, "thin crust, "deep dish," etc.), Amazon * Lex tries to elicit a correct response a few more times. *

          *

          * For example, in a pizza ordering application, OrderPizza might be one of the intents. This * intent might require the CrustType slot. You specify the valueElicitationPrompt * field when you create the CrustType slot. *

          *

          * If you have defined a fallback intent the cancel statement will not be sent to the user, the fallback intent * is used instead. For more information, see AMAZON.FallbackIntent. *

          * This is a convenience method that creates an instance of the {@link Statement.Builder} avoiding the need to * create one manually via {@link Statement#builder()}. * *

          * When the {@link Consumer} completes, {@link Statement.Builder#build()} is called immediately and its result * is passed to {@link #abortStatement(Statement)}. * * @param abortStatement * a consumer that will call methods on {@link Statement.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #abortStatement(Statement) */ default Builder abortStatement(Consumer abortStatement) { return abortStatement(Statement.builder().applyMutation(abortStatement).build()); } /** *

          * The maximum time in seconds that Amazon Lex retains the data gathered in a conversation. *

          *

          * A user interaction session remains active for the amount of time specified. If no conversation occurs during * this time, the session expires and Amazon Lex deletes any data provided before the timeout. *

          *

          * For example, suppose that a user chooses the OrderPizza intent, but gets sidetracked halfway through placing * an order. If the user doesn't complete the order within the specified time, Amazon Lex discards the slot * information that it gathered, and the user must start over. *

          *

          * If you don't include the idleSessionTTLInSeconds element in a PutBot operation * request, Amazon Lex uses the default value. This is also true if the request replaces an existing bot. *

          *

          * The default is 300 seconds (5 minutes). *

          * * @param idleSessionTTLInSeconds * The maximum time in seconds that Amazon Lex retains the data gathered in a conversation.

          *

          * A user interaction session remains active for the amount of time specified. If no conversation occurs * during this time, the session expires and Amazon Lex deletes any data provided before the timeout. *

          *

          * For example, suppose that a user chooses the OrderPizza intent, but gets sidetracked halfway through * placing an order. If the user doesn't complete the order within the specified time, Amazon Lex * discards the slot information that it gathered, and the user must start over. *

          *

          * If you don't include the idleSessionTTLInSeconds element in a PutBot * operation request, Amazon Lex uses the default value. This is also true if the request replaces an * existing bot. *

          *

          * The default is 300 seconds (5 minutes). * @return Returns a reference to this object so that method calls can be chained together. */ Builder idleSessionTTLInSeconds(Integer idleSessionTTLInSeconds); /** *

          * The Amazon Polly voice ID that you want Amazon Lex to use for voice interactions with the user. The locale * configured for the voice must match the locale of the bot. For more information, see Voices in Amazon Polly in the Amazon * Polly Developer Guide. *

          * * @param voiceId * The Amazon Polly voice ID that you want Amazon Lex to use for voice interactions with the user. The * locale configured for the voice must match the locale of the bot. For more information, see Voices in Amazon Polly in the * Amazon Polly Developer Guide. * @return Returns a reference to this object so that method calls can be chained together. */ Builder voiceId(String voiceId); /** *

          * Identifies a specific revision of the $LATEST version. *

          *

          * When you create a new bot, leave the checksum field blank. If you specify a checksum you get a * BadRequestException exception. *

          *

          * When you want to update a bot, set the checksum field to the checksum of the most recent * revision of the $LATEST version. If you don't specify the checksum field, or if * the checksum does not match the $LATEST version, you get a * PreconditionFailedException exception. *

          * * @param checksum * Identifies a specific revision of the $LATEST version.

          *

          * When you create a new bot, leave the checksum field blank. If you specify a checksum you * get a BadRequestException exception. *

          *

          * When you want to update a bot, set the checksum field to the checksum of the most recent * revision of the $LATEST version. If you don't specify the checksum field, * or if the checksum does not match the $LATEST version, you get a * PreconditionFailedException exception. * @return Returns a reference to this object so that method calls can be chained together. */ Builder checksum(String checksum); /** *

          * If you set the processBehavior element to BUILD, Amazon Lex builds the bot so that * it can be run. If you set the element to SAVE Amazon Lex saves the bot, but doesn't build it. *

          *

          * If you don't specify this value, the default value is BUILD. *

          * * @param processBehavior * If you set the processBehavior element to BUILD, Amazon Lex builds the bot * so that it can be run. If you set the element to SAVE Amazon Lex saves the bot, but * doesn't build it.

          *

          * If you don't specify this value, the default value is BUILD. * @see ProcessBehavior * @return Returns a reference to this object so that method calls can be chained together. * @see ProcessBehavior */ Builder processBehavior(String processBehavior); /** *

          * If you set the processBehavior element to BUILD, Amazon Lex builds the bot so that * it can be run. If you set the element to SAVE Amazon Lex saves the bot, but doesn't build it. *

          *

          * If you don't specify this value, the default value is BUILD. *

          * * @param processBehavior * If you set the processBehavior element to BUILD, Amazon Lex builds the bot * so that it can be run. If you set the element to SAVE Amazon Lex saves the bot, but * doesn't build it.

          *

          * If you don't specify this value, the default value is BUILD. * @see ProcessBehavior * @return Returns a reference to this object so that method calls can be chained together. * @see ProcessBehavior */ Builder processBehavior(ProcessBehavior processBehavior); /** *

          * Specifies the target locale for the bot. Any intent used in the bot must be compatible with the locale of the * bot. *

          *

          * The default is en-US. *

          * * @param locale * Specifies the target locale for the bot. Any intent used in the bot must be compatible with the locale * of the bot.

          *

          * The default is en-US. * @see Locale * @return Returns a reference to this object so that method calls can be chained together. * @see Locale */ Builder locale(String locale); /** *

          * Specifies the target locale for the bot. Any intent used in the bot must be compatible with the locale of the * bot. *

          *

          * The default is en-US. *

          * * @param locale * Specifies the target locale for the bot. Any intent used in the bot must be compatible with the locale * of the bot.

          *

          * The default is en-US. * @see Locale * @return Returns a reference to this object so that method calls can be chained together. * @see Locale */ Builder locale(Locale locale); /** *

          * For each Amazon Lex bot created with the Amazon Lex Model Building Service, you must specify whether your use * of Amazon Lex is related to a website, program, or other application that is directed or targeted, in whole * or in part, to children under age 13 and subject to the Children's Online Privacy Protection Act (COPPA) by * specifying true or false in the childDirected field. By specifying * true in the childDirected field, you confirm that your use of Amazon Lex is * related to a website, program, or other application that is directed or targeted, in whole or in part, to * children under age 13 and subject to COPPA. By specifying false in the * childDirected field, you confirm that your use of Amazon Lex is not related to a website, * program, or other application that is directed or targeted, in whole or in part, to children under age 13 and * subject to COPPA. You may not specify a default value for the childDirected field that does not * accurately reflect whether your use of Amazon Lex is related to a website, program, or other application that * is directed or targeted, in whole or in part, to children under age 13 and subject to COPPA. *

          *

          * If your use of Amazon Lex relates to a website, program, or other application that is directed in whole or in * part, to children under age 13, you must obtain any required verifiable parental consent under COPPA. For * information regarding the use of Amazon Lex in connection with websites, programs, or other applications that * are directed or targeted, in whole or in part, to children under age 13, see the Amazon Lex FAQ. *

          * * @param childDirected * For each Amazon Lex bot created with the Amazon Lex Model Building Service, you must specify whether * your use of Amazon Lex is related to a website, program, or other application that is directed or * targeted, in whole or in part, to children under age 13 and subject to the Children's Online Privacy * Protection Act (COPPA) by specifying true or false in the * childDirected field. By specifying true in the childDirected * field, you confirm that your use of Amazon Lex is related to a website, program, or other * application that is directed or targeted, in whole or in part, to children under age 13 and subject to * COPPA. By specifying false in the childDirected field, you confirm that your * use of Amazon Lex is not related to a website, program, or other application that is directed * or targeted, in whole or in part, to children under age 13 and subject to COPPA. You may not specify a * default value for the childDirected field that does not accurately reflect whether your * use of Amazon Lex is related to a website, program, or other application that is directed or targeted, * in whole or in part, to children under age 13 and subject to COPPA.

          *

          * If your use of Amazon Lex relates to a website, program, or other application that is directed in * whole or in part, to children under age 13, you must obtain any required verifiable parental consent * under COPPA. For information regarding the use of Amazon Lex in connection with websites, programs, or * other applications that are directed or targeted, in whole or in part, to children under age 13, see * the Amazon Lex FAQ. * @return Returns a reference to this object so that method calls can be chained together. */ Builder childDirected(Boolean childDirected); /** *

          * When set to true user utterances are sent to Amazon Comprehend for sentiment analysis. If you * don't specify detectSentiment, the default is false. *

          * * @param detectSentiment * When set to true user utterances are sent to Amazon Comprehend for sentiment analysis. If * you don't specify detectSentiment, the default is false. * @return Returns a reference to this object so that method calls can be chained together. */ Builder detectSentiment(Boolean detectSentiment); /** *

          * When set to true a new numbered version of the bot is created. This is the same as calling the * CreateBotVersion operation. If you don't specify createVersion, the default is * false. *

          * * @param createVersion * When set to true a new numbered version of the bot is created. This is the same as * calling the CreateBotVersion operation. If you don't specify createVersion, * the default is false. * @return Returns a reference to this object so that method calls can be chained together. */ Builder createVersion(Boolean createVersion); /** *

          * A list of tags to add to the bot. You can only add tags when you create a bot, you can't use the * PutBot operation to update the tags on a bot. To update tags, use the TagResource * operation. *

          * * @param tags * A list of tags to add to the bot. You can only add tags when you create a bot, you can't use the * PutBot operation to update the tags on a bot. To update tags, use the * TagResource operation. * @return Returns a reference to this object so that method calls can be chained together. */ Builder tags(Collection tags); /** *

          * A list of tags to add to the bot. You can only add tags when you create a bot, you can't use the * PutBot operation to update the tags on a bot. To update tags, use the TagResource * operation. *

          * * @param tags * A list of tags to add to the bot. You can only add tags when you create a bot, you can't use the * PutBot operation to update the tags on a bot. To update tags, use the * TagResource operation. * @return Returns a reference to this object so that method calls can be chained together. */ Builder tags(Tag... tags); /** *

          * A list of tags to add to the bot. You can only add tags when you create a bot, you can't use the * PutBot operation to update the tags on a bot. To update tags, use the TagResource * operation. *

          * This is a convenience method that creates an instance of the * {@link software.amazon.awssdk.services.lexmodelbuilding.model.Tag.Builder} avoiding the need to create one * manually via {@link software.amazon.awssdk.services.lexmodelbuilding.model.Tag#builder()}. * *

          * When the {@link Consumer} completes, * {@link software.amazon.awssdk.services.lexmodelbuilding.model.Tag.Builder#build()} is called immediately and * its result is passed to {@link #tags(List)}. * * @param tags * a consumer that will call methods on * {@link software.amazon.awssdk.services.lexmodelbuilding.model.Tag.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #tags(java.util.Collection) */ Builder tags(Consumer... tags); @Override Builder overrideConfiguration(AwsRequestOverrideConfiguration overrideConfiguration); @Override Builder overrideConfiguration(Consumer builderConsumer); } static final class BuilderImpl extends LexModelBuildingRequest.BuilderImpl implements Builder { private String name; private String description; private List intents = DefaultSdkAutoConstructList.getInstance(); private Boolean enableModelImprovements; private Double nluIntentConfidenceThreshold; private Prompt clarificationPrompt; private Statement abortStatement; private Integer idleSessionTTLInSeconds; private String voiceId; private String checksum; private String processBehavior; private String locale; private Boolean childDirected; private Boolean detectSentiment; private Boolean createVersion; private List tags = DefaultSdkAutoConstructList.getInstance(); private BuilderImpl() { } private BuilderImpl(PutBotRequest model) { super(model); name(model.name); description(model.description); intents(model.intents); enableModelImprovements(model.enableModelImprovements); nluIntentConfidenceThreshold(model.nluIntentConfidenceThreshold); clarificationPrompt(model.clarificationPrompt); abortStatement(model.abortStatement); idleSessionTTLInSeconds(model.idleSessionTTLInSeconds); voiceId(model.voiceId); checksum(model.checksum); processBehavior(model.processBehavior); locale(model.locale); childDirected(model.childDirected); detectSentiment(model.detectSentiment); createVersion(model.createVersion); tags(model.tags); } public final String getName() { return name; } public final void setName(String name) { this.name = name; } @Override public final Builder name(String name) { this.name = name; return this; } public final String getDescription() { return description; } public final void setDescription(String description) { this.description = description; } @Override public final Builder description(String description) { this.description = description; return this; } public final List getIntents() { List result = IntentListCopier.copyToBuilder(this.intents); if (result instanceof SdkAutoConstructList) { return null; } return result; } public final void setIntents(Collection intents) { this.intents = IntentListCopier.copyFromBuilder(intents); } @Override public final Builder intents(Collection intents) { this.intents = IntentListCopier.copy(intents); return this; } @Override @SafeVarargs public final Builder intents(Intent... intents) { intents(Arrays.asList(intents)); return this; } @Override @SafeVarargs public final Builder intents(Consumer... intents) { intents(Stream.of(intents).map(c -> Intent.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; } public final Boolean getEnableModelImprovements() { return enableModelImprovements; } public final void setEnableModelImprovements(Boolean enableModelImprovements) { this.enableModelImprovements = enableModelImprovements; } @Override public final Builder enableModelImprovements(Boolean enableModelImprovements) { this.enableModelImprovements = enableModelImprovements; return this; } public final Double getNluIntentConfidenceThreshold() { return nluIntentConfidenceThreshold; } public final void setNluIntentConfidenceThreshold(Double nluIntentConfidenceThreshold) { this.nluIntentConfidenceThreshold = nluIntentConfidenceThreshold; } @Override public final Builder nluIntentConfidenceThreshold(Double nluIntentConfidenceThreshold) { this.nluIntentConfidenceThreshold = nluIntentConfidenceThreshold; return this; } public final Prompt.Builder getClarificationPrompt() { return clarificationPrompt != null ? clarificationPrompt.toBuilder() : null; } public final void setClarificationPrompt(Prompt.BuilderImpl clarificationPrompt) { this.clarificationPrompt = clarificationPrompt != null ? clarificationPrompt.build() : null; } @Override public final Builder clarificationPrompt(Prompt clarificationPrompt) { this.clarificationPrompt = clarificationPrompt; return this; } public final Statement.Builder getAbortStatement() { return abortStatement != null ? abortStatement.toBuilder() : null; } public final void setAbortStatement(Statement.BuilderImpl abortStatement) { this.abortStatement = abortStatement != null ? abortStatement.build() : null; } @Override public final Builder abortStatement(Statement abortStatement) { this.abortStatement = abortStatement; return this; } public final Integer getIdleSessionTTLInSeconds() { return idleSessionTTLInSeconds; } public final void setIdleSessionTTLInSeconds(Integer idleSessionTTLInSeconds) { this.idleSessionTTLInSeconds = idleSessionTTLInSeconds; } @Override public final Builder idleSessionTTLInSeconds(Integer idleSessionTTLInSeconds) { this.idleSessionTTLInSeconds = idleSessionTTLInSeconds; return this; } public final String getVoiceId() { return voiceId; } public final void setVoiceId(String voiceId) { this.voiceId = voiceId; } @Override public final Builder voiceId(String voiceId) { this.voiceId = voiceId; return this; } public final String getChecksum() { return checksum; } public final void setChecksum(String checksum) { this.checksum = checksum; } @Override public final Builder checksum(String checksum) { this.checksum = checksum; return this; } public final String getProcessBehavior() { return processBehavior; } public final void setProcessBehavior(String processBehavior) { this.processBehavior = processBehavior; } @Override public final Builder processBehavior(String processBehavior) { this.processBehavior = processBehavior; return this; } @Override public final Builder processBehavior(ProcessBehavior processBehavior) { this.processBehavior(processBehavior == null ? null : processBehavior.toString()); return this; } public final String getLocale() { return locale; } public final void setLocale(String locale) { this.locale = locale; } @Override public final Builder locale(String locale) { this.locale = locale; return this; } @Override public final Builder locale(Locale locale) { this.locale(locale == null ? null : locale.toString()); return this; } public final Boolean getChildDirected() { return childDirected; } public final void setChildDirected(Boolean childDirected) { this.childDirected = childDirected; } @Override public final Builder childDirected(Boolean childDirected) { this.childDirected = childDirected; return this; } public final Boolean getDetectSentiment() { return detectSentiment; } public final void setDetectSentiment(Boolean detectSentiment) { this.detectSentiment = detectSentiment; } @Override public final Builder detectSentiment(Boolean detectSentiment) { this.detectSentiment = detectSentiment; return this; } public final Boolean getCreateVersion() { return createVersion; } public final void setCreateVersion(Boolean createVersion) { this.createVersion = createVersion; } @Override public final Builder createVersion(Boolean createVersion) { this.createVersion = createVersion; return this; } public final List getTags() { List result = TagListCopier.copyToBuilder(this.tags); if (result instanceof SdkAutoConstructList) { return null; } return result; } public final void setTags(Collection tags) { this.tags = TagListCopier.copyFromBuilder(tags); } @Override public final Builder tags(Collection tags) { this.tags = TagListCopier.copy(tags); return this; } @Override @SafeVarargs public final Builder tags(Tag... tags) { tags(Arrays.asList(tags)); return this; } @Override @SafeVarargs public final Builder tags(Consumer... tags) { tags(Stream.of(tags).map(c -> Tag.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; } @Override public Builder overrideConfiguration(AwsRequestOverrideConfiguration overrideConfiguration) { super.overrideConfiguration(overrideConfiguration); return this; } @Override public Builder overrideConfiguration(Consumer builderConsumer) { super.overrideConfiguration(builderConsumer); return this; } @Override public PutBotRequest build() { return new PutBotRequest(this); } @Override public List> sdkFields() { return SDK_FIELDS; } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy