/* * Copyright 2010-2021 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.lexrts.model; import java.io.Serializable; import com.amazonaws.AmazonWebServiceRequest; /** *

* Sends user input (text or speech) to Amazon Lex. Clients use this API to send * text and audio requests to Amazon Lex at runtime. Amazon Lex interprets the * user input using the machine learning model that it built for the bot. *

*

* The PostContent operation supports audio input at 8kHz and * 16kHz. You can use 8kHz audio to achieve higher speech recognition accuracy * in telephone audio applications. *

*

* In response, Amazon Lex returns the next message to convey to the user. * Consider the following example messages: *

* *

* Not all Amazon Lex messages require a response from the user. For example, * conclusion statements do not require a response. Some messages require only a * yes or no response. In addition to the message, Amazon Lex * provides additional context about the message in the response that you can * use to enhance client behavior, such as displaying the appropriate client * user interface. Consider the following examples: *

* *

* In addition, Amazon Lex also returns your application-specific * sessionAttributes. For more information, see Managing * Conversation Context. *

*/ public class PostContentRequest extends AmazonWebServiceRequest implements Serializable { /** *

* Name of the Amazon Lex bot. *

*/ private String botName; /** *

* Alias of the Amazon Lex bot. *

*/ private String botAlias; /** *

* The ID of the client application user. Amazon Lex uses this to identify a * user's conversation with your bot. At runtime, each request must contain * the userID field. *

*

* To decide the user ID to use for your application, consider the following * factors. *

* *

* Constraints:
* Length: 2 - 100
* Pattern: [0-9a-zA-Z._:-]+
*/ private String userId; /** *

* You pass this value as the x-amz-lex-session-attributes HTTP * header. *

*

* Application-specific information passed between Amazon Lex and a client * application. The value must be a JSON serialized and base64 encoded map * with string keys and values. The total size of the * sessionAttributes and requestAttributes headers * is limited to 12 KB. *

*

* For more information, see Setting Session Attributes. *

*/ private String sessionAttributes; /** *

* You pass this value as the x-amz-lex-request-attributes HTTP * header. *

*

* Request-specific information passed between Amazon Lex and a client * application. The value must be a JSON serialized and base64 encoded map * with string keys and values. The total size of the * requestAttributes and sessionAttributes headers * is limited to 12 KB. *

*

* The namespace x-amz-lex: is reserved for special attributes. * Don't create any request attributes with the prefix * x-amz-lex:. *

*

* For more information, see Setting Request Attributes. *

*/ private String requestAttributes; /** *

* You pass this value as the Content-Type HTTP header. *

*

* Indicates the audio format or text. The header value must start with one * of the following prefixes: *

* */ private String contentType; /** *

* You pass this value as the Accept HTTP header. *

*

* The message Amazon Lex returns in the response can be either text or * speech based on the Accept HTTP header value in the request. *

* */ private String accept; /** *

* User input in PCM or Opus audio format or text format as described in the * Content-Type HTTP header. *

*

* You can stream audio data to Amazon Lex or you can create a local buffer * that captures all of the audio data before sending. In general, you get * better performance if you stream audio data rather than buffering the * data locally. *

*/ private java.io.InputStream inputStreamValue; /** *

* A list of contexts active for the request. A context can be activated * when a previous intent is fulfilled, or by including the context in the * request, *

*

* If you don't specify a list of contexts, Amazon Lex will use the current * list of contexts for the session. If you specify an empty list, all * contexts for the session are cleared. *

*/ private String activeContexts; /** *

* Name of the Amazon Lex bot. *

* * @return

* Name of the Amazon Lex bot. *

*/ public String getBotName() { return botName; } /** *

* Name of the Amazon Lex bot. *

* * @param botName

* Name of the Amazon Lex bot. *

*/ public void setBotName(String botName) { this.botName = botName; } /** *

* Name of the Amazon Lex bot. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param botName

* Name of the Amazon Lex bot. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PostContentRequest withBotName(String botName) { this.botName = botName; return this; } /** *

* Alias of the Amazon Lex bot. *

* * @return

* Alias of the Amazon Lex bot. *

*/ public String getBotAlias() { return botAlias; } /** *

* Alias of the Amazon Lex bot. *

* * @param botAlias

* Alias of the Amazon Lex bot. *

*/ public void setBotAlias(String botAlias) { this.botAlias = botAlias; } /** *

* Alias of the Amazon Lex bot. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param botAlias

* Alias of the Amazon Lex bot. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PostContentRequest withBotAlias(String botAlias) { this.botAlias = botAlias; return this; } /** *

* The ID of the client application user. Amazon Lex uses this to identify a * user's conversation with your bot. At runtime, each request must contain * the userID field. *

*

* To decide the user ID to use for your application, consider the following * factors. *

* *

* Constraints:
* Length: 2 - 100
* Pattern: [0-9a-zA-Z._:-]+
* * @return

* The ID of the client application user. Amazon Lex uses this to * identify a user's conversation with your bot. At runtime, each * request must contain the userID field. *

*

* To decide the user ID to use for your application, consider the * following factors. *

* */ public String getUserId() { return userId; } /** *

* The ID of the client application user. Amazon Lex uses this to identify a * user's conversation with your bot. At runtime, each request must contain * the userID field. *

*

* To decide the user ID to use for your application, consider the following * factors. *

* *

* Constraints:
* Length: 2 - 100
* Pattern: [0-9a-zA-Z._:-]+
* * @param userId

* The ID of the client application user. Amazon Lex uses this to * identify a user's conversation with your bot. At runtime, each * request must contain the userID field. *

*

* To decide the user ID to use for your application, consider * the following factors. *

* */ public void setUserId(String userId) { this.userId = userId; } /** *

* The ID of the client application user. Amazon Lex uses this to identify a * user's conversation with your bot. At runtime, each request must contain * the userID field. *

*

* To decide the user ID to use for your application, consider the following * factors. *

* *

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Length: 2 - 100
* Pattern: [0-9a-zA-Z._:-]+
* * @param userId

* The ID of the client application user. Amazon Lex uses this to * identify a user's conversation with your bot. At runtime, each * request must contain the userID field. *

*

* To decide the user ID to use for your application, consider * the following factors. *

* * @return A reference to this updated object so that method calls can be * chained together. */ public PostContentRequest withUserId(String userId) { this.userId = userId; return this; } /** *

* You pass this value as the x-amz-lex-session-attributes HTTP * header. *

*

* Application-specific information passed between Amazon Lex and a client * application. The value must be a JSON serialized and base64 encoded map * with string keys and values. The total size of the * sessionAttributes and requestAttributes headers * is limited to 12 KB. *

*

* For more information, see Setting Session Attributes. *

* * @return

* You pass this value as the * x-amz-lex-session-attributes HTTP header. *

*

* Application-specific information passed between Amazon Lex and a * client application. The value must be a JSON serialized and * base64 encoded map with string keys and values. The total size of * the sessionAttributes and * requestAttributes headers is limited to 12 KB. *

*

* For more information, see Setting Session Attributes. *

*/ public String getSessionAttributes() { return sessionAttributes; } /** *

* You pass this value as the x-amz-lex-session-attributes HTTP * header. *

*

* Application-specific information passed between Amazon Lex and a client * application. The value must be a JSON serialized and base64 encoded map * with string keys and values. The total size of the * sessionAttributes and requestAttributes headers * is limited to 12 KB. *

*

* For more information, see Setting Session Attributes. *

* * @param sessionAttributes

* You pass this value as the * x-amz-lex-session-attributes HTTP header. *

*

* Application-specific information passed between Amazon Lex and * a client application. The value must be a JSON serialized and * base64 encoded map with string keys and values. The total size * of the sessionAttributes and * requestAttributes headers is limited to 12 KB. *

*

* For more information, see Setting Session Attributes. *

*/ public void setSessionAttributes(String sessionAttributes) { this.sessionAttributes = sessionAttributes; } /** *

* You pass this value as the x-amz-lex-session-attributes HTTP * header. *

*

* Application-specific information passed between Amazon Lex and a client * application. The value must be a JSON serialized and base64 encoded map * with string keys and values. The total size of the * sessionAttributes and requestAttributes headers * is limited to 12 KB. *

*

* For more information, see Setting Session Attributes. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param sessionAttributes

* You pass this value as the * x-amz-lex-session-attributes HTTP header. *

*

* Application-specific information passed between Amazon Lex and * a client application. The value must be a JSON serialized and * base64 encoded map with string keys and values. The total size * of the sessionAttributes and * requestAttributes headers is limited to 12 KB. *

*

* For more information, see Setting Session Attributes. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PostContentRequest withSessionAttributes(String sessionAttributes) { this.sessionAttributes = sessionAttributes; return this; } /** *

* You pass this value as the x-amz-lex-request-attributes HTTP * header. *

*

* Request-specific information passed between Amazon Lex and a client * application. The value must be a JSON serialized and base64 encoded map * with string keys and values. The total size of the * requestAttributes and sessionAttributes headers * is limited to 12 KB. *

*

* The namespace x-amz-lex: is reserved for special attributes. * Don't create any request attributes with the prefix * x-amz-lex:. *

*

* For more information, see Setting Request Attributes. *

* * @return

* You pass this value as the * x-amz-lex-request-attributes HTTP header. *

*

* Request-specific information passed between Amazon Lex and a * client application. The value must be a JSON serialized and * base64 encoded map with string keys and values. The total size of * the requestAttributes and * sessionAttributes headers is limited to 12 KB. *

*

* The namespace x-amz-lex: is reserved for special * attributes. Don't create any request attributes with the prefix * x-amz-lex:. *

*

* For more information, see Setting Request Attributes. *

*/ public String getRequestAttributes() { return requestAttributes; } /** *

* You pass this value as the x-amz-lex-request-attributes HTTP * header. *

*

* Request-specific information passed between Amazon Lex and a client * application. The value must be a JSON serialized and base64 encoded map * with string keys and values. The total size of the * requestAttributes and sessionAttributes headers * is limited to 12 KB. *

*

* The namespace x-amz-lex: is reserved for special attributes. * Don't create any request attributes with the prefix * x-amz-lex:. *

*

* For more information, see Setting Request Attributes. *

* * @param requestAttributes

* You pass this value as the * x-amz-lex-request-attributes HTTP header. *

*

* Request-specific information passed between Amazon Lex and a * client application. The value must be a JSON serialized and * base64 encoded map with string keys and values. The total size * of the requestAttributes and * sessionAttributes headers is limited to 12 KB. *

*

* The namespace x-amz-lex: is reserved for special * attributes. Don't create any request attributes with the * prefix x-amz-lex:. *

*

* For more information, see Setting Request Attributes. *

*/ public void setRequestAttributes(String requestAttributes) { this.requestAttributes = requestAttributes; } /** *

* You pass this value as the x-amz-lex-request-attributes HTTP * header. *

*

* Request-specific information passed between Amazon Lex and a client * application. The value must be a JSON serialized and base64 encoded map * with string keys and values. The total size of the * requestAttributes and sessionAttributes headers * is limited to 12 KB. *

*

* The namespace x-amz-lex: is reserved for special attributes. * Don't create any request attributes with the prefix * x-amz-lex:. *

*

* For more information, see Setting Request Attributes. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param requestAttributes

* You pass this value as the * x-amz-lex-request-attributes HTTP header. *

*

* Request-specific information passed between Amazon Lex and a * client application. The value must be a JSON serialized and * base64 encoded map with string keys and values. The total size * of the requestAttributes and * sessionAttributes headers is limited to 12 KB. *

*

* The namespace x-amz-lex: is reserved for special * attributes. Don't create any request attributes with the * prefix x-amz-lex:. *

*

* For more information, see Setting Request Attributes. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PostContentRequest withRequestAttributes(String requestAttributes) { this.requestAttributes = requestAttributes; return this; } /** *

* You pass this value as the Content-Type HTTP header. *

*

* Indicates the audio format or text. The header value must start with one * of the following prefixes: *

* * * @return

* You pass this value as the Content-Type HTTP header. *

*

* Indicates the audio format or text. The header value must start * with one of the following prefixes: *

* */ public String getContentType() { return contentType; } /** *

* You pass this value as the Content-Type HTTP header. *

*

* Indicates the audio format or text. The header value must start with one * of the following prefixes: *

* * * @param contentType

* You pass this value as the Content-Type HTTP * header. *

*

* Indicates the audio format or text. The header value must * start with one of the following prefixes: *

* */ public void setContentType(String contentType) { this.contentType = contentType; } /** *

* You pass this value as the Content-Type HTTP header. *

*

* Indicates the audio format or text. The header value must start with one * of the following prefixes: *

* *

* Returns a reference to this object so that method calls can be chained * together. * * @param contentType

* You pass this value as the Content-Type HTTP * header. *

*

* Indicates the audio format or text. The header value must * start with one of the following prefixes: *

* * @return A reference to this updated object so that method calls can be * chained together. */ public PostContentRequest withContentType(String contentType) { this.contentType = contentType; return this; } /** *

* You pass this value as the Accept HTTP header. *

*

* The message Amazon Lex returns in the response can be either text or * speech based on the Accept HTTP header value in the request. *

* * * @return

* You pass this value as the Accept HTTP header. *

*

* The message Amazon Lex returns in the response can be either text * or speech based on the Accept HTTP header value in * the request. *

* */ public String getAccept() { return accept; } /** *

* You pass this value as the Accept HTTP header. *

*

* The message Amazon Lex returns in the response can be either text or * speech based on the Accept HTTP header value in the request. *

* * * @param accept

* You pass this value as the Accept HTTP header. *

*

* The message Amazon Lex returns in the response can be either * text or speech based on the Accept HTTP header * value in the request. *

* */ public void setAccept(String accept) { this.accept = accept; } /** *

* You pass this value as the Accept HTTP header. *

*

* The message Amazon Lex returns in the response can be either text or * speech based on the Accept HTTP header value in the request. *

* *

* Returns a reference to this object so that method calls can be chained * together. * * @param accept

* You pass this value as the Accept HTTP header. *

*

* The message Amazon Lex returns in the response can be either * text or speech based on the Accept HTTP header * value in the request. *

* * @return A reference to this updated object so that method calls can be * chained together. */ public PostContentRequest withAccept(String accept) { this.accept = accept; return this; } /** *

* User input in PCM or Opus audio format or text format as described in the * Content-Type HTTP header. *

*

* You can stream audio data to Amazon Lex or you can create a local buffer * that captures all of the audio data before sending. In general, you get * better performance if you stream audio data rather than buffering the * data locally. *

* * @return

* User input in PCM or Opus audio format or text format as * described in the Content-Type HTTP header. *

*

* You can stream audio data to Amazon Lex or you can create a local * buffer that captures all of the audio data before sending. In * general, you get better performance if you stream audio data * rather than buffering the data locally. *

*/ public java.io.InputStream getInputStream() { return inputStreamValue; } /** *

* User input in PCM or Opus audio format or text format as described in the * Content-Type HTTP header. *

*

* You can stream audio data to Amazon Lex or you can create a local buffer * that captures all of the audio data before sending. In general, you get * better performance if you stream audio data rather than buffering the * data locally. *

* * @param inputStreamValue

* User input in PCM or Opus audio format or text format as * described in the Content-Type HTTP header. *

*

* You can stream audio data to Amazon Lex or you can create a * local buffer that captures all of the audio data before * sending. In general, you get better performance if you stream * audio data rather than buffering the data locally. *

*/ public void setInputStream(java.io.InputStream inputStreamValue) { this.inputStreamValue = inputStreamValue; } /** *

* User input in PCM or Opus audio format or text format as described in the * Content-Type HTTP header. *

*

* You can stream audio data to Amazon Lex or you can create a local buffer * that captures all of the audio data before sending. In general, you get * better performance if you stream audio data rather than buffering the * data locally. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param inputStreamValue

* User input in PCM or Opus audio format or text format as * described in the Content-Type HTTP header. *

*

* You can stream audio data to Amazon Lex or you can create a * local buffer that captures all of the audio data before * sending. In general, you get better performance if you stream * audio data rather than buffering the data locally. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PostContentRequest withInputStream(java.io.InputStream inputStreamValue) { this.inputStreamValue = inputStreamValue; return this; } /** *

* A list of contexts active for the request. A context can be activated * when a previous intent is fulfilled, or by including the context in the * request, *

*

* If you don't specify a list of contexts, Amazon Lex will use the current * list of contexts for the session. If you specify an empty list, all * contexts for the session are cleared. *

* * @return

* A list of contexts active for the request. A context can be * activated when a previous intent is fulfilled, or by including * the context in the request, *

*

* If you don't specify a list of contexts, Amazon Lex will use the * current list of contexts for the session. If you specify an empty * list, all contexts for the session are cleared. *

*/ public String getActiveContexts() { return activeContexts; } /** *

* A list of contexts active for the request. A context can be activated * when a previous intent is fulfilled, or by including the context in the * request, *

*

* If you don't specify a list of contexts, Amazon Lex will use the current * list of contexts for the session. If you specify an empty list, all * contexts for the session are cleared. *

* * @param activeContexts

* A list of contexts active for the request. A context can be * activated when a previous intent is fulfilled, or by including * the context in the request, *

*

* If you don't specify a list of contexts, Amazon Lex will use * the current list of contexts for the session. If you specify * an empty list, all contexts for the session are cleared. *

*/ public void setActiveContexts(String activeContexts) { this.activeContexts = activeContexts; } /** *

* A list of contexts active for the request. A context can be activated * when a previous intent is fulfilled, or by including the context in the * request, *

*

* If you don't specify a list of contexts, Amazon Lex will use the current * list of contexts for the session. If you specify an empty list, all * contexts for the session are cleared. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param activeContexts

* A list of contexts active for the request. A context can be * activated when a previous intent is fulfilled, or by including * the context in the request, *

*

* If you don't specify a list of contexts, Amazon Lex will use * the current list of contexts for the session. If you specify * an empty list, all contexts for the session are cleared. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PostContentRequest withActiveContexts(String activeContexts) { this.activeContexts = activeContexts; 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: " + getBotName() + ","); if (getBotAlias() != null) sb.append("botAlias: " + getBotAlias() + ","); if (getUserId() != null) sb.append("userId: " + getUserId() + ","); if (getSessionAttributes() != null) sb.append("sessionAttributes: " + getSessionAttributes() + ","); if (getRequestAttributes() != null) sb.append("requestAttributes: " + getRequestAttributes() + ","); if (getContentType() != null) sb.append("contentType: " + getContentType() + ","); if (getAccept() != null) sb.append("accept: " + getAccept() + ","); if (getInputStream() != null) sb.append("inputStream: " + getInputStream() + ","); if (getActiveContexts() != null) sb.append("activeContexts: " + getActiveContexts()); sb.append("}"); return sb.toString(); } @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 + ((getRequestAttributes() == null) ? 0 : getRequestAttributes().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()); hashCode = prime * hashCode + ((getActiveContexts() == null) ? 0 : getActiveContexts().hashCode()); return hashCode; } @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.getRequestAttributes() == null ^ this.getRequestAttributes() == null) return false; if (other.getRequestAttributes() != null && other.getRequestAttributes().equals(this.getRequestAttributes()) == 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; if (other.getActiveContexts() == null ^ this.getActiveContexts() == null) return false; if (other.getActiveContexts() != null && other.getActiveContexts().equals(this.getActiveContexts()) == false) return false; return true; } }