/* * Copyright 2010-2016 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; /** * <p> * Sends user input text to Amazon Lex at runtime. Amazon Lex uses the machine * learning model that the service built for the application to interpret user * input. * </p> * <p> * In response, Amazon Lex returns the next message to convey to the user (based * on the context of the user interaction) and whether to expect a user response * to the message (<code>dialogState</code>). For example, consider the * following response messages: * </p> * <ul> * <li> * <p> * "What pizza toppings would you like?" – In this case, the * <code>dialogState</code> would be <code>ElicitSlot</code> (that is, a user * response is expected). * </p> * </li> * <li> * <p> * "Your order has been placed." – In this case, Amazon Lex returns one of the * following <code>dialogState</code> values depending on how the intent * fulfillment is configured (see <code>fulfillmentActivity</code> in * <code>CreateIntent</code>): * </p> * <ul> * <li> * <p> * <code>FulFilled</code> – The intent fulfillment is configured through a * Lambda function. * </p> * </li> * <li> * <p> * <code>ReadyForFulfilment</code> – The intent's * <code>fulfillmentActivity</code> is to simply return the intent data back to * the client application. * </p> * </li> * </ul> * </li> * </ul> */ public class PostTextRequest extends AmazonWebServiceRequest implements Serializable { /** * <p> * Name of the Amazon Lex bot. * </p> */ private String botName; /** * <p> * Alias of the Amazon Lex bot. * </p> */ private String botAlias; /** * <p> * User ID of your client application. Typically, each of your application * users should have a unique ID. Note the following considerations: * </p> * <ul> * <li> * <p> * If you want a user to start a conversation on one mobile device and * continue the conversation on another device, you might choose a * user-specific identifier, such as a 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 a * device-specific identifier, such as device ID, or some globally unique * identifier. * </p> * </li> * </ul> * <p> * <b>Constraints:</b><br/> * <b>Length: </b>2 - 50<br/> * <b>Pattern: </b>[0-9a-zA-Z._:-]+<br/> */ private String userId; /** * <p> * A session represents the dialog between a user and Amazon Lex. At * runtime, a client application can pass contextual information (session * attributes) in the request. For example, <code>"FirstName" : "Joe"</code> * . Amazon Lex passes these session attributes to the AWS Lambda functions * configured for the intent (see <code>dialogCodeHook</code> and * <code>fulfillmentActivity.codeHook</code> in <code>CreateIntent</code>). * </p> * <p> * In your Lambda function, you can use the session attributes for * customization. Some examples are: * </p> * <ul> * <li> * <p> * In a pizza ordering application, if you can pass user location as a * session attribute (for example, * <code>"Location" : "111 Maple street"</code>), your Lambda function might * use this information to determine the closest pizzeria to place the * order. * </p> * </li> * <li> * <p> * Use session attributes to personalize prompts. For example, you pass in * user name as a session attribute (<code>"FirstName" : "Joe"</code>), you * might configure subsequent prompts to refer to this attribute, as * <code>$session.FirstName"</code>. At runtime, Amazon Lex substitutes a * real value when it generates a prompt, such as * "Hello Joe, what would you like to order?" * </p> * </li> * </ul> * <note> * <p> * Amazon Lex does not persist session attributes. * </p> * <p> * If the intent is configured without a Lambda function to process the * intent (that is, the client application to process the intent), Amazon * Lex simply returns the session attributes back to the client application. * </p> * <p> * If the intent is configured with a Lambda function to process 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 back to the client. * </p> * </note> */ private java.util.Map<String, String> sessionAttributes; /** * <p> * Text user entered (Amazon Lex interprets this text). * </p> * <p> * <b>Constraints:</b><br/> * <b>Length: </b>1 - 1024<br/> */ private String inputText; /** * <p> * Name of the Amazon Lex bot. * </p> * * @return <p> * Name of the Amazon Lex bot. * </p> */ public String getBotName() { return botName; } /** * <p> * Name of the Amazon Lex bot. * </p> * * @param botName <p> * Name of the Amazon Lex bot. * </p> */ public void setBotName(String botName) { this.botName = botName; } /** * <p> * Name of the Amazon Lex bot. * </p> * <p> * Returns a reference to this object so that method calls can be chained * together. * * @param botName <p> * Name of the Amazon Lex bot. * </p> * @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; } /** * <p> * Alias of the Amazon Lex bot. * </p> * * @return <p> * Alias of the Amazon Lex bot. * </p> */ public String getBotAlias() { return botAlias; } /** * <p> * Alias of the Amazon Lex bot. * </p> * * @param botAlias <p> * Alias of the Amazon Lex bot. * </p> */ public void setBotAlias(String botAlias) { this.botAlias = botAlias; } /** * <p> * Alias of the Amazon Lex bot. * </p> * <p> * Returns a reference to this object so that method calls can be chained * together. * * @param botAlias <p> * Alias of the Amazon Lex bot. * </p> * @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; } /** * <p> * User ID of your client application. Typically, each of your application * users should have a unique ID. Note the following considerations: * </p> * <ul> * <li> * <p> * If you want a user to start a conversation on one mobile device and * continue the conversation on another device, you might choose a * user-specific identifier, such as a 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 a * device-specific identifier, such as device ID, or some globally unique * identifier. * </p> * </li> * </ul> * <p> * <b>Constraints:</b><br/> * <b>Length: </b>2 - 50<br/> * <b>Pattern: </b>[0-9a-zA-Z._:-]+<br/> * * @return <p> * User ID of your client application. Typically, each of your * application users should have a unique ID. Note the following * considerations: * </p> * <ul> * <li> * <p> * If you want a user to start a conversation on one mobile device * and continue the conversation on another device, you might choose * a user-specific identifier, such as a 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 a * device-specific identifier, such as device ID, or some globally * unique identifier. * </p> * </li> * </ul> */ public String getUserId() { return userId; } /** * <p> * User ID of your client application. Typically, each of your application * users should have a unique ID. Note the following considerations: * </p> * <ul> * <li> * <p> * If you want a user to start a conversation on one mobile device and * continue the conversation on another device, you might choose a * user-specific identifier, such as a 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 a * device-specific identifier, such as device ID, or some globally unique * identifier. * </p> * </li> * </ul> * <p> * <b>Constraints:</b><br/> * <b>Length: </b>2 - 50<br/> * <b>Pattern: </b>[0-9a-zA-Z._:-]+<br/> * * @param userId <p> * User ID of your client application. Typically, each of your * application users should have a unique ID. Note the following * considerations: * </p> * <ul> * <li> * <p> * If you want a user to start a conversation on one mobile * device and continue the conversation on another device, you * might choose a user-specific identifier, such as a 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 a * device-specific identifier, such as device ID, or some * globally unique identifier. * </p> * </li> * </ul> */ public void setUserId(String userId) { this.userId = userId; } /** * <p> * User ID of your client application. Typically, each of your application * users should have a unique ID. Note the following considerations: * </p> * <ul> * <li> * <p> * If you want a user to start a conversation on one mobile device and * continue the conversation on another device, you might choose a * user-specific identifier, such as a 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 a * device-specific identifier, such as device ID, or some globally unique * identifier. * </p> * </li> * </ul> * <p> * Returns a reference to this object so that method calls can be chained * together. * <p> * <b>Constraints:</b><br/> * <b>Length: </b>2 - 50<br/> * <b>Pattern: </b>[0-9a-zA-Z._:-]+<br/> * * @param userId <p> * User ID of your client application. Typically, each of your * application users should have a unique ID. Note the following * considerations: * </p> * <ul> * <li> * <p> * If you want a user to start a conversation on one mobile * device and continue the conversation on another device, you * might choose a user-specific identifier, such as a 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 a * device-specific identifier, such as device ID, or some * globally unique identifier. * </p> * </li> * </ul> * @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; } /** * <p> * A session represents the dialog between a user and Amazon Lex. At * runtime, a client application can pass contextual information (session * attributes) in the request. For example, <code>"FirstName" : "Joe"</code> * . Amazon Lex passes these session attributes to the AWS Lambda functions * configured for the intent (see <code>dialogCodeHook</code> and * <code>fulfillmentActivity.codeHook</code> in <code>CreateIntent</code>). * </p> * <p> * In your Lambda function, you can use the session attributes for * customization. Some examples are: * </p> * <ul> * <li> * <p> * In a pizza ordering application, if you can pass user location as a * session attribute (for example, * <code>"Location" : "111 Maple street"</code>), your Lambda function might * use this information to determine the closest pizzeria to place the * order. * </p> * </li> * <li> * <p> * Use session attributes to personalize prompts. For example, you pass in * user name as a session attribute (<code>"FirstName" : "Joe"</code>), you * might configure subsequent prompts to refer to this attribute, as * <code>$session.FirstName"</code>. At runtime, Amazon Lex substitutes a * real value when it generates a prompt, such as * "Hello Joe, what would you like to order?" * </p> * </li> * </ul> * <note> * <p> * Amazon Lex does not persist session attributes. * </p> * <p> * If the intent is configured without a Lambda function to process the * intent (that is, the client application to process the intent), Amazon * Lex simply returns the session attributes back to the client application. * </p> * <p> * If the intent is configured with a Lambda function to process 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 back to the client. * </p> * </note> * * @return <p> * A session represents the dialog between a user and Amazon Lex. At * runtime, a client application can pass contextual information * (session attributes) in the request. For example, * <code>"FirstName" : "Joe"</code>. Amazon Lex passes these session * attributes to the AWS Lambda functions configured for the intent * (see <code>dialogCodeHook</code> and * <code>fulfillmentActivity.codeHook</code> in * <code>CreateIntent</code>). * </p> * <p> * In your Lambda function, you can use the session attributes for * customization. Some examples are: * </p> * <ul> * <li> * <p> * In a pizza ordering application, if you can pass user location as * a session attribute (for example, * <code>"Location" : "111 Maple street"</code>), your Lambda * function might use this information to determine the closest * pizzeria to place the order. * </p> * </li> * <li> * <p> * Use session attributes to personalize prompts. For example, you * pass in user name as a session attribute ( * <code>"FirstName" : "Joe"</code>), you might configure subsequent * prompts to refer to this attribute, as * <code>$session.FirstName"</code>. At runtime, Amazon Lex * substitutes a real value when it generates a prompt, such as * "Hello Joe, what would you like to order?" * </p> * </li> * </ul> * <note> * <p> * Amazon Lex does not persist session attributes. * </p> * <p> * If the intent is configured without a Lambda function to process * the intent (that is, the client application to process the * intent), Amazon Lex simply returns the session attributes back to * the client application. * </p> * <p> * If the intent is configured with a Lambda function to process 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 back to the * client. * </p> * </note> */ public java.util.Map<String, String> getSessionAttributes() { return sessionAttributes; } /** * <p> * A session represents the dialog between a user and Amazon Lex. At * runtime, a client application can pass contextual information (session * attributes) in the request. For example, <code>"FirstName" : "Joe"</code> * . Amazon Lex passes these session attributes to the AWS Lambda functions * configured for the intent (see <code>dialogCodeHook</code> and * <code>fulfillmentActivity.codeHook</code> in <code>CreateIntent</code>). * </p> * <p> * In your Lambda function, you can use the session attributes for * customization. Some examples are: * </p> * <ul> * <li> * <p> * In a pizza ordering application, if you can pass user location as a * session attribute (for example, * <code>"Location" : "111 Maple street"</code>), your Lambda function might * use this information to determine the closest pizzeria to place the * order. * </p> * </li> * <li> * <p> * Use session attributes to personalize prompts. For example, you pass in * user name as a session attribute (<code>"FirstName" : "Joe"</code>), you * might configure subsequent prompts to refer to this attribute, as * <code>$session.FirstName"</code>. At runtime, Amazon Lex substitutes a * real value when it generates a prompt, such as * "Hello Joe, what would you like to order?" * </p> * </li> * </ul> * <note> * <p> * Amazon Lex does not persist session attributes. * </p> * <p> * If the intent is configured without a Lambda function to process the * intent (that is, the client application to process the intent), Amazon * Lex simply returns the session attributes back to the client application. * </p> * <p> * If the intent is configured with a Lambda function to process 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 back to the client. * </p> * </note> * * @param sessionAttributes <p> * A session represents the dialog between a user and Amazon Lex. * At runtime, a client application can pass contextual * information (session attributes) in the request. For example, * <code>"FirstName" : "Joe"</code>. Amazon Lex passes these * session attributes to the AWS Lambda functions configured for * the intent (see <code>dialogCodeHook</code> and * <code>fulfillmentActivity.codeHook</code> in * <code>CreateIntent</code>). * </p> * <p> * In your Lambda function, you can use the session attributes * for customization. Some examples are: * </p> * <ul> * <li> * <p> * In a pizza ordering application, if you can pass user location * as a session attribute (for example, * <code>"Location" : "111 Maple street"</code>), your Lambda * function might use this information to determine the closest * pizzeria to place the order. * </p> * </li> * <li> * <p> * Use session attributes to personalize prompts. For example, * you pass in user name as a session attribute ( * <code>"FirstName" : "Joe"</code>), you might configure * subsequent prompts to refer to this attribute, as * <code>$session.FirstName"</code>. At runtime, Amazon Lex * substitutes a real value when it generates a prompt, such as * "Hello Joe, what would you like to order?" * </p> * </li> * </ul> * <note> * <p> * Amazon Lex does not persist session attributes. * </p> * <p> * If the intent is configured without a Lambda function to * process the intent (that is, the client application to process * the intent), Amazon Lex simply returns the session attributes * back to the client application. * </p> * <p> * If the intent is configured with a Lambda function to process * 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 back * to the client. * </p> * </note> */ public void setSessionAttributes(java.util.Map<String, String> sessionAttributes) { this.sessionAttributes = sessionAttributes; } /** * <p> * A session represents the dialog between a user and Amazon Lex. At * runtime, a client application can pass contextual information (session * attributes) in the request. For example, <code>"FirstName" : "Joe"</code> * . Amazon Lex passes these session attributes to the AWS Lambda functions * configured for the intent (see <code>dialogCodeHook</code> and * <code>fulfillmentActivity.codeHook</code> in <code>CreateIntent</code>). * </p> * <p> * In your Lambda function, you can use the session attributes for * customization. Some examples are: * </p> * <ul> * <li> * <p> * In a pizza ordering application, if you can pass user location as a * session attribute (for example, * <code>"Location" : "111 Maple street"</code>), your Lambda function might * use this information to determine the closest pizzeria to place the * order. * </p> * </li> * <li> * <p> * Use session attributes to personalize prompts. For example, you pass in * user name as a session attribute (<code>"FirstName" : "Joe"</code>), you * might configure subsequent prompts to refer to this attribute, as * <code>$session.FirstName"</code>. At runtime, Amazon Lex substitutes a * real value when it generates a prompt, such as * "Hello Joe, what would you like to order?" * </p> * </li> * </ul> * <note> * <p> * Amazon Lex does not persist session attributes. * </p> * <p> * If the intent is configured without a Lambda function to process the * intent (that is, the client application to process the intent), Amazon * Lex simply returns the session attributes back to the client application. * </p> * <p> * If the intent is configured with a Lambda function to process 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 back to the client. * </p> * </note> * <p> * Returns a reference to this object so that method calls can be chained * together. * * @param sessionAttributes <p> * A session represents the dialog between a user and Amazon Lex. * At runtime, a client application can pass contextual * information (session attributes) in the request. For example, * <code>"FirstName" : "Joe"</code>. Amazon Lex passes these * session attributes to the AWS Lambda functions configured for * the intent (see <code>dialogCodeHook</code> and * <code>fulfillmentActivity.codeHook</code> in * <code>CreateIntent</code>). * </p> * <p> * In your Lambda function, you can use the session attributes * for customization. Some examples are: * </p> * <ul> * <li> * <p> * In a pizza ordering application, if you can pass user location * as a session attribute (for example, * <code>"Location" : "111 Maple street"</code>), your Lambda * function might use this information to determine the closest * pizzeria to place the order. * </p> * </li> * <li> * <p> * Use session attributes to personalize prompts. For example, * you pass in user name as a session attribute ( * <code>"FirstName" : "Joe"</code>), you might configure * subsequent prompts to refer to this attribute, as * <code>$session.FirstName"</code>. At runtime, Amazon Lex * substitutes a real value when it generates a prompt, such as * "Hello Joe, what would you like to order?" * </p> * </li> * </ul> * <note> * <p> * Amazon Lex does not persist session attributes. * </p> * <p> * If the intent is configured without a Lambda function to * process the intent (that is, the client application to process * the intent), Amazon Lex simply returns the session attributes * back to the client application. * </p> * <p> * If the intent is configured with a Lambda function to process * 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 back * to the client. * </p> * </note> * @return A reference to this updated object so that method calls can be * chained together. */ public PostTextRequest withSessionAttributes(java.util.Map<String, String> sessionAttributes) { this.sessionAttributes = sessionAttributes; return this; } /** * <p> * A session represents the dialog between a user and Amazon Lex. At * runtime, a client application can pass contextual information (session * attributes) in the request. For example, <code>"FirstName" : "Joe"</code> * . Amazon Lex passes these session attributes to the AWS Lambda functions * configured for the intent (see <code>dialogCodeHook</code> and * <code>fulfillmentActivity.codeHook</code> in <code>CreateIntent</code>). * </p> * <p> * In your Lambda function, you can use the session attributes for * customization. Some examples are: * </p> * <ul> * <li> * <p> * In a pizza ordering application, if you can pass user location as a * session attribute (for example, * <code>"Location" : "111 Maple street"</code>), your Lambda function might * use this information to determine the closest pizzeria to place the * order. * </p> * </li> * <li> * <p> * Use session attributes to personalize prompts. For example, you pass in * user name as a session attribute (<code>"FirstName" : "Joe"</code>), you * might configure subsequent prompts to refer to this attribute, as * <code>$session.FirstName"</code>. At runtime, Amazon Lex substitutes a * real value when it generates a prompt, such as * "Hello Joe, what would you like to order?" * </p> * </li> * </ul> * <note> * <p> * Amazon Lex does not persist session attributes. * </p> * <p> * If the intent is configured without a Lambda function to process the * intent (that is, the client application to process the intent), Amazon * Lex simply returns the session attributes back to the client application. * </p> * <p> * If the intent is configured with a Lambda function to process 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 back to the client. * </p> * </note> * <p> * 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<String, String>(); } 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. * <p> * Returns a reference to this object so that method calls can be chained * together. */ public PostTextRequest clearsessionAttributesEntries() { this.sessionAttributes = null; return this; } /** * <p> * Text user entered (Amazon Lex interprets this text). * </p> * <p> * <b>Constraints:</b><br/> * <b>Length: </b>1 - 1024<br/> * * @return <p> * Text user entered (Amazon Lex interprets this text). * </p> */ public String getInputText() { return inputText; } /** * <p> * Text user entered (Amazon Lex interprets this text). * </p> * <p> * <b>Constraints:</b><br/> * <b>Length: </b>1 - 1024<br/> * * @param inputText <p> * Text user entered (Amazon Lex interprets this text). * </p> */ public void setInputText(String inputText) { this.inputText = inputText; } /** * <p> * Text user entered (Amazon Lex interprets this text). * </p> * <p> * Returns a reference to this object so that method calls can be chained * together. * <p> * <b>Constraints:</b><br/> * <b>Length: </b>1 - 1024<br/> * * @param inputText <p> * Text user entered (Amazon Lex interprets this text). * </p> * @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; } /** * 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 (getInputText() != null) sb.append("inputText: " + getInputText()); 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 + ((getInputText() == null) ? 0 : getInputText().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.getInputText() == null ^ this.getInputText() == null) return false; if (other.getInputText() != null && other.getInputText().equals(this.getInputText()) == false) return false; return true; } }