/* * 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 to Amazon Lex. Client applications can use this API to send * requests to Amazon Lex at runtime. Amazon Lex then interprets the user input * using the machine learning model it built for the bot. *

*

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

* *

* Not all Amazon Lex messages require a user response. For example, a * conclusion statement does not require a response. Some messages require only * a "yes" or "no" user response. In addition to the message, * Amazon Lex provides additional context about the message in the response that * you might use to enhance client behavior, for example, to display the * appropriate client user interface. These are the slotToElicit, * dialogState, intentName, and slots * fields in the response. Consider the following examples: *

* *

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

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

* The name of the Amazon Lex bot. *

*/ private String botName; /** *

* The 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; /** *

* Application-specific information passed between Amazon Lex and a client * application. *

*

* For more information, see Setting Session Attributes. *

*/ private java.util.Map sessionAttributes; /** *

* Request-specific information passed between Amazon Lex and a client * application. *

*

* 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 java.util.Map requestAttributes; /** *

* The text that the user entered (Amazon Lex interprets this text). *

*

* Constraints:
* Length: 1 - 1024
*/ private String inputText; /** *

* 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 java.util.List activeContexts; /** *

* The name of the Amazon Lex bot. *

* * @return

* The name of the Amazon Lex bot. *

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

* The name of the Amazon Lex bot. *

* * @param botName

* The name of the Amazon Lex bot. *

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

* The name of the Amazon Lex bot. *

*

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

* The name of the Amazon Lex bot. *

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

* The alias of the Amazon Lex bot. *

* * @return

* The alias of the Amazon Lex bot. *

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

* The alias of the Amazon Lex bot. *

* * @param botAlias

* The alias of the Amazon Lex bot. *

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

* The alias of the Amazon Lex bot. *

*

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

* The alias of the Amazon Lex bot. *

* @return A reference to this updated object so that method calls can be * chained together. */ public PostTextRequest 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. *

*
    *
  • *

    * The userID field must not contain any personally * identifiable information of the user, for example, name, personal * identification numbers, or other end user personal information. *

    *
  • *
  • *

    * If you want a user to start a conversation on one device and continue on * another device, use a user-specific identifier. *

    *
  • *
  • *

    * If you want the same user to be able to have two independent * conversations on two different devices, choose a device-specific * identifier. *

    *
  • *
  • *

    * A user can't have two independent conversations with two different * versions of the same bot. For example, a user can't have a conversation * with the PROD and BETA versions of the same bot. If you anticipate that a * user will need to have conversation with two different versions, for * example, while testing, include the bot alias in the user ID to separate * the two conversations. *

    *
  • *
*

* 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. *

*
    *
  • *

    * The userID field must not contain any personally * identifiable information of the user, for example, name, personal * identification numbers, or other end user personal information. *

    *
  • *
  • *

    * If you want a user to start a conversation on one device and * continue on another device, use a user-specific identifier. *

    *
  • *
  • *

    * If you want the same user to be able to have two independent * conversations on two different devices, choose a device-specific * identifier. *

    *
  • *
  • *

    * A user can't have two independent conversations with two * different versions of the same bot. For example, a user can't * have a conversation with the PROD and BETA versions of the same * bot. If you anticipate that a user will need to have conversation * with two different versions, for example, while testing, include * the bot alias in the user ID to separate the two conversations. *

    *
  • *
*/ 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. *

*
    *
  • *

    * The userID field must not contain any personally * identifiable information of the user, for example, name, personal * identification numbers, or other end user personal information. *

    *
  • *
  • *

    * If you want a user to start a conversation on one device and continue on * another device, use a user-specific identifier. *

    *
  • *
  • *

    * If you want the same user to be able to have two independent * conversations on two different devices, choose a device-specific * identifier. *

    *
  • *
  • *

    * A user can't have two independent conversations with two different * versions of the same bot. For example, a user can't have a conversation * with the PROD and BETA versions of the same bot. If you anticipate that a * user will need to have conversation with two different versions, for * example, while testing, include the bot alias in the user ID to separate * the two conversations. *

    *
  • *
*

* 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. *

*
    *
  • *

    * The userID field must not contain any personally * identifiable information of the user, for example, name, * personal identification numbers, or other end user personal * information. *

    *
  • *
  • *

    * If you want a user to start a conversation on one device and * continue on another device, use a user-specific identifier. *

    *
  • *
  • *

    * If you want the same user to be able to have two independent * conversations on two different devices, choose a * device-specific identifier. *

    *
  • *
  • *

    * A user can't have two independent conversations with two * different versions of the same bot. For example, a user can't * have a conversation with the PROD and BETA versions of the * same bot. If you anticipate that a user will need to have * conversation with two different versions, for example, while * testing, include the bot alias in the user ID to separate the * two conversations. *

    *
  • *
*/ 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. *

*
    *
  • *

    * The userID field must not contain any personally * identifiable information of the user, for example, name, personal * identification numbers, or other end user personal information. *

    *
  • *
  • *

    * If you want a user to start a conversation on one device and continue on * another device, use a user-specific identifier. *

    *
  • *
  • *

    * If you want the same user to be able to have two independent * conversations on two different devices, choose a device-specific * identifier. *

    *
  • *
  • *

    * A user can't have two independent conversations with two different * versions of the same bot. For example, a user can't have a conversation * with the PROD and BETA versions of the same bot. If you anticipate that a * user will need to have conversation with two different versions, for * example, while testing, include the bot alias in the user ID to separate * the two conversations. *

    *
  • *
*

* 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. *

*
    *
  • *

    * The userID field must not contain any personally * identifiable information of the user, for example, name, * personal identification numbers, or other end user personal * information. *

    *
  • *
  • *

    * If you want a user to start a conversation on one device and * continue on another device, use a user-specific identifier. *

    *
  • *
  • *

    * If you want the same user to be able to have two independent * conversations on two different devices, choose a * device-specific identifier. *

    *
  • *
  • *

    * A user can't have two independent conversations with two * different versions of the same bot. For example, a user can't * have a conversation with the PROD and BETA versions of the * same bot. If you anticipate that a user will need to have * conversation with two different versions, for example, while * testing, include the bot alias in the user ID to separate the * two conversations. *

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

* Application-specific information passed between Amazon Lex and a client * application. *

*

* For more information, see Setting Session Attributes. *

* * @return

* Application-specific information passed between Amazon Lex and a * client application. *

*

* For more information, see Setting Session Attributes. *

*/ public java.util.Map getSessionAttributes() { return sessionAttributes; } /** *

* Application-specific information passed between Amazon Lex and a client * application. *

*

* For more information, see Setting Session Attributes. *

* * @param sessionAttributes

* Application-specific information passed between Amazon Lex and * a client application. *

*

* For more information, see Setting Session Attributes. *

*/ public void setSessionAttributes(java.util.Map sessionAttributes) { this.sessionAttributes = sessionAttributes; } /** *

* Application-specific information passed between Amazon Lex and a client * application. *

*

* For more information, see Setting Session Attributes. *

*

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

* Application-specific information passed between Amazon Lex and * a client application. *

*

* For more information, see Setting Session Attributes. *

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

* Application-specific information passed between Amazon Lex and a client * application. *

*

* For more information, see Setting Session Attributes. *

*

* The method adds a new key-value pair into sessionAttributes parameter, * and returns a reference to this object so that method calls can be * chained together. * * @param key The key of the entry to be added into sessionAttributes. * @param value The corresponding value of the entry to be added into * sessionAttributes. * @return A reference to this updated object so that method calls can be * chained together. */ public PostTextRequest addsessionAttributesEntry(String key, String value) { if (null == this.sessionAttributes) { this.sessionAttributes = new java.util.HashMap(); } if (this.sessionAttributes.containsKey(key)) throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided."); this.sessionAttributes.put(key, value); return this; } /** * Removes all the entries added into sessionAttributes. *

* Returns a reference to this object so that method calls can be chained * together. */ public PostTextRequest clearsessionAttributesEntries() { this.sessionAttributes = null; return this; } /** *

* Request-specific information passed between Amazon Lex and a client * application. *

*

* 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

* Request-specific information passed between Amazon Lex and a * client application. *

*

* 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 java.util.Map getRequestAttributes() { return requestAttributes; } /** *

* Request-specific information passed between Amazon Lex and a client * application. *

*

* 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

* Request-specific information passed between Amazon Lex and a * client application. *

*

* 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(java.util.Map requestAttributes) { this.requestAttributes = requestAttributes; } /** *

* Request-specific information passed between Amazon Lex and a client * application. *

*

* 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

* Request-specific information passed between Amazon Lex and a * client application. *

*

* 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 PostTextRequest withRequestAttributes(java.util.Map requestAttributes) { this.requestAttributes = requestAttributes; return this; } /** *

* Request-specific information passed between Amazon Lex and a client * application. *

*

* 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. *

*

* The method adds a new key-value pair into requestAttributes parameter, * and returns a reference to this object so that method calls can be * chained together. * * @param key The key of the entry to be added into requestAttributes. * @param value The corresponding value of the entry to be added into * requestAttributes. * @return A reference to this updated object so that method calls can be * chained together. */ public PostTextRequest addrequestAttributesEntry(String key, String value) { if (null == this.requestAttributes) { this.requestAttributes = new java.util.HashMap(); } if (this.requestAttributes.containsKey(key)) throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided."); this.requestAttributes.put(key, value); return this; } /** * Removes all the entries added into requestAttributes. *

* Returns a reference to this object so that method calls can be chained * together. */ public PostTextRequest clearrequestAttributesEntries() { this.requestAttributes = null; return this; } /** *

* The text that the user entered (Amazon Lex interprets this text). *

*

* Constraints:
* Length: 1 - 1024
* * @return

* The text that the user entered (Amazon Lex interprets this text). *

*/ public String getInputText() { return inputText; } /** *

* The text that the user entered (Amazon Lex interprets this text). *

*

* Constraints:
* Length: 1 - 1024
* * @param inputText

* The text that the user entered (Amazon Lex interprets this * text). *

*/ public void setInputText(String inputText) { this.inputText = inputText; } /** *

* The text that the user entered (Amazon Lex interprets this text). *

*

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

* Constraints:
* Length: 1 - 1024
* * @param inputText

* The text that the user entered (Amazon Lex interprets this * text). *

* @return A reference to this updated object so that method calls can be * chained together. */ public PostTextRequest withInputText(String inputText) { this.inputText = inputText; 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 java.util.List 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(java.util.Collection activeContexts) { if (activeContexts == null) { this.activeContexts = null; return; } this.activeContexts = new java.util.ArrayList(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 PostTextRequest withActiveContexts(ActiveContext... activeContexts) { if (getActiveContexts() == null) { this.activeContexts = new java.util.ArrayList(activeContexts.length); } for (ActiveContext value : activeContexts) { this.activeContexts.add(value); } 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. *

*

* 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 PostTextRequest withActiveContexts(java.util.Collection activeContexts) { setActiveContexts(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 (getInputText() != null) sb.append("inputText: " + getInputText() + ","); 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 + ((getInputText() == null) ? 0 : getInputText().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 PostTextRequest == false) return false; PostTextRequest other = (PostTextRequest) 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.getInputText() == null ^ this.getInputText() == null) return false; if (other.getInputText() != null && other.getInputText().equals(this.getInputText()) == 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; } }