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

* Describes the next action that the bot should take in its interaction with * the user and provides information about the context in which the action takes * place. Use the DialogAction data type to set the interaction to * a specific state, or to return the interaction to a previous state. *

*/ public class DialogAction implements Serializable { /** *

* The next action that the bot should take in its interaction with the * user. The possible values are: *

* *

* Constraints:
* Allowed Values: ElicitIntent, ConfirmIntent, ElicitSlot, Close, * Delegate */ private String type; /** *

* The name of the intent. *

*/ private String intentName; /** *

* Map of the slots that have been gathered and their values. *

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

* The name of the slot that should be elicited from the user. *

*/ private String slotToElicit; /** *

* The fulfillment state of the intent. The possible values are: *

* *

* Constraints:
* Allowed Values: Fulfilled, Failed, ReadyForFulfillment */ private String fulfillmentState; /** *

* The message that should be shown to the user. If you don't specify a * message, Amazon Lex will use the message configured for the intent. *

*

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

*

* Constraints:
* Allowed Values: PlainText, CustomPayload, SSML, Composite */ private String messageFormat; /** *

* The next action that the bot should take in its interaction with the * user. The possible values are: *

* *

* Constraints:
* Allowed Values: ElicitIntent, ConfirmIntent, ElicitSlot, Close, * Delegate * * @return

* The next action that the bot should take in its interaction with * the user. The possible values are: *

* * @see DialogActionType */ public String getType() { return type; } /** *

* The next action that the bot should take in its interaction with the * user. The possible values are: *

* *

* Constraints:
* Allowed Values: ElicitIntent, ConfirmIntent, ElicitSlot, Close, * Delegate * * @param type

* The next action that the bot should take in its interaction * with the user. The possible values are: *

* * @see DialogActionType */ public void setType(String type) { this.type = type; } /** *

* The next action that the bot should take in its interaction with the * user. The possible values are: *

* *

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

* Constraints:
* Allowed Values: ElicitIntent, ConfirmIntent, ElicitSlot, Close, * Delegate * * @param type

* The next action that the bot should take in its interaction * with the user. The possible values are: *

* * @return A reference to this updated object so that method calls can be * chained together. * @see DialogActionType */ public DialogAction withType(String type) { this.type = type; return this; } /** *

* The next action that the bot should take in its interaction with the * user. The possible values are: *

* *

* Constraints:
* Allowed Values: ElicitIntent, ConfirmIntent, ElicitSlot, Close, * Delegate * * @param type

* The next action that the bot should take in its interaction * with the user. The possible values are: *

* * @see DialogActionType */ public void setType(DialogActionType type) { this.type = type.toString(); } /** *

* The next action that the bot should take in its interaction with the * user. The possible values are: *

* *

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

* Constraints:
* Allowed Values: ElicitIntent, ConfirmIntent, ElicitSlot, Close, * Delegate * * @param type

* The next action that the bot should take in its interaction * with the user. The possible values are: *

* * @return A reference to this updated object so that method calls can be * chained together. * @see DialogActionType */ public DialogAction withType(DialogActionType type) { this.type = type.toString(); return this; } /** *

* The name of the intent. *

* * @return

* The name of the intent. *

*/ public String getIntentName() { return intentName; } /** *

* The name of the intent. *

* * @param intentName

* The name of the intent. *

*/ public void setIntentName(String intentName) { this.intentName = intentName; } /** *

* The name of the intent. *

*

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

* The name of the intent. *

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

* Map of the slots that have been gathered and their values. *

* * @return

* Map of the slots that have been gathered and their values. *

*/ public java.util.Map getSlots() { return slots; } /** *

* Map of the slots that have been gathered and their values. *

* * @param slots

* Map of the slots that have been gathered and their values. *

*/ public void setSlots(java.util.Map slots) { this.slots = slots; } /** *

* Map of the slots that have been gathered and their values. *

*

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

* Map of the slots that have been gathered and their values. *

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

* Map of the slots that have been gathered and their values. *

*

* The method adds a new key-value pair into slots 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 slots. * @param value The corresponding value of the entry to be added into slots. * @return A reference to this updated object so that method calls can be * chained together. */ public DialogAction addslotsEntry(String key, String value) { if (null == this.slots) { this.slots = new java.util.HashMap(); } if (this.slots.containsKey(key)) throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided."); this.slots.put(key, value); return this; } /** * Removes all the entries added into slots. *

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

* The name of the slot that should be elicited from the user. *

* * @return

* The name of the slot that should be elicited from the user. *

*/ public String getSlotToElicit() { return slotToElicit; } /** *

* The name of the slot that should be elicited from the user. *

* * @param slotToElicit

* The name of the slot that should be elicited from the user. *

*/ public void setSlotToElicit(String slotToElicit) { this.slotToElicit = slotToElicit; } /** *

* The name of the slot that should be elicited from the user. *

*

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

* The name of the slot that should be elicited from the user. *

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

* The fulfillment state of the intent. The possible values are: *

*
    *
  • *

    * Failed - The Lambda function associated with the intent * failed to fulfill the intent. *

    *
  • *
  • *

    * Fulfilled - The intent has fulfilled by the Lambda function * associated with the intent. *

    *
  • *
  • *

    * ReadyForFulfillment - All of the information necessary for * the intent is present and the intent ready to be fulfilled by the client * application. *

    *
  • *
*

* Constraints:
* Allowed Values: Fulfilled, Failed, ReadyForFulfillment * * @return

* The fulfillment state of the intent. The possible values are: *

*
    *
  • *

    * Failed - The Lambda function associated with the * intent failed to fulfill the intent. *

    *
  • *
  • *

    * Fulfilled - The intent has fulfilled by the Lambda * function associated with the intent. *

    *
  • *
  • *

    * ReadyForFulfillment - All of the information * necessary for the intent is present and the intent ready to be * fulfilled by the client application. *

    *
  • *
* @see FulfillmentState */ public String getFulfillmentState() { return fulfillmentState; } /** *

* The fulfillment state of the intent. The possible values are: *

*
    *
  • *

    * Failed - The Lambda function associated with the intent * failed to fulfill the intent. *

    *
  • *
  • *

    * Fulfilled - The intent has fulfilled by the Lambda function * associated with the intent. *

    *
  • *
  • *

    * ReadyForFulfillment - All of the information necessary for * the intent is present and the intent ready to be fulfilled by the client * application. *

    *
  • *
*

* Constraints:
* Allowed Values: Fulfilled, Failed, ReadyForFulfillment * * @param fulfillmentState

* The fulfillment state of the intent. The possible values are: *

*
    *
  • *

    * Failed - The Lambda function associated with the * intent failed to fulfill the intent. *

    *
  • *
  • *

    * Fulfilled - The intent has fulfilled by the * Lambda function associated with the intent. *

    *
  • *
  • *

    * ReadyForFulfillment - All of the information * necessary for the intent is present and the intent ready to be * fulfilled by the client application. *

    *
  • *
* @see FulfillmentState */ public void setFulfillmentState(String fulfillmentState) { this.fulfillmentState = fulfillmentState; } /** *

* The fulfillment state of the intent. The possible values are: *

*
    *
  • *

    * Failed - The Lambda function associated with the intent * failed to fulfill the intent. *

    *
  • *
  • *

    * Fulfilled - The intent has fulfilled by the Lambda function * associated with the intent. *

    *
  • *
  • *

    * ReadyForFulfillment - All of the information necessary for * the intent is present and the intent ready to be fulfilled by the client * application. *

    *
  • *
*

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

* Constraints:
* Allowed Values: Fulfilled, Failed, ReadyForFulfillment * * @param fulfillmentState

* The fulfillment state of the intent. The possible values are: *

*
    *
  • *

    * Failed - The Lambda function associated with the * intent failed to fulfill the intent. *

    *
  • *
  • *

    * Fulfilled - The intent has fulfilled by the * Lambda function associated with the intent. *

    *
  • *
  • *

    * ReadyForFulfillment - All of the information * necessary for the intent is present and the intent ready to be * fulfilled by the client application. *

    *
  • *
* @return A reference to this updated object so that method calls can be * chained together. * @see FulfillmentState */ public DialogAction withFulfillmentState(String fulfillmentState) { this.fulfillmentState = fulfillmentState; return this; } /** *

* The fulfillment state of the intent. The possible values are: *

*
    *
  • *

    * Failed - The Lambda function associated with the intent * failed to fulfill the intent. *

    *
  • *
  • *

    * Fulfilled - The intent has fulfilled by the Lambda function * associated with the intent. *

    *
  • *
  • *

    * ReadyForFulfillment - All of the information necessary for * the intent is present and the intent ready to be fulfilled by the client * application. *

    *
  • *
*

* Constraints:
* Allowed Values: Fulfilled, Failed, ReadyForFulfillment * * @param fulfillmentState

* The fulfillment state of the intent. The possible values are: *

*
    *
  • *

    * Failed - The Lambda function associated with the * intent failed to fulfill the intent. *

    *
  • *
  • *

    * Fulfilled - The intent has fulfilled by the * Lambda function associated with the intent. *

    *
  • *
  • *

    * ReadyForFulfillment - All of the information * necessary for the intent is present and the intent ready to be * fulfilled by the client application. *

    *
  • *
* @see FulfillmentState */ public void setFulfillmentState(FulfillmentState fulfillmentState) { this.fulfillmentState = fulfillmentState.toString(); } /** *

* The fulfillment state of the intent. The possible values are: *

*
    *
  • *

    * Failed - The Lambda function associated with the intent * failed to fulfill the intent. *

    *
  • *
  • *

    * Fulfilled - The intent has fulfilled by the Lambda function * associated with the intent. *

    *
  • *
  • *

    * ReadyForFulfillment - All of the information necessary for * the intent is present and the intent ready to be fulfilled by the client * application. *

    *
  • *
*

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

* Constraints:
* Allowed Values: Fulfilled, Failed, ReadyForFulfillment * * @param fulfillmentState

* The fulfillment state of the intent. The possible values are: *

*
    *
  • *

    * Failed - The Lambda function associated with the * intent failed to fulfill the intent. *

    *
  • *
  • *

    * Fulfilled - The intent has fulfilled by the * Lambda function associated with the intent. *

    *
  • *
  • *

    * ReadyForFulfillment - All of the information * necessary for the intent is present and the intent ready to be * fulfilled by the client application. *

    *
  • *
* @return A reference to this updated object so that method calls can be * chained together. * @see FulfillmentState */ public DialogAction withFulfillmentState(FulfillmentState fulfillmentState) { this.fulfillmentState = fulfillmentState.toString(); return this; } /** *

* The message that should be shown to the user. If you don't specify a * message, Amazon Lex will use the message configured for the intent. *

*

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

* The message that should be shown to the user. If you don't * specify a message, Amazon Lex will use the message configured for * the intent. *

*/ public String getMessage() { return message; } /** *

* The message that should be shown to the user. If you don't specify a * message, Amazon Lex will use the message configured for the intent. *

*

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

* The message that should be shown to the user. If you don't * specify a message, Amazon Lex will use the message configured * for the intent. *

*/ public void setMessage(String message) { this.message = message; } /** *

* The message that should be shown to the user. If you don't specify a * message, Amazon Lex will use the message configured for the intent. *

*

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

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

* The message that should be shown to the user. If you don't * specify a message, Amazon Lex will use the message configured * for the intent. *

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

    * PlainText - The message contains plain UTF-8 text. *

    *
  • *
  • *

    * CustomPayload - The message is a custom format for the * client. *

    *
  • *
  • *

    * SSML - The message contains text formatted for voice output. *

    *
  • *
  • *

    * Composite - The message contains an escaped JSON object * containing one or more messages. For more information, see Message Groups. *

    *
  • *
*

* Constraints:
* Allowed Values: PlainText, CustomPayload, SSML, Composite * * @return

    *
  • *

    * PlainText - The message contains plain UTF-8 text. *

    *
  • *

    * CustomPayload - The message is a custom format for * the client. *

    *
  • *

    * SSML - The message contains text formatted for voice * output. *

    *
  • *

    * Composite - The message contains an escaped JSON * object containing one or more messages. For more information, see * Message Groups. *

    *
  • *
* @see MessageFormatType */ public String getMessageFormat() { return messageFormat; } /** *
    *
  • *

    * PlainText - The message contains plain UTF-8 text. *

    *
  • *
  • *

    * CustomPayload - The message is a custom format for the * client. *

    *
  • *
  • *

    * SSML - The message contains text formatted for voice output. *

    *
  • *
  • *

    * Composite - The message contains an escaped JSON object * containing one or more messages. For more information, see Message Groups. *

    *
  • *
*

* Constraints:
* Allowed Values: PlainText, CustomPayload, SSML, Composite * * @param messageFormat

    *
  • *

    * PlainText - The message contains plain UTF-8 * text. *

    *
  • *

    * CustomPayload - The message is a custom format * for the client. *

    *
  • *

    * SSML - The message contains text formatted for * voice output. *

    *
  • *

    * Composite - The message contains an escaped JSON * object containing one or more messages. For more information, * see Message Groups. *

    *
  • *
* @see MessageFormatType */ public void setMessageFormat(String messageFormat) { this.messageFormat = messageFormat; } /** *
    *
  • *

    * PlainText - The message contains plain UTF-8 text. *

    *
  • *
  • *

    * CustomPayload - The message is a custom format for the * client. *

    *
  • *
  • *

    * SSML - The message contains text formatted for voice output. *

    *
  • *
  • *

    * Composite - The message contains an escaped JSON object * containing one or more messages. For more information, see Message Groups. *

    *
  • *
*

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

* Constraints:
* Allowed Values: PlainText, CustomPayload, SSML, Composite * * @param messageFormat

    *
  • *

    * PlainText - The message contains plain UTF-8 * text. *

    *
  • *

    * CustomPayload - The message is a custom format * for the client. *

    *
  • *

    * SSML - The message contains text formatted for * voice output. *

    *
  • *

    * Composite - The message contains an escaped JSON * object containing one or more messages. For more information, * see Message Groups. *

    *
  • *
* @return A reference to this updated object so that method calls can be * chained together. * @see MessageFormatType */ public DialogAction withMessageFormat(String messageFormat) { this.messageFormat = messageFormat; return this; } /** *
    *
  • *

    * PlainText - The message contains plain UTF-8 text. *

    *
  • *
  • *

    * CustomPayload - The message is a custom format for the * client. *

    *
  • *
  • *

    * SSML - The message contains text formatted for voice output. *

    *
  • *
  • *

    * Composite - The message contains an escaped JSON object * containing one or more messages. For more information, see Message Groups. *

    *
  • *
*

* Constraints:
* Allowed Values: PlainText, CustomPayload, SSML, Composite * * @param messageFormat

    *
  • *

    * PlainText - The message contains plain UTF-8 * text. *

    *
  • *

    * CustomPayload - The message is a custom format * for the client. *

    *
  • *

    * SSML - The message contains text formatted for * voice output. *

    *
  • *

    * Composite - The message contains an escaped JSON * object containing one or more messages. For more information, * see Message Groups. *

    *
  • *
* @see MessageFormatType */ public void setMessageFormat(MessageFormatType messageFormat) { this.messageFormat = messageFormat.toString(); } /** *
    *
  • *

    * PlainText - The message contains plain UTF-8 text. *

    *
  • *
  • *

    * CustomPayload - The message is a custom format for the * client. *

    *
  • *
  • *

    * SSML - The message contains text formatted for voice output. *

    *
  • *
  • *

    * Composite - The message contains an escaped JSON object * containing one or more messages. For more information, see Message Groups. *

    *
  • *
*

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

* Constraints:
* Allowed Values: PlainText, CustomPayload, SSML, Composite * * @param messageFormat

    *
  • *

    * PlainText - The message contains plain UTF-8 * text. *

    *
  • *

    * CustomPayload - The message is a custom format * for the client. *

    *
  • *

    * SSML - The message contains text formatted for * voice output. *

    *
  • *

    * Composite - The message contains an escaped JSON * object containing one or more messages. For more information, * see Message Groups. *

    *
  • *
* @return A reference to this updated object so that method calls can be * chained together. * @see MessageFormatType */ public DialogAction withMessageFormat(MessageFormatType messageFormat) { this.messageFormat = messageFormat.toString(); 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 (getType() != null) sb.append("type: " + getType() + ","); if (getIntentName() != null) sb.append("intentName: " + getIntentName() + ","); if (getSlots() != null) sb.append("slots: " + getSlots() + ","); if (getSlotToElicit() != null) sb.append("slotToElicit: " + getSlotToElicit() + ","); if (getFulfillmentState() != null) sb.append("fulfillmentState: " + getFulfillmentState() + ","); if (getMessage() != null) sb.append("message: " + getMessage() + ","); if (getMessageFormat() != null) sb.append("messageFormat: " + getMessageFormat()); sb.append("}"); return sb.toString(); } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getType() == null) ? 0 : getType().hashCode()); hashCode = prime * hashCode + ((getIntentName() == null) ? 0 : getIntentName().hashCode()); hashCode = prime * hashCode + ((getSlots() == null) ? 0 : getSlots().hashCode()); hashCode = prime * hashCode + ((getSlotToElicit() == null) ? 0 : getSlotToElicit().hashCode()); hashCode = prime * hashCode + ((getFulfillmentState() == null) ? 0 : getFulfillmentState().hashCode()); hashCode = prime * hashCode + ((getMessage() == null) ? 0 : getMessage().hashCode()); hashCode = prime * hashCode + ((getMessageFormat() == null) ? 0 : getMessageFormat().hashCode()); return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof DialogAction == false) return false; DialogAction other = (DialogAction) obj; if (other.getType() == null ^ this.getType() == null) return false; if (other.getType() != null && other.getType().equals(this.getType()) == false) return false; if (other.getIntentName() == null ^ this.getIntentName() == null) return false; if (other.getIntentName() != null && other.getIntentName().equals(this.getIntentName()) == false) return false; if (other.getSlots() == null ^ this.getSlots() == null) return false; if (other.getSlots() != null && other.getSlots().equals(this.getSlots()) == false) return false; if (other.getSlotToElicit() == null ^ this.getSlotToElicit() == null) return false; if (other.getSlotToElicit() != null && other.getSlotToElicit().equals(this.getSlotToElicit()) == false) return false; if (other.getFulfillmentState() == null ^ this.getFulfillmentState() == null) return false; if (other.getFulfillmentState() != null && other.getFulfillmentState().equals(this.getFulfillmentState()) == false) return false; if (other.getMessage() == null ^ this.getMessage() == null) return false; if (other.getMessage() != null && other.getMessage().equals(this.getMessage()) == false) return false; if (other.getMessageFormat() == null ^ this.getMessageFormat() == null) return false; if (other.getMessageFormat() != null && other.getMessageFormat().equals(this.getMessageFormat()) == false) return false; return true; } }