/*
* Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package com.amazonaws.services.lexruntime.model;
import java.io.Serializable;
import javax.annotation.Generated;
import com.amazonaws.AmazonWebServiceRequest;
import com.amazonaws.auth.SignerTypeAware;
/**
*
* @see <a href="http://docs.aws.amazon.com/goto/WebAPI/runtime.lex-2016-11-28/PostContent" target="_top">AWS API
* Documentation</a>
*/
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class PostContentRequest extends com.amazonaws.AmazonWebServiceRequest implements Serializable, Cloneable, SignerTypeAware {
/**
* <p>
* Name of the Amazon Lex bot.
* </p>
*/
private String botName;
/**
* <p>
* Alias of the Amazon Lex bot.
* </p>
*/
private String botAlias;
/**
* <p>
* ID of the client application user. Typically, each of your application users should have a unique ID. The
* application developer decides the user IDs. At runtime, each request must include the user ID. Note the following
* considerations:
* </p>
* <ul>
* <li>
* <p>
* If you want a user to start conversation on one device and continue the conversation on another device, you might
* choose a user-specific identifier, such as the user's login, or Amazon Cognito user ID (assuming your application
* is using Amazon Cognito).
* </p>
* </li>
* <li>
* <p>
* If you want the same user to be able to have two independent conversations on two different devices, you might
* choose device-specific identifier, such as device ID, or some globally unique identifier.
* </p>
* </li>
* </ul>
*/
private String userId;
/**
* <p>
* You pass this value in the <code>x-amz-lex-session-attributes</code> HTTP header. The value must be map (keys and
* values must be strings) that is JSON serialized and then base64 encoded.
* </p>
* <p>
* A session represents dialog between a user and Amazon Lex. At runtime, a client application can pass contextual
* information, in the request to Amazon Lex. For example,
* </p>
* <ul>
* <li>
* <p>
* You might use session attributes to track the requestID of user requests.
* </p>
* </li>
* <li>
* <p>
* In Getting Started Exercise 1, the example bot uses the price session attribute to maintain the price of flowers
* ordered (for example, "price":25). The code hook (Lambda function) sets this attribute based on the type of
* flowers ordered. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html">Review the Details of Information
* Flow</a>.
* </p>
* </li>
* <li>
* <p>
* In the BookTrip bot exercise, the bot uses the <code>currentReservation</code> session attribute to maintains the
* slot data during the in-progress conversation to book a hotel or book a car. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html">Details of Information Flow</a>.
* </p>
* </li>
* </ul>
* <p>
* Amazon Lex passes these session attributes to the Lambda functions configured for the intent In the your Lambda
* function, you can use the session attributes for initialization and customization (prompts). Some examples are:
* </p>
* <ul>
* <li>
* <p>
* Initialization - In a pizza ordering bot, if you pass user location (for example,
* <code>"Location : 111 Maple Street"</code>), then your Lambda function might use this information to determine
* the closest pizzeria to place the order (and perhaps set the storeAddress slot value as well).
* </p>
* <p>
* Personalized prompts - For example, you can configure prompts to refer to the user by name (for example,
* "Hey [firstName], what toppings would you like?"). You can pass the user's name as a session attribute
* ("firstName": "Joe") so that Amazon Lex can substitute the placeholder to provide a personalized prompt to the
* user ("Hey Joe, what toppings would you like?").
* </p>
* </li>
* </ul>
* <note>
* <p>
* Amazon Lex does not persist session attributes.
* </p>
* <p>
* If you configured a code hook for the intent, Amazon Lex passes the incoming session attributes to the Lambda
* function. The Lambda function must return these session attributes if you want Amazon Lex to return them to the
* client.
* </p>
* <p>
* If there is no code hook configured for the intent Amazon Lex simply returns the session attributes to the client
* application.
* </p>
* </note>
*/
private String sessionAttributes;
/**
* <p>
* You pass this values as the <code>Content-Type</code> HTTP header.
* </p>
* <p>
* Indicates the audio format or text. The header value must start with one of the following prefixes:
* </p>
* <ul>
* <li>
* <p>
* PCM format
* </p>
* <ul>
* <li>
* <p>
* audio/l16; rate=16000; channels=1
* </p>
* </li>
* <li>
* <p>
* audio/x-l16; sample-rate=16000; channel-count=1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Opus format
* </p>
* <ul>
* <li>
* <p>
* audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=1; frame-size-milliseconds=1.1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Text format
* </p>
* <ul>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* </ul>
* </li>
* </ul>
*/
private String contentType;
/**
* <p>
* You pass this value as the <code>Accept</code> HTTP header.
* </p>
* <p>
* The message Amazon Lex returns in the response can be either text or speech based on the <code>Accept</code> HTTP
* header value in the request.
* </p>
* <ul>
* <li>
* <p>
* If the value is <code>text/plain; charset=utf-8</code>, Amazon Lex returns text in the response.
* </p>
* </li>
* <li>
* <p>
* If the value begins with <code>audio/</code>, Amazon Lex returns speech in the response. Amazon Lex uses Amazon
* Polly to generate the speech (using the configuration you specified in the <code>Accept</code> header). For
* example, if you specify <code>audio/mpeg</code> as the value, Amazon Lex returns speech in the MPEG format.
* </p>
* <p>
* The following are the accepted values:
* </p>
* <ul>
* <li>
* <p>
* audio/mpeg
* </p>
* </li>
* <li>
* <p>
* audio/ogg
* </p>
* </li>
* <li>
* <p>
* audio/pcm
* </p>
* </li>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* <li>
* <p>
* audio/* (defaults to mpeg)
* </p>
* </li>
* </ul>
* </li>
* </ul>
*/
private String accept;
/**
* <p>
* User input in PCM or Opus audio format or text format as described in the <code>Content-Type</code> HTTP header.
* </p>
*/
private java.io.InputStream inputStreamValue;
/**
* <p>
* Name of the Amazon Lex bot.
* </p>
*
* @param botName
* Name of the Amazon Lex bot.
*/
public void setBotName(String botName) {
this.botName = botName;
}
/**
* <p>
* Name of the Amazon Lex bot.
* </p>
*
* @return Name of the Amazon Lex bot.
*/
public String getBotName() {
return this.botName;
}
/**
* <p>
* Name of the Amazon Lex bot.
* </p>
*
* @param botName
* Name of the Amazon Lex bot.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public PostContentRequest withBotName(String botName) {
setBotName(botName);
return this;
}
/**
* <p>
* Alias of the Amazon Lex bot.
* </p>
*
* @param botAlias
* Alias of the Amazon Lex bot.
*/
public void setBotAlias(String botAlias) {
this.botAlias = botAlias;
}
/**
* <p>
* Alias of the Amazon Lex bot.
* </p>
*
* @return Alias of the Amazon Lex bot.
*/
public String getBotAlias() {
return this.botAlias;
}
/**
* <p>
* Alias of the Amazon Lex bot.
* </p>
*
* @param botAlias
* Alias of the Amazon Lex bot.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public PostContentRequest withBotAlias(String botAlias) {
setBotAlias(botAlias);
return this;
}
/**
* <p>
* ID of the client application user. Typically, each of your application users should have a unique ID. The
* application developer decides the user IDs. At runtime, each request must include the user ID. Note the following
* considerations:
* </p>
* <ul>
* <li>
* <p>
* If you want a user to start conversation on one device and continue the conversation on another device, you might
* choose a user-specific identifier, such as the user's login, or Amazon Cognito user ID (assuming your application
* is using Amazon Cognito).
* </p>
* </li>
* <li>
* <p>
* If you want the same user to be able to have two independent conversations on two different devices, you might
* choose device-specific identifier, such as device ID, or some globally unique identifier.
* </p>
* </li>
* </ul>
*
* @param userId
* ID of the client application user. Typically, each of your application users should have a unique ID. The
* application developer decides the user IDs. At runtime, each request must include the user ID. Note the
* following considerations:</p>
* <ul>
* <li>
* <p>
* If you want a user to start conversation on one device and continue the conversation on another device,
* you might choose a user-specific identifier, such as the user's login, or Amazon Cognito user ID (assuming
* your application is using Amazon Cognito).
* </p>
* </li>
* <li>
* <p>
* If you want the same user to be able to have two independent conversations on two different devices, you
* might choose device-specific identifier, such as device ID, or some globally unique identifier.
* </p>
* </li>
*/
public void setUserId(String userId) {
this.userId = userId;
}
/**
* <p>
* ID of the client application user. Typically, each of your application users should have a unique ID. The
* application developer decides the user IDs. At runtime, each request must include the user ID. Note the following
* considerations:
* </p>
* <ul>
* <li>
* <p>
* If you want a user to start conversation on one device and continue the conversation on another device, you might
* choose a user-specific identifier, such as the user's login, or Amazon Cognito user ID (assuming your application
* is using Amazon Cognito).
* </p>
* </li>
* <li>
* <p>
* If you want the same user to be able to have two independent conversations on two different devices, you might
* choose device-specific identifier, such as device ID, or some globally unique identifier.
* </p>
* </li>
* </ul>
*
* @return ID of the client application user. Typically, each of your application users should have a unique ID. The
* application developer decides the user IDs. At runtime, each request must include the user ID. Note the
* following considerations:</p>
* <ul>
* <li>
* <p>
* If you want a user to start conversation on one device and continue the conversation on another device,
* you might choose a user-specific identifier, such as the user's login, or Amazon Cognito user ID
* (assuming your application is using Amazon Cognito).
* </p>
* </li>
* <li>
* <p>
* If you want the same user to be able to have two independent conversations on two different devices, you
* might choose device-specific identifier, such as device ID, or some globally unique identifier.
* </p>
* </li>
*/
public String getUserId() {
return this.userId;
}
/**
* <p>
* ID of the client application user. Typically, each of your application users should have a unique ID. The
* application developer decides the user IDs. At runtime, each request must include the user ID. Note the following
* considerations:
* </p>
* <ul>
* <li>
* <p>
* If you want a user to start conversation on one device and continue the conversation on another device, you might
* choose a user-specific identifier, such as the user's login, or Amazon Cognito user ID (assuming your application
* is using Amazon Cognito).
* </p>
* </li>
* <li>
* <p>
* If you want the same user to be able to have two independent conversations on two different devices, you might
* choose device-specific identifier, such as device ID, or some globally unique identifier.
* </p>
* </li>
* </ul>
*
* @param userId
* ID of the client application user. Typically, each of your application users should have a unique ID. The
* application developer decides the user IDs. At runtime, each request must include the user ID. Note the
* following considerations:</p>
* <ul>
* <li>
* <p>
* If you want a user to start conversation on one device and continue the conversation on another device,
* you might choose a user-specific identifier, such as the user's login, or Amazon Cognito user ID (assuming
* your application is using Amazon Cognito).
* </p>
* </li>
* <li>
* <p>
* If you want the same user to be able to have two independent conversations on two different devices, you
* might choose device-specific identifier, such as device ID, or some globally unique identifier.
* </p>
* </li>
* @return Returns a reference to this object so that method calls can be chained together.
*/
public PostContentRequest withUserId(String userId) {
setUserId(userId);
return this;
}
/**
* <p>
* You pass this value in the <code>x-amz-lex-session-attributes</code> HTTP header. The value must be map (keys and
* values must be strings) that is JSON serialized and then base64 encoded.
* </p>
* <p>
* A session represents dialog between a user and Amazon Lex. At runtime, a client application can pass contextual
* information, in the request to Amazon Lex. For example,
* </p>
* <ul>
* <li>
* <p>
* You might use session attributes to track the requestID of user requests.
* </p>
* </li>
* <li>
* <p>
* In Getting Started Exercise 1, the example bot uses the price session attribute to maintain the price of flowers
* ordered (for example, "price":25). The code hook (Lambda function) sets this attribute based on the type of
* flowers ordered. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html">Review the Details of Information
* Flow</a>.
* </p>
* </li>
* <li>
* <p>
* In the BookTrip bot exercise, the bot uses the <code>currentReservation</code> session attribute to maintains the
* slot data during the in-progress conversation to book a hotel or book a car. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html">Details of Information Flow</a>.
* </p>
* </li>
* </ul>
* <p>
* Amazon Lex passes these session attributes to the Lambda functions configured for the intent In the your Lambda
* function, you can use the session attributes for initialization and customization (prompts). Some examples are:
* </p>
* <ul>
* <li>
* <p>
* Initialization - In a pizza ordering bot, if you pass user location (for example,
* <code>"Location : 111 Maple Street"</code>), then your Lambda function might use this information to determine
* the closest pizzeria to place the order (and perhaps set the storeAddress slot value as well).
* </p>
* <p>
* Personalized prompts - For example, you can configure prompts to refer to the user by name (for example,
* "Hey [firstName], what toppings would you like?"). You can pass the user's name as a session attribute
* ("firstName": "Joe") so that Amazon Lex can substitute the placeholder to provide a personalized prompt to the
* user ("Hey Joe, what toppings would you like?").
* </p>
* </li>
* </ul>
* <note>
* <p>
* Amazon Lex does not persist session attributes.
* </p>
* <p>
* If you configured a code hook for the intent, Amazon Lex passes the incoming session attributes to the Lambda
* function. The Lambda function must return these session attributes if you want Amazon Lex to return them to the
* client.
* </p>
* <p>
* If there is no code hook configured for the intent Amazon Lex simply returns the session attributes to the client
* application.
* </p>
* </note>
* <p>
* This field's value must be valid JSON according to RFC 7159, including the opening and closing braces. For
* example: '{"key": "value"}'.
* </p>
* <p>
* The AWS SDK for Java performs a Base64 encoding on this field before sending this request to the AWS service.
* Users of the SDK should not perform Base64 encoding on this field.
* </p>
*
* @param sessionAttributes
* You pass this value in the <code>x-amz-lex-session-attributes</code> HTTP header. The value must be map
* (keys and values must be strings) that is JSON serialized and then base64 encoded.</p>
* <p>
* A session represents dialog between a user and Amazon Lex. At runtime, a client application can pass
* contextual information, in the request to Amazon Lex. For example,
* </p>
* <ul>
* <li>
* <p>
* You might use session attributes to track the requestID of user requests.
* </p>
* </li>
* <li>
* <p>
* In Getting Started Exercise 1, the example bot uses the price session attribute to maintain the price of
* flowers ordered (for example, "price":25). The code hook (Lambda function) sets this attribute based on
* the type of flowers ordered. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html">Review the Details of
* Information Flow</a>.
* </p>
* </li>
* <li>
* <p>
* In the BookTrip bot exercise, the bot uses the <code>currentReservation</code> session attribute to
* maintains the slot data during the in-progress conversation to book a hotel or book a car. For more
* information, see <a href="http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html">Details of
* Information Flow</a>.
* </p>
* </li>
* </ul>
* <p>
* Amazon Lex passes these session attributes to the Lambda functions configured for the intent In the your
* Lambda function, you can use the session attributes for initialization and customization (prompts). Some
* examples are:
* </p>
* <ul>
* <li>
* <p>
* Initialization - In a pizza ordering bot, if you pass user location (for example,
* <code>"Location : 111 Maple Street"</code>), then your Lambda function might use this information to
* determine the closest pizzeria to place the order (and perhaps set the storeAddress slot value as well).
* </p>
* <p>
* Personalized prompts - For example, you can configure prompts to refer to the user by name (for example,
* "Hey [firstName], what toppings would you like?"). You can pass the user's name as a session attribute
* ("firstName": "Joe") so that Amazon Lex can substitute the placeholder to provide a personalized prompt to
* the user ("Hey Joe, what toppings would you like?").
* </p>
* </li>
* </ul>
* <note>
* <p>
* Amazon Lex does not persist session attributes.
* </p>
* <p>
* If you configured a code hook for the intent, Amazon Lex passes the incoming session attributes to the
* Lambda function. The Lambda function must return these session attributes if you want Amazon Lex to return
* them to the client.
* </p>
* <p>
* If there is no code hook configured for the intent Amazon Lex simply returns the session attributes to the
* client application.
* </p>
*/
public void setSessionAttributes(String sessionAttributes) {
this.sessionAttributes = sessionAttributes;
}
/**
* <p>
* You pass this value in the <code>x-amz-lex-session-attributes</code> HTTP header. The value must be map (keys and
* values must be strings) that is JSON serialized and then base64 encoded.
* </p>
* <p>
* A session represents dialog between a user and Amazon Lex. At runtime, a client application can pass contextual
* information, in the request to Amazon Lex. For example,
* </p>
* <ul>
* <li>
* <p>
* You might use session attributes to track the requestID of user requests.
* </p>
* </li>
* <li>
* <p>
* In Getting Started Exercise 1, the example bot uses the price session attribute to maintain the price of flowers
* ordered (for example, "price":25). The code hook (Lambda function) sets this attribute based on the type of
* flowers ordered. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html">Review the Details of Information
* Flow</a>.
* </p>
* </li>
* <li>
* <p>
* In the BookTrip bot exercise, the bot uses the <code>currentReservation</code> session attribute to maintains the
* slot data during the in-progress conversation to book a hotel or book a car. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html">Details of Information Flow</a>.
* </p>
* </li>
* </ul>
* <p>
* Amazon Lex passes these session attributes to the Lambda functions configured for the intent In the your Lambda
* function, you can use the session attributes for initialization and customization (prompts). Some examples are:
* </p>
* <ul>
* <li>
* <p>
* Initialization - In a pizza ordering bot, if you pass user location (for example,
* <code>"Location : 111 Maple Street"</code>), then your Lambda function might use this information to determine
* the closest pizzeria to place the order (and perhaps set the storeAddress slot value as well).
* </p>
* <p>
* Personalized prompts - For example, you can configure prompts to refer to the user by name (for example,
* "Hey [firstName], what toppings would you like?"). You can pass the user's name as a session attribute
* ("firstName": "Joe") so that Amazon Lex can substitute the placeholder to provide a personalized prompt to the
* user ("Hey Joe, what toppings would you like?").
* </p>
* </li>
* </ul>
* <note>
* <p>
* Amazon Lex does not persist session attributes.
* </p>
* <p>
* If you configured a code hook for the intent, Amazon Lex passes the incoming session attributes to the Lambda
* function. The Lambda function must return these session attributes if you want Amazon Lex to return them to the
* client.
* </p>
* <p>
* If there is no code hook configured for the intent Amazon Lex simply returns the session attributes to the client
* application.
* </p>
* </note>
* <p>
* This field's value will be valid JSON according to RFC 7159, including the opening and closing braces. For
* example: '{"key": "value"}'.
* </p>
*
* @return You pass this value in the <code>x-amz-lex-session-attributes</code> HTTP header. The value must be map
* (keys and values must be strings) that is JSON serialized and then base64 encoded.</p>
* <p>
* A session represents dialog between a user and Amazon Lex. At runtime, a client application can pass
* contextual information, in the request to Amazon Lex. For example,
* </p>
* <ul>
* <li>
* <p>
* You might use session attributes to track the requestID of user requests.
* </p>
* </li>
* <li>
* <p>
* In Getting Started Exercise 1, the example bot uses the price session attribute to maintain the price of
* flowers ordered (for example, "price":25). The code hook (Lambda function) sets this attribute based on
* the type of flowers ordered. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html">Review the Details of
* Information Flow</a>.
* </p>
* </li>
* <li>
* <p>
* In the BookTrip bot exercise, the bot uses the <code>currentReservation</code> session attribute to
* maintains the slot data during the in-progress conversation to book a hotel or book a car. For more
* information, see <a href="http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html">Details of
* Information Flow</a>.
* </p>
* </li>
* </ul>
* <p>
* Amazon Lex passes these session attributes to the Lambda functions configured for the intent In the your
* Lambda function, you can use the session attributes for initialization and customization (prompts). Some
* examples are:
* </p>
* <ul>
* <li>
* <p>
* Initialization - In a pizza ordering bot, if you pass user location (for example,
* <code>"Location : 111 Maple Street"</code>), then your Lambda function might use this information to
* determine the closest pizzeria to place the order (and perhaps set the storeAddress slot value as well).
* </p>
* <p>
* Personalized prompts - For example, you can configure prompts to refer to the user by name (for example,
* "Hey [firstName], what toppings would you like?"). You can pass the user's name as a session attribute
* ("firstName": "Joe") so that Amazon Lex can substitute the placeholder to provide a personalized prompt
* to the user ("Hey Joe, what toppings would you like?").
* </p>
* </li>
* </ul>
* <note>
* <p>
* Amazon Lex does not persist session attributes.
* </p>
* <p>
* If you configured a code hook for the intent, Amazon Lex passes the incoming session attributes to the
* Lambda function. The Lambda function must return these session attributes if you want Amazon Lex to
* return them to the client.
* </p>
* <p>
* If there is no code hook configured for the intent Amazon Lex simply returns the session attributes to
* the client application.
* </p>
*/
public String getSessionAttributes() {
return this.sessionAttributes;
}
/**
* <p>
* You pass this value in the <code>x-amz-lex-session-attributes</code> HTTP header. The value must be map (keys and
* values must be strings) that is JSON serialized and then base64 encoded.
* </p>
* <p>
* A session represents dialog between a user and Amazon Lex. At runtime, a client application can pass contextual
* information, in the request to Amazon Lex. For example,
* </p>
* <ul>
* <li>
* <p>
* You might use session attributes to track the requestID of user requests.
* </p>
* </li>
* <li>
* <p>
* In Getting Started Exercise 1, the example bot uses the price session attribute to maintain the price of flowers
* ordered (for example, "price":25). The code hook (Lambda function) sets this attribute based on the type of
* flowers ordered. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html">Review the Details of Information
* Flow</a>.
* </p>
* </li>
* <li>
* <p>
* In the BookTrip bot exercise, the bot uses the <code>currentReservation</code> session attribute to maintains the
* slot data during the in-progress conversation to book a hotel or book a car. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html">Details of Information Flow</a>.
* </p>
* </li>
* </ul>
* <p>
* Amazon Lex passes these session attributes to the Lambda functions configured for the intent In the your Lambda
* function, you can use the session attributes for initialization and customization (prompts). Some examples are:
* </p>
* <ul>
* <li>
* <p>
* Initialization - In a pizza ordering bot, if you pass user location (for example,
* <code>"Location : 111 Maple Street"</code>), then your Lambda function might use this information to determine
* the closest pizzeria to place the order (and perhaps set the storeAddress slot value as well).
* </p>
* <p>
* Personalized prompts - For example, you can configure prompts to refer to the user by name (for example,
* "Hey [firstName], what toppings would you like?"). You can pass the user's name as a session attribute
* ("firstName": "Joe") so that Amazon Lex can substitute the placeholder to provide a personalized prompt to the
* user ("Hey Joe, what toppings would you like?").
* </p>
* </li>
* </ul>
* <note>
* <p>
* Amazon Lex does not persist session attributes.
* </p>
* <p>
* If you configured a code hook for the intent, Amazon Lex passes the incoming session attributes to the Lambda
* function. The Lambda function must return these session attributes if you want Amazon Lex to return them to the
* client.
* </p>
* <p>
* If there is no code hook configured for the intent Amazon Lex simply returns the session attributes to the client
* application.
* </p>
* </note>
* <p>
* This field's value must be valid JSON according to RFC 7159, including the opening and closing braces. For
* example: '{"key": "value"}'.
* </p>
* <p>
* The AWS SDK for Java performs a Base64 encoding on this field before sending this request to the AWS service.
* Users of the SDK should not perform Base64 encoding on this field.
* </p>
*
* @param sessionAttributes
* You pass this value in the <code>x-amz-lex-session-attributes</code> HTTP header. The value must be map
* (keys and values must be strings) that is JSON serialized and then base64 encoded.</p>
* <p>
* A session represents dialog between a user and Amazon Lex. At runtime, a client application can pass
* contextual information, in the request to Amazon Lex. For example,
* </p>
* <ul>
* <li>
* <p>
* You might use session attributes to track the requestID of user requests.
* </p>
* </li>
* <li>
* <p>
* In Getting Started Exercise 1, the example bot uses the price session attribute to maintain the price of
* flowers ordered (for example, "price":25). The code hook (Lambda function) sets this attribute based on
* the type of flowers ordered. For more information, see <a
* href="http://docs.aws.amazon.com/lex/latest/dg/gs-bp-details-after-lambda.html">Review the Details of
* Information Flow</a>.
* </p>
* </li>
* <li>
* <p>
* In the BookTrip bot exercise, the bot uses the <code>currentReservation</code> session attribute to
* maintains the slot data during the in-progress conversation to book a hotel or book a car. For more
* information, see <a href="http://docs.aws.amazon.com/lex/latest/dg/book-trip-detail-flow.html">Details of
* Information Flow</a>.
* </p>
* </li>
* </ul>
* <p>
* Amazon Lex passes these session attributes to the Lambda functions configured for the intent In the your
* Lambda function, you can use the session attributes for initialization and customization (prompts). Some
* examples are:
* </p>
* <ul>
* <li>
* <p>
* Initialization - In a pizza ordering bot, if you pass user location (for example,
* <code>"Location : 111 Maple Street"</code>), then your Lambda function might use this information to
* determine the closest pizzeria to place the order (and perhaps set the storeAddress slot value as well).
* </p>
* <p>
* Personalized prompts - For example, you can configure prompts to refer to the user by name (for example,
* "Hey [firstName], what toppings would you like?"). You can pass the user's name as a session attribute
* ("firstName": "Joe") so that Amazon Lex can substitute the placeholder to provide a personalized prompt to
* the user ("Hey Joe, what toppings would you like?").
* </p>
* </li>
* </ul>
* <note>
* <p>
* Amazon Lex does not persist session attributes.
* </p>
* <p>
* If you configured a code hook for the intent, Amazon Lex passes the incoming session attributes to the
* Lambda function. The Lambda function must return these session attributes if you want Amazon Lex to return
* them to the client.
* </p>
* <p>
* If there is no code hook configured for the intent Amazon Lex simply returns the session attributes to the
* client application.
* </p>
* @return Returns a reference to this object so that method calls can be chained together.
*/
public PostContentRequest withSessionAttributes(String sessionAttributes) {
setSessionAttributes(sessionAttributes);
return this;
}
/**
* <p>
* You pass this values as the <code>Content-Type</code> HTTP header.
* </p>
* <p>
* Indicates the audio format or text. The header value must start with one of the following prefixes:
* </p>
* <ul>
* <li>
* <p>
* PCM format
* </p>
* <ul>
* <li>
* <p>
* audio/l16; rate=16000; channels=1
* </p>
* </li>
* <li>
* <p>
* audio/x-l16; sample-rate=16000; channel-count=1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Opus format
* </p>
* <ul>
* <li>
* <p>
* audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=1; frame-size-milliseconds=1.1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Text format
* </p>
* <ul>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* </ul>
* </li>
* </ul>
*
* @param contentType
* You pass this values as the <code>Content-Type</code> HTTP header. </p>
* <p>
* Indicates the audio format or text. The header value must start with one of the following prefixes:
* </p>
* <ul>
* <li>
* <p>
* PCM format
* </p>
* <ul>
* <li>
* <p>
* audio/l16; rate=16000; channels=1
* </p>
* </li>
* <li>
* <p>
* audio/x-l16; sample-rate=16000; channel-count=1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Opus format
* </p>
* <ul>
* <li>
* <p>
* audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=1; frame-size-milliseconds=1.1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Text format
* </p>
* <ul>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* </ul>
* </li>
*/
public void setContentType(String contentType) {
this.contentType = contentType;
}
/**
* <p>
* You pass this values as the <code>Content-Type</code> HTTP header.
* </p>
* <p>
* Indicates the audio format or text. The header value must start with one of the following prefixes:
* </p>
* <ul>
* <li>
* <p>
* PCM format
* </p>
* <ul>
* <li>
* <p>
* audio/l16; rate=16000; channels=1
* </p>
* </li>
* <li>
* <p>
* audio/x-l16; sample-rate=16000; channel-count=1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Opus format
* </p>
* <ul>
* <li>
* <p>
* audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=1; frame-size-milliseconds=1.1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Text format
* </p>
* <ul>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* </ul>
* </li>
* </ul>
*
* @return You pass this values as the <code>Content-Type</code> HTTP header. </p>
* <p>
* Indicates the audio format or text. The header value must start with one of the following prefixes:
* </p>
* <ul>
* <li>
* <p>
* PCM format
* </p>
* <ul>
* <li>
* <p>
* audio/l16; rate=16000; channels=1
* </p>
* </li>
* <li>
* <p>
* audio/x-l16; sample-rate=16000; channel-count=1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Opus format
* </p>
* <ul>
* <li>
* <p>
* audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=1; frame-size-milliseconds=1.1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Text format
* </p>
* <ul>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* </ul>
* </li>
*/
public String getContentType() {
return this.contentType;
}
/**
* <p>
* You pass this values as the <code>Content-Type</code> HTTP header.
* </p>
* <p>
* Indicates the audio format or text. The header value must start with one of the following prefixes:
* </p>
* <ul>
* <li>
* <p>
* PCM format
* </p>
* <ul>
* <li>
* <p>
* audio/l16; rate=16000; channels=1
* </p>
* </li>
* <li>
* <p>
* audio/x-l16; sample-rate=16000; channel-count=1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Opus format
* </p>
* <ul>
* <li>
* <p>
* audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=1; frame-size-milliseconds=1.1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Text format
* </p>
* <ul>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* </ul>
* </li>
* </ul>
*
* @param contentType
* You pass this values as the <code>Content-Type</code> HTTP header. </p>
* <p>
* Indicates the audio format or text. The header value must start with one of the following prefixes:
* </p>
* <ul>
* <li>
* <p>
* PCM format
* </p>
* <ul>
* <li>
* <p>
* audio/l16; rate=16000; channels=1
* </p>
* </li>
* <li>
* <p>
* audio/x-l16; sample-rate=16000; channel-count=1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Opus format
* </p>
* <ul>
* <li>
* <p>
* audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=1; frame-size-milliseconds=1.1
* </p>
* </li>
* </ul>
* </li>
* <li>
* <p>
* Text format
* </p>
* <ul>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* </ul>
* </li>
* @return Returns a reference to this object so that method calls can be chained together.
*/
public PostContentRequest withContentType(String contentType) {
setContentType(contentType);
return this;
}
/**
* <p>
* You pass this value as the <code>Accept</code> HTTP header.
* </p>
* <p>
* The message Amazon Lex returns in the response can be either text or speech based on the <code>Accept</code> HTTP
* header value in the request.
* </p>
* <ul>
* <li>
* <p>
* If the value is <code>text/plain; charset=utf-8</code>, Amazon Lex returns text in the response.
* </p>
* </li>
* <li>
* <p>
* If the value begins with <code>audio/</code>, Amazon Lex returns speech in the response. Amazon Lex uses Amazon
* Polly to generate the speech (using the configuration you specified in the <code>Accept</code> header). For
* example, if you specify <code>audio/mpeg</code> as the value, Amazon Lex returns speech in the MPEG format.
* </p>
* <p>
* The following are the accepted values:
* </p>
* <ul>
* <li>
* <p>
* audio/mpeg
* </p>
* </li>
* <li>
* <p>
* audio/ogg
* </p>
* </li>
* <li>
* <p>
* audio/pcm
* </p>
* </li>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* <li>
* <p>
* audio/* (defaults to mpeg)
* </p>
* </li>
* </ul>
* </li>
* </ul>
*
* @param accept
* You pass this value as the <code>Accept</code> HTTP header. </p>
* <p>
* The message Amazon Lex returns in the response can be either text or speech based on the
* <code>Accept</code> HTTP header value in the request.
* </p>
* <ul>
* <li>
* <p>
* If the value is <code>text/plain; charset=utf-8</code>, Amazon Lex returns text in the response.
* </p>
* </li>
* <li>
* <p>
* If the value begins with <code>audio/</code>, Amazon Lex returns speech in the response. Amazon Lex uses
* Amazon Polly to generate the speech (using the configuration you specified in the <code>Accept</code>
* header). For example, if you specify <code>audio/mpeg</code> as the value, Amazon Lex returns speech in
* the MPEG format.
* </p>
* <p>
* The following are the accepted values:
* </p>
* <ul>
* <li>
* <p>
* audio/mpeg
* </p>
* </li>
* <li>
* <p>
* audio/ogg
* </p>
* </li>
* <li>
* <p>
* audio/pcm
* </p>
* </li>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* <li>
* <p>
* audio/* (defaults to mpeg)
* </p>
* </li>
* </ul>
* </li>
*/
public void setAccept(String accept) {
this.accept = accept;
}
/**
* <p>
* You pass this value as the <code>Accept</code> HTTP header.
* </p>
* <p>
* The message Amazon Lex returns in the response can be either text or speech based on the <code>Accept</code> HTTP
* header value in the request.
* </p>
* <ul>
* <li>
* <p>
* If the value is <code>text/plain; charset=utf-8</code>, Amazon Lex returns text in the response.
* </p>
* </li>
* <li>
* <p>
* If the value begins with <code>audio/</code>, Amazon Lex returns speech in the response. Amazon Lex uses Amazon
* Polly to generate the speech (using the configuration you specified in the <code>Accept</code> header). For
* example, if you specify <code>audio/mpeg</code> as the value, Amazon Lex returns speech in the MPEG format.
* </p>
* <p>
* The following are the accepted values:
* </p>
* <ul>
* <li>
* <p>
* audio/mpeg
* </p>
* </li>
* <li>
* <p>
* audio/ogg
* </p>
* </li>
* <li>
* <p>
* audio/pcm
* </p>
* </li>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* <li>
* <p>
* audio/* (defaults to mpeg)
* </p>
* </li>
* </ul>
* </li>
* </ul>
*
* @return You pass this value as the <code>Accept</code> HTTP header. </p>
* <p>
* The message Amazon Lex returns in the response can be either text or speech based on the
* <code>Accept</code> HTTP header value in the request.
* </p>
* <ul>
* <li>
* <p>
* If the value is <code>text/plain; charset=utf-8</code>, Amazon Lex returns text in the response.
* </p>
* </li>
* <li>
* <p>
* If the value begins with <code>audio/</code>, Amazon Lex returns speech in the response. Amazon Lex uses
* Amazon Polly to generate the speech (using the configuration you specified in the <code>Accept</code>
* header). For example, if you specify <code>audio/mpeg</code> as the value, Amazon Lex returns speech in
* the MPEG format.
* </p>
* <p>
* The following are the accepted values:
* </p>
* <ul>
* <li>
* <p>
* audio/mpeg
* </p>
* </li>
* <li>
* <p>
* audio/ogg
* </p>
* </li>
* <li>
* <p>
* audio/pcm
* </p>
* </li>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* <li>
* <p>
* audio/* (defaults to mpeg)
* </p>
* </li>
* </ul>
* </li>
*/
public String getAccept() {
return this.accept;
}
/**
* <p>
* You pass this value as the <code>Accept</code> HTTP header.
* </p>
* <p>
* The message Amazon Lex returns in the response can be either text or speech based on the <code>Accept</code> HTTP
* header value in the request.
* </p>
* <ul>
* <li>
* <p>
* If the value is <code>text/plain; charset=utf-8</code>, Amazon Lex returns text in the response.
* </p>
* </li>
* <li>
* <p>
* If the value begins with <code>audio/</code>, Amazon Lex returns speech in the response. Amazon Lex uses Amazon
* Polly to generate the speech (using the configuration you specified in the <code>Accept</code> header). For
* example, if you specify <code>audio/mpeg</code> as the value, Amazon Lex returns speech in the MPEG format.
* </p>
* <p>
* The following are the accepted values:
* </p>
* <ul>
* <li>
* <p>
* audio/mpeg
* </p>
* </li>
* <li>
* <p>
* audio/ogg
* </p>
* </li>
* <li>
* <p>
* audio/pcm
* </p>
* </li>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* <li>
* <p>
* audio/* (defaults to mpeg)
* </p>
* </li>
* </ul>
* </li>
* </ul>
*
* @param accept
* You pass this value as the <code>Accept</code> HTTP header. </p>
* <p>
* The message Amazon Lex returns in the response can be either text or speech based on the
* <code>Accept</code> HTTP header value in the request.
* </p>
* <ul>
* <li>
* <p>
* If the value is <code>text/plain; charset=utf-8</code>, Amazon Lex returns text in the response.
* </p>
* </li>
* <li>
* <p>
* If the value begins with <code>audio/</code>, Amazon Lex returns speech in the response. Amazon Lex uses
* Amazon Polly to generate the speech (using the configuration you specified in the <code>Accept</code>
* header). For example, if you specify <code>audio/mpeg</code> as the value, Amazon Lex returns speech in
* the MPEG format.
* </p>
* <p>
* The following are the accepted values:
* </p>
* <ul>
* <li>
* <p>
* audio/mpeg
* </p>
* </li>
* <li>
* <p>
* audio/ogg
* </p>
* </li>
* <li>
* <p>
* audio/pcm
* </p>
* </li>
* <li>
* <p>
* text/plain; charset=utf-8
* </p>
* </li>
* <li>
* <p>
* audio/* (defaults to mpeg)
* </p>
* </li>
* </ul>
* </li>
* @return Returns a reference to this object so that method calls can be chained together.
*/
public PostContentRequest withAccept(String accept) {
setAccept(accept);
return this;
}
/**
* <p>
* User input in PCM or Opus audio format or text format as described in the <code>Content-Type</code> HTTP header.
* </p>
*
* @param inputStreamValue
* User input in PCM or Opus audio format or text format as described in the <code>Content-Type</code> HTTP
* header.
*/
public void setInputStream(java.io.InputStream inputStreamValue) {
this.inputStreamValue = inputStreamValue;
}
/**
* <p>
* User input in PCM or Opus audio format or text format as described in the <code>Content-Type</code> HTTP header.
* </p>
*
* @return User input in PCM or Opus audio format or text format as described in the <code>Content-Type</code> HTTP
* header.
*/
public java.io.InputStream getInputStream() {
return this.inputStreamValue;
}
/**
* <p>
* User input in PCM or Opus audio format or text format as described in the <code>Content-Type</code> HTTP header.
* </p>
*
* @param inputStreamValue
* User input in PCM or Opus audio format or text format as described in the <code>Content-Type</code> HTTP
* header.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public PostContentRequest withInputStream(java.io.InputStream inputStreamValue) {
setInputStream(inputStreamValue);
return this;
}
/**
* Returns a string representation of this object; useful for testing and debugging.
*
* @return A string representation of this object.
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("{");
if (getBotName() != null)
sb.append("BotName: ").append(getBotName()).append(",");
if (getBotAlias() != null)
sb.append("BotAlias: ").append(getBotAlias()).append(",");
if (getUserId() != null)
sb.append("UserId: ").append(getUserId()).append(",");
if (getSessionAttributes() != null)
sb.append("SessionAttributes: ").append(getSessionAttributes()).append(",");
if (getContentType() != null)
sb.append("ContentType: ").append(getContentType()).append(",");
if (getAccept() != null)
sb.append("Accept: ").append(getAccept()).append(",");
if (getInputStream() != null)
sb.append("InputStream: ").append(getInputStream());
sb.append("}");
return sb.toString();
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (obj instanceof PostContentRequest == false)
return false;
PostContentRequest other = (PostContentRequest) obj;
if (other.getBotName() == null ^ this.getBotName() == null)
return false;
if (other.getBotName() != null && other.getBotName().equals(this.getBotName()) == false)
return false;
if (other.getBotAlias() == null ^ this.getBotAlias() == null)
return false;
if (other.getBotAlias() != null && other.getBotAlias().equals(this.getBotAlias()) == false)
return false;
if (other.getUserId() == null ^ this.getUserId() == null)
return false;
if (other.getUserId() != null && other.getUserId().equals(this.getUserId()) == false)
return false;
if (other.getSessionAttributes() == null ^ this.getSessionAttributes() == null)
return false;
if (other.getSessionAttributes() != null && other.getSessionAttributes().equals(this.getSessionAttributes()) == false)
return false;
if (other.getContentType() == null ^ this.getContentType() == null)
return false;
if (other.getContentType() != null && other.getContentType().equals(this.getContentType()) == false)
return false;
if (other.getAccept() == null ^ this.getAccept() == null)
return false;
if (other.getAccept() != null && other.getAccept().equals(this.getAccept()) == false)
return false;
if (other.getInputStream() == null ^ this.getInputStream() == null)
return false;
if (other.getInputStream() != null && other.getInputStream().equals(this.getInputStream()) == false)
return false;
return true;
}
@Override
public int hashCode() {
final int prime = 31;
int hashCode = 1;
hashCode = prime * hashCode + ((getBotName() == null) ? 0 : getBotName().hashCode());
hashCode = prime * hashCode + ((getBotAlias() == null) ? 0 : getBotAlias().hashCode());
hashCode = prime * hashCode + ((getUserId() == null) ? 0 : getUserId().hashCode());
hashCode = prime * hashCode + ((getSessionAttributes() == null) ? 0 : getSessionAttributes().hashCode());
hashCode = prime * hashCode + ((getContentType() == null) ? 0 : getContentType().hashCode());
hashCode = prime * hashCode + ((getAccept() == null) ? 0 : getAccept().hashCode());
hashCode = prime * hashCode + ((getInputStream() == null) ? 0 : getInputStream().hashCode());
return hashCode;
}
@Override
public PostContentRequest clone() {
return (PostContentRequest) super.clone();
}
@Override
public String getSignerType() {
return "AWS4UnsignedPayloadSignerType";
}
}