ElicitationResult.java

/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *--------------------------------------------------------------------------------------------*/

package com.github.copilot.sdk.json;

import java.util.Map;

/**
 * Result returned from an elicitation dialog.
 *
 * @since 1.0.0
 */
public class ElicitationResult {

    private ElicitationResultAction action;
    private Map<String, Object> content;

    /**
     * Gets the user action taken on the elicitation dialog.
     * <p>
     * {@link ElicitationResultAction#ACCEPT} means the user submitted the form,
     * {@link ElicitationResultAction#DECLINE} means the user rejected the request,
     * and {@link ElicitationResultAction#CANCEL} means the user dismissed the
     * dialog.
     *
     * @return the user action
     */
    public ElicitationResultAction getAction() {
        return action;
    }

    /**
     * Sets the user action taken on the elicitation dialog.
     *
     * @param action
     *            the user action
     * @return this instance for method chaining
     */
    public ElicitationResult setAction(ElicitationResultAction action) {
        this.action = action;
        return this;
    }

    /**
     * Gets the form values submitted by the user.
     * <p>
     * Only present when {@link #getAction()} is
     * {@link ElicitationResultAction#ACCEPT}.
     *
     * @return the submitted form values, or {@code null} if the user did not accept
     */
    public Map<String, Object> getContent() {
        return content;
    }

    /**
     * Sets the form values submitted by the user.
     *
     * @param content
     *            the submitted form values
     * @return this instance for method chaining
     */
    public ElicitationResult setContent(Map<String, Object> content) {
        this.content = content;
        return this;
    }
}