/*
* 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.
*/
/*
* Do not modify this file. This file is generated from the lex-models-2017-04-19.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.LexModelBuildingService.Model
{
///
/// Container for the parameters to the PutBot operation.
/// Creates an Amazon Lex conversational bot or replaces an existing bot. When you create
/// or update a bot you are only required to specify a name, a locale, and whether the
/// bot is directed toward children under age 13. You can use this to add intents later,
/// or to remove intents from an existing bot. When you create a bot with the minimum
/// information, the bot is created or updated but Amazon Lex returns the
response
/// FAILED
. You can build the bot after you add one or more intents. For
/// more information about Amazon Lex bots, see how-it-works.
///
///
///
/// If you specify the name of an existing bot, the fields in the request replace the
/// existing values in the $LATEST
version of the bot. Amazon Lex removes
/// any fields that you don't provide values for in the request, except for the idleTTLInSeconds
/// and privacySettings
fields, which are set to their default values. If
/// you don't specify values for required fields, Amazon Lex throws an exception.
///
///
///
/// This operation requires permissions for the lex:PutBot
action. For more
/// information, see security-iam.
///
///
public partial class PutBotRequest : AmazonLexModelBuildingServiceRequest
{
private Statement _abortStatement;
private string _checksum;
private bool? _childDirected;
private Prompt _clarificationPrompt;
private bool? _createVersion;
private string _description;
private bool? _detectSentiment;
private bool? _enableModelImprovements;
private int? _idleSessionTTLInSeconds;
private List _intents = new List();
private Locale _locale;
private string _name;
private double? _nluIntentConfidenceThreshold;
private ProcessBehavior _processBehavior;
private List _tags = new List();
private string _voiceId;
///
/// Gets and sets the property 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.
///
///
public Statement AbortStatement
{
get { return this._abortStatement; }
set { this._abortStatement = value; }
}
// Check to see if AbortStatement property is set
internal bool IsSetAbortStatement()
{
return this._abortStatement != null;
}
///
/// Gets and sets the property 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.
///
///
public string Checksum
{
get { return this._checksum; }
set { this._checksum = value; }
}
// Check to see if Checksum property is set
internal bool IsSetChecksum()
{
return this._checksum != null;
}
///
/// Gets and sets the property 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.
///
///
[AWSProperty(Required=true)]
public bool ChildDirected
{
get { return this._childDirected.GetValueOrDefault(); }
set { this._childDirected = value; }
}
// Check to see if ChildDirected property is set
internal bool IsSetChildDirected()
{
return this._childDirected.HasValue;
}
///
/// Gets and sets the property 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.
///
///
///
public Prompt ClarificationPrompt
{
get { return this._clarificationPrompt; }
set { this._clarificationPrompt = value; }
}
// Check to see if ClarificationPrompt property is set
internal bool IsSetClarificationPrompt()
{
return this._clarificationPrompt != null;
}
///
/// Gets and sets the property 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
.
///
///
public bool CreateVersion
{
get { return this._createVersion.GetValueOrDefault(); }
set { this._createVersion = value; }
}
// Check to see if CreateVersion property is set
internal bool IsSetCreateVersion()
{
return this._createVersion.HasValue;
}
///
/// Gets and sets the property Description.
///
/// A description of the bot.
///
///
[AWSProperty(Min=0, Max=200)]
public string Description
{
get { return this._description; }
set { this._description = value; }
}
// Check to see if Description property is set
internal bool IsSetDescription()
{
return this._description != null;
}
///
/// Gets and sets the property 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
.
///
///
public bool DetectSentiment
{
get { return this._detectSentiment.GetValueOrDefault(); }
set { this._detectSentiment = value; }
}
// Check to see if DetectSentiment property is set
internal bool IsSetDetectSentiment()
{
return this._detectSentiment.HasValue;
}
///
/// Gets and sets the property 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.
///
///
public bool EnableModelImprovements
{
get { return this._enableModelImprovements.GetValueOrDefault(); }
set { this._enableModelImprovements = value; }
}
// Check to see if EnableModelImprovements property is set
internal bool IsSetEnableModelImprovements()
{
return this._enableModelImprovements.HasValue;
}
///
/// Gets and sets the property 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).
///
///
[AWSProperty(Min=60, Max=86400)]
public int IdleSessionTTLInSeconds
{
get { return this._idleSessionTTLInSeconds.GetValueOrDefault(); }
set { this._idleSessionTTLInSeconds = value; }
}
// Check to see if IdleSessionTTLInSeconds property is set
internal bool IsSetIdleSessionTTLInSeconds()
{
return this._idleSessionTTLInSeconds.HasValue;
}
///
/// Gets and sets the property 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.
///
///
public List Intents
{
get { return this._intents; }
set { this._intents = value; }
}
// Check to see if Intents property is set
internal bool IsSetIntents()
{
return this._intents != null && this._intents.Count > 0;
}
///
/// Gets and sets the property 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
.
///
///
[AWSProperty(Required=true)]
public Locale Locale
{
get { return this._locale; }
set { this._locale = value; }
}
// Check to see if Locale property is set
internal bool IsSetLocale()
{
return this._locale != null;
}
///
/// Gets and sets the property Name.
///
/// The name of the bot. The name is not case sensitive.
///
///
[AWSProperty(Required=true, Min=2, Max=50)]
public string Name
{
get { return this._name; }
set { this._name = value; }
}
// Check to see if Name property is set
internal bool IsSetName()
{
return this._name != null;
}
///
/// Gets and sets the property 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
///
///
///
[AWSProperty(Min=0, Max=1)]
public double NluIntentConfidenceThreshold
{
get { return this._nluIntentConfidenceThreshold.GetValueOrDefault(); }
set { this._nluIntentConfidenceThreshold = value; }
}
// Check to see if NluIntentConfidenceThreshold property is set
internal bool IsSetNluIntentConfidenceThreshold()
{
return this._nluIntentConfidenceThreshold.HasValue;
}
///
/// Gets and sets the property 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
.
///
///
public ProcessBehavior ProcessBehavior
{
get { return this._processBehavior; }
set { this._processBehavior = value; }
}
// Check to see if ProcessBehavior property is set
internal bool IsSetProcessBehavior()
{
return this._processBehavior != null;
}
///
/// Gets and sets the property 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.
///
///
[AWSProperty(Min=0, Max=200)]
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property 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.
///
///
public string VoiceId
{
get { return this._voiceId; }
set { this._voiceId = value; }
}
// Check to see if VoiceId property is set
internal bool IsSetVoiceId()
{
return this._voiceId != null;
}
}
}