/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * 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.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.dialogflow.v2beta1.model;

/**
 * The response message for Participants.AnalyzeContent.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Dialogflow API. For a detailed explanation see:
 * <a href="https://developers.google.com/api-client-library/java/google-http-java-client/json">https://developers.google.com/api-client-library/java/google-http-java-client/json</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class GoogleCloudDialogflowV2beta1AnalyzeContentResponse extends com.google.api.client.json.GenericJson {

  /**
   * Optional. Only set if a Dialogflow automated agent has responded. Note that:
   * AutomatedAgentReply.detect_intent_response.output_audio and
   * AutomatedAgentReply.detect_intent_response.output_audio_config are always empty, use
   * reply_audio instead.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleCloudDialogflowV2beta1AutomatedAgentReply automatedAgentReply;

  /**
   * Indicates the parameters of DTMF.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleCloudDialogflowV2beta1DtmfParameters dtmfParameters;

  /**
   * The suggestions for end user. The order is the same as
   * HumanAgentAssistantConfig.SuggestionConfig.feature_configs of
   * HumanAgentAssistantConfig.end_user_suggestion_config.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<GoogleCloudDialogflowV2beta1SuggestionResult> endUserSuggestionResults;

  /**
   * The suggestions for most recent human agent. The order is the same as
   * HumanAgentAssistantConfig.SuggestionConfig.feature_configs of
   * HumanAgentAssistantConfig.human_agent_suggestion_config.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<GoogleCloudDialogflowV2beta1SuggestionResult> humanAgentSuggestionResults;

  /**
   * Output only. Message analyzed by CCAI.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleCloudDialogflowV2beta1Message message;

  /**
   * Optional. The audio data bytes encoded as specified in the request. This field is set if: -
   * `reply_audio_config` was specified in the request, or - The automated agent responded with
   * audio to play to the user. In such case, `reply_audio.config` contains settings used to
   * synthesize the speech. In some scenarios, multiple output audio fields may be present in the
   * response structure. In these cases, only the top-most-level audio output has content.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleCloudDialogflowV2beta1OutputAudio replyAudio;

  /**
   * Output only. The output text content. This field is set if the automated agent responded with
   * text to show to the user.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String replyText;

  /**
   * Optional. Only set if a Dialogflow automated agent has responded. Note that:
   * AutomatedAgentReply.detect_intent_response.output_audio and
   * AutomatedAgentReply.detect_intent_response.output_audio_config are always empty, use
   * reply_audio instead.
   * @return value or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1AutomatedAgentReply getAutomatedAgentReply() {
    return automatedAgentReply;
  }

  /**
   * Optional. Only set if a Dialogflow automated agent has responded. Note that:
   * AutomatedAgentReply.detect_intent_response.output_audio and
   * AutomatedAgentReply.detect_intent_response.output_audio_config are always empty, use
   * reply_audio instead.
   * @param automatedAgentReply automatedAgentReply or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1AnalyzeContentResponse setAutomatedAgentReply(GoogleCloudDialogflowV2beta1AutomatedAgentReply automatedAgentReply) {
    this.automatedAgentReply = automatedAgentReply;
    return this;
  }

  /**
   * Indicates the parameters of DTMF.
   * @return value or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1DtmfParameters getDtmfParameters() {
    return dtmfParameters;
  }

  /**
   * Indicates the parameters of DTMF.
   * @param dtmfParameters dtmfParameters or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1AnalyzeContentResponse setDtmfParameters(GoogleCloudDialogflowV2beta1DtmfParameters dtmfParameters) {
    this.dtmfParameters = dtmfParameters;
    return this;
  }

  /**
   * The suggestions for end user. The order is the same as
   * HumanAgentAssistantConfig.SuggestionConfig.feature_configs of
   * HumanAgentAssistantConfig.end_user_suggestion_config.
   * @return value or {@code null} for none
   */
  public java.util.List<GoogleCloudDialogflowV2beta1SuggestionResult> getEndUserSuggestionResults() {
    return endUserSuggestionResults;
  }

  /**
   * The suggestions for end user. The order is the same as
   * HumanAgentAssistantConfig.SuggestionConfig.feature_configs of
   * HumanAgentAssistantConfig.end_user_suggestion_config.
   * @param endUserSuggestionResults endUserSuggestionResults or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1AnalyzeContentResponse setEndUserSuggestionResults(java.util.List<GoogleCloudDialogflowV2beta1SuggestionResult> endUserSuggestionResults) {
    this.endUserSuggestionResults = endUserSuggestionResults;
    return this;
  }

  /**
   * The suggestions for most recent human agent. The order is the same as
   * HumanAgentAssistantConfig.SuggestionConfig.feature_configs of
   * HumanAgentAssistantConfig.human_agent_suggestion_config.
   * @return value or {@code null} for none
   */
  public java.util.List<GoogleCloudDialogflowV2beta1SuggestionResult> getHumanAgentSuggestionResults() {
    return humanAgentSuggestionResults;
  }

  /**
   * The suggestions for most recent human agent. The order is the same as
   * HumanAgentAssistantConfig.SuggestionConfig.feature_configs of
   * HumanAgentAssistantConfig.human_agent_suggestion_config.
   * @param humanAgentSuggestionResults humanAgentSuggestionResults or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1AnalyzeContentResponse setHumanAgentSuggestionResults(java.util.List<GoogleCloudDialogflowV2beta1SuggestionResult> humanAgentSuggestionResults) {
    this.humanAgentSuggestionResults = humanAgentSuggestionResults;
    return this;
  }

  /**
   * Output only. Message analyzed by CCAI.
   * @return value or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1Message getMessage() {
    return message;
  }

  /**
   * Output only. Message analyzed by CCAI.
   * @param message message or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1AnalyzeContentResponse setMessage(GoogleCloudDialogflowV2beta1Message message) {
    this.message = message;
    return this;
  }

  /**
   * Optional. The audio data bytes encoded as specified in the request. This field is set if: -
   * `reply_audio_config` was specified in the request, or - The automated agent responded with
   * audio to play to the user. In such case, `reply_audio.config` contains settings used to
   * synthesize the speech. In some scenarios, multiple output audio fields may be present in the
   * response structure. In these cases, only the top-most-level audio output has content.
   * @return value or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1OutputAudio getReplyAudio() {
    return replyAudio;
  }

  /**
   * Optional. The audio data bytes encoded as specified in the request. This field is set if: -
   * `reply_audio_config` was specified in the request, or - The automated agent responded with
   * audio to play to the user. In such case, `reply_audio.config` contains settings used to
   * synthesize the speech. In some scenarios, multiple output audio fields may be present in the
   * response structure. In these cases, only the top-most-level audio output has content.
   * @param replyAudio replyAudio or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1AnalyzeContentResponse setReplyAudio(GoogleCloudDialogflowV2beta1OutputAudio replyAudio) {
    this.replyAudio = replyAudio;
    return this;
  }

  /**
   * Output only. The output text content. This field is set if the automated agent responded with
   * text to show to the user.
   * @return value or {@code null} for none
   */
  public java.lang.String getReplyText() {
    return replyText;
  }

  /**
   * Output only. The output text content. This field is set if the automated agent responded with
   * text to show to the user.
   * @param replyText replyText or {@code null} for none
   */
  public GoogleCloudDialogflowV2beta1AnalyzeContentResponse setReplyText(java.lang.String replyText) {
    this.replyText = replyText;
    return this;
  }

  @Override
  public GoogleCloudDialogflowV2beta1AnalyzeContentResponse set(String fieldName, Object value) {
    return (GoogleCloudDialogflowV2beta1AnalyzeContentResponse) super.set(fieldName, value);
  }

  @Override
  public GoogleCloudDialogflowV2beta1AnalyzeContentResponse clone() {
    return (GoogleCloudDialogflowV2beta1AnalyzeContentResponse) super.clone();
  }

}
