# Copyright 2020 Google LLC
#
# 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.

require 'date'
require 'google/apis/core/base_service'
require 'google/apis/core/json_representation'
require 'google/apis/core/hashable'
require 'google/apis/errors'

module Google
  module Apis
    module DialogflowV2beta1
      
      # Hierarchical advanced settings for agent/flow/page/fulfillment/parameter.
      # Settings exposed at lower level overrides the settings exposed at higher level.
      # Overriding occurs at the sub-setting level. For example, the
      # playback_interruption_settings at fulfillment level only overrides the
      # playback_interruption_settings at the agent level, leaving other settings at
      # the agent level unchanged. DTMF settings does not override each other. DTMF
      # settings set at different levels define DTMF detections running in parallel.
      # Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
      class GoogleCloudDialogflowCxV3AdvancedSettings
        include Google::Apis::Core::Hashable
      
        # Google Cloud Storage location for a Dialogflow operation that writes or
        # exports objects (e.g. exported agent or transcripts) outside of Dialogflow.
        # Corresponds to the JSON property `audioExportGcsDestination`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3GcsDestination]
        attr_accessor :audio_export_gcs_destination
      
        # Define behaviors for DTMF (dual tone multi frequency).
        # Corresponds to the JSON property `dtmfSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3AdvancedSettingsDtmfSettings]
        attr_accessor :dtmf_settings
      
        # Define behaviors on logging.
        # Corresponds to the JSON property `loggingSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3AdvancedSettingsLoggingSettings]
        attr_accessor :logging_settings
      
        # Define behaviors of speech to text detection.
        # Corresponds to the JSON property `speechSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3AdvancedSettingsSpeechSettings]
        attr_accessor :speech_settings
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_export_gcs_destination = args[:audio_export_gcs_destination] if args.key?(:audio_export_gcs_destination)
          @dtmf_settings = args[:dtmf_settings] if args.key?(:dtmf_settings)
          @logging_settings = args[:logging_settings] if args.key?(:logging_settings)
          @speech_settings = args[:speech_settings] if args.key?(:speech_settings)
        end
      end
      
      # Define behaviors for DTMF (dual tone multi frequency).
      class GoogleCloudDialogflowCxV3AdvancedSettingsDtmfSettings
        include Google::Apis::Core::Hashable
      
        # If true, incoming audio is processed for DTMF (dual tone multi frequency)
        # events. For example, if the caller presses a button on their telephone keypad
        # and DTMF processing is enabled, Dialogflow will detect the event (e.g. a "3"
        # was pressed) in the incoming audio and pass the event to the bot to drive
        # business logic (e.g. when 3 is pressed, return the account balance).
        # Corresponds to the JSON property `enabled`
        # @return [Boolean]
        attr_accessor :enabled
        alias_method :enabled?, :enabled
      
        # Endpoint timeout setting for matching dtmf input to regex.
        # Corresponds to the JSON property `endpointingTimeoutDuration`
        # @return [String]
        attr_accessor :endpointing_timeout_duration
      
        # The digit that terminates a DTMF digit sequence.
        # Corresponds to the JSON property `finishDigit`
        # @return [String]
        attr_accessor :finish_digit
      
        # Interdigit timeout setting for matching dtmf input to regex.
        # Corresponds to the JSON property `interdigitTimeoutDuration`
        # @return [String]
        attr_accessor :interdigit_timeout_duration
      
        # Max length of DTMF digits.
        # Corresponds to the JSON property `maxDigits`
        # @return [Fixnum]
        attr_accessor :max_digits
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enabled = args[:enabled] if args.key?(:enabled)
          @endpointing_timeout_duration = args[:endpointing_timeout_duration] if args.key?(:endpointing_timeout_duration)
          @finish_digit = args[:finish_digit] if args.key?(:finish_digit)
          @interdigit_timeout_duration = args[:interdigit_timeout_duration] if args.key?(:interdigit_timeout_duration)
          @max_digits = args[:max_digits] if args.key?(:max_digits)
        end
      end
      
      # Define behaviors on logging.
      class GoogleCloudDialogflowCxV3AdvancedSettingsLoggingSettings
        include Google::Apis::Core::Hashable
      
        # Enables consent-based end-user input redaction, if true, a pre-defined session
        # parameter `$session.params.conversation-redaction` will be used to determine
        # if the utterance should be redacted.
        # Corresponds to the JSON property `enableConsentBasedRedaction`
        # @return [Boolean]
        attr_accessor :enable_consent_based_redaction
        alias_method :enable_consent_based_redaction?, :enable_consent_based_redaction
      
        # Enables DF Interaction logging.
        # Corresponds to the JSON property `enableInteractionLogging`
        # @return [Boolean]
        attr_accessor :enable_interaction_logging
        alias_method :enable_interaction_logging?, :enable_interaction_logging
      
        # Enables Google Cloud Logging.
        # Corresponds to the JSON property `enableStackdriverLogging`
        # @return [Boolean]
        attr_accessor :enable_stackdriver_logging
        alias_method :enable_stackdriver_logging?, :enable_stackdriver_logging
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_consent_based_redaction = args[:enable_consent_based_redaction] if args.key?(:enable_consent_based_redaction)
          @enable_interaction_logging = args[:enable_interaction_logging] if args.key?(:enable_interaction_logging)
          @enable_stackdriver_logging = args[:enable_stackdriver_logging] if args.key?(:enable_stackdriver_logging)
        end
      end
      
      # Define behaviors of speech to text detection.
      class GoogleCloudDialogflowCxV3AdvancedSettingsSpeechSettings
        include Google::Apis::Core::Hashable
      
        # Sensitivity of the speech model that detects the end of speech. Scale from 0
        # to 100.
        # Corresponds to the JSON property `endpointerSensitivity`
        # @return [Fixnum]
        attr_accessor :endpointer_sensitivity
      
        # Mapping from language to Speech-to-Text model. The mapped Speech-to-Text model
        # will be selected for requests from its corresponding language. For more
        # information, see [Speech models](https://cloud.google.com/dialogflow/cx/docs/
        # concept/speech-models).
        # Corresponds to the JSON property `models`
        # @return [Hash<String,String>]
        attr_accessor :models
      
        # Timeout before detecting no speech.
        # Corresponds to the JSON property `noSpeechTimeout`
        # @return [String]
        attr_accessor :no_speech_timeout
      
        # Use timeout based endpointing, interpreting endpointer sensitivity as seconds
        # of timeout value.
        # Corresponds to the JSON property `useTimeoutBasedEndpointing`
        # @return [Boolean]
        attr_accessor :use_timeout_based_endpointing
        alias_method :use_timeout_based_endpointing?, :use_timeout_based_endpointing
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @endpointer_sensitivity = args[:endpointer_sensitivity] if args.key?(:endpointer_sensitivity)
          @models = args[:models] if args.key?(:models)
          @no_speech_timeout = args[:no_speech_timeout] if args.key?(:no_speech_timeout)
          @use_timeout_based_endpointing = args[:use_timeout_based_endpointing] if args.key?(:use_timeout_based_endpointing)
        end
      end
      
      # Represents the natural speech audio to be processed.
      class GoogleCloudDialogflowCxV3AudioInput
        include Google::Apis::Core::Hashable
      
        # The natural language speech audio to be processed. A single request can
        # contain up to 2 minutes of speech audio data. The transcribed text cannot
        # contain more than 256 bytes. For non-streaming audio detect intent, both `
        # config` and `audio` must be provided. For streaming audio detect intent, `
        # config` must be provided in the first request and `audio` must be provided in
        # all following requests.
        # Corresponds to the JSON property `audio`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :audio
      
        # Instructs the speech recognizer on how to process the audio content.
        # Corresponds to the JSON property `config`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3InputAudioConfig]
        attr_accessor :config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio = args[:audio] if args.key?(:audio)
          @config = args[:config] if args.key?(:config)
        end
      end
      
      # Configuration of the barge-in behavior. Barge-in instructs the API to return a
      # detected utterance at a proper time while the client is playing back the
      # response audio from a previous request. When the client sees the utterance, it
      # should stop the playback and immediately get ready for receiving the responses
      # for the current request. The barge-in handling requires the client to start
      # streaming audio input as soon as it starts playing back the audio from the
      # previous response. The playback is modeled into two phases: * No barge-in
      # phase: which goes first and during which speech detection should not be
      # carried out. * Barge-in phase: which follows the no barge-in phase and during
      # which the API starts speech detection and may inform the client that an
      # utterance has been detected. Note that no-speech event is not expected in this
      # phase. The client provides this configuration in terms of the durations of
      # those two phases. The durations are measured in terms of the audio length from
      # the start of the input audio. No-speech event is a response with
      # END_OF_UTTERANCE without any transcript following up.
      class GoogleCloudDialogflowCxV3BargeInConfig
        include Google::Apis::Core::Hashable
      
        # Duration that is not eligible for barge-in at the beginning of the input audio.
        # Corresponds to the JSON property `noBargeInDuration`
        # @return [String]
        attr_accessor :no_barge_in_duration
      
        # Total duration for the playback at the beginning of the input audio.
        # Corresponds to the JSON property `totalDuration`
        # @return [String]
        attr_accessor :total_duration
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @no_barge_in_duration = args[:no_barge_in_duration] if args.key?(:no_barge_in_duration)
          @total_duration = args[:total_duration] if args.key?(:total_duration)
        end
      end
      
      # Metadata returned for the TestCases.BatchRunTestCases long running operation.
      class GoogleCloudDialogflowCxV3BatchRunTestCasesMetadata
        include Google::Apis::Core::Hashable
      
        # The test errors.
        # Corresponds to the JSON property `errors`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TestError>]
        attr_accessor :errors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @errors = args[:errors] if args.key?(:errors)
        end
      end
      
      # The response message for TestCases.BatchRunTestCases.
      class GoogleCloudDialogflowCxV3BatchRunTestCasesResponse
        include Google::Apis::Core::Hashable
      
        # The test case results. The detailed conversation turns are empty in this
        # response.
        # Corresponds to the JSON property `results`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TestCaseResult>]
        attr_accessor :results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @results = args[:results] if args.key?(:results)
        end
      end
      
      # Represents a result from running a test case in an agent environment.
      class GoogleCloudDialogflowCxV3ContinuousTestResult
        include Google::Apis::Core::Hashable
      
        # The resource name for the continuous test result. Format: `projects//locations/
        # /agents//environments//continuousTestResults/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The result of this continuous test run, i.e. whether all the tests in this
        # continuous test run pass or not.
        # Corresponds to the JSON property `result`
        # @return [String]
        attr_accessor :result
      
        # Time when the continuous testing run starts.
        # Corresponds to the JSON property `runTime`
        # @return [String]
        attr_accessor :run_time
      
        # A list of individual test case results names in this continuous test run.
        # Corresponds to the JSON property `testCaseResults`
        # @return [Array<String>]
        attr_accessor :test_case_results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @result = args[:result] if args.key?(:result)
          @run_time = args[:run_time] if args.key?(:run_time)
          @test_case_results = args[:test_case_results] if args.key?(:test_case_results)
        end
      end
      
      # This message is used to hold all the Conversation Signals data, which will be
      # converted to JSON and exported to BigQuery.
      class GoogleCloudDialogflowCxV3ConversationSignals
        include Google::Apis::Core::Hashable
      
        # Collection of all signals that were extracted for a single turn of the
        # conversation.
        # Corresponds to the JSON property `turnSignals`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TurnSignals]
        attr_accessor :turn_signals
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @turn_signals = args[:turn_signals] if args.key?(:turn_signals)
        end
      end
      
      # One interaction between a human and virtual agent. The human provides some
      # input and the virtual agent provides a response.
      class GoogleCloudDialogflowCxV3ConversationTurn
        include Google::Apis::Core::Hashable
      
        # The input from the human user.
        # Corresponds to the JSON property `userInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ConversationTurnUserInput]
        attr_accessor :user_input
      
        # The output from the virtual agent.
        # Corresponds to the JSON property `virtualAgentOutput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ConversationTurnVirtualAgentOutput]
        attr_accessor :virtual_agent_output
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @user_input = args[:user_input] if args.key?(:user_input)
          @virtual_agent_output = args[:virtual_agent_output] if args.key?(:virtual_agent_output)
        end
      end
      
      # The input from the human user.
      class GoogleCloudDialogflowCxV3ConversationTurnUserInput
        include Google::Apis::Core::Hashable
      
        # Whether sentiment analysis is enabled.
        # Corresponds to the JSON property `enableSentimentAnalysis`
        # @return [Boolean]
        attr_accessor :enable_sentiment_analysis
        alias_method :enable_sentiment_analysis?, :enable_sentiment_analysis
      
        # Parameters that need to be injected into the conversation during intent
        # detection.
        # Corresponds to the JSON property `injectedParameters`
        # @return [Hash<String,Object>]
        attr_accessor :injected_parameters
      
        # Represents the query input. It can contain one of: 1. A conversational query
        # in the form of text. 2. An intent query that specifies which intent to trigger.
        # 3. Natural language speech audio to be processed. 4. An event to be triggered.
        # 5. DTMF digits to invoke an intent and fill in parameter value. 6. The
        # results of a tool executed by the client.
        # Corresponds to the JSON property `input`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3QueryInput]
        attr_accessor :input
      
        # If webhooks should be allowed to trigger in response to the user utterance.
        # Often if parameters are injected, webhooks should not be enabled.
        # Corresponds to the JSON property `isWebhookEnabled`
        # @return [Boolean]
        attr_accessor :is_webhook_enabled
        alias_method :is_webhook_enabled?, :is_webhook_enabled
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_sentiment_analysis = args[:enable_sentiment_analysis] if args.key?(:enable_sentiment_analysis)
          @injected_parameters = args[:injected_parameters] if args.key?(:injected_parameters)
          @input = args[:input] if args.key?(:input)
          @is_webhook_enabled = args[:is_webhook_enabled] if args.key?(:is_webhook_enabled)
        end
      end
      
      # The output from the virtual agent.
      class GoogleCloudDialogflowCxV3ConversationTurnVirtualAgentOutput
        include Google::Apis::Core::Hashable
      
        # A Dialogflow CX conversation (session) can be described and visualized as a
        # state machine. The states of a CX session are represented by pages. For each
        # flow, you define many pages, where your combined pages can handle a complete
        # conversation on the topics the flow is designed for. At any given moment,
        # exactly one page is the current page, the current page is considered active,
        # and the flow associated with that page is considered active. Every flow has a
        # special start page. When a flow initially becomes active, the start page page
        # becomes the current page. For each conversational turn, the current page will
        # either stay the same or transition to another page. You configure each page to
        # collect information from the end-user that is relevant for the conversational
        # state represented by the page. For more information, see the [Page guide](
        # https://cloud.google.com/dialogflow/cx/docs/concept/page).
        # Corresponds to the JSON property `currentPage`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3Page]
        attr_accessor :current_page
      
        # Required. Input only. The diagnostic info output for the turn. Required to
        # calculate the testing coverage.
        # Corresponds to the JSON property `diagnosticInfo`
        # @return [Hash<String,Object>]
        attr_accessor :diagnostic_info
      
        # Output only. If this is part of a result conversation turn, the list of
        # differences between the original run and the replay for this output, if any.
        # Corresponds to the JSON property `differences`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TestRunDifference>]
        attr_accessor :differences
      
        # The session parameters available to the bot at this point.
        # Corresponds to the JSON property `sessionParameters`
        # @return [Hash<String,Object>]
        attr_accessor :session_parameters
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :status
      
        # The text responses from the agent for the turn.
        # Corresponds to the JSON property `textResponses`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessageText>]
        attr_accessor :text_responses
      
        # An intent represents a user's intent to interact with a conversational agent.
        # You can provide information for the Dialogflow API to use to match user input
        # to an intent by adding training phrases (i.e., examples of user input) to your
        # intent.
        # Corresponds to the JSON property `triggeredIntent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3Intent]
        attr_accessor :triggered_intent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @current_page = args[:current_page] if args.key?(:current_page)
          @diagnostic_info = args[:diagnostic_info] if args.key?(:diagnostic_info)
          @differences = args[:differences] if args.key?(:differences)
          @session_parameters = args[:session_parameters] if args.key?(:session_parameters)
          @status = args[:status] if args.key?(:status)
          @text_responses = args[:text_responses] if args.key?(:text_responses)
          @triggered_intent = args[:triggered_intent] if args.key?(:triggered_intent)
        end
      end
      
      # Metadata associated with the long running operation for Versions.CreateVersion.
      class GoogleCloudDialogflowCxV3CreateVersionOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Name of the created version. Format: `projects//locations//agents//flows//
        # versions/`.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # A data store connection. It represents a data store in Discovery Engine and
      # the type of the contents it contains.
      class GoogleCloudDialogflowCxV3DataStoreConnection
        include Google::Apis::Core::Hashable
      
        # The full name of the referenced data store. Formats: `projects/`project`/
        # locations/`location`/collections/`collection`/dataStores/`data_store`` `
        # projects/`project`/locations/`location`/dataStores/`data_store``
        # Corresponds to the JSON property `dataStore`
        # @return [String]
        attr_accessor :data_store
      
        # The type of the connected data store.
        # Corresponds to the JSON property `dataStoreType`
        # @return [String]
        attr_accessor :data_store_type
      
        # The document processing mode for the data store connection. Should only be set
        # for PUBLIC_WEB and UNSTRUCTURED data stores. If not set it is considered as
        # DOCUMENTS, as this is the legacy mode.
        # Corresponds to the JSON property `documentProcessingMode`
        # @return [String]
        attr_accessor :document_processing_mode
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_store = args[:data_store] if args.key?(:data_store)
          @data_store_type = args[:data_store_type] if args.key?(:data_store_type)
          @document_processing_mode = args[:document_processing_mode] if args.key?(:document_processing_mode)
        end
      end
      
      # Metadata returned for the Environments.DeployFlow long running operation.
      class GoogleCloudDialogflowCxV3DeployFlowMetadata
        include Google::Apis::Core::Hashable
      
        # Errors of running deployment tests.
        # Corresponds to the JSON property `testErrors`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TestError>]
        attr_accessor :test_errors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @test_errors = args[:test_errors] if args.key?(:test_errors)
        end
      end
      
      # The response message for Environments.DeployFlow.
      class GoogleCloudDialogflowCxV3DeployFlowResponse
        include Google::Apis::Core::Hashable
      
        # The name of the flow version Deployment. Format: `projects//locations//agents//
        # environments//deployments/`.
        # Corresponds to the JSON property `deployment`
        # @return [String]
        attr_accessor :deployment
      
        # Represents an environment for an agent. You can create multiple versions of
        # your agent and publish them to separate environments. When you edit an agent,
        # you are editing the draft agent. At any point, you can save the draft agent as
        # an agent version, which is an immutable snapshot of your agent. When you save
        # the draft agent, it is published to the default environment. When you create
        # agent versions, you can publish them to custom environments. You can create a
        # variety of custom environments for testing, development, production, etc.
        # Corresponds to the JSON property `environment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3Environment]
        attr_accessor :environment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployment = args[:deployment] if args.key?(:deployment)
          @environment = args[:environment] if args.key?(:environment)
        end
      end
      
      # Represents the input for dtmf event.
      class GoogleCloudDialogflowCxV3DtmfInput
        include Google::Apis::Core::Hashable
      
        # The dtmf digits.
        # Corresponds to the JSON property `digits`
        # @return [String]
        attr_accessor :digits
      
        # The finish digit (if any).
        # Corresponds to the JSON property `finishDigit`
        # @return [String]
        attr_accessor :finish_digit
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @digits = args[:digits] if args.key?(:digits)
          @finish_digit = args[:finish_digit] if args.key?(:finish_digit)
        end
      end
      
      # Represents an environment for an agent. You can create multiple versions of
      # your agent and publish them to separate environments. When you edit an agent,
      # you are editing the draft agent. At any point, you can save the draft agent as
      # an agent version, which is an immutable snapshot of your agent. When you save
      # the draft agent, it is published to the default environment. When you create
      # agent versions, you can publish them to custom environments. You can create a
      # variety of custom environments for testing, development, production, etc.
      class GoogleCloudDialogflowCxV3Environment
        include Google::Apis::Core::Hashable
      
        # The human-readable description of the environment. The maximum length is 500
        # characters. If exceeded, the request is rejected.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The human-readable name of the environment (unique in an agent).
        # Limit of 64 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The name of the environment. Format: `projects//locations//agents//
        # environments/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The configuration for continuous tests.
        # Corresponds to the JSON property `testCasesConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3EnvironmentTestCasesConfig]
        attr_accessor :test_cases_config
      
        # Output only. Update time of this environment.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # A list of configurations for flow versions. You should include version configs
        # for all flows that are reachable from `Start Flow` in the agent. Otherwise, an
        # error will be returned.
        # Corresponds to the JSON property `versionConfigs`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3EnvironmentVersionConfig>]
        attr_accessor :version_configs
      
        # Configuration for webhooks.
        # Corresponds to the JSON property `webhookConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3EnvironmentWebhookConfig]
        attr_accessor :webhook_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @name = args[:name] if args.key?(:name)
          @test_cases_config = args[:test_cases_config] if args.key?(:test_cases_config)
          @update_time = args[:update_time] if args.key?(:update_time)
          @version_configs = args[:version_configs] if args.key?(:version_configs)
          @webhook_config = args[:webhook_config] if args.key?(:webhook_config)
        end
      end
      
      # The configuration for continuous tests.
      class GoogleCloudDialogflowCxV3EnvironmentTestCasesConfig
        include Google::Apis::Core::Hashable
      
        # Whether to run test cases in TestCasesConfig.test_cases periodically. Default
        # false. If set to true, run once a day.
        # Corresponds to the JSON property `enableContinuousRun`
        # @return [Boolean]
        attr_accessor :enable_continuous_run
        alias_method :enable_continuous_run?, :enable_continuous_run
      
        # Whether to run test cases in TestCasesConfig.test_cases before deploying a
        # flow version to the environment. Default false.
        # Corresponds to the JSON property `enablePredeploymentRun`
        # @return [Boolean]
        attr_accessor :enable_predeployment_run
        alias_method :enable_predeployment_run?, :enable_predeployment_run
      
        # A list of test case names to run. They should be under the same agent. Format
        # of each test case name: `projects//locations//agents//testCases/`
        # Corresponds to the JSON property `testCases`
        # @return [Array<String>]
        attr_accessor :test_cases
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_continuous_run = args[:enable_continuous_run] if args.key?(:enable_continuous_run)
          @enable_predeployment_run = args[:enable_predeployment_run] if args.key?(:enable_predeployment_run)
          @test_cases = args[:test_cases] if args.key?(:test_cases)
        end
      end
      
      # Configuration for the version.
      class GoogleCloudDialogflowCxV3EnvironmentVersionConfig
        include Google::Apis::Core::Hashable
      
        # Required. Flow, playbook and tool versions are supported. Format for flow
        # version: projects//locations//agents//flows//versions/. Format for playbook
        # version: projects//locations//agents//playbooks//versions/. Format for tool
        # version: projects//locations//agents//tools//versions/.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Configuration for webhooks.
      class GoogleCloudDialogflowCxV3EnvironmentWebhookConfig
        include Google::Apis::Core::Hashable
      
        # The list of webhooks to override for the agent environment. The webhook must
        # exist in the agent. You can override fields in `generic_web_service` and `
        # service_directory`.
        # Corresponds to the JSON property `webhookOverrides`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3Webhook>]
        attr_accessor :webhook_overrides
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @webhook_overrides = args[:webhook_overrides] if args.key?(:webhook_overrides)
        end
      end
      
      # An event handler specifies an event that can be handled during a session. When
      # the specified event happens, the following actions are taken in order: * If
      # there is a `trigger_fulfillment` associated with the event, it will be called.
      # * If there is a `target_page` associated with the event, the session will
      # transition into the specified page. * If there is a `target_flow` associated
      # with the event, the session will transition into the specified flow.
      class GoogleCloudDialogflowCxV3EventHandler
        include Google::Apis::Core::Hashable
      
        # Required. The name of the event to handle.
        # Corresponds to the JSON property `event`
        # @return [String]
        attr_accessor :event
      
        # Output only. The unique identifier of this event handler.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The target flow to transition to. Format: `projects//locations//agents//flows/`
        # .
        # Corresponds to the JSON property `targetFlow`
        # @return [String]
        attr_accessor :target_flow
      
        # The target page to transition to. Format: `projects//locations//agents//flows//
        # pages/`.
        # Corresponds to the JSON property `targetPage`
        # @return [String]
        attr_accessor :target_page
      
        # The target playbook to transition to. Format: `projects//locations//agents//
        # playbooks/`.
        # Corresponds to the JSON property `targetPlaybook`
        # @return [String]
        attr_accessor :target_playbook
      
        # A fulfillment can do one or more of the following actions at the same time: *
        # Generate rich message responses. * Set parameter values. * Call the webhook.
        # Fulfillments can be called at various stages in the Page or Form lifecycle.
        # For example, when a DetectIntentRequest drives a session to enter a new page,
        # the page's entry fulfillment can add a static response to the QueryResult in
        # the returning DetectIntentResponse, call the webhook (for example, to load
        # user data from a database), or both.
        # Corresponds to the JSON property `triggerFulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3Fulfillment]
        attr_accessor :trigger_fulfillment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @event = args[:event] if args.key?(:event)
          @name = args[:name] if args.key?(:name)
          @target_flow = args[:target_flow] if args.key?(:target_flow)
          @target_page = args[:target_page] if args.key?(:target_page)
          @target_playbook = args[:target_playbook] if args.key?(:target_playbook)
          @trigger_fulfillment = args[:trigger_fulfillment] if args.key?(:trigger_fulfillment)
        end
      end
      
      # Represents the event to trigger.
      class GoogleCloudDialogflowCxV3EventInput
        include Google::Apis::Core::Hashable
      
        # Name of the event.
        # Corresponds to the JSON property `event`
        # @return [String]
        attr_accessor :event
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @event = args[:event] if args.key?(:event)
        end
      end
      
      # The response message for Agents.ExportAgent.
      class GoogleCloudDialogflowCxV3ExportAgentResponse
        include Google::Apis::Core::Hashable
      
        # Uncompressed raw byte content for agent. This field is populated if none of `
        # agent_uri` and `git_destination` are specified in ExportAgentRequest.
        # Corresponds to the JSON property `agentContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :agent_content
      
        # The URI to a file containing the exported agent. This field is populated if `
        # agent_uri` is specified in ExportAgentRequest.
        # Corresponds to the JSON property `agentUri`
        # @return [String]
        attr_accessor :agent_uri
      
        # Commit SHA of the git push. This field is populated if `git_destination` is
        # specified in ExportAgentRequest.
        # Corresponds to the JSON property `commitSha`
        # @return [String]
        attr_accessor :commit_sha
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_content = args[:agent_content] if args.key?(:agent_content)
          @agent_uri = args[:agent_uri] if args.key?(:agent_uri)
          @commit_sha = args[:commit_sha] if args.key?(:commit_sha)
        end
      end
      
      # Metadata returned for the EntityTypes.ExportEntityTypes long running operation.
      class GoogleCloudDialogflowCxV3ExportEntityTypesMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for EntityTypes.ExportEntityTypes.
      class GoogleCloudDialogflowCxV3ExportEntityTypesResponse
        include Google::Apis::Core::Hashable
      
        # Inline destination for a Dialogflow operation that writes or exports objects (
        # e.g. intents) outside of Dialogflow.
        # Corresponds to the JSON property `entityTypesContent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3InlineDestination]
        attr_accessor :entity_types_content
      
        # The URI to a file containing the exported entity types. This field is
        # populated only if `entity_types_uri` is specified in ExportEntityTypesRequest.
        # Corresponds to the JSON property `entityTypesUri`
        # @return [String]
        attr_accessor :entity_types_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_types_content = args[:entity_types_content] if args.key?(:entity_types_content)
          @entity_types_uri = args[:entity_types_uri] if args.key?(:entity_types_uri)
        end
      end
      
      # The response message for Flows.ExportFlow.
      class GoogleCloudDialogflowCxV3ExportFlowResponse
        include Google::Apis::Core::Hashable
      
        # Uncompressed raw byte content for flow.
        # Corresponds to the JSON property `flowContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :flow_content
      
        # The URI to a file containing the exported flow. This field is populated only
        # if `flow_uri` is specified in ExportFlowRequest.
        # Corresponds to the JSON property `flowUri`
        # @return [String]
        attr_accessor :flow_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @flow_content = args[:flow_content] if args.key?(:flow_content)
          @flow_uri = args[:flow_uri] if args.key?(:flow_uri)
        end
      end
      
      # Metadata returned for the Intents.ExportIntents long running operation.
      class GoogleCloudDialogflowCxV3ExportIntentsMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for Intents.ExportIntents.
      class GoogleCloudDialogflowCxV3ExportIntentsResponse
        include Google::Apis::Core::Hashable
      
        # Inline destination for a Dialogflow operation that writes or exports objects (
        # e.g. intents) outside of Dialogflow.
        # Corresponds to the JSON property `intentsContent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3InlineDestination]
        attr_accessor :intents_content
      
        # The URI to a file containing the exported intents. This field is populated
        # only if `intents_uri` is specified in ExportIntentsRequest.
        # Corresponds to the JSON property `intentsUri`
        # @return [String]
        attr_accessor :intents_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intents_content = args[:intents_content] if args.key?(:intents_content)
          @intents_uri = args[:intents_uri] if args.key?(:intents_uri)
        end
      end
      
      # Metadata returned for the TestCases.ExportTestCases long running operation.
      # This message currently has no fields.
      class GoogleCloudDialogflowCxV3ExportTestCasesMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for TestCases.ExportTestCases.
      class GoogleCloudDialogflowCxV3ExportTestCasesResponse
        include Google::Apis::Core::Hashable
      
        # Uncompressed raw byte content for test cases.
        # Corresponds to the JSON property `content`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :content
      
        # The URI to a file containing the exported test cases. This field is populated
        # only if `gcs_uri` is specified in ExportTestCasesRequest.
        # Corresponds to the JSON property `gcsUri`
        # @return [String]
        attr_accessor :gcs_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @gcs_uri = args[:gcs_uri] if args.key?(:gcs_uri)
        end
      end
      
      # A form is a data model that groups related parameters that can be collected
      # from the user. The process in which the agent prompts the user and collects
      # parameter values from the user is called form filling. A form can be added to
      # a page. When form filling is done, the filled parameters will be written to
      # the session.
      class GoogleCloudDialogflowCxV3Form
        include Google::Apis::Core::Hashable
      
        # Parameters to collect from the user.
        # Corresponds to the JSON property `parameters`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3FormParameter>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Represents a form parameter.
      class GoogleCloudDialogflowCxV3FormParameter
        include Google::Apis::Core::Hashable
      
        # Hierarchical advanced settings for agent/flow/page/fulfillment/parameter.
        # Settings exposed at lower level overrides the settings exposed at higher level.
        # Overriding occurs at the sub-setting level. For example, the
        # playback_interruption_settings at fulfillment level only overrides the
        # playback_interruption_settings at the agent level, leaving other settings at
        # the agent level unchanged. DTMF settings does not override each other. DTMF
        # settings set at different levels define DTMF detections running in parallel.
        # Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
        # Corresponds to the JSON property `advancedSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3AdvancedSettings]
        attr_accessor :advanced_settings
      
        # The default value of an optional parameter. If the parameter is required, the
        # default value will be ignored.
        # Corresponds to the JSON property `defaultValue`
        # @return [Object]
        attr_accessor :default_value
      
        # Required. The human-readable name of the parameter, unique within the form.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Required. The entity type of the parameter. Format: `projects/-/locations/-/
        # agents/-/entityTypes/` for system entity types (for example, `projects/-/
        # locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//
        # entityTypes/` for developer entity types.
        # Corresponds to the JSON property `entityType`
        # @return [String]
        attr_accessor :entity_type
      
        # Configuration for how the filling of a parameter should be handled.
        # Corresponds to the JSON property `fillBehavior`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3FormParameterFillBehavior]
        attr_accessor :fill_behavior
      
        # Indicates whether the parameter represents a list of values.
        # Corresponds to the JSON property `isList`
        # @return [Boolean]
        attr_accessor :is_list
        alias_method :is_list?, :is_list
      
        # Indicates whether the parameter content should be redacted in log. If
        # redaction is enabled, the parameter content will be replaced by parameter name
        # during logging. Note: the parameter content is subject to redaction if either
        # parameter level redaction or entity type level redaction is enabled.
        # Corresponds to the JSON property `redact`
        # @return [Boolean]
        attr_accessor :redact
        alias_method :redact?, :redact
      
        # Indicates whether the parameter is required. Optional parameters will not
        # trigger prompts; however, they are filled if the user specifies them. Required
        # parameters must be filled before form filling concludes.
        # Corresponds to the JSON property `required`
        # @return [Boolean]
        attr_accessor :required
        alias_method :required?, :required
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @advanced_settings = args[:advanced_settings] if args.key?(:advanced_settings)
          @default_value = args[:default_value] if args.key?(:default_value)
          @display_name = args[:display_name] if args.key?(:display_name)
          @entity_type = args[:entity_type] if args.key?(:entity_type)
          @fill_behavior = args[:fill_behavior] if args.key?(:fill_behavior)
          @is_list = args[:is_list] if args.key?(:is_list)
          @redact = args[:redact] if args.key?(:redact)
          @required = args[:required] if args.key?(:required)
        end
      end
      
      # Configuration for how the filling of a parameter should be handled.
      class GoogleCloudDialogflowCxV3FormParameterFillBehavior
        include Google::Apis::Core::Hashable
      
        # A fulfillment can do one or more of the following actions at the same time: *
        # Generate rich message responses. * Set parameter values. * Call the webhook.
        # Fulfillments can be called at various stages in the Page or Form lifecycle.
        # For example, when a DetectIntentRequest drives a session to enter a new page,
        # the page's entry fulfillment can add a static response to the QueryResult in
        # the returning DetectIntentResponse, call the webhook (for example, to load
        # user data from a database), or both.
        # Corresponds to the JSON property `initialPromptFulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3Fulfillment]
        attr_accessor :initial_prompt_fulfillment
      
        # The handlers for parameter-level events, used to provide reprompt for the
        # parameter or transition to a different page/flow. The supported events are: * `
        # sys.no-match-`, where N can be from 1 to 6 * `sys.no-match-default` * `sys.no-
        # input-`, where N can be from 1 to 6 * `sys.no-input-default` * `sys.invalid-
        # parameter` `initial_prompt_fulfillment` provides the first prompt for the
        # parameter. If the user's response does not fill the parameter, a no-match/no-
        # input event will be triggered, and the fulfillment associated with the `sys.no-
        # match-1`/`sys.no-input-1` handler (if defined) will be called to provide a
        # prompt. The `sys.no-match-2`/`sys.no-input-2` handler (if defined) will
        # respond to the next no-match/no-input event, and so on. A `sys.no-match-
        # default` or `sys.no-input-default` handler will be used to handle all
        # following no-match/no-input events after all numbered no-match/no-input
        # handlers for the parameter are consumed. A `sys.invalid-parameter` handler can
        # be defined to handle the case where the parameter values have been `
        # invalidated` by webhook. For example, if the user's response fill the
        # parameter, however the parameter was invalidated by webhook, the fulfillment
        # associated with the `sys.invalid-parameter` handler (if defined) will be
        # called to provide a prompt. If the event handler for the corresponding event
        # can't be found on the parameter, `initial_prompt_fulfillment` will be re-
        # prompted.
        # Corresponds to the JSON property `repromptEventHandlers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3EventHandler>]
        attr_accessor :reprompt_event_handlers
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @initial_prompt_fulfillment = args[:initial_prompt_fulfillment] if args.key?(:initial_prompt_fulfillment)
          @reprompt_event_handlers = args[:reprompt_event_handlers] if args.key?(:reprompt_event_handlers)
        end
      end
      
      # A fulfillment can do one or more of the following actions at the same time: *
      # Generate rich message responses. * Set parameter values. * Call the webhook.
      # Fulfillments can be called at various stages in the Page or Form lifecycle.
      # For example, when a DetectIntentRequest drives a session to enter a new page,
      # the page's entry fulfillment can add a static response to the QueryResult in
      # the returning DetectIntentResponse, call the webhook (for example, to load
      # user data from a database), or both.
      class GoogleCloudDialogflowCxV3Fulfillment
        include Google::Apis::Core::Hashable
      
        # Hierarchical advanced settings for agent/flow/page/fulfillment/parameter.
        # Settings exposed at lower level overrides the settings exposed at higher level.
        # Overriding occurs at the sub-setting level. For example, the
        # playback_interruption_settings at fulfillment level only overrides the
        # playback_interruption_settings at the agent level, leaving other settings at
        # the agent level unchanged. DTMF settings does not override each other. DTMF
        # settings set at different levels define DTMF detections running in parallel.
        # Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
        # Corresponds to the JSON property `advancedSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3AdvancedSettings]
        attr_accessor :advanced_settings
      
        # Conditional cases for this fulfillment.
        # Corresponds to the JSON property `conditionalCases`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3FulfillmentConditionalCases>]
        attr_accessor :conditional_cases
      
        # If the flag is true, the agent will utilize LLM to generate a text response.
        # If LLM generation fails, the defined responses in the fulfillment will be
        # respected. This flag is only useful for fulfillments associated with no-match
        # event handlers.
        # Corresponds to the JSON property `enableGenerativeFallback`
        # @return [Boolean]
        attr_accessor :enable_generative_fallback
        alias_method :enable_generative_fallback?, :enable_generative_fallback
      
        # A list of Generators to be called during this fulfillment.
        # Corresponds to the JSON property `generators`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3FulfillmentGeneratorSettings>]
        attr_accessor :generators
      
        # The list of rich message responses to present to the user.
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessage>]
        attr_accessor :messages
      
        # Whether Dialogflow should return currently queued fulfillment response
        # messages in streaming APIs. If a webhook is specified, it happens before
        # Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API.
        # Responses are still queued and returned once in non-streaming API. 2) The flag
        # can be enabled in any fulfillment but only the first 3 partial responses will
        # be returned. You may only want to apply it to fulfillments that have slow
        # webhooks.
        # Corresponds to the JSON property `returnPartialResponses`
        # @return [Boolean]
        attr_accessor :return_partial_responses
        alias_method :return_partial_responses?, :return_partial_responses
      
        # Set parameter values before executing the webhook.
        # Corresponds to the JSON property `setParameterActions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3FulfillmentSetParameterAction>]
        attr_accessor :set_parameter_actions
      
        # The value of this field will be populated in the WebhookRequest `
        # fulfillmentInfo.tag` field by Dialogflow when the associated webhook is called.
        # The tag is typically used by the webhook service to identify which
        # fulfillment is being called, but it could be used for other purposes. This
        # field is required if `webhook` is specified.
        # Corresponds to the JSON property `tag`
        # @return [String]
        attr_accessor :tag
      
        # The webhook to call. Format: `projects//locations//agents//webhooks/`.
        # Corresponds to the JSON property `webhook`
        # @return [String]
        attr_accessor :webhook
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @advanced_settings = args[:advanced_settings] if args.key?(:advanced_settings)
          @conditional_cases = args[:conditional_cases] if args.key?(:conditional_cases)
          @enable_generative_fallback = args[:enable_generative_fallback] if args.key?(:enable_generative_fallback)
          @generators = args[:generators] if args.key?(:generators)
          @messages = args[:messages] if args.key?(:messages)
          @return_partial_responses = args[:return_partial_responses] if args.key?(:return_partial_responses)
          @set_parameter_actions = args[:set_parameter_actions] if args.key?(:set_parameter_actions)
          @tag = args[:tag] if args.key?(:tag)
          @webhook = args[:webhook] if args.key?(:webhook)
        end
      end
      
      # A list of cascading if-else conditions. Cases are mutually exclusive. The
      # first one with a matching condition is selected, all the rest ignored.
      class GoogleCloudDialogflowCxV3FulfillmentConditionalCases
        include Google::Apis::Core::Hashable
      
        # A list of cascading if-else conditions.
        # Corresponds to the JSON property `cases`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCase>]
        attr_accessor :cases
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cases = args[:cases] if args.key?(:cases)
        end
      end
      
      # Each case has a Boolean condition. When it is evaluated to be True, the
      # corresponding messages will be selected and evaluated recursively.
      class GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCase
        include Google::Apis::Core::Hashable
      
        # A list of case content.
        # Corresponds to the JSON property `caseContent`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseCaseContent>]
        attr_accessor :case_content
      
        # The condition to activate and select this case. Empty means the condition is
        # always true. The condition is evaluated against form parameters or session
        # parameters. See the [conditions reference](https://cloud.google.com/dialogflow/
        # cx/docs/reference/condition).
        # Corresponds to the JSON property `condition`
        # @return [String]
        attr_accessor :condition
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @case_content = args[:case_content] if args.key?(:case_content)
          @condition = args[:condition] if args.key?(:condition)
        end
      end
      
      # The list of messages or conditional cases to activate for this case.
      class GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseCaseContent
        include Google::Apis::Core::Hashable
      
        # A list of cascading if-else conditions. Cases are mutually exclusive. The
        # first one with a matching condition is selected, all the rest ignored.
        # Corresponds to the JSON property `additionalCases`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3FulfillmentConditionalCases]
        attr_accessor :additional_cases
      
        # Represents a response message that can be returned by a conversational agent.
        # Response messages are also used for output audio synthesis. The approach is as
        # follows: * If at least one OutputAudioText response is present, then all
        # OutputAudioText responses are linearly concatenated, and the result is used
        # for output audio synthesis. * If the OutputAudioText responses are a mixture
        # of text and SSML, then the concatenated result is treated as SSML; otherwise,
        # the result is treated as either text or SSML as appropriate. The agent
        # designer should ideally use either text or SSML consistently throughout the
        # bot design. * Otherwise, all Text responses are linearly concatenated, and the
        # result is used for output audio synthesis. This approach allows for more
        # sophisticated user experience scenarios, where the text displayed to the user
        # may differ from what is heard.
        # Corresponds to the JSON property `message`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessage]
        attr_accessor :message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @additional_cases = args[:additional_cases] if args.key?(:additional_cases)
          @message = args[:message] if args.key?(:message)
        end
      end
      
      # Generator settings used by the LLM to generate a text response.
      class GoogleCloudDialogflowCxV3FulfillmentGeneratorSettings
        include Google::Apis::Core::Hashable
      
        # Required. The generator to call. Format: `projects//locations//agents//
        # generators/`.
        # Corresponds to the JSON property `generator`
        # @return [String]
        attr_accessor :generator
      
        # Map from placeholder parameter in the Generator to corresponding session
        # parameters. By default, Dialogflow uses the session parameter with the same
        # name to fill in the generator template. e.g. If there is a placeholder
        # parameter `city` in the Generator, Dialogflow default to fill in the `$city`
        # with `$session.params.city`. However, you may choose to fill `$city` with `$
        # session.params.desination-city`. - Map key: parameter ID - Map value: session
        # parameter name
        # Corresponds to the JSON property `inputParameters`
        # @return [Hash<String,String>]
        attr_accessor :input_parameters
      
        # Required. Output parameter which should contain the generator response.
        # Corresponds to the JSON property `outputParameter`
        # @return [String]
        attr_accessor :output_parameter
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generator = args[:generator] if args.key?(:generator)
          @input_parameters = args[:input_parameters] if args.key?(:input_parameters)
          @output_parameter = args[:output_parameter] if args.key?(:output_parameter)
        end
      end
      
      # Setting a parameter value.
      class GoogleCloudDialogflowCxV3FulfillmentSetParameterAction
        include Google::Apis::Core::Hashable
      
        # Display name of the parameter.
        # Corresponds to the JSON property `parameter`
        # @return [String]
        attr_accessor :parameter
      
        # The new value of the parameter. A null value clears the parameter.
        # Corresponds to the JSON property `value`
        # @return [Object]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameter = args[:parameter] if args.key?(:parameter)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Google Cloud Storage location for a Dialogflow operation that writes or
      # exports objects (e.g. exported agent or transcripts) outside of Dialogflow.
      class GoogleCloudDialogflowCxV3GcsDestination
        include Google::Apis::Core::Hashable
      
        # Required. The Google Cloud Storage URI for the exported objects. A URI is of
        # the form: `gs://bucket/object-name-or-prefix` Whether a full object name, or
        # just a prefix, its usage depends on the Dialogflow operation.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Metadata returned for the EntityTypes.ImportEntityTypes long running operation.
      class GoogleCloudDialogflowCxV3ImportEntityTypesMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for EntityTypes.ImportEntityTypes.
      class GoogleCloudDialogflowCxV3ImportEntityTypesResponse
        include Google::Apis::Core::Hashable
      
        # Conflicting resources detected during the import process. Only filled when
        # REPORT_CONFLICT is set in the request and there are conflicts in the display
        # names.
        # Corresponds to the JSON property `conflictingResources`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ImportEntityTypesResponseConflictingResources]
        attr_accessor :conflicting_resources
      
        # The unique identifier of the imported entity types. Format: `projects//
        # locations//agents//entity_types/`.
        # Corresponds to the JSON property `entityTypes`
        # @return [Array<String>]
        attr_accessor :entity_types
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conflicting_resources = args[:conflicting_resources] if args.key?(:conflicting_resources)
          @entity_types = args[:entity_types] if args.key?(:entity_types)
        end
      end
      
      # Conflicting resources detected during the import process. Only filled when
      # REPORT_CONFLICT is set in the request and there are conflicts in the display
      # names.
      class GoogleCloudDialogflowCxV3ImportEntityTypesResponseConflictingResources
        include Google::Apis::Core::Hashable
      
        # Display names of conflicting entities.
        # Corresponds to the JSON property `entityDisplayNames`
        # @return [Array<String>]
        attr_accessor :entity_display_names
      
        # Display names of conflicting entity types.
        # Corresponds to the JSON property `entityTypeDisplayNames`
        # @return [Array<String>]
        attr_accessor :entity_type_display_names
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_display_names = args[:entity_display_names] if args.key?(:entity_display_names)
          @entity_type_display_names = args[:entity_type_display_names] if args.key?(:entity_type_display_names)
        end
      end
      
      # The response message for Flows.ImportFlow.
      class GoogleCloudDialogflowCxV3ImportFlowResponse
        include Google::Apis::Core::Hashable
      
        # The unique identifier of the new flow. Format: `projects//locations//agents//
        # flows/`.
        # Corresponds to the JSON property `flow`
        # @return [String]
        attr_accessor :flow
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @flow = args[:flow] if args.key?(:flow)
        end
      end
      
      # Metadata returned for the Intents.ImportIntents long running operation.
      class GoogleCloudDialogflowCxV3ImportIntentsMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for Intents.ImportIntents.
      class GoogleCloudDialogflowCxV3ImportIntentsResponse
        include Google::Apis::Core::Hashable
      
        # Conflicting resources detected during the import process. Only filled when
        # REPORT_CONFLICT is set in the request and there are conflicts in the display
        # names.
        # Corresponds to the JSON property `conflictingResources`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ImportIntentsResponseConflictingResources]
        attr_accessor :conflicting_resources
      
        # The unique identifier of the imported intents. Format: `projects//locations//
        # agents//intents/`.
        # Corresponds to the JSON property `intents`
        # @return [Array<String>]
        attr_accessor :intents
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conflicting_resources = args[:conflicting_resources] if args.key?(:conflicting_resources)
          @intents = args[:intents] if args.key?(:intents)
        end
      end
      
      # Conflicting resources detected during the import process. Only filled when
      # REPORT_CONFLICT is set in the request and there are conflicts in the display
      # names.
      class GoogleCloudDialogflowCxV3ImportIntentsResponseConflictingResources
        include Google::Apis::Core::Hashable
      
        # Display names of conflicting entities.
        # Corresponds to the JSON property `entityDisplayNames`
        # @return [Array<String>]
        attr_accessor :entity_display_names
      
        # Display names of conflicting intents.
        # Corresponds to the JSON property `intentDisplayNames`
        # @return [Array<String>]
        attr_accessor :intent_display_names
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_display_names = args[:entity_display_names] if args.key?(:entity_display_names)
          @intent_display_names = args[:intent_display_names] if args.key?(:intent_display_names)
        end
      end
      
      # Metadata returned for the TestCases.ImportTestCases long running operation.
      class GoogleCloudDialogflowCxV3ImportTestCasesMetadata
        include Google::Apis::Core::Hashable
      
        # Errors for failed test cases.
        # Corresponds to the JSON property `errors`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TestCaseError>]
        attr_accessor :errors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @errors = args[:errors] if args.key?(:errors)
        end
      end
      
      # The response message for TestCases.ImportTestCases.
      class GoogleCloudDialogflowCxV3ImportTestCasesResponse
        include Google::Apis::Core::Hashable
      
        # The unique identifiers of the new test cases. Format: `projects//locations//
        # agents//testCases/`.
        # Corresponds to the JSON property `names`
        # @return [Array<String>]
        attr_accessor :names
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @names = args[:names] if args.key?(:names)
        end
      end
      
      # Inline destination for a Dialogflow operation that writes or exports objects (
      # e.g. intents) outside of Dialogflow.
      class GoogleCloudDialogflowCxV3InlineDestination
        include Google::Apis::Core::Hashable
      
        # Output only. The uncompressed byte content for the objects. Only populated in
        # responses.
        # Corresponds to the JSON property `content`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :content
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
        end
      end
      
      # Instructs the speech recognizer on how to process the audio content.
      class GoogleCloudDialogflowCxV3InputAudioConfig
        include Google::Apis::Core::Hashable
      
        # Required. Audio encoding of the audio content to process.
        # Corresponds to the JSON property `audioEncoding`
        # @return [String]
        attr_accessor :audio_encoding
      
        # Configuration of the barge-in behavior. Barge-in instructs the API to return a
        # detected utterance at a proper time while the client is playing back the
        # response audio from a previous request. When the client sees the utterance, it
        # should stop the playback and immediately get ready for receiving the responses
        # for the current request. The barge-in handling requires the client to start
        # streaming audio input as soon as it starts playing back the audio from the
        # previous response. The playback is modeled into two phases: * No barge-in
        # phase: which goes first and during which speech detection should not be
        # carried out. * Barge-in phase: which follows the no barge-in phase and during
        # which the API starts speech detection and may inform the client that an
        # utterance has been detected. Note that no-speech event is not expected in this
        # phase. The client provides this configuration in terms of the durations of
        # those two phases. The durations are measured in terms of the audio length from
        # the start of the input audio. No-speech event is a response with
        # END_OF_UTTERANCE without any transcript following up.
        # Corresponds to the JSON property `bargeInConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3BargeInConfig]
        attr_accessor :barge_in_config
      
        # Optional. If `true`, Dialogflow returns SpeechWordInfo in
        # StreamingRecognitionResult with information about the recognized speech words,
        # e.g. start and end time offsets. If false or unspecified, Speech doesn't
        # return any word-level information.
        # Corresponds to the JSON property `enableWordInfo`
        # @return [Boolean]
        attr_accessor :enable_word_info
        alias_method :enable_word_info?, :enable_word_info
      
        # Optional. Which Speech model to select for the given request. For more
        # information, see [Speech models](https://cloud.google.com/dialogflow/cx/docs/
        # concept/speech-models).
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Optional. Which variant of the Speech model to use.
        # Corresponds to the JSON property `modelVariant`
        # @return [String]
        attr_accessor :model_variant
      
        # If `true`, the request will opt out for STT conformer model migration. This
        # field will be deprecated once force migration takes place in June 2024. Please
        # refer to [Dialogflow CX Speech model migration](https://cloud.google.com/
        # dialogflow/cx/docs/concept/speech-model-migration).
        # Corresponds to the JSON property `optOutConformerModelMigration`
        # @return [Boolean]
        attr_accessor :opt_out_conformer_model_migration
        alias_method :opt_out_conformer_model_migration?, :opt_out_conformer_model_migration
      
        # Optional. A list of strings containing words and phrases that the speech
        # recognizer should recognize with higher likelihood. See [the Cloud Speech
        # documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-
        # hints) for more details.
        # Corresponds to the JSON property `phraseHints`
        # @return [Array<String>]
        attr_accessor :phrase_hints
      
        # Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud
        # Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics)
        # for more details.
        # Corresponds to the JSON property `sampleRateHertz`
        # @return [Fixnum]
        attr_accessor :sample_rate_hertz
      
        # Optional. If `false` (default), recognition does not cease until the client
        # closes the stream. If `true`, the recognizer will detect a single spoken
        # utterance in input audio. Recognition ceases when it detects the audio's voice
        # has stopped or paused. In this case, once a detected intent is received, the
        # client should close the stream and start a new request with a new stream as
        # needed. Note: This setting is relevant only for streaming methods.
        # Corresponds to the JSON property `singleUtterance`
        # @return [Boolean]
        attr_accessor :single_utterance
        alias_method :single_utterance?, :single_utterance
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_encoding = args[:audio_encoding] if args.key?(:audio_encoding)
          @barge_in_config = args[:barge_in_config] if args.key?(:barge_in_config)
          @enable_word_info = args[:enable_word_info] if args.key?(:enable_word_info)
          @model = args[:model] if args.key?(:model)
          @model_variant = args[:model_variant] if args.key?(:model_variant)
          @opt_out_conformer_model_migration = args[:opt_out_conformer_model_migration] if args.key?(:opt_out_conformer_model_migration)
          @phrase_hints = args[:phrase_hints] if args.key?(:phrase_hints)
          @sample_rate_hertz = args[:sample_rate_hertz] if args.key?(:sample_rate_hertz)
          @single_utterance = args[:single_utterance] if args.key?(:single_utterance)
        end
      end
      
      # An intent represents a user's intent to interact with a conversational agent.
      # You can provide information for the Dialogflow API to use to match user input
      # to an intent by adding training phrases (i.e., examples of user input) to your
      # intent.
      class GoogleCloudDialogflowCxV3Intent
        include Google::Apis::Core::Hashable
      
        # Human readable description for better understanding an intent like its scope,
        # content, result etc. Maximum character limit: 140 characters.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The human-readable name of the intent, unique within the agent.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Indicates whether this is a fallback intent. Currently only default fallback
        # intent is allowed in the agent, which is added upon agent creation. Adding
        # training phrases to fallback intent is useful in the case of requests that are
        # mistakenly matched, since training phrases assigned to fallback intents act as
        # negative examples that triggers no-match event.
        # Corresponds to the JSON property `isFallback`
        # @return [Boolean]
        attr_accessor :is_fallback
        alias_method :is_fallback?, :is_fallback
      
        # The key/value metadata to label an intent. Labels can contain lowercase
        # letters, digits and the symbols '-' and '_'. International characters are
        # allowed, including letters from unicase alphabets. Keys must start with a
        # letter. Keys and values can be no longer than 63 characters and no more than
        # 128 bytes. Prefix "sys-" is reserved for Dialogflow defined labels. Currently
        # allowed Dialogflow defined labels include: * sys-head * sys-contextual The
        # above labels do not require value. "sys-head" means the intent is a head
        # intent. "sys.contextual" means the intent is a contextual intent.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # The unique identifier of the intent. Required for the Intents.UpdateIntent
        # method. Intents.CreateIntent populates the name automatically. Format: `
        # projects//locations//agents//intents/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The collection of parameters associated with the intent.
        # Corresponds to the JSON property `parameters`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3IntentParameter>]
        attr_accessor :parameters
      
        # The priority of this intent. Higher numbers represent higher priorities. - If
        # the supplied value is unspecified or 0, the service translates the value to
        # 500,000, which corresponds to the `Normal` priority in the console. - If the
        # supplied value is negative, the intent is ignored in runtime detect intent
        # requests.
        # Corresponds to the JSON property `priority`
        # @return [Fixnum]
        attr_accessor :priority
      
        # The collection of training phrases the agent is trained on to identify the
        # intent.
        # Corresponds to the JSON property `trainingPhrases`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3IntentTrainingPhrase>]
        attr_accessor :training_phrases
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @is_fallback = args[:is_fallback] if args.key?(:is_fallback)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @parameters = args[:parameters] if args.key?(:parameters)
          @priority = args[:priority] if args.key?(:priority)
          @training_phrases = args[:training_phrases] if args.key?(:training_phrases)
        end
      end
      
      # Represents the intent to trigger programmatically rather than as a result of
      # natural language processing.
      class GoogleCloudDialogflowCxV3IntentInput
        include Google::Apis::Core::Hashable
      
        # Required. The unique identifier of the intent. Format: `projects//locations//
        # agents//intents/`.
        # Corresponds to the JSON property `intent`
        # @return [String]
        attr_accessor :intent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intent = args[:intent] if args.key?(:intent)
        end
      end
      
      # Represents an intent parameter.
      class GoogleCloudDialogflowCxV3IntentParameter
        include Google::Apis::Core::Hashable
      
        # Required. The entity type of the parameter. Format: `projects/-/locations/-/
        # agents/-/entityTypes/` for system entity types (for example, `projects/-/
        # locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//
        # entityTypes/` for developer entity types.
        # Corresponds to the JSON property `entityType`
        # @return [String]
        attr_accessor :entity_type
      
        # Required. The unique identifier of the parameter. This field is used by
        # training phrases to annotate their parts.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Indicates whether the parameter represents a list of values.
        # Corresponds to the JSON property `isList`
        # @return [Boolean]
        attr_accessor :is_list
        alias_method :is_list?, :is_list
      
        # Indicates whether the parameter content should be redacted in log. If
        # redaction is enabled, the parameter content will be replaced by parameter name
        # during logging. Note: the parameter content is subject to redaction if either
        # parameter level redaction or entity type level redaction is enabled.
        # Corresponds to the JSON property `redact`
        # @return [Boolean]
        attr_accessor :redact
        alias_method :redact?, :redact
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_type = args[:entity_type] if args.key?(:entity_type)
          @id = args[:id] if args.key?(:id)
          @is_list = args[:is_list] if args.key?(:is_list)
          @redact = args[:redact] if args.key?(:redact)
        end
      end
      
      # Represents an example that the agent is trained on to identify the intent.
      class GoogleCloudDialogflowCxV3IntentTrainingPhrase
        include Google::Apis::Core::Hashable
      
        # Output only. The unique identifier of the training phrase.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Required. The ordered list of training phrase parts. The parts are
        # concatenated in order to form the training phrase. Note: The API does not
        # automatically annotate training phrases like the Dialogflow Console does. Note:
        # Do not forget to include whitespace at part boundaries, so the training
        # phrase is well formatted when the parts are concatenated. If the training
        # phrase does not need to be annotated with parameters, you just need a single
        # part with only the Part.text field set. If you want to annotate the training
        # phrase, you must create multiple parts, where the fields of each part are
        # populated in one of two ways: - `Part.text` is set to a part of the phrase
        # that has no parameters. - `Part.text` is set to a part of the phrase that you
        # want to annotate, and the `parameter_id` field is set.
        # Corresponds to the JSON property `parts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3IntentTrainingPhrasePart>]
        attr_accessor :parts
      
        # Indicates how many times this example was added to the intent.
        # Corresponds to the JSON property `repeatCount`
        # @return [Fixnum]
        attr_accessor :repeat_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @id = args[:id] if args.key?(:id)
          @parts = args[:parts] if args.key?(:parts)
          @repeat_count = args[:repeat_count] if args.key?(:repeat_count)
        end
      end
      
      # Represents a part of a training phrase.
      class GoogleCloudDialogflowCxV3IntentTrainingPhrasePart
        include Google::Apis::Core::Hashable
      
        # The parameter used to annotate this part of the training phrase. This field is
        # required for annotated parts of the training phrase.
        # Corresponds to the JSON property `parameterId`
        # @return [String]
        attr_accessor :parameter_id
      
        # Required. The text for this part.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameter_id = args[:parameter_id] if args.key?(:parameter_id)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # The Knowledge Connector settings for this page or flow. This includes
      # information such as the attached Knowledge Bases, and the way to execute
      # fulfillment.
      class GoogleCloudDialogflowCxV3KnowledgeConnectorSettings
        include Google::Apis::Core::Hashable
      
        # Optional. List of related data store connections.
        # Corresponds to the JSON property `dataStoreConnections`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3DataStoreConnection>]
        attr_accessor :data_store_connections
      
        # Whether Knowledge Connector is enabled or not.
        # Corresponds to the JSON property `enabled`
        # @return [Boolean]
        attr_accessor :enabled
        alias_method :enabled?, :enabled
      
        # The target flow to transition to. Format: `projects//locations//agents//flows/`
        # .
        # Corresponds to the JSON property `targetFlow`
        # @return [String]
        attr_accessor :target_flow
      
        # The target page to transition to. Format: `projects//locations//agents//flows//
        # pages/`.
        # Corresponds to the JSON property `targetPage`
        # @return [String]
        attr_accessor :target_page
      
        # A fulfillment can do one or more of the following actions at the same time: *
        # Generate rich message responses. * Set parameter values. * Call the webhook.
        # Fulfillments can be called at various stages in the Page or Form lifecycle.
        # For example, when a DetectIntentRequest drives a session to enter a new page,
        # the page's entry fulfillment can add a static response to the QueryResult in
        # the returning DetectIntentResponse, call the webhook (for example, to load
        # user data from a database), or both.
        # Corresponds to the JSON property `triggerFulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3Fulfillment]
        attr_accessor :trigger_fulfillment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_store_connections = args[:data_store_connections] if args.key?(:data_store_connections)
          @enabled = args[:enabled] if args.key?(:enabled)
          @target_flow = args[:target_flow] if args.key?(:target_flow)
          @target_page = args[:target_page] if args.key?(:target_page)
          @trigger_fulfillment = args[:trigger_fulfillment] if args.key?(:trigger_fulfillment)
        end
      end
      
      # Represents the language information of the request.
      class GoogleCloudDialogflowCxV3LanguageInfo
        include Google::Apis::Core::Hashable
      
        # The confidence score of the detected language between 0 and 1.
        # Corresponds to the JSON property `confidenceScore`
        # @return [Float]
        attr_accessor :confidence_score
      
        # The language code specified in the original request.
        # Corresponds to the JSON property `inputLanguageCode`
        # @return [String]
        attr_accessor :input_language_code
      
        # The language code detected for this request based on the user conversation.
        # Corresponds to the JSON property `resolvedLanguageCode`
        # @return [String]
        attr_accessor :resolved_language_code
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_score = args[:confidence_score] if args.key?(:confidence_score)
          @input_language_code = args[:input_language_code] if args.key?(:input_language_code)
          @resolved_language_code = args[:resolved_language_code] if args.key?(:resolved_language_code)
        end
      end
      
      # A Dialogflow CX conversation (session) can be described and visualized as a
      # state machine. The states of a CX session are represented by pages. For each
      # flow, you define many pages, where your combined pages can handle a complete
      # conversation on the topics the flow is designed for. At any given moment,
      # exactly one page is the current page, the current page is considered active,
      # and the flow associated with that page is considered active. Every flow has a
      # special start page. When a flow initially becomes active, the start page page
      # becomes the current page. For each conversational turn, the current page will
      # either stay the same or transition to another page. You configure each page to
      # collect information from the end-user that is relevant for the conversational
      # state represented by the page. For more information, see the [Page guide](
      # https://cloud.google.com/dialogflow/cx/docs/concept/page).
      class GoogleCloudDialogflowCxV3Page
        include Google::Apis::Core::Hashable
      
        # Hierarchical advanced settings for agent/flow/page/fulfillment/parameter.
        # Settings exposed at lower level overrides the settings exposed at higher level.
        # Overriding occurs at the sub-setting level. For example, the
        # playback_interruption_settings at fulfillment level only overrides the
        # playback_interruption_settings at the agent level, leaving other settings at
        # the agent level unchanged. DTMF settings does not override each other. DTMF
        # settings set at different levels define DTMF detections running in parallel.
        # Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
        # Corresponds to the JSON property `advancedSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3AdvancedSettings]
        attr_accessor :advanced_settings
      
        # The description of the page. The maximum length is 500 characters.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The human-readable name of the page, unique within the flow.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # A fulfillment can do one or more of the following actions at the same time: *
        # Generate rich message responses. * Set parameter values. * Call the webhook.
        # Fulfillments can be called at various stages in the Page or Form lifecycle.
        # For example, when a DetectIntentRequest drives a session to enter a new page,
        # the page's entry fulfillment can add a static response to the QueryResult in
        # the returning DetectIntentResponse, call the webhook (for example, to load
        # user data from a database), or both.
        # Corresponds to the JSON property `entryFulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3Fulfillment]
        attr_accessor :entry_fulfillment
      
        # Handlers associated with the page to handle events such as webhook errors, no
        # match or no input.
        # Corresponds to the JSON property `eventHandlers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3EventHandler>]
        attr_accessor :event_handlers
      
        # A form is a data model that groups related parameters that can be collected
        # from the user. The process in which the agent prompts the user and collects
        # parameter values from the user is called form filling. A form can be added to
        # a page. When form filling is done, the filled parameters will be written to
        # the session.
        # Corresponds to the JSON property `form`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3Form]
        attr_accessor :form
      
        # The Knowledge Connector settings for this page or flow. This includes
        # information such as the attached Knowledge Bases, and the way to execute
        # fulfillment.
        # Corresponds to the JSON property `knowledgeConnectorSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3KnowledgeConnectorSettings]
        attr_accessor :knowledge_connector_settings
      
        # The unique identifier of the page. Required for the Pages.UpdatePage method.
        # Pages.CreatePage populates the name automatically. Format: `projects//
        # locations//agents//flows//pages/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Ordered list of `TransitionRouteGroups` added to the page. Transition route
        # groups must be unique within a page. If the page links both flow-level
        # transition route groups and agent-level transition route groups, the flow-
        # level ones will have higher priority and will be put before the agent-level
        # ones. * If multiple transition routes within a page scope refer to the same
        # intent, then the precedence order is: page's transition route -> page's
        # transition route group -> flow's transition routes. * If multiple transition
        # route groups within a page contain the same intent, then the first group in
        # the ordered list takes precedence. Format:`projects//locations//agents//flows//
        # transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/
        # ` for agent-level groups.
        # Corresponds to the JSON property `transitionRouteGroups`
        # @return [Array<String>]
        attr_accessor :transition_route_groups
      
        # A list of transitions for the transition rules of this page. They route the
        # conversation to another page in the same flow, or another flow. When we are in
        # a certain page, the TransitionRoutes are evaluated in the following order: *
        # TransitionRoutes defined in the page with intent specified. * TransitionRoutes
        # defined in the transition route groups with intent specified. *
        # TransitionRoutes defined in flow with intent specified. * TransitionRoutes
        # defined in the transition route groups with intent specified. *
        # TransitionRoutes defined in the page with only condition specified. *
        # TransitionRoutes defined in the transition route groups with only condition
        # specified.
        # Corresponds to the JSON property `transitionRoutes`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TransitionRoute>]
        attr_accessor :transition_routes
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @advanced_settings = args[:advanced_settings] if args.key?(:advanced_settings)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @entry_fulfillment = args[:entry_fulfillment] if args.key?(:entry_fulfillment)
          @event_handlers = args[:event_handlers] if args.key?(:event_handlers)
          @form = args[:form] if args.key?(:form)
          @knowledge_connector_settings = args[:knowledge_connector_settings] if args.key?(:knowledge_connector_settings)
          @name = args[:name] if args.key?(:name)
          @transition_route_groups = args[:transition_route_groups] if args.key?(:transition_route_groups)
          @transition_routes = args[:transition_routes] if args.key?(:transition_routes)
        end
      end
      
      # Represents page information communicated to and from the webhook.
      class GoogleCloudDialogflowCxV3PageInfo
        include Google::Apis::Core::Hashable
      
        # Always present for WebhookRequest. Ignored for WebhookResponse. The unique
        # identifier of the current page. Format: `projects//locations//agents//flows//
        # pages/`.
        # Corresponds to the JSON property `currentPage`
        # @return [String]
        attr_accessor :current_page
      
        # Always present for WebhookRequest. Ignored for WebhookResponse. The display
        # name of the current page.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents form information.
        # Corresponds to the JSON property `formInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3PageInfoFormInfo]
        attr_accessor :form_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @current_page = args[:current_page] if args.key?(:current_page)
          @display_name = args[:display_name] if args.key?(:display_name)
          @form_info = args[:form_info] if args.key?(:form_info)
        end
      end
      
      # Represents form information.
      class GoogleCloudDialogflowCxV3PageInfoFormInfo
        include Google::Apis::Core::Hashable
      
        # Optional for both WebhookRequest and WebhookResponse. The parameters contained
        # in the form. Note that the webhook cannot add or remove any form parameter.
        # Corresponds to the JSON property `parameterInfo`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3PageInfoFormInfoParameterInfo>]
        attr_accessor :parameter_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameter_info = args[:parameter_info] if args.key?(:parameter_info)
        end
      end
      
      # Represents parameter information.
      class GoogleCloudDialogflowCxV3PageInfoFormInfoParameterInfo
        include Google::Apis::Core::Hashable
      
        # Always present for WebhookRequest. Required for WebhookResponse. The human-
        # readable name of the parameter, unique within the form. This field cannot be
        # modified by the webhook.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional for WebhookRequest. Ignored for WebhookResponse. Indicates if the
        # parameter value was just collected on the last conversation turn.
        # Corresponds to the JSON property `justCollected`
        # @return [Boolean]
        attr_accessor :just_collected
        alias_method :just_collected?, :just_collected
      
        # Optional for both WebhookRequest and WebhookResponse. Indicates whether the
        # parameter is required. Optional parameters will not trigger prompts; however,
        # they are filled if the user specifies them. Required parameters must be filled
        # before form filling concludes.
        # Corresponds to the JSON property `required`
        # @return [Boolean]
        attr_accessor :required
        alias_method :required?, :required
      
        # Always present for WebhookRequest. Required for WebhookResponse. The state of
        # the parameter. This field can be set to INVALID by the webhook to invalidate
        # the parameter; other values set by the webhook will be ignored.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Optional for both WebhookRequest and WebhookResponse. The value of the
        # parameter. This field can be set by the webhook to change the parameter value.
        # Corresponds to the JSON property `value`
        # @return [Object]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
          @just_collected = args[:just_collected] if args.key?(:just_collected)
          @required = args[:required] if args.key?(:required)
          @state = args[:state] if args.key?(:state)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Represents the query input. It can contain one of: 1. A conversational query
      # in the form of text. 2. An intent query that specifies which intent to trigger.
      # 3. Natural language speech audio to be processed. 4. An event to be triggered.
      # 5. DTMF digits to invoke an intent and fill in parameter value. 6. The
      # results of a tool executed by the client.
      class GoogleCloudDialogflowCxV3QueryInput
        include Google::Apis::Core::Hashable
      
        # Represents the natural speech audio to be processed.
        # Corresponds to the JSON property `audio`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3AudioInput]
        attr_accessor :audio
      
        # Represents the input for dtmf event.
        # Corresponds to the JSON property `dtmf`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3DtmfInput]
        attr_accessor :dtmf
      
        # Represents the event to trigger.
        # Corresponds to the JSON property `event`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3EventInput]
        attr_accessor :event
      
        # Represents the intent to trigger programmatically rather than as a result of
        # natural language processing.
        # Corresponds to the JSON property `intent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3IntentInput]
        attr_accessor :intent
      
        # Required. The language of the input. See [Language Support](https://cloud.
        # google.com/dialogflow/cx/docs/reference/language) for a list of the currently
        # supported language codes. Note that queries in the same session do not
        # necessarily need to specify the same language.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Represents the natural language text to be processed.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TextInput]
        attr_accessor :text
      
        # The result of calling a tool's action that has been executed by the client.
        # Corresponds to the JSON property `toolCallResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ToolCallResult]
        attr_accessor :tool_call_result
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio = args[:audio] if args.key?(:audio)
          @dtmf = args[:dtmf] if args.key?(:dtmf)
          @event = args[:event] if args.key?(:event)
          @intent = args[:intent] if args.key?(:intent)
          @language_code = args[:language_code] if args.key?(:language_code)
          @text = args[:text] if args.key?(:text)
          @tool_call_result = args[:tool_call_result] if args.key?(:tool_call_result)
        end
      end
      
      # Represents a response message that can be returned by a conversational agent.
      # Response messages are also used for output audio synthesis. The approach is as
      # follows: * If at least one OutputAudioText response is present, then all
      # OutputAudioText responses are linearly concatenated, and the result is used
      # for output audio synthesis. * If the OutputAudioText responses are a mixture
      # of text and SSML, then the concatenated result is treated as SSML; otherwise,
      # the result is treated as either text or SSML as appropriate. The agent
      # designer should ideally use either text or SSML consistently throughout the
      # bot design. * Otherwise, all Text responses are linearly concatenated, and the
      # result is used for output audio synthesis. This approach allows for more
      # sophisticated user experience scenarios, where the text displayed to the user
      # may differ from what is heard.
      class GoogleCloudDialogflowCxV3ResponseMessage
        include Google::Apis::Core::Hashable
      
        # The channel which the response is associated with. Clients can specify the
        # channel via QueryParameters.channel, and only associated channel response will
        # be returned.
        # Corresponds to the JSON property `channel`
        # @return [String]
        attr_accessor :channel
      
        # Indicates that the conversation succeeded, i.e., the bot handled the issue
        # that the customer talked to it about. Dialogflow only uses this to determine
        # which conversations should be counted as successful and doesn't process the
        # metadata in this message in any way. Note that Dialogflow also considers
        # conversations that get to the conversation end page as successful even if they
        # don't return ConversationSuccess. You may set this, for example: * In the
        # entry_fulfillment of a Page if entering the page indicates that the
        # conversation succeeded. * In a webhook response when you determine that you
        # handled the customer issue.
        # Corresponds to the JSON property `conversationSuccess`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessageConversationSuccess]
        attr_accessor :conversation_success
      
        # Indicates that interaction with the Dialogflow agent has ended. This message
        # is generated by Dialogflow only and not supposed to be defined by the user.
        # Corresponds to the JSON property `endInteraction`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessageEndInteraction]
        attr_accessor :end_interaction
      
        # Represents info card response. If the response contains generative knowledge
        # prediction, Dialogflow will return a payload with Infobot Messenger compatible
        # info card. Otherwise, the info card response is skipped.
        # Corresponds to the JSON property `knowledgeInfoCard`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessageKnowledgeInfoCard]
        attr_accessor :knowledge_info_card
      
        # Indicates that the conversation should be handed off to a live agent.
        # Dialogflow only uses this to determine which conversations were handed off to
        # a human agent for measurement purposes. What else to do with this signal is up
        # to you and your handoff procedures. You may set this, for example: * In the
        # entry_fulfillment of a Page if entering the page indicates something went
        # extremely wrong in the conversation. * In a webhook response when you
        # determine that the customer issue can only be handled by a human.
        # Corresponds to the JSON property `liveAgentHandoff`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessageLiveAgentHandoff]
        attr_accessor :live_agent_handoff
      
        # Represents an audio message that is composed of both segments synthesized from
        # the Dialogflow agent prompts and ones hosted externally at the specified URIs.
        # The external URIs are specified via play_audio. This message is generated by
        # Dialogflow only and not supposed to be defined by the user.
        # Corresponds to the JSON property `mixedAudio`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessageMixedAudio]
        attr_accessor :mixed_audio
      
        # A text or ssml response that is preferentially used for TTS output audio
        # synthesis, as described in the comment on the ResponseMessage message.
        # Corresponds to the JSON property `outputAudioText`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessageOutputAudioText]
        attr_accessor :output_audio_text
      
        # Returns a response containing a custom, platform-specific payload.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Specifies an audio clip to be played by the client as part of the response.
        # Corresponds to the JSON property `playAudio`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessagePlayAudio]
        attr_accessor :play_audio
      
        # Response type.
        # Corresponds to the JSON property `responseType`
        # @return [String]
        attr_accessor :response_type
      
        # Represents the signal that telles the client to transfer the phone call
        # connected to the agent to a third-party endpoint.
        # Corresponds to the JSON property `telephonyTransferCall`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessageTelephonyTransferCall]
        attr_accessor :telephony_transfer_call
      
        # The text response message.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessageText]
        attr_accessor :text
      
        # Represents a call of a specific tool's action with the specified inputs.
        # Corresponds to the JSON property `toolCall`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ToolCall]
        attr_accessor :tool_call
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @channel = args[:channel] if args.key?(:channel)
          @conversation_success = args[:conversation_success] if args.key?(:conversation_success)
          @end_interaction = args[:end_interaction] if args.key?(:end_interaction)
          @knowledge_info_card = args[:knowledge_info_card] if args.key?(:knowledge_info_card)
          @live_agent_handoff = args[:live_agent_handoff] if args.key?(:live_agent_handoff)
          @mixed_audio = args[:mixed_audio] if args.key?(:mixed_audio)
          @output_audio_text = args[:output_audio_text] if args.key?(:output_audio_text)
          @payload = args[:payload] if args.key?(:payload)
          @play_audio = args[:play_audio] if args.key?(:play_audio)
          @response_type = args[:response_type] if args.key?(:response_type)
          @telephony_transfer_call = args[:telephony_transfer_call] if args.key?(:telephony_transfer_call)
          @text = args[:text] if args.key?(:text)
          @tool_call = args[:tool_call] if args.key?(:tool_call)
        end
      end
      
      # Indicates that the conversation succeeded, i.e., the bot handled the issue
      # that the customer talked to it about. Dialogflow only uses this to determine
      # which conversations should be counted as successful and doesn't process the
      # metadata in this message in any way. Note that Dialogflow also considers
      # conversations that get to the conversation end page as successful even if they
      # don't return ConversationSuccess. You may set this, for example: * In the
      # entry_fulfillment of a Page if entering the page indicates that the
      # conversation succeeded. * In a webhook response when you determine that you
      # handled the customer issue.
      class GoogleCloudDialogflowCxV3ResponseMessageConversationSuccess
        include Google::Apis::Core::Hashable
      
        # Custom metadata. Dialogflow doesn't impose any structure on this.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # Indicates that interaction with the Dialogflow agent has ended. This message
      # is generated by Dialogflow only and not supposed to be defined by the user.
      class GoogleCloudDialogflowCxV3ResponseMessageEndInteraction
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Represents info card response. If the response contains generative knowledge
      # prediction, Dialogflow will return a payload with Infobot Messenger compatible
      # info card. Otherwise, the info card response is skipped.
      class GoogleCloudDialogflowCxV3ResponseMessageKnowledgeInfoCard
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Indicates that the conversation should be handed off to a live agent.
      # Dialogflow only uses this to determine which conversations were handed off to
      # a human agent for measurement purposes. What else to do with this signal is up
      # to you and your handoff procedures. You may set this, for example: * In the
      # entry_fulfillment of a Page if entering the page indicates something went
      # extremely wrong in the conversation. * In a webhook response when you
      # determine that the customer issue can only be handled by a human.
      class GoogleCloudDialogflowCxV3ResponseMessageLiveAgentHandoff
        include Google::Apis::Core::Hashable
      
        # Custom metadata for your handoff procedure. Dialogflow doesn't impose any
        # structure on this.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # Represents an audio message that is composed of both segments synthesized from
      # the Dialogflow agent prompts and ones hosted externally at the specified URIs.
      # The external URIs are specified via play_audio. This message is generated by
      # Dialogflow only and not supposed to be defined by the user.
      class GoogleCloudDialogflowCxV3ResponseMessageMixedAudio
        include Google::Apis::Core::Hashable
      
        # Segments this audio response is composed of.
        # Corresponds to the JSON property `segments`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessageMixedAudioSegment>]
        attr_accessor :segments
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @segments = args[:segments] if args.key?(:segments)
        end
      end
      
      # Represents one segment of audio.
      class GoogleCloudDialogflowCxV3ResponseMessageMixedAudioSegment
        include Google::Apis::Core::Hashable
      
        # Output only. Whether the playback of this segment can be interrupted by the
        # end user's speech and the client should then start the next Dialogflow request.
        # Corresponds to the JSON property `allowPlaybackInterruption`
        # @return [Boolean]
        attr_accessor :allow_playback_interruption
        alias_method :allow_playback_interruption?, :allow_playback_interruption
      
        # Raw audio synthesized from the Dialogflow agent's response using the output
        # config specified in the request.
        # Corresponds to the JSON property `audio`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :audio
      
        # Client-specific URI that points to an audio clip accessible to the client.
        # Dialogflow does not impose any validation on it.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_playback_interruption = args[:allow_playback_interruption] if args.key?(:allow_playback_interruption)
          @audio = args[:audio] if args.key?(:audio)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # A text or ssml response that is preferentially used for TTS output audio
      # synthesis, as described in the comment on the ResponseMessage message.
      class GoogleCloudDialogflowCxV3ResponseMessageOutputAudioText
        include Google::Apis::Core::Hashable
      
        # Output only. Whether the playback of this message can be interrupted by the
        # end user's speech and the client can then starts the next Dialogflow request.
        # Corresponds to the JSON property `allowPlaybackInterruption`
        # @return [Boolean]
        attr_accessor :allow_playback_interruption
        alias_method :allow_playback_interruption?, :allow_playback_interruption
      
        # The SSML text to be synthesized. For more information, see [SSML](/speech/text-
        # to-speech/docs/ssml).
        # Corresponds to the JSON property `ssml`
        # @return [String]
        attr_accessor :ssml
      
        # The raw text to be synthesized.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_playback_interruption = args[:allow_playback_interruption] if args.key?(:allow_playback_interruption)
          @ssml = args[:ssml] if args.key?(:ssml)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Specifies an audio clip to be played by the client as part of the response.
      class GoogleCloudDialogflowCxV3ResponseMessagePlayAudio
        include Google::Apis::Core::Hashable
      
        # Output only. Whether the playback of this message can be interrupted by the
        # end user's speech and the client can then starts the next Dialogflow request.
        # Corresponds to the JSON property `allowPlaybackInterruption`
        # @return [Boolean]
        attr_accessor :allow_playback_interruption
        alias_method :allow_playback_interruption?, :allow_playback_interruption
      
        # Required. URI of the audio clip. Dialogflow does not impose any validation on
        # this value. It is specific to the client that reads it.
        # Corresponds to the JSON property `audioUri`
        # @return [String]
        attr_accessor :audio_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_playback_interruption = args[:allow_playback_interruption] if args.key?(:allow_playback_interruption)
          @audio_uri = args[:audio_uri] if args.key?(:audio_uri)
        end
      end
      
      # Represents the signal that telles the client to transfer the phone call
      # connected to the agent to a third-party endpoint.
      class GoogleCloudDialogflowCxV3ResponseMessageTelephonyTransferCall
        include Google::Apis::Core::Hashable
      
        # Transfer the call to a phone number in [E.164 format](https://en.wikipedia.org/
        # wiki/E.164).
        # Corresponds to the JSON property `phoneNumber`
        # @return [String]
        attr_accessor :phone_number
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @phone_number = args[:phone_number] if args.key?(:phone_number)
        end
      end
      
      # The text response message.
      class GoogleCloudDialogflowCxV3ResponseMessageText
        include Google::Apis::Core::Hashable
      
        # Output only. Whether the playback of this message can be interrupted by the
        # end user's speech and the client can then starts the next Dialogflow request.
        # Corresponds to the JSON property `allowPlaybackInterruption`
        # @return [Boolean]
        attr_accessor :allow_playback_interruption
        alias_method :allow_playback_interruption?, :allow_playback_interruption
      
        # Required. A collection of text response variants. If multiple variants are
        # defined, only one text response variant is returned at runtime.
        # Corresponds to the JSON property `text`
        # @return [Array<String>]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_playback_interruption = args[:allow_playback_interruption] if args.key?(:allow_playback_interruption)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Metadata returned for the Environments.RunContinuousTest long running
      # operation.
      class GoogleCloudDialogflowCxV3RunContinuousTestMetadata
        include Google::Apis::Core::Hashable
      
        # The test errors.
        # Corresponds to the JSON property `errors`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TestError>]
        attr_accessor :errors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @errors = args[:errors] if args.key?(:errors)
        end
      end
      
      # The response message for Environments.RunContinuousTest.
      class GoogleCloudDialogflowCxV3RunContinuousTestResponse
        include Google::Apis::Core::Hashable
      
        # Represents a result from running a test case in an agent environment.
        # Corresponds to the JSON property `continuousTestResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ContinuousTestResult]
        attr_accessor :continuous_test_result
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @continuous_test_result = args[:continuous_test_result] if args.key?(:continuous_test_result)
        end
      end
      
      # Metadata returned for the TestCases.RunTestCase long running operation. This
      # message currently has no fields.
      class GoogleCloudDialogflowCxV3RunTestCaseMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for TestCases.RunTestCase.
      class GoogleCloudDialogflowCxV3RunTestCaseResponse
        include Google::Apis::Core::Hashable
      
        # Represents a result from running a test case in an agent environment.
        # Corresponds to the JSON property `result`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TestCaseResult]
        attr_accessor :result
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @result = args[:result] if args.key?(:result)
        end
      end
      
      # Represents session information communicated to and from the webhook.
      class GoogleCloudDialogflowCxV3SessionInfo
        include Google::Apis::Core::Hashable
      
        # Optional for WebhookRequest. Optional for WebhookResponse. All parameters
        # collected from forms and intents during the session. Parameters can be created,
        # updated, or removed by the webhook. To remove a parameter from the session,
        # the webhook should explicitly set the parameter value to null in
        # WebhookResponse. The map is keyed by parameters' display names.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        # Always present for WebhookRequest. Ignored for WebhookResponse. The unique
        # identifier of the session. This field can be used by the webhook to identify a
        # session. Format: `projects//locations//agents//sessions/` or `projects//
        # locations//agents//environments//sessions/` if environment is specified.
        # Corresponds to the JSON property `session`
        # @return [String]
        attr_accessor :session
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameters = args[:parameters] if args.key?(:parameters)
          @session = args[:session] if args.key?(:session)
        end
      end
      
      # Represents a test case.
      class GoogleCloudDialogflowCxV3TestCase
        include Google::Apis::Core::Hashable
      
        # Output only. When the test was created.
        # Corresponds to the JSON property `creationTime`
        # @return [String]
        attr_accessor :creation_time
      
        # Required. The human-readable name of the test case, unique within the agent.
        # Limit of 200 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a result from running a test case in an agent environment.
        # Corresponds to the JSON property `lastTestResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TestCaseResult]
        attr_accessor :last_test_result
      
        # The unique identifier of the test case. TestCases.CreateTestCase will populate
        # the name automatically. Otherwise use format: `projects//locations//agents//
        # testCases/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Additional freeform notes about the test case. Limit of 400 characters.
        # Corresponds to the JSON property `notes`
        # @return [String]
        attr_accessor :notes
      
        # Tags are short descriptions that users may apply to test cases for
        # organizational and filtering purposes. Each tag should start with "#" and has
        # a limit of 30 characters.
        # Corresponds to the JSON property `tags`
        # @return [Array<String>]
        attr_accessor :tags
      
        # The conversation turns uttered when the test case was created, in
        # chronological order. These include the canonical set of agent utterances that
        # should occur when the agent is working properly.
        # Corresponds to the JSON property `testCaseConversationTurns`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ConversationTurn>]
        attr_accessor :test_case_conversation_turns
      
        # Represents configurations for a test case.
        # Corresponds to the JSON property `testConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TestConfig]
        attr_accessor :test_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @creation_time = args[:creation_time] if args.key?(:creation_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @last_test_result = args[:last_test_result] if args.key?(:last_test_result)
          @name = args[:name] if args.key?(:name)
          @notes = args[:notes] if args.key?(:notes)
          @tags = args[:tags] if args.key?(:tags)
          @test_case_conversation_turns = args[:test_case_conversation_turns] if args.key?(:test_case_conversation_turns)
          @test_config = args[:test_config] if args.key?(:test_config)
        end
      end
      
      # Error info for importing a test.
      class GoogleCloudDialogflowCxV3TestCaseError
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :status
      
        # Represents a test case.
        # Corresponds to the JSON property `testCase`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3TestCase]
        attr_accessor :test_case
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @status = args[:status] if args.key?(:status)
          @test_case = args[:test_case] if args.key?(:test_case)
        end
      end
      
      # Represents a result from running a test case in an agent environment.
      class GoogleCloudDialogflowCxV3TestCaseResult
        include Google::Apis::Core::Hashable
      
        # The conversation turns uttered during the test case replay in chronological
        # order.
        # Corresponds to the JSON property `conversationTurns`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ConversationTurn>]
        attr_accessor :conversation_turns
      
        # Environment where the test was run. If not set, it indicates the draft
        # environment.
        # Corresponds to the JSON property `environment`
        # @return [String]
        attr_accessor :environment
      
        # The resource name for the test case result. Format: `projects//locations//
        # agents//testCases//results/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Whether the test case passed in the agent environment.
        # Corresponds to the JSON property `testResult`
        # @return [String]
        attr_accessor :test_result
      
        # The time that the test was run.
        # Corresponds to the JSON property `testTime`
        # @return [String]
        attr_accessor :test_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_turns = args[:conversation_turns] if args.key?(:conversation_turns)
          @environment = args[:environment] if args.key?(:environment)
          @name = args[:name] if args.key?(:name)
          @test_result = args[:test_result] if args.key?(:test_result)
          @test_time = args[:test_time] if args.key?(:test_time)
        end
      end
      
      # Represents configurations for a test case.
      class GoogleCloudDialogflowCxV3TestConfig
        include Google::Apis::Core::Hashable
      
        # Flow name to start the test case with. Format: `projects//locations//agents//
        # flows/`. Only one of `flow` and `page` should be set to indicate the starting
        # point of the test case. If neither is set, the test case will start with start
        # page on the default start flow.
        # Corresponds to the JSON property `flow`
        # @return [String]
        attr_accessor :flow
      
        # The page to start the test case with. Format: `projects//locations//agents//
        # flows//pages/`. Only one of `flow` and `page` should be set to indicate the
        # starting point of the test case. If neither is set, the test case will start
        # with start page on the default start flow.
        # Corresponds to the JSON property `page`
        # @return [String]
        attr_accessor :page
      
        # Session parameters to be compared when calculating differences.
        # Corresponds to the JSON property `trackingParameters`
        # @return [Array<String>]
        attr_accessor :tracking_parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @flow = args[:flow] if args.key?(:flow)
          @page = args[:page] if args.key?(:page)
          @tracking_parameters = args[:tracking_parameters] if args.key?(:tracking_parameters)
        end
      end
      
      # Error info for running a test.
      class GoogleCloudDialogflowCxV3TestError
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :status
      
        # The test case resource name.
        # Corresponds to the JSON property `testCase`
        # @return [String]
        attr_accessor :test_case
      
        # The timestamp when the test was completed.
        # Corresponds to the JSON property `testTime`
        # @return [String]
        attr_accessor :test_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @status = args[:status] if args.key?(:status)
          @test_case = args[:test_case] if args.key?(:test_case)
          @test_time = args[:test_time] if args.key?(:test_time)
        end
      end
      
      # The description of differences between original and replayed agent output.
      class GoogleCloudDialogflowCxV3TestRunDifference
        include Google::Apis::Core::Hashable
      
        # A human readable description of the diff, showing the actual output vs
        # expected output.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The type of diff.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Represents the natural language text to be processed.
      class GoogleCloudDialogflowCxV3TextInput
        include Google::Apis::Core::Hashable
      
        # Required. The UTF-8 encoded natural language text to be processed.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Represents a call of a specific tool's action with the specified inputs.
      class GoogleCloudDialogflowCxV3ToolCall
        include Google::Apis::Core::Hashable
      
        # Required. The name of the tool's action associated with this call.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # Optional. The action's input parameters.
        # Corresponds to the JSON property `inputParameters`
        # @return [Hash<String,Object>]
        attr_accessor :input_parameters
      
        # Required. The tool associated with this call. Format: `projects//locations//
        # agents//tools/`.
        # Corresponds to the JSON property `tool`
        # @return [String]
        attr_accessor :tool
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @input_parameters = args[:input_parameters] if args.key?(:input_parameters)
          @tool = args[:tool] if args.key?(:tool)
        end
      end
      
      # The result of calling a tool's action that has been executed by the client.
      class GoogleCloudDialogflowCxV3ToolCallResult
        include Google::Apis::Core::Hashable
      
        # Required. The name of the tool's action associated with this call.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # An error produced by the tool call.
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ToolCallResultError]
        attr_accessor :error
      
        # The tool call's output parameters.
        # Corresponds to the JSON property `outputParameters`
        # @return [Hash<String,Object>]
        attr_accessor :output_parameters
      
        # Required. The tool associated with this call. Format: `projects//locations//
        # agents//tools/`.
        # Corresponds to the JSON property `tool`
        # @return [String]
        attr_accessor :tool
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @error = args[:error] if args.key?(:error)
          @output_parameters = args[:output_parameters] if args.key?(:output_parameters)
          @tool = args[:tool] if args.key?(:tool)
        end
      end
      
      # An error produced by the tool call.
      class GoogleCloudDialogflowCxV3ToolCallResultError
        include Google::Apis::Core::Hashable
      
        # Optional. The error message of the function.
        # Corresponds to the JSON property `message`
        # @return [String]
        attr_accessor :message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @message = args[:message] if args.key?(:message)
        end
      end
      
      # A transition route specifies a intent that can be matched and/or a data
      # condition that can be evaluated during a session. When a specified transition
      # is matched, the following actions are taken in order: * If there is a `
      # trigger_fulfillment` associated with the transition, it will be called. * If
      # there is a `target_page` associated with the transition, the session will
      # transition into the specified page. * If there is a `target_flow` associated
      # with the transition, the session will transition into the specified flow.
      class GoogleCloudDialogflowCxV3TransitionRoute
        include Google::Apis::Core::Hashable
      
        # The condition to evaluate against form parameters or session parameters. See
        # the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/
        # reference/condition). At least one of `intent` or `condition` must be
        # specified. When both `intent` and `condition` are specified, the transition
        # can only happen when both are fulfilled.
        # Corresponds to the JSON property `condition`
        # @return [String]
        attr_accessor :condition
      
        # Optional. The description of the transition route. The maximum length is 500
        # characters.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The unique identifier of an Intent. Format: `projects//locations//agents//
        # intents/`. Indicates that the transition can only happen when the given intent
        # is matched. At least one of `intent` or `condition` must be specified. When
        # both `intent` and `condition` are specified, the transition can only happen
        # when both are fulfilled.
        # Corresponds to the JSON property `intent`
        # @return [String]
        attr_accessor :intent
      
        # Output only. The unique identifier of this transition route.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The target flow to transition to. Format: `projects//locations//agents//flows/`
        # .
        # Corresponds to the JSON property `targetFlow`
        # @return [String]
        attr_accessor :target_flow
      
        # The target page to transition to. Format: `projects//locations//agents//flows//
        # pages/`.
        # Corresponds to the JSON property `targetPage`
        # @return [String]
        attr_accessor :target_page
      
        # A fulfillment can do one or more of the following actions at the same time: *
        # Generate rich message responses. * Set parameter values. * Call the webhook.
        # Fulfillments can be called at various stages in the Page or Form lifecycle.
        # For example, when a DetectIntentRequest drives a session to enter a new page,
        # the page's entry fulfillment can add a static response to the QueryResult in
        # the returning DetectIntentResponse, call the webhook (for example, to load
        # user data from a database), or both.
        # Corresponds to the JSON property `triggerFulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3Fulfillment]
        attr_accessor :trigger_fulfillment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @condition = args[:condition] if args.key?(:condition)
          @description = args[:description] if args.key?(:description)
          @intent = args[:intent] if args.key?(:intent)
          @name = args[:name] if args.key?(:name)
          @target_flow = args[:target_flow] if args.key?(:target_flow)
          @target_page = args[:target_page] if args.key?(:target_page)
          @trigger_fulfillment = args[:trigger_fulfillment] if args.key?(:trigger_fulfillment)
        end
      end
      
      # Collection of all signals that were extracted for a single turn of the
      # conversation.
      class GoogleCloudDialogflowCxV3TurnSignals
        include Google::Apis::Core::Hashable
      
        # Whether agent responded with LiveAgentHandoff fulfillment.
        # Corresponds to the JSON property `agentEscalated`
        # @return [Boolean]
        attr_accessor :agent_escalated
        alias_method :agent_escalated?, :agent_escalated
      
        # Whether user was using DTMF input.
        # Corresponds to the JSON property `dtmfUsed`
        # @return [Boolean]
        attr_accessor :dtmf_used
        alias_method :dtmf_used?, :dtmf_used
      
        # Failure reasons of the turn.
        # Corresponds to the JSON property `failureReasons`
        # @return [Array<String>]
        attr_accessor :failure_reasons
      
        # Whether NLU predicted NO_MATCH.
        # Corresponds to the JSON property `noMatch`
        # @return [Boolean]
        attr_accessor :no_match
        alias_method :no_match?, :no_match
      
        # Whether user provided no input.
        # Corresponds to the JSON property `noUserInput`
        # @return [Boolean]
        attr_accessor :no_user_input
        alias_method :no_user_input?, :no_user_input
      
        # Whether turn resulted in End Session page.
        # Corresponds to the JSON property `reachedEndPage`
        # @return [Boolean]
        attr_accessor :reached_end_page
        alias_method :reached_end_page?, :reached_end_page
      
        # Sentiment magnitude of the user utterance if [sentiment](https://cloud.google.
        # com/dialogflow/cx/docs/concept/sentiment) was enabled.
        # Corresponds to the JSON property `sentimentMagnitude`
        # @return [Float]
        attr_accessor :sentiment_magnitude
      
        # Sentiment score of the user utterance if [sentiment](https://cloud.google.com/
        # dialogflow/cx/docs/concept/sentiment) was enabled.
        # Corresponds to the JSON property `sentimentScore`
        # @return [Float]
        attr_accessor :sentiment_score
      
        # Whether user was specifically asking for a live agent.
        # Corresponds to the JSON property `userEscalated`
        # @return [Boolean]
        attr_accessor :user_escalated
        alias_method :user_escalated?, :user_escalated
      
        # Human-readable statuses of the webhooks triggered during this turn.
        # Corresponds to the JSON property `webhookStatuses`
        # @return [Array<String>]
        attr_accessor :webhook_statuses
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_escalated = args[:agent_escalated] if args.key?(:agent_escalated)
          @dtmf_used = args[:dtmf_used] if args.key?(:dtmf_used)
          @failure_reasons = args[:failure_reasons] if args.key?(:failure_reasons)
          @no_match = args[:no_match] if args.key?(:no_match)
          @no_user_input = args[:no_user_input] if args.key?(:no_user_input)
          @reached_end_page = args[:reached_end_page] if args.key?(:reached_end_page)
          @sentiment_magnitude = args[:sentiment_magnitude] if args.key?(:sentiment_magnitude)
          @sentiment_score = args[:sentiment_score] if args.key?(:sentiment_score)
          @user_escalated = args[:user_escalated] if args.key?(:user_escalated)
          @webhook_statuses = args[:webhook_statuses] if args.key?(:webhook_statuses)
        end
      end
      
      # Webhooks host the developer's business logic. During a session, webhooks allow
      # the developer to use the data extracted by Dialogflow's natural language
      # processing to generate dynamic responses, validate collected data, or trigger
      # actions on the backend.
      class GoogleCloudDialogflowCxV3Webhook
        include Google::Apis::Core::Hashable
      
        # Indicates whether the webhook is disabled.
        # Corresponds to the JSON property `disabled`
        # @return [Boolean]
        attr_accessor :disabled
        alias_method :disabled?, :disabled
      
        # Required. The human-readable name of the webhook, unique within the agent.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents configuration for a generic web service.
        # Corresponds to the JSON property `genericWebService`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3WebhookGenericWebService]
        attr_accessor :generic_web_service
      
        # The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook
        # method. Webhooks.CreateWebhook populates the name automatically. Format: `
        # projects//locations//agents//webhooks/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Represents configuration for a [Service Directory](https://cloud.google.com/
        # service-directory) service.
        # Corresponds to the JSON property `serviceDirectory`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfig]
        attr_accessor :service_directory
      
        # Webhook execution timeout. Execution is considered failed if Dialogflow doesn'
        # t receive a response from webhook at the end of the timeout period. Defaults
        # to 5 seconds, maximum allowed timeout is 30 seconds.
        # Corresponds to the JSON property `timeout`
        # @return [String]
        attr_accessor :timeout
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disabled = args[:disabled] if args.key?(:disabled)
          @display_name = args[:display_name] if args.key?(:display_name)
          @generic_web_service = args[:generic_web_service] if args.key?(:generic_web_service)
          @name = args[:name] if args.key?(:name)
          @service_directory = args[:service_directory] if args.key?(:service_directory)
          @timeout = args[:timeout] if args.key?(:timeout)
        end
      end
      
      # Represents configuration for a generic web service.
      class GoogleCloudDialogflowCxV3WebhookGenericWebService
        include Google::Apis::Core::Hashable
      
        # Optional. Specifies a list of allowed custom CA certificates (in DER format)
        # for HTTPS verification. This overrides the default SSL trust store. If this is
        # empty or unspecified, Dialogflow will use Google's default trust store to
        # verify certificates. N.B. Make sure the HTTPS server certificates are signed
        # with "subject alt name". For instance a certificate can be self-signed using
        # the following command, ``` openssl x509 -req -days 200 -in example.com.csr \ -
        # signkey example.com.key \ -out example.com.crt \ -extfile <(printf "\
        # nsubjectAltName='DNS:www.example.com'") ```
        # Corresponds to the JSON property `allowedCaCerts`
        # @return [Array<String>]
        attr_accessor :allowed_ca_certs
      
        # Optional. HTTP method for the flexible webhook calls. Standard webhook always
        # uses POST.
        # Corresponds to the JSON property `httpMethod`
        # @return [String]
        attr_accessor :http_method
      
        # Represents configuration of OAuth client credential flow for 3rd party API
        # authentication.
        # Corresponds to the JSON property `oauthConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3WebhookGenericWebServiceOAuthConfig]
        attr_accessor :oauth_config
      
        # Optional. Maps the values extracted from specific fields of the flexible
        # webhook response into session parameters. - Key: session parameter name -
        # Value: field path in the webhook response
        # Corresponds to the JSON property `parameterMapping`
        # @return [Hash<String,String>]
        attr_accessor :parameter_mapping
      
        # The password for HTTP Basic authentication.
        # Corresponds to the JSON property `password`
        # @return [String]
        attr_accessor :password
      
        # Optional. Defines a custom JSON object as request body to send to flexible
        # webhook.
        # Corresponds to the JSON property `requestBody`
        # @return [String]
        attr_accessor :request_body
      
        # The HTTP request headers to send together with webhook requests.
        # Corresponds to the JSON property `requestHeaders`
        # @return [Hash<String,String>]
        attr_accessor :request_headers
      
        # Optional. The SecretManager secret version resource storing the username:
        # password pair for HTTP Basic authentication. Format: `projects/`project`/
        # secrets/`secret`/versions/`version``
        # Corresponds to the JSON property `secretVersionForUsernamePassword`
        # @return [String]
        attr_accessor :secret_version_for_username_password
      
        # Optional. The HTTP request headers to send together with webhook requests.
        # Header values are stored in SecretManager secret versions. When the same
        # header name is specified in both `request_headers` and `
        # secret_versions_for_request_headers`, the value in `
        # secret_versions_for_request_headers` will be used.
        # Corresponds to the JSON property `secretVersionsForRequestHeaders`
        # @return [Hash<String,Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3WebhookGenericWebServiceSecretVersionHeaderValue>]
        attr_accessor :secret_versions_for_request_headers
      
        # Optional. Indicate the auth token type generated from the [Diglogflow service
        # agent](https://cloud.google.com/iam/docs/service-agents#dialogflow-service-
        # agent). The generated token is sent in the Authorization header.
        # Corresponds to the JSON property `serviceAgentAuth`
        # @return [String]
        attr_accessor :service_agent_auth
      
        # Required. The webhook URI for receiving POST requests. It must use https
        # protocol.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        # The user name for HTTP Basic authentication.
        # Corresponds to the JSON property `username`
        # @return [String]
        attr_accessor :username
      
        # Optional. Type of the webhook.
        # Corresponds to the JSON property `webhookType`
        # @return [String]
        attr_accessor :webhook_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allowed_ca_certs = args[:allowed_ca_certs] if args.key?(:allowed_ca_certs)
          @http_method = args[:http_method] if args.key?(:http_method)
          @oauth_config = args[:oauth_config] if args.key?(:oauth_config)
          @parameter_mapping = args[:parameter_mapping] if args.key?(:parameter_mapping)
          @password = args[:password] if args.key?(:password)
          @request_body = args[:request_body] if args.key?(:request_body)
          @request_headers = args[:request_headers] if args.key?(:request_headers)
          @secret_version_for_username_password = args[:secret_version_for_username_password] if args.key?(:secret_version_for_username_password)
          @secret_versions_for_request_headers = args[:secret_versions_for_request_headers] if args.key?(:secret_versions_for_request_headers)
          @service_agent_auth = args[:service_agent_auth] if args.key?(:service_agent_auth)
          @uri = args[:uri] if args.key?(:uri)
          @username = args[:username] if args.key?(:username)
          @webhook_type = args[:webhook_type] if args.key?(:webhook_type)
        end
      end
      
      # Represents configuration of OAuth client credential flow for 3rd party API
      # authentication.
      class GoogleCloudDialogflowCxV3WebhookGenericWebServiceOAuthConfig
        include Google::Apis::Core::Hashable
      
        # Required. The client ID provided by the 3rd party platform.
        # Corresponds to the JSON property `clientId`
        # @return [String]
        attr_accessor :client_id
      
        # Optional. The client secret provided by the 3rd party platform.
        # Corresponds to the JSON property `clientSecret`
        # @return [String]
        attr_accessor :client_secret
      
        # Optional. The OAuth scopes to grant.
        # Corresponds to the JSON property `scopes`
        # @return [Array<String>]
        attr_accessor :scopes
      
        # Optional. The name of the SecretManager secret version resource storing the
        # client secret. If this field is set, the `client_secret` field will be ignored.
        # Format: `projects/`project`/secrets/`secret`/versions/`version``
        # Corresponds to the JSON property `secretVersionForClientSecret`
        # @return [String]
        attr_accessor :secret_version_for_client_secret
      
        # Required. The token endpoint provided by the 3rd party platform to exchange an
        # access token.
        # Corresponds to the JSON property `tokenEndpoint`
        # @return [String]
        attr_accessor :token_endpoint
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @client_id = args[:client_id] if args.key?(:client_id)
          @client_secret = args[:client_secret] if args.key?(:client_secret)
          @scopes = args[:scopes] if args.key?(:scopes)
          @secret_version_for_client_secret = args[:secret_version_for_client_secret] if args.key?(:secret_version_for_client_secret)
          @token_endpoint = args[:token_endpoint] if args.key?(:token_endpoint)
        end
      end
      
      # Represents the value of an HTTP header stored in a SecretManager secret
      # version.
      class GoogleCloudDialogflowCxV3WebhookGenericWebServiceSecretVersionHeaderValue
        include Google::Apis::Core::Hashable
      
        # Required. The SecretManager secret version resource storing the header value.
        # Format: `projects/`project`/secrets/`secret`/versions/`version``
        # Corresponds to the JSON property `secretVersion`
        # @return [String]
        attr_accessor :secret_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @secret_version = args[:secret_version] if args.key?(:secret_version)
        end
      end
      
      # The request message for a webhook call. The request is sent as a JSON object
      # and the field names will be presented in camel cases. You may see undocumented
      # fields in an actual request. These fields are used internally by Dialogflow
      # and should be ignored.
      class GoogleCloudDialogflowCxV3WebhookRequest
        include Google::Apis::Core::Hashable
      
        # Always present. The unique identifier of the DetectIntentResponse that will be
        # returned to the API caller.
        # Corresponds to the JSON property `detectIntentResponseId`
        # @return [String]
        attr_accessor :detect_intent_response_id
      
        # If DTMF was provided as input, this field will contain the DTMF digits.
        # Corresponds to the JSON property `dtmfDigits`
        # @return [String]
        attr_accessor :dtmf_digits
      
        # Represents fulfillment information communicated to the webhook.
        # Corresponds to the JSON property `fulfillmentInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3WebhookRequestFulfillmentInfo]
        attr_accessor :fulfillment_info
      
        # Represents intent information communicated to the webhook.
        # Corresponds to the JSON property `intentInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3WebhookRequestIntentInfo]
        attr_accessor :intent_info
      
        # The language code specified in the original request.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Represents the language information of the request.
        # Corresponds to the JSON property `languageInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3LanguageInfo]
        attr_accessor :language_info
      
        # The list of rich message responses to present to the user. Webhook can choose
        # to append or replace this list in WebhookResponse.fulfillment_response;
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessage>]
        attr_accessor :messages
      
        # Represents page information communicated to and from the webhook.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3PageInfo]
        attr_accessor :page_info
      
        # Custom data set in QueryParameters.payload.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Represents the result of sentiment analysis.
        # Corresponds to the JSON property `sentimentAnalysisResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3WebhookRequestSentimentAnalysisResult]
        attr_accessor :sentiment_analysis_result
      
        # Represents session information communicated to and from the webhook.
        # Corresponds to the JSON property `sessionInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3SessionInfo]
        attr_accessor :session_info
      
        # If natural language text was provided as input, this field will contain a copy
        # of the text.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # If natural language speech audio was provided as input, this field will
        # contain the transcript for the audio.
        # Corresponds to the JSON property `transcript`
        # @return [String]
        attr_accessor :transcript
      
        # If an event was provided as input, this field will contain the name of the
        # event.
        # Corresponds to the JSON property `triggerEvent`
        # @return [String]
        attr_accessor :trigger_event
      
        # If an intent was provided as input, this field will contain a copy of the
        # intent identifier. Format: `projects//locations//agents//intents/`.
        # Corresponds to the JSON property `triggerIntent`
        # @return [String]
        attr_accessor :trigger_intent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @detect_intent_response_id = args[:detect_intent_response_id] if args.key?(:detect_intent_response_id)
          @dtmf_digits = args[:dtmf_digits] if args.key?(:dtmf_digits)
          @fulfillment_info = args[:fulfillment_info] if args.key?(:fulfillment_info)
          @intent_info = args[:intent_info] if args.key?(:intent_info)
          @language_code = args[:language_code] if args.key?(:language_code)
          @language_info = args[:language_info] if args.key?(:language_info)
          @messages = args[:messages] if args.key?(:messages)
          @page_info = args[:page_info] if args.key?(:page_info)
          @payload = args[:payload] if args.key?(:payload)
          @sentiment_analysis_result = args[:sentiment_analysis_result] if args.key?(:sentiment_analysis_result)
          @session_info = args[:session_info] if args.key?(:session_info)
          @text = args[:text] if args.key?(:text)
          @transcript = args[:transcript] if args.key?(:transcript)
          @trigger_event = args[:trigger_event] if args.key?(:trigger_event)
          @trigger_intent = args[:trigger_intent] if args.key?(:trigger_intent)
        end
      end
      
      # Represents fulfillment information communicated to the webhook.
      class GoogleCloudDialogflowCxV3WebhookRequestFulfillmentInfo
        include Google::Apis::Core::Hashable
      
        # Always present. The value of the Fulfillment.tag field will be populated in
        # this field by Dialogflow when the associated webhook is called. The tag is
        # typically used by the webhook service to identify which fulfillment is being
        # called, but it could be used for other purposes.
        # Corresponds to the JSON property `tag`
        # @return [String]
        attr_accessor :tag
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tag = args[:tag] if args.key?(:tag)
        end
      end
      
      # Represents intent information communicated to the webhook.
      class GoogleCloudDialogflowCxV3WebhookRequestIntentInfo
        include Google::Apis::Core::Hashable
      
        # The confidence of the matched intent. Values range from 0.0 (completely
        # uncertain) to 1.0 (completely certain).
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Always present. The display name of the last matched intent.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Always present. The unique identifier of the last matched intent. Format: `
        # projects//locations//agents//intents/`.
        # Corresponds to the JSON property `lastMatchedIntent`
        # @return [String]
        attr_accessor :last_matched_intent
      
        # Parameters identified as a result of intent matching. This is a map of the
        # name of the identified parameter to the value of the parameter identified from
        # the user's utterance. All parameters defined in the matched intent that are
        # identified will be surfaced here.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3WebhookRequestIntentInfoIntentParameterValue>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @display_name = args[:display_name] if args.key?(:display_name)
          @last_matched_intent = args[:last_matched_intent] if args.key?(:last_matched_intent)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Represents a value for an intent parameter.
      class GoogleCloudDialogflowCxV3WebhookRequestIntentInfoIntentParameterValue
        include Google::Apis::Core::Hashable
      
        # Always present. Original text value extracted from user utterance.
        # Corresponds to the JSON property `originalValue`
        # @return [String]
        attr_accessor :original_value
      
        # Always present. Structured value for the parameter extracted from user
        # utterance.
        # Corresponds to the JSON property `resolvedValue`
        # @return [Object]
        attr_accessor :resolved_value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @original_value = args[:original_value] if args.key?(:original_value)
          @resolved_value = args[:resolved_value] if args.key?(:resolved_value)
        end
      end
      
      # Represents the result of sentiment analysis.
      class GoogleCloudDialogflowCxV3WebhookRequestSentimentAnalysisResult
        include Google::Apis::Core::Hashable
      
        # A non-negative number in the [0, +inf) range, which represents the absolute
        # magnitude of sentiment, regardless of score (positive or negative).
        # Corresponds to the JSON property `magnitude`
        # @return [Float]
        attr_accessor :magnitude
      
        # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @magnitude = args[:magnitude] if args.key?(:magnitude)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # The response message for a webhook call.
      class GoogleCloudDialogflowCxV3WebhookResponse
        include Google::Apis::Core::Hashable
      
        # Represents a fulfillment response to the user.
        # Corresponds to the JSON property `fulfillmentResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3WebhookResponseFulfillmentResponse]
        attr_accessor :fulfillment_response
      
        # Represents page information communicated to and from the webhook.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3PageInfo]
        attr_accessor :page_info
      
        # Value to append directly to QueryResult.webhook_payloads.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Represents session information communicated to and from the webhook.
        # Corresponds to the JSON property `sessionInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3SessionInfo]
        attr_accessor :session_info
      
        # The target flow to transition to. Format: `projects//locations//agents//flows/`
        # .
        # Corresponds to the JSON property `targetFlow`
        # @return [String]
        attr_accessor :target_flow
      
        # The target page to transition to. Format: `projects//locations//agents//flows//
        # pages/`.
        # Corresponds to the JSON property `targetPage`
        # @return [String]
        attr_accessor :target_page
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @fulfillment_response = args[:fulfillment_response] if args.key?(:fulfillment_response)
          @page_info = args[:page_info] if args.key?(:page_info)
          @payload = args[:payload] if args.key?(:payload)
          @session_info = args[:session_info] if args.key?(:session_info)
          @target_flow = args[:target_flow] if args.key?(:target_flow)
          @target_page = args[:target_page] if args.key?(:target_page)
        end
      end
      
      # Represents a fulfillment response to the user.
      class GoogleCloudDialogflowCxV3WebhookResponseFulfillmentResponse
        include Google::Apis::Core::Hashable
      
        # Merge behavior for `messages`.
        # Corresponds to the JSON property `mergeBehavior`
        # @return [String]
        attr_accessor :merge_behavior
      
        # The list of rich message responses to present to the user.
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3ResponseMessage>]
        attr_accessor :messages
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @merge_behavior = args[:merge_behavior] if args.key?(:merge_behavior)
          @messages = args[:messages] if args.key?(:messages)
        end
      end
      
      # Represents configuration for a [Service Directory](https://cloud.google.com/
      # service-directory) service.
      class GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfig
        include Google::Apis::Core::Hashable
      
        # Represents configuration for a generic web service.
        # Corresponds to the JSON property `genericWebService`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3WebhookGenericWebService]
        attr_accessor :generic_web_service
      
        # Required. The name of [Service Directory](https://cloud.google.com/service-
        # directory) service. Format: `projects//locations//namespaces//services/`. `
        # Location ID` of the service directory must be the same as the location of the
        # agent.
        # Corresponds to the JSON property `service`
        # @return [String]
        attr_accessor :service
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_web_service = args[:generic_web_service] if args.key?(:generic_web_service)
          @service = args[:service] if args.key?(:service)
        end
      end
      
      # Hierarchical advanced settings for agent/flow/page/fulfillment/parameter.
      # Settings exposed at lower level overrides the settings exposed at higher level.
      # Overriding occurs at the sub-setting level. For example, the
      # playback_interruption_settings at fulfillment level only overrides the
      # playback_interruption_settings at the agent level, leaving other settings at
      # the agent level unchanged. DTMF settings does not override each other. DTMF
      # settings set at different levels define DTMF detections running in parallel.
      # Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
      class GoogleCloudDialogflowCxV3beta1AdvancedSettings
        include Google::Apis::Core::Hashable
      
        # Google Cloud Storage location for a Dialogflow operation that writes or
        # exports objects (e.g. exported agent or transcripts) outside of Dialogflow.
        # Corresponds to the JSON property `audioExportGcsDestination`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1GcsDestination]
        attr_accessor :audio_export_gcs_destination
      
        # Define behaviors for DTMF (dual tone multi frequency).
        # Corresponds to the JSON property `dtmfSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1AdvancedSettingsDtmfSettings]
        attr_accessor :dtmf_settings
      
        # Define behaviors on logging.
        # Corresponds to the JSON property `loggingSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1AdvancedSettingsLoggingSettings]
        attr_accessor :logging_settings
      
        # Define behaviors of speech to text detection.
        # Corresponds to the JSON property `speechSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1AdvancedSettingsSpeechSettings]
        attr_accessor :speech_settings
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_export_gcs_destination = args[:audio_export_gcs_destination] if args.key?(:audio_export_gcs_destination)
          @dtmf_settings = args[:dtmf_settings] if args.key?(:dtmf_settings)
          @logging_settings = args[:logging_settings] if args.key?(:logging_settings)
          @speech_settings = args[:speech_settings] if args.key?(:speech_settings)
        end
      end
      
      # Define behaviors for DTMF (dual tone multi frequency).
      class GoogleCloudDialogflowCxV3beta1AdvancedSettingsDtmfSettings
        include Google::Apis::Core::Hashable
      
        # If true, incoming audio is processed for DTMF (dual tone multi frequency)
        # events. For example, if the caller presses a button on their telephone keypad
        # and DTMF processing is enabled, Dialogflow will detect the event (e.g. a "3"
        # was pressed) in the incoming audio and pass the event to the bot to drive
        # business logic (e.g. when 3 is pressed, return the account balance).
        # Corresponds to the JSON property `enabled`
        # @return [Boolean]
        attr_accessor :enabled
        alias_method :enabled?, :enabled
      
        # Endpoint timeout setting for matching dtmf input to regex.
        # Corresponds to the JSON property `endpointingTimeoutDuration`
        # @return [String]
        attr_accessor :endpointing_timeout_duration
      
        # The digit that terminates a DTMF digit sequence.
        # Corresponds to the JSON property `finishDigit`
        # @return [String]
        attr_accessor :finish_digit
      
        # Interdigit timeout setting for matching dtmf input to regex.
        # Corresponds to the JSON property `interdigitTimeoutDuration`
        # @return [String]
        attr_accessor :interdigit_timeout_duration
      
        # Max length of DTMF digits.
        # Corresponds to the JSON property `maxDigits`
        # @return [Fixnum]
        attr_accessor :max_digits
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enabled = args[:enabled] if args.key?(:enabled)
          @endpointing_timeout_duration = args[:endpointing_timeout_duration] if args.key?(:endpointing_timeout_duration)
          @finish_digit = args[:finish_digit] if args.key?(:finish_digit)
          @interdigit_timeout_duration = args[:interdigit_timeout_duration] if args.key?(:interdigit_timeout_duration)
          @max_digits = args[:max_digits] if args.key?(:max_digits)
        end
      end
      
      # Define behaviors on logging.
      class GoogleCloudDialogflowCxV3beta1AdvancedSettingsLoggingSettings
        include Google::Apis::Core::Hashable
      
        # Enables consent-based end-user input redaction, if true, a pre-defined session
        # parameter `$session.params.conversation-redaction` will be used to determine
        # if the utterance should be redacted.
        # Corresponds to the JSON property `enableConsentBasedRedaction`
        # @return [Boolean]
        attr_accessor :enable_consent_based_redaction
        alias_method :enable_consent_based_redaction?, :enable_consent_based_redaction
      
        # Enables DF Interaction logging.
        # Corresponds to the JSON property `enableInteractionLogging`
        # @return [Boolean]
        attr_accessor :enable_interaction_logging
        alias_method :enable_interaction_logging?, :enable_interaction_logging
      
        # Enables Google Cloud Logging.
        # Corresponds to the JSON property `enableStackdriverLogging`
        # @return [Boolean]
        attr_accessor :enable_stackdriver_logging
        alias_method :enable_stackdriver_logging?, :enable_stackdriver_logging
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_consent_based_redaction = args[:enable_consent_based_redaction] if args.key?(:enable_consent_based_redaction)
          @enable_interaction_logging = args[:enable_interaction_logging] if args.key?(:enable_interaction_logging)
          @enable_stackdriver_logging = args[:enable_stackdriver_logging] if args.key?(:enable_stackdriver_logging)
        end
      end
      
      # Define behaviors of speech to text detection.
      class GoogleCloudDialogflowCxV3beta1AdvancedSettingsSpeechSettings
        include Google::Apis::Core::Hashable
      
        # Sensitivity of the speech model that detects the end of speech. Scale from 0
        # to 100.
        # Corresponds to the JSON property `endpointerSensitivity`
        # @return [Fixnum]
        attr_accessor :endpointer_sensitivity
      
        # Mapping from language to Speech-to-Text model. The mapped Speech-to-Text model
        # will be selected for requests from its corresponding language. For more
        # information, see [Speech models](https://cloud.google.com/dialogflow/cx/docs/
        # concept/speech-models).
        # Corresponds to the JSON property `models`
        # @return [Hash<String,String>]
        attr_accessor :models
      
        # Timeout before detecting no speech.
        # Corresponds to the JSON property `noSpeechTimeout`
        # @return [String]
        attr_accessor :no_speech_timeout
      
        # Use timeout based endpointing, interpreting endpointer sensitivity as seconds
        # of timeout value.
        # Corresponds to the JSON property `useTimeoutBasedEndpointing`
        # @return [Boolean]
        attr_accessor :use_timeout_based_endpointing
        alias_method :use_timeout_based_endpointing?, :use_timeout_based_endpointing
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @endpointer_sensitivity = args[:endpointer_sensitivity] if args.key?(:endpointer_sensitivity)
          @models = args[:models] if args.key?(:models)
          @no_speech_timeout = args[:no_speech_timeout] if args.key?(:no_speech_timeout)
          @use_timeout_based_endpointing = args[:use_timeout_based_endpointing] if args.key?(:use_timeout_based_endpointing)
        end
      end
      
      # Represents the natural speech audio to be processed.
      class GoogleCloudDialogflowCxV3beta1AudioInput
        include Google::Apis::Core::Hashable
      
        # The natural language speech audio to be processed. A single request can
        # contain up to 2 minutes of speech audio data. The transcribed text cannot
        # contain more than 256 bytes. For non-streaming audio detect intent, both `
        # config` and `audio` must be provided. For streaming audio detect intent, `
        # config` must be provided in the first request and `audio` must be provided in
        # all following requests.
        # Corresponds to the JSON property `audio`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :audio
      
        # Instructs the speech recognizer on how to process the audio content.
        # Corresponds to the JSON property `config`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1InputAudioConfig]
        attr_accessor :config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio = args[:audio] if args.key?(:audio)
          @config = args[:config] if args.key?(:config)
        end
      end
      
      # Configuration of the barge-in behavior. Barge-in instructs the API to return a
      # detected utterance at a proper time while the client is playing back the
      # response audio from a previous request. When the client sees the utterance, it
      # should stop the playback and immediately get ready for receiving the responses
      # for the current request. The barge-in handling requires the client to start
      # streaming audio input as soon as it starts playing back the audio from the
      # previous response. The playback is modeled into two phases: * No barge-in
      # phase: which goes first and during which speech detection should not be
      # carried out. * Barge-in phase: which follows the no barge-in phase and during
      # which the API starts speech detection and may inform the client that an
      # utterance has been detected. Note that no-speech event is not expected in this
      # phase. The client provides this configuration in terms of the durations of
      # those two phases. The durations are measured in terms of the audio length from
      # the start of the input audio. No-speech event is a response with
      # END_OF_UTTERANCE without any transcript following up.
      class GoogleCloudDialogflowCxV3beta1BargeInConfig
        include Google::Apis::Core::Hashable
      
        # Duration that is not eligible for barge-in at the beginning of the input audio.
        # Corresponds to the JSON property `noBargeInDuration`
        # @return [String]
        attr_accessor :no_barge_in_duration
      
        # Total duration for the playback at the beginning of the input audio.
        # Corresponds to the JSON property `totalDuration`
        # @return [String]
        attr_accessor :total_duration
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @no_barge_in_duration = args[:no_barge_in_duration] if args.key?(:no_barge_in_duration)
          @total_duration = args[:total_duration] if args.key?(:total_duration)
        end
      end
      
      # Metadata returned for the TestCases.BatchRunTestCases long running operation.
      class GoogleCloudDialogflowCxV3beta1BatchRunTestCasesMetadata
        include Google::Apis::Core::Hashable
      
        # The test errors.
        # Corresponds to the JSON property `errors`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TestError>]
        attr_accessor :errors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @errors = args[:errors] if args.key?(:errors)
        end
      end
      
      # The response message for TestCases.BatchRunTestCases.
      class GoogleCloudDialogflowCxV3beta1BatchRunTestCasesResponse
        include Google::Apis::Core::Hashable
      
        # The test case results. The detailed conversation turns are empty in this
        # response.
        # Corresponds to the JSON property `results`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TestCaseResult>]
        attr_accessor :results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @results = args[:results] if args.key?(:results)
        end
      end
      
      # Represents a result from running a test case in an agent environment.
      class GoogleCloudDialogflowCxV3beta1ContinuousTestResult
        include Google::Apis::Core::Hashable
      
        # The resource name for the continuous test result. Format: `projects//locations/
        # /agents//environments//continuousTestResults/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The result of this continuous test run, i.e. whether all the tests in this
        # continuous test run pass or not.
        # Corresponds to the JSON property `result`
        # @return [String]
        attr_accessor :result
      
        # Time when the continuous testing run starts.
        # Corresponds to the JSON property `runTime`
        # @return [String]
        attr_accessor :run_time
      
        # A list of individual test case results names in this continuous test run.
        # Corresponds to the JSON property `testCaseResults`
        # @return [Array<String>]
        attr_accessor :test_case_results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @result = args[:result] if args.key?(:result)
          @run_time = args[:run_time] if args.key?(:run_time)
          @test_case_results = args[:test_case_results] if args.key?(:test_case_results)
        end
      end
      
      # This message is used to hold all the Conversation Signals data, which will be
      # converted to JSON and exported to BigQuery.
      class GoogleCloudDialogflowCxV3beta1ConversationSignals
        include Google::Apis::Core::Hashable
      
        # Collection of all signals that were extracted for a single turn of the
        # conversation.
        # Corresponds to the JSON property `turnSignals`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TurnSignals]
        attr_accessor :turn_signals
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @turn_signals = args[:turn_signals] if args.key?(:turn_signals)
        end
      end
      
      # One interaction between a human and virtual agent. The human provides some
      # input and the virtual agent provides a response.
      class GoogleCloudDialogflowCxV3beta1ConversationTurn
        include Google::Apis::Core::Hashable
      
        # The input from the human user.
        # Corresponds to the JSON property `userInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ConversationTurnUserInput]
        attr_accessor :user_input
      
        # The output from the virtual agent.
        # Corresponds to the JSON property `virtualAgentOutput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ConversationTurnVirtualAgentOutput]
        attr_accessor :virtual_agent_output
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @user_input = args[:user_input] if args.key?(:user_input)
          @virtual_agent_output = args[:virtual_agent_output] if args.key?(:virtual_agent_output)
        end
      end
      
      # The input from the human user.
      class GoogleCloudDialogflowCxV3beta1ConversationTurnUserInput
        include Google::Apis::Core::Hashable
      
        # Whether sentiment analysis is enabled.
        # Corresponds to the JSON property `enableSentimentAnalysis`
        # @return [Boolean]
        attr_accessor :enable_sentiment_analysis
        alias_method :enable_sentiment_analysis?, :enable_sentiment_analysis
      
        # Parameters that need to be injected into the conversation during intent
        # detection.
        # Corresponds to the JSON property `injectedParameters`
        # @return [Hash<String,Object>]
        attr_accessor :injected_parameters
      
        # Represents the query input. It can contain one of: 1. A conversational query
        # in the form of text. 2. An intent query that specifies which intent to trigger.
        # 3. Natural language speech audio to be processed. 4. An event to be triggered.
        # 5. DTMF digits to invoke an intent and fill in parameter value. 6. The
        # results of a tool executed by the client.
        # Corresponds to the JSON property `input`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1QueryInput]
        attr_accessor :input
      
        # If webhooks should be allowed to trigger in response to the user utterance.
        # Often if parameters are injected, webhooks should not be enabled.
        # Corresponds to the JSON property `isWebhookEnabled`
        # @return [Boolean]
        attr_accessor :is_webhook_enabled
        alias_method :is_webhook_enabled?, :is_webhook_enabled
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_sentiment_analysis = args[:enable_sentiment_analysis] if args.key?(:enable_sentiment_analysis)
          @injected_parameters = args[:injected_parameters] if args.key?(:injected_parameters)
          @input = args[:input] if args.key?(:input)
          @is_webhook_enabled = args[:is_webhook_enabled] if args.key?(:is_webhook_enabled)
        end
      end
      
      # The output from the virtual agent.
      class GoogleCloudDialogflowCxV3beta1ConversationTurnVirtualAgentOutput
        include Google::Apis::Core::Hashable
      
        # A Dialogflow CX conversation (session) can be described and visualized as a
        # state machine. The states of a CX session are represented by pages. For each
        # flow, you define many pages, where your combined pages can handle a complete
        # conversation on the topics the flow is designed for. At any given moment,
        # exactly one page is the current page, the current page is considered active,
        # and the flow associated with that page is considered active. Every flow has a
        # special start page. When a flow initially becomes active, the start page page
        # becomes the current page. For each conversational turn, the current page will
        # either stay the same or transition to another page. You configure each page to
        # collect information from the end-user that is relevant for the conversational
        # state represented by the page. For more information, see the [Page guide](
        # https://cloud.google.com/dialogflow/cx/docs/concept/page).
        # Corresponds to the JSON property `currentPage`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1Page]
        attr_accessor :current_page
      
        # Required. Input only. The diagnostic info output for the turn. Required to
        # calculate the testing coverage.
        # Corresponds to the JSON property `diagnosticInfo`
        # @return [Hash<String,Object>]
        attr_accessor :diagnostic_info
      
        # Output only. If this is part of a result conversation turn, the list of
        # differences between the original run and the replay for this output, if any.
        # Corresponds to the JSON property `differences`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TestRunDifference>]
        attr_accessor :differences
      
        # The session parameters available to the bot at this point.
        # Corresponds to the JSON property `sessionParameters`
        # @return [Hash<String,Object>]
        attr_accessor :session_parameters
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :status
      
        # The text responses from the agent for the turn.
        # Corresponds to the JSON property `textResponses`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessageText>]
        attr_accessor :text_responses
      
        # An intent represents a user's intent to interact with a conversational agent.
        # You can provide information for the Dialogflow API to use to match user input
        # to an intent by adding training phrases (i.e., examples of user input) to your
        # intent.
        # Corresponds to the JSON property `triggeredIntent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1Intent]
        attr_accessor :triggered_intent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @current_page = args[:current_page] if args.key?(:current_page)
          @diagnostic_info = args[:diagnostic_info] if args.key?(:diagnostic_info)
          @differences = args[:differences] if args.key?(:differences)
          @session_parameters = args[:session_parameters] if args.key?(:session_parameters)
          @status = args[:status] if args.key?(:status)
          @text_responses = args[:text_responses] if args.key?(:text_responses)
          @triggered_intent = args[:triggered_intent] if args.key?(:triggered_intent)
        end
      end
      
      # Metadata associated with the long running operation for Versions.CreateVersion.
      class GoogleCloudDialogflowCxV3beta1CreateVersionOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Name of the created version. Format: `projects//locations//agents//flows//
        # versions/`.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # A data store connection. It represents a data store in Discovery Engine and
      # the type of the contents it contains.
      class GoogleCloudDialogflowCxV3beta1DataStoreConnection
        include Google::Apis::Core::Hashable
      
        # The full name of the referenced data store. Formats: `projects/`project`/
        # locations/`location`/collections/`collection`/dataStores/`data_store`` `
        # projects/`project`/locations/`location`/dataStores/`data_store``
        # Corresponds to the JSON property `dataStore`
        # @return [String]
        attr_accessor :data_store
      
        # The type of the connected data store.
        # Corresponds to the JSON property `dataStoreType`
        # @return [String]
        attr_accessor :data_store_type
      
        # The document processing mode for the data store connection. Should only be set
        # for PUBLIC_WEB and UNSTRUCTURED data stores. If not set it is considered as
        # DOCUMENTS, as this is the legacy mode.
        # Corresponds to the JSON property `documentProcessingMode`
        # @return [String]
        attr_accessor :document_processing_mode
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_store = args[:data_store] if args.key?(:data_store)
          @data_store_type = args[:data_store_type] if args.key?(:data_store_type)
          @document_processing_mode = args[:document_processing_mode] if args.key?(:document_processing_mode)
        end
      end
      
      # Metadata returned for the Environments.DeployFlow long running operation.
      class GoogleCloudDialogflowCxV3beta1DeployFlowMetadata
        include Google::Apis::Core::Hashable
      
        # Errors of running deployment tests.
        # Corresponds to the JSON property `testErrors`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TestError>]
        attr_accessor :test_errors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @test_errors = args[:test_errors] if args.key?(:test_errors)
        end
      end
      
      # The response message for Environments.DeployFlow.
      class GoogleCloudDialogflowCxV3beta1DeployFlowResponse
        include Google::Apis::Core::Hashable
      
        # The name of the flow version deployment. Format: `projects//locations//agents//
        # environments//deployments/`.
        # Corresponds to the JSON property `deployment`
        # @return [String]
        attr_accessor :deployment
      
        # Represents an environment for an agent. You can create multiple versions of
        # your agent and publish them to separate environments. When you edit an agent,
        # you are editing the draft agent. At any point, you can save the draft agent as
        # an agent version, which is an immutable snapshot of your agent. When you save
        # the draft agent, it is published to the default environment. When you create
        # agent versions, you can publish them to custom environments. You can create a
        # variety of custom environments for testing, development, production, etc.
        # Corresponds to the JSON property `environment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1Environment]
        attr_accessor :environment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployment = args[:deployment] if args.key?(:deployment)
          @environment = args[:environment] if args.key?(:environment)
        end
      end
      
      # Represents the input for dtmf event.
      class GoogleCloudDialogflowCxV3beta1DtmfInput
        include Google::Apis::Core::Hashable
      
        # The dtmf digits.
        # Corresponds to the JSON property `digits`
        # @return [String]
        attr_accessor :digits
      
        # The finish digit (if any).
        # Corresponds to the JSON property `finishDigit`
        # @return [String]
        attr_accessor :finish_digit
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @digits = args[:digits] if args.key?(:digits)
          @finish_digit = args[:finish_digit] if args.key?(:finish_digit)
        end
      end
      
      # Represents an environment for an agent. You can create multiple versions of
      # your agent and publish them to separate environments. When you edit an agent,
      # you are editing the draft agent. At any point, you can save the draft agent as
      # an agent version, which is an immutable snapshot of your agent. When you save
      # the draft agent, it is published to the default environment. When you create
      # agent versions, you can publish them to custom environments. You can create a
      # variety of custom environments for testing, development, production, etc.
      class GoogleCloudDialogflowCxV3beta1Environment
        include Google::Apis::Core::Hashable
      
        # The human-readable description of the environment. The maximum length is 500
        # characters. If exceeded, the request is rejected.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The human-readable name of the environment (unique in an agent).
        # Limit of 64 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The name of the environment. Format: `projects//locations//agents//
        # environments/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The configuration for continuous tests.
        # Corresponds to the JSON property `testCasesConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1EnvironmentTestCasesConfig]
        attr_accessor :test_cases_config
      
        # Output only. Update time of this environment.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # A list of configurations for flow versions. You should include version configs
        # for all flows that are reachable from `Start Flow` in the agent. Otherwise, an
        # error will be returned.
        # Corresponds to the JSON property `versionConfigs`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1EnvironmentVersionConfig>]
        attr_accessor :version_configs
      
        # Configuration for webhooks.
        # Corresponds to the JSON property `webhookConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1EnvironmentWebhookConfig]
        attr_accessor :webhook_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @name = args[:name] if args.key?(:name)
          @test_cases_config = args[:test_cases_config] if args.key?(:test_cases_config)
          @update_time = args[:update_time] if args.key?(:update_time)
          @version_configs = args[:version_configs] if args.key?(:version_configs)
          @webhook_config = args[:webhook_config] if args.key?(:webhook_config)
        end
      end
      
      # The configuration for continuous tests.
      class GoogleCloudDialogflowCxV3beta1EnvironmentTestCasesConfig
        include Google::Apis::Core::Hashable
      
        # Whether to run test cases in TestCasesConfig.test_cases periodically. Default
        # false. If set to true, run once a day.
        # Corresponds to the JSON property `enableContinuousRun`
        # @return [Boolean]
        attr_accessor :enable_continuous_run
        alias_method :enable_continuous_run?, :enable_continuous_run
      
        # Whether to run test cases in TestCasesConfig.test_cases before deploying a
        # flow version to the environment. Default false.
        # Corresponds to the JSON property `enablePredeploymentRun`
        # @return [Boolean]
        attr_accessor :enable_predeployment_run
        alias_method :enable_predeployment_run?, :enable_predeployment_run
      
        # A list of test case names to run. They should be under the same agent. Format
        # of each test case name: `projects//locations//agents//testCases/`
        # Corresponds to the JSON property `testCases`
        # @return [Array<String>]
        attr_accessor :test_cases
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_continuous_run = args[:enable_continuous_run] if args.key?(:enable_continuous_run)
          @enable_predeployment_run = args[:enable_predeployment_run] if args.key?(:enable_predeployment_run)
          @test_cases = args[:test_cases] if args.key?(:test_cases)
        end
      end
      
      # Configuration for the version.
      class GoogleCloudDialogflowCxV3beta1EnvironmentVersionConfig
        include Google::Apis::Core::Hashable
      
        # Required. Flow, playbook and tool versions are supported. Format for flow
        # version: projects//locations//agents//flows//versions/. Format for playbook
        # version: projects//locations//agents//playbooks//versions/. Format for tool
        # version: projects//locations//agents//tools//versions/.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Configuration for webhooks.
      class GoogleCloudDialogflowCxV3beta1EnvironmentWebhookConfig
        include Google::Apis::Core::Hashable
      
        # The list of webhooks to override for the agent environment. The webhook must
        # exist in the agent. You can override fields in `generic_web_service` and `
        # service_directory`.
        # Corresponds to the JSON property `webhookOverrides`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1Webhook>]
        attr_accessor :webhook_overrides
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @webhook_overrides = args[:webhook_overrides] if args.key?(:webhook_overrides)
        end
      end
      
      # An event handler specifies an event that can be handled during a session. When
      # the specified event happens, the following actions are taken in order: * If
      # there is a `trigger_fulfillment` associated with the event, it will be called.
      # * If there is a `target_page` associated with the event, the session will
      # transition into the specified page. * If there is a `target_flow` associated
      # with the event, the session will transition into the specified flow.
      class GoogleCloudDialogflowCxV3beta1EventHandler
        include Google::Apis::Core::Hashable
      
        # Required. The name of the event to handle.
        # Corresponds to the JSON property `event`
        # @return [String]
        attr_accessor :event
      
        # Output only. The unique identifier of this event handler.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The target flow to transition to. Format: `projects//locations//agents//flows/`
        # .
        # Corresponds to the JSON property `targetFlow`
        # @return [String]
        attr_accessor :target_flow
      
        # The target page to transition to. Format: `projects//locations//agents//flows//
        # pages/`.
        # Corresponds to the JSON property `targetPage`
        # @return [String]
        attr_accessor :target_page
      
        # The target playbook to transition to. Format: `projects//locations//agents//
        # playbooks/`.
        # Corresponds to the JSON property `targetPlaybook`
        # @return [String]
        attr_accessor :target_playbook
      
        # A fulfillment can do one or more of the following actions at the same time: *
        # Generate rich message responses. * Set parameter values. * Call the webhook.
        # Fulfillments can be called at various stages in the Page or Form lifecycle.
        # For example, when a DetectIntentRequest drives a session to enter a new page,
        # the page's entry fulfillment can add a static response to the QueryResult in
        # the returning DetectIntentResponse, call the webhook (for example, to load
        # user data from a database), or both.
        # Corresponds to the JSON property `triggerFulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1Fulfillment]
        attr_accessor :trigger_fulfillment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @event = args[:event] if args.key?(:event)
          @name = args[:name] if args.key?(:name)
          @target_flow = args[:target_flow] if args.key?(:target_flow)
          @target_page = args[:target_page] if args.key?(:target_page)
          @target_playbook = args[:target_playbook] if args.key?(:target_playbook)
          @trigger_fulfillment = args[:trigger_fulfillment] if args.key?(:trigger_fulfillment)
        end
      end
      
      # Represents the event to trigger.
      class GoogleCloudDialogflowCxV3beta1EventInput
        include Google::Apis::Core::Hashable
      
        # Name of the event.
        # Corresponds to the JSON property `event`
        # @return [String]
        attr_accessor :event
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @event = args[:event] if args.key?(:event)
        end
      end
      
      # The response message for Agents.ExportAgent.
      class GoogleCloudDialogflowCxV3beta1ExportAgentResponse
        include Google::Apis::Core::Hashable
      
        # Uncompressed raw byte content for agent. This field is populated if none of `
        # agent_uri` and `git_destination` are specified in ExportAgentRequest.
        # Corresponds to the JSON property `agentContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :agent_content
      
        # The URI to a file containing the exported agent. This field is populated if `
        # agent_uri` is specified in ExportAgentRequest.
        # Corresponds to the JSON property `agentUri`
        # @return [String]
        attr_accessor :agent_uri
      
        # Commit SHA of the git push. This field is populated if `git_destination` is
        # specified in ExportAgentRequest.
        # Corresponds to the JSON property `commitSha`
        # @return [String]
        attr_accessor :commit_sha
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_content = args[:agent_content] if args.key?(:agent_content)
          @agent_uri = args[:agent_uri] if args.key?(:agent_uri)
          @commit_sha = args[:commit_sha] if args.key?(:commit_sha)
        end
      end
      
      # Metadata returned for the EntityTypes.ExportEntityTypes long running operation.
      class GoogleCloudDialogflowCxV3beta1ExportEntityTypesMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for EntityTypes.ExportEntityTypes.
      class GoogleCloudDialogflowCxV3beta1ExportEntityTypesResponse
        include Google::Apis::Core::Hashable
      
        # Inline destination for a Dialogflow operation that writes or exports objects (
        # e.g. intents) outside of Dialogflow.
        # Corresponds to the JSON property `entityTypesContent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1InlineDestination]
        attr_accessor :entity_types_content
      
        # The URI to a file containing the exported entity types. This field is
        # populated only if `entity_types_uri` is specified in ExportEntityTypesRequest.
        # Corresponds to the JSON property `entityTypesUri`
        # @return [String]
        attr_accessor :entity_types_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_types_content = args[:entity_types_content] if args.key?(:entity_types_content)
          @entity_types_uri = args[:entity_types_uri] if args.key?(:entity_types_uri)
        end
      end
      
      # The response message for Flows.ExportFlow.
      class GoogleCloudDialogflowCxV3beta1ExportFlowResponse
        include Google::Apis::Core::Hashable
      
        # Uncompressed raw byte content for flow.
        # Corresponds to the JSON property `flowContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :flow_content
      
        # The URI to a file containing the exported flow. This field is populated only
        # if `flow_uri` is specified in ExportFlowRequest.
        # Corresponds to the JSON property `flowUri`
        # @return [String]
        attr_accessor :flow_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @flow_content = args[:flow_content] if args.key?(:flow_content)
          @flow_uri = args[:flow_uri] if args.key?(:flow_uri)
        end
      end
      
      # Metadata returned for the Intents.ExportIntents long running operation.
      class GoogleCloudDialogflowCxV3beta1ExportIntentsMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for Intents.ExportIntents.
      class GoogleCloudDialogflowCxV3beta1ExportIntentsResponse
        include Google::Apis::Core::Hashable
      
        # Inline destination for a Dialogflow operation that writes or exports objects (
        # e.g. intents) outside of Dialogflow.
        # Corresponds to the JSON property `intentsContent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1InlineDestination]
        attr_accessor :intents_content
      
        # The URI to a file containing the exported intents. This field is populated
        # only if `intents_uri` is specified in ExportIntentsRequest.
        # Corresponds to the JSON property `intentsUri`
        # @return [String]
        attr_accessor :intents_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intents_content = args[:intents_content] if args.key?(:intents_content)
          @intents_uri = args[:intents_uri] if args.key?(:intents_uri)
        end
      end
      
      # Metadata returned for the TestCases.ExportTestCases long running operation.
      # This message currently has no fields.
      class GoogleCloudDialogflowCxV3beta1ExportTestCasesMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for TestCases.ExportTestCases.
      class GoogleCloudDialogflowCxV3beta1ExportTestCasesResponse
        include Google::Apis::Core::Hashable
      
        # Uncompressed raw byte content for test cases.
        # Corresponds to the JSON property `content`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :content
      
        # The URI to a file containing the exported test cases. This field is populated
        # only if `gcs_uri` is specified in ExportTestCasesRequest.
        # Corresponds to the JSON property `gcsUri`
        # @return [String]
        attr_accessor :gcs_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @gcs_uri = args[:gcs_uri] if args.key?(:gcs_uri)
        end
      end
      
      # A form is a data model that groups related parameters that can be collected
      # from the user. The process in which the agent prompts the user and collects
      # parameter values from the user is called form filling. A form can be added to
      # a page. When form filling is done, the filled parameters will be written to
      # the session.
      class GoogleCloudDialogflowCxV3beta1Form
        include Google::Apis::Core::Hashable
      
        # Parameters to collect from the user.
        # Corresponds to the JSON property `parameters`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1FormParameter>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Represents a form parameter.
      class GoogleCloudDialogflowCxV3beta1FormParameter
        include Google::Apis::Core::Hashable
      
        # Hierarchical advanced settings for agent/flow/page/fulfillment/parameter.
        # Settings exposed at lower level overrides the settings exposed at higher level.
        # Overriding occurs at the sub-setting level. For example, the
        # playback_interruption_settings at fulfillment level only overrides the
        # playback_interruption_settings at the agent level, leaving other settings at
        # the agent level unchanged. DTMF settings does not override each other. DTMF
        # settings set at different levels define DTMF detections running in parallel.
        # Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
        # Corresponds to the JSON property `advancedSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1AdvancedSettings]
        attr_accessor :advanced_settings
      
        # The default value of an optional parameter. If the parameter is required, the
        # default value will be ignored.
        # Corresponds to the JSON property `defaultValue`
        # @return [Object]
        attr_accessor :default_value
      
        # Required. The human-readable name of the parameter, unique within the form.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Required. The entity type of the parameter. Format: `projects/-/locations/-/
        # agents/-/entityTypes/` for system entity types (for example, `projects/-/
        # locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//
        # entityTypes/` for developer entity types.
        # Corresponds to the JSON property `entityType`
        # @return [String]
        attr_accessor :entity_type
      
        # Configuration for how the filling of a parameter should be handled.
        # Corresponds to the JSON property `fillBehavior`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1FormParameterFillBehavior]
        attr_accessor :fill_behavior
      
        # Indicates whether the parameter represents a list of values.
        # Corresponds to the JSON property `isList`
        # @return [Boolean]
        attr_accessor :is_list
        alias_method :is_list?, :is_list
      
        # Indicates whether the parameter content should be redacted in log. If
        # redaction is enabled, the parameter content will be replaced by parameter name
        # during logging. Note: the parameter content is subject to redaction if either
        # parameter level redaction or entity type level redaction is enabled.
        # Corresponds to the JSON property `redact`
        # @return [Boolean]
        attr_accessor :redact
        alias_method :redact?, :redact
      
        # Indicates whether the parameter is required. Optional parameters will not
        # trigger prompts; however, they are filled if the user specifies them. Required
        # parameters must be filled before form filling concludes.
        # Corresponds to the JSON property `required`
        # @return [Boolean]
        attr_accessor :required
        alias_method :required?, :required
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @advanced_settings = args[:advanced_settings] if args.key?(:advanced_settings)
          @default_value = args[:default_value] if args.key?(:default_value)
          @display_name = args[:display_name] if args.key?(:display_name)
          @entity_type = args[:entity_type] if args.key?(:entity_type)
          @fill_behavior = args[:fill_behavior] if args.key?(:fill_behavior)
          @is_list = args[:is_list] if args.key?(:is_list)
          @redact = args[:redact] if args.key?(:redact)
          @required = args[:required] if args.key?(:required)
        end
      end
      
      # Configuration for how the filling of a parameter should be handled.
      class GoogleCloudDialogflowCxV3beta1FormParameterFillBehavior
        include Google::Apis::Core::Hashable
      
        # A fulfillment can do one or more of the following actions at the same time: *
        # Generate rich message responses. * Set parameter values. * Call the webhook.
        # Fulfillments can be called at various stages in the Page or Form lifecycle.
        # For example, when a DetectIntentRequest drives a session to enter a new page,
        # the page's entry fulfillment can add a static response to the QueryResult in
        # the returning DetectIntentResponse, call the webhook (for example, to load
        # user data from a database), or both.
        # Corresponds to the JSON property `initialPromptFulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1Fulfillment]
        attr_accessor :initial_prompt_fulfillment
      
        # The handlers for parameter-level events, used to provide reprompt for the
        # parameter or transition to a different page/flow. The supported events are: * `
        # sys.no-match-`, where N can be from 1 to 6 * `sys.no-match-default` * `sys.no-
        # input-`, where N can be from 1 to 6 * `sys.no-input-default` * `sys.invalid-
        # parameter` `initial_prompt_fulfillment` provides the first prompt for the
        # parameter. If the user's response does not fill the parameter, a no-match/no-
        # input event will be triggered, and the fulfillment associated with the `sys.no-
        # match-1`/`sys.no-input-1` handler (if defined) will be called to provide a
        # prompt. The `sys.no-match-2`/`sys.no-input-2` handler (if defined) will
        # respond to the next no-match/no-input event, and so on. A `sys.no-match-
        # default` or `sys.no-input-default` handler will be used to handle all
        # following no-match/no-input events after all numbered no-match/no-input
        # handlers for the parameter are consumed. A `sys.invalid-parameter` handler can
        # be defined to handle the case where the parameter values have been `
        # invalidated` by webhook. For example, if the user's response fill the
        # parameter, however the parameter was invalidated by webhook, the fulfillment
        # associated with the `sys.invalid-parameter` handler (if defined) will be
        # called to provide a prompt. If the event handler for the corresponding event
        # can't be found on the parameter, `initial_prompt_fulfillment` will be re-
        # prompted.
        # Corresponds to the JSON property `repromptEventHandlers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1EventHandler>]
        attr_accessor :reprompt_event_handlers
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @initial_prompt_fulfillment = args[:initial_prompt_fulfillment] if args.key?(:initial_prompt_fulfillment)
          @reprompt_event_handlers = args[:reprompt_event_handlers] if args.key?(:reprompt_event_handlers)
        end
      end
      
      # A fulfillment can do one or more of the following actions at the same time: *
      # Generate rich message responses. * Set parameter values. * Call the webhook.
      # Fulfillments can be called at various stages in the Page or Form lifecycle.
      # For example, when a DetectIntentRequest drives a session to enter a new page,
      # the page's entry fulfillment can add a static response to the QueryResult in
      # the returning DetectIntentResponse, call the webhook (for example, to load
      # user data from a database), or both.
      class GoogleCloudDialogflowCxV3beta1Fulfillment
        include Google::Apis::Core::Hashable
      
        # Hierarchical advanced settings for agent/flow/page/fulfillment/parameter.
        # Settings exposed at lower level overrides the settings exposed at higher level.
        # Overriding occurs at the sub-setting level. For example, the
        # playback_interruption_settings at fulfillment level only overrides the
        # playback_interruption_settings at the agent level, leaving other settings at
        # the agent level unchanged. DTMF settings does not override each other. DTMF
        # settings set at different levels define DTMF detections running in parallel.
        # Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
        # Corresponds to the JSON property `advancedSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1AdvancedSettings]
        attr_accessor :advanced_settings
      
        # Conditional cases for this fulfillment.
        # Corresponds to the JSON property `conditionalCases`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCases>]
        attr_accessor :conditional_cases
      
        # If the flag is true, the agent will utilize LLM to generate a text response.
        # If LLM generation fails, the defined responses in the fulfillment will be
        # respected. This flag is only useful for fulfillments associated with no-match
        # event handlers.
        # Corresponds to the JSON property `enableGenerativeFallback`
        # @return [Boolean]
        attr_accessor :enable_generative_fallback
        alias_method :enable_generative_fallback?, :enable_generative_fallback
      
        # A list of Generators to be called during this fulfillment.
        # Corresponds to the JSON property `generators`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1FulfillmentGeneratorSettings>]
        attr_accessor :generators
      
        # The list of rich message responses to present to the user.
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessage>]
        attr_accessor :messages
      
        # Whether Dialogflow should return currently queued fulfillment response
        # messages in streaming APIs. If a webhook is specified, it happens before
        # Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API.
        # Responses are still queued and returned once in non-streaming API. 2) The flag
        # can be enabled in any fulfillment but only the first 3 partial responses will
        # be returned. You may only want to apply it to fulfillments that have slow
        # webhooks.
        # Corresponds to the JSON property `returnPartialResponses`
        # @return [Boolean]
        attr_accessor :return_partial_responses
        alias_method :return_partial_responses?, :return_partial_responses
      
        # Set parameter values before executing the webhook.
        # Corresponds to the JSON property `setParameterActions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1FulfillmentSetParameterAction>]
        attr_accessor :set_parameter_actions
      
        # The value of this field will be populated in the WebhookRequest `
        # fulfillmentInfo.tag` field by Dialogflow when the associated webhook is called.
        # The tag is typically used by the webhook service to identify which
        # fulfillment is being called, but it could be used for other purposes. This
        # field is required if `webhook` is specified.
        # Corresponds to the JSON property `tag`
        # @return [String]
        attr_accessor :tag
      
        # The webhook to call. Format: `projects//locations//agents//webhooks/`.
        # Corresponds to the JSON property `webhook`
        # @return [String]
        attr_accessor :webhook
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @advanced_settings = args[:advanced_settings] if args.key?(:advanced_settings)
          @conditional_cases = args[:conditional_cases] if args.key?(:conditional_cases)
          @enable_generative_fallback = args[:enable_generative_fallback] if args.key?(:enable_generative_fallback)
          @generators = args[:generators] if args.key?(:generators)
          @messages = args[:messages] if args.key?(:messages)
          @return_partial_responses = args[:return_partial_responses] if args.key?(:return_partial_responses)
          @set_parameter_actions = args[:set_parameter_actions] if args.key?(:set_parameter_actions)
          @tag = args[:tag] if args.key?(:tag)
          @webhook = args[:webhook] if args.key?(:webhook)
        end
      end
      
      # A list of cascading if-else conditions. Cases are mutually exclusive. The
      # first one with a matching condition is selected, all the rest ignored.
      class GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCases
        include Google::Apis::Core::Hashable
      
        # A list of cascading if-else conditions.
        # Corresponds to the JSON property `cases`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCase>]
        attr_accessor :cases
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cases = args[:cases] if args.key?(:cases)
        end
      end
      
      # Each case has a Boolean condition. When it is evaluated to be True, the
      # corresponding messages will be selected and evaluated recursively.
      class GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCase
        include Google::Apis::Core::Hashable
      
        # A list of case content.
        # Corresponds to the JSON property `caseContent`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseCaseContent>]
        attr_accessor :case_content
      
        # The condition to activate and select this case. Empty means the condition is
        # always true. The condition is evaluated against form parameters or session
        # parameters. See the [conditions reference](https://cloud.google.com/dialogflow/
        # cx/docs/reference/condition).
        # Corresponds to the JSON property `condition`
        # @return [String]
        attr_accessor :condition
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @case_content = args[:case_content] if args.key?(:case_content)
          @condition = args[:condition] if args.key?(:condition)
        end
      end
      
      # The list of messages or conditional cases to activate for this case.
      class GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseCaseContent
        include Google::Apis::Core::Hashable
      
        # A list of cascading if-else conditions. Cases are mutually exclusive. The
        # first one with a matching condition is selected, all the rest ignored.
        # Corresponds to the JSON property `additionalCases`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCases]
        attr_accessor :additional_cases
      
        # Represents a response message that can be returned by a conversational agent.
        # Response messages are also used for output audio synthesis. The approach is as
        # follows: * If at least one OutputAudioText response is present, then all
        # OutputAudioText responses are linearly concatenated, and the result is used
        # for output audio synthesis. * If the OutputAudioText responses are a mixture
        # of text and SSML, then the concatenated result is treated as SSML; otherwise,
        # the result is treated as either text or SSML as appropriate. The agent
        # designer should ideally use either text or SSML consistently throughout the
        # bot design. * Otherwise, all Text responses are linearly concatenated, and the
        # result is used for output audio synthesis. This approach allows for more
        # sophisticated user experience scenarios, where the text displayed to the user
        # may differ from what is heard.
        # Corresponds to the JSON property `message`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessage]
        attr_accessor :message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @additional_cases = args[:additional_cases] if args.key?(:additional_cases)
          @message = args[:message] if args.key?(:message)
        end
      end
      
      # Generator settings used by the LLM to generate a text response.
      class GoogleCloudDialogflowCxV3beta1FulfillmentGeneratorSettings
        include Google::Apis::Core::Hashable
      
        # Required. The generator to call. Format: `projects//locations//agents//
        # generators/`.
        # Corresponds to the JSON property `generator`
        # @return [String]
        attr_accessor :generator
      
        # Map from placeholder parameter in the Generator to corresponding session
        # parameters. By default, Dialogflow uses the session parameter with the same
        # name to fill in the generator template. e.g. If there is a placeholder
        # parameter `city` in the Generator, Dialogflow default to fill in the `$city`
        # with `$session.params.city`. However, you may choose to fill `$city` with `$
        # session.params.desination-city`. - Map key: parameter ID - Map value: session
        # parameter name
        # Corresponds to the JSON property `inputParameters`
        # @return [Hash<String,String>]
        attr_accessor :input_parameters
      
        # Required. Output parameter which should contain the generator response.
        # Corresponds to the JSON property `outputParameter`
        # @return [String]
        attr_accessor :output_parameter
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generator = args[:generator] if args.key?(:generator)
          @input_parameters = args[:input_parameters] if args.key?(:input_parameters)
          @output_parameter = args[:output_parameter] if args.key?(:output_parameter)
        end
      end
      
      # Setting a parameter value.
      class GoogleCloudDialogflowCxV3beta1FulfillmentSetParameterAction
        include Google::Apis::Core::Hashable
      
        # Display name of the parameter.
        # Corresponds to the JSON property `parameter`
        # @return [String]
        attr_accessor :parameter
      
        # The new value of the parameter. A null value clears the parameter.
        # Corresponds to the JSON property `value`
        # @return [Object]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameter = args[:parameter] if args.key?(:parameter)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Google Cloud Storage location for a Dialogflow operation that writes or
      # exports objects (e.g. exported agent or transcripts) outside of Dialogflow.
      class GoogleCloudDialogflowCxV3beta1GcsDestination
        include Google::Apis::Core::Hashable
      
        # Required. The Google Cloud Storage URI for the exported objects. A URI is of
        # the form: `gs://bucket/object-name-or-prefix` Whether a full object name, or
        # just a prefix, its usage depends on the Dialogflow operation.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Metadata returned for the EntityTypes.ImportEntityTypes long running operation.
      class GoogleCloudDialogflowCxV3beta1ImportEntityTypesMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for EntityTypes.ImportEntityTypes.
      class GoogleCloudDialogflowCxV3beta1ImportEntityTypesResponse
        include Google::Apis::Core::Hashable
      
        # Conflicting resources detected during the import process. Only filled when
        # REPORT_CONFLICT is set in the request and there are conflicts in the display
        # names.
        # Corresponds to the JSON property `conflictingResources`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ImportEntityTypesResponseConflictingResources]
        attr_accessor :conflicting_resources
      
        # The unique identifier of the imported entity types. Format: `projects//
        # locations//agents//entity_types/`.
        # Corresponds to the JSON property `entityTypes`
        # @return [Array<String>]
        attr_accessor :entity_types
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conflicting_resources = args[:conflicting_resources] if args.key?(:conflicting_resources)
          @entity_types = args[:entity_types] if args.key?(:entity_types)
        end
      end
      
      # Conflicting resources detected during the import process. Only filled when
      # REPORT_CONFLICT is set in the request and there are conflicts in the display
      # names.
      class GoogleCloudDialogflowCxV3beta1ImportEntityTypesResponseConflictingResources
        include Google::Apis::Core::Hashable
      
        # Display names of conflicting entities.
        # Corresponds to the JSON property `entityDisplayNames`
        # @return [Array<String>]
        attr_accessor :entity_display_names
      
        # Display names of conflicting entity types.
        # Corresponds to the JSON property `entityTypeDisplayNames`
        # @return [Array<String>]
        attr_accessor :entity_type_display_names
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_display_names = args[:entity_display_names] if args.key?(:entity_display_names)
          @entity_type_display_names = args[:entity_type_display_names] if args.key?(:entity_type_display_names)
        end
      end
      
      # The response message for Flows.ImportFlow.
      class GoogleCloudDialogflowCxV3beta1ImportFlowResponse
        include Google::Apis::Core::Hashable
      
        # The unique identifier of the new flow. Format: `projects//locations//agents//
        # flows/`.
        # Corresponds to the JSON property `flow`
        # @return [String]
        attr_accessor :flow
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @flow = args[:flow] if args.key?(:flow)
        end
      end
      
      # Metadata returned for the Intents.ImportIntents long running operation.
      class GoogleCloudDialogflowCxV3beta1ImportIntentsMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for Intents.ImportIntents.
      class GoogleCloudDialogflowCxV3beta1ImportIntentsResponse
        include Google::Apis::Core::Hashable
      
        # Conflicting resources detected during the import process. Only filled when
        # REPORT_CONFLICT is set in the request and there are conflicts in the display
        # names.
        # Corresponds to the JSON property `conflictingResources`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ImportIntentsResponseConflictingResources]
        attr_accessor :conflicting_resources
      
        # The unique identifier of the imported intents. Format: `projects//locations//
        # agents//intents/`.
        # Corresponds to the JSON property `intents`
        # @return [Array<String>]
        attr_accessor :intents
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conflicting_resources = args[:conflicting_resources] if args.key?(:conflicting_resources)
          @intents = args[:intents] if args.key?(:intents)
        end
      end
      
      # Conflicting resources detected during the import process. Only filled when
      # REPORT_CONFLICT is set in the request and there are conflicts in the display
      # names.
      class GoogleCloudDialogflowCxV3beta1ImportIntentsResponseConflictingResources
        include Google::Apis::Core::Hashable
      
        # Display names of conflicting entities.
        # Corresponds to the JSON property `entityDisplayNames`
        # @return [Array<String>]
        attr_accessor :entity_display_names
      
        # Display names of conflicting intents.
        # Corresponds to the JSON property `intentDisplayNames`
        # @return [Array<String>]
        attr_accessor :intent_display_names
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_display_names = args[:entity_display_names] if args.key?(:entity_display_names)
          @intent_display_names = args[:intent_display_names] if args.key?(:intent_display_names)
        end
      end
      
      # Metadata returned for the TestCases.ImportTestCases long running operation.
      class GoogleCloudDialogflowCxV3beta1ImportTestCasesMetadata
        include Google::Apis::Core::Hashable
      
        # Errors for failed test cases.
        # Corresponds to the JSON property `errors`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TestCaseError>]
        attr_accessor :errors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @errors = args[:errors] if args.key?(:errors)
        end
      end
      
      # The response message for TestCases.ImportTestCases.
      class GoogleCloudDialogflowCxV3beta1ImportTestCasesResponse
        include Google::Apis::Core::Hashable
      
        # The unique identifiers of the new test cases. Format: `projects//locations//
        # agents//testCases/`.
        # Corresponds to the JSON property `names`
        # @return [Array<String>]
        attr_accessor :names
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @names = args[:names] if args.key?(:names)
        end
      end
      
      # Inline destination for a Dialogflow operation that writes or exports objects (
      # e.g. intents) outside of Dialogflow.
      class GoogleCloudDialogflowCxV3beta1InlineDestination
        include Google::Apis::Core::Hashable
      
        # Output only. The uncompressed byte content for the objects. Only populated in
        # responses.
        # Corresponds to the JSON property `content`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :content
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
        end
      end
      
      # Instructs the speech recognizer on how to process the audio content.
      class GoogleCloudDialogflowCxV3beta1InputAudioConfig
        include Google::Apis::Core::Hashable
      
        # Required. Audio encoding of the audio content to process.
        # Corresponds to the JSON property `audioEncoding`
        # @return [String]
        attr_accessor :audio_encoding
      
        # Configuration of the barge-in behavior. Barge-in instructs the API to return a
        # detected utterance at a proper time while the client is playing back the
        # response audio from a previous request. When the client sees the utterance, it
        # should stop the playback and immediately get ready for receiving the responses
        # for the current request. The barge-in handling requires the client to start
        # streaming audio input as soon as it starts playing back the audio from the
        # previous response. The playback is modeled into two phases: * No barge-in
        # phase: which goes first and during which speech detection should not be
        # carried out. * Barge-in phase: which follows the no barge-in phase and during
        # which the API starts speech detection and may inform the client that an
        # utterance has been detected. Note that no-speech event is not expected in this
        # phase. The client provides this configuration in terms of the durations of
        # those two phases. The durations are measured in terms of the audio length from
        # the start of the input audio. No-speech event is a response with
        # END_OF_UTTERANCE without any transcript following up.
        # Corresponds to the JSON property `bargeInConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1BargeInConfig]
        attr_accessor :barge_in_config
      
        # Optional. If `true`, Dialogflow returns SpeechWordInfo in
        # StreamingRecognitionResult with information about the recognized speech words,
        # e.g. start and end time offsets. If false or unspecified, Speech doesn't
        # return any word-level information.
        # Corresponds to the JSON property `enableWordInfo`
        # @return [Boolean]
        attr_accessor :enable_word_info
        alias_method :enable_word_info?, :enable_word_info
      
        # Optional. Which Speech model to select for the given request. For more
        # information, see [Speech models](https://cloud.google.com/dialogflow/cx/docs/
        # concept/speech-models).
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Optional. Which variant of the Speech model to use.
        # Corresponds to the JSON property `modelVariant`
        # @return [String]
        attr_accessor :model_variant
      
        # If `true`, the request will opt out for STT conformer model migration. This
        # field will be deprecated once force migration takes place in June 2024. Please
        # refer to [Dialogflow CX Speech model migration](https://cloud.google.com/
        # dialogflow/cx/docs/concept/speech-model-migration).
        # Corresponds to the JSON property `optOutConformerModelMigration`
        # @return [Boolean]
        attr_accessor :opt_out_conformer_model_migration
        alias_method :opt_out_conformer_model_migration?, :opt_out_conformer_model_migration
      
        # Optional. A list of strings containing words and phrases that the speech
        # recognizer should recognize with higher likelihood. See [the Cloud Speech
        # documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-
        # hints) for more details.
        # Corresponds to the JSON property `phraseHints`
        # @return [Array<String>]
        attr_accessor :phrase_hints
      
        # Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud
        # Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics)
        # for more details.
        # Corresponds to the JSON property `sampleRateHertz`
        # @return [Fixnum]
        attr_accessor :sample_rate_hertz
      
        # Optional. If `false` (default), recognition does not cease until the client
        # closes the stream. If `true`, the recognizer will detect a single spoken
        # utterance in input audio. Recognition ceases when it detects the audio's voice
        # has stopped or paused. In this case, once a detected intent is received, the
        # client should close the stream and start a new request with a new stream as
        # needed. Note: This setting is relevant only for streaming methods.
        # Corresponds to the JSON property `singleUtterance`
        # @return [Boolean]
        attr_accessor :single_utterance
        alias_method :single_utterance?, :single_utterance
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_encoding = args[:audio_encoding] if args.key?(:audio_encoding)
          @barge_in_config = args[:barge_in_config] if args.key?(:barge_in_config)
          @enable_word_info = args[:enable_word_info] if args.key?(:enable_word_info)
          @model = args[:model] if args.key?(:model)
          @model_variant = args[:model_variant] if args.key?(:model_variant)
          @opt_out_conformer_model_migration = args[:opt_out_conformer_model_migration] if args.key?(:opt_out_conformer_model_migration)
          @phrase_hints = args[:phrase_hints] if args.key?(:phrase_hints)
          @sample_rate_hertz = args[:sample_rate_hertz] if args.key?(:sample_rate_hertz)
          @single_utterance = args[:single_utterance] if args.key?(:single_utterance)
        end
      end
      
      # An intent represents a user's intent to interact with a conversational agent.
      # You can provide information for the Dialogflow API to use to match user input
      # to an intent by adding training phrases (i.e., examples of user input) to your
      # intent.
      class GoogleCloudDialogflowCxV3beta1Intent
        include Google::Apis::Core::Hashable
      
        # Human readable description for better understanding an intent like its scope,
        # content, result etc. Maximum character limit: 140 characters.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The human-readable name of the intent, unique within the agent.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Indicates whether this is a fallback intent. Currently only default fallback
        # intent is allowed in the agent, which is added upon agent creation. Adding
        # training phrases to fallback intent is useful in the case of requests that are
        # mistakenly matched, since training phrases assigned to fallback intents act as
        # negative examples that triggers no-match event.
        # Corresponds to the JSON property `isFallback`
        # @return [Boolean]
        attr_accessor :is_fallback
        alias_method :is_fallback?, :is_fallback
      
        # The key/value metadata to label an intent. Labels can contain lowercase
        # letters, digits and the symbols '-' and '_'. International characters are
        # allowed, including letters from unicase alphabets. Keys must start with a
        # letter. Keys and values can be no longer than 63 characters and no more than
        # 128 bytes. Prefix "sys-" is reserved for Dialogflow defined labels. Currently
        # allowed Dialogflow defined labels include: * sys-head * sys-contextual The
        # above labels do not require value. "sys-head" means the intent is a head
        # intent. "sys-contextual" means the intent is a contextual intent.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # The unique identifier of the intent. Required for the Intents.UpdateIntent
        # method. Intents.CreateIntent populates the name automatically. Format: `
        # projects//locations//agents//intents/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The collection of parameters associated with the intent.
        # Corresponds to the JSON property `parameters`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1IntentParameter>]
        attr_accessor :parameters
      
        # The priority of this intent. Higher numbers represent higher priorities. - If
        # the supplied value is unspecified or 0, the service translates the value to
        # 500,000, which corresponds to the `Normal` priority in the console. - If the
        # supplied value is negative, the intent is ignored in runtime detect intent
        # requests.
        # Corresponds to the JSON property `priority`
        # @return [Fixnum]
        attr_accessor :priority
      
        # The collection of training phrases the agent is trained on to identify the
        # intent.
        # Corresponds to the JSON property `trainingPhrases`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1IntentTrainingPhrase>]
        attr_accessor :training_phrases
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @is_fallback = args[:is_fallback] if args.key?(:is_fallback)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @parameters = args[:parameters] if args.key?(:parameters)
          @priority = args[:priority] if args.key?(:priority)
          @training_phrases = args[:training_phrases] if args.key?(:training_phrases)
        end
      end
      
      # Represents the intent to trigger programmatically rather than as a result of
      # natural language processing.
      class GoogleCloudDialogflowCxV3beta1IntentInput
        include Google::Apis::Core::Hashable
      
        # Required. The unique identifier of the intent. Format: `projects//locations//
        # agents//intents/`.
        # Corresponds to the JSON property `intent`
        # @return [String]
        attr_accessor :intent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intent = args[:intent] if args.key?(:intent)
        end
      end
      
      # Represents an intent parameter.
      class GoogleCloudDialogflowCxV3beta1IntentParameter
        include Google::Apis::Core::Hashable
      
        # Required. The entity type of the parameter. Format: `projects/-/locations/-/
        # agents/-/entityTypes/` for system entity types (for example, `projects/-/
        # locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//
        # entityTypes/` for developer entity types.
        # Corresponds to the JSON property `entityType`
        # @return [String]
        attr_accessor :entity_type
      
        # Required. The unique identifier of the parameter. This field is used by
        # training phrases to annotate their parts.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Indicates whether the parameter represents a list of values.
        # Corresponds to the JSON property `isList`
        # @return [Boolean]
        attr_accessor :is_list
        alias_method :is_list?, :is_list
      
        # Indicates whether the parameter content should be redacted in log. If
        # redaction is enabled, the parameter content will be replaced by parameter name
        # during logging. Note: the parameter content is subject to redaction if either
        # parameter level redaction or entity type level redaction is enabled.
        # Corresponds to the JSON property `redact`
        # @return [Boolean]
        attr_accessor :redact
        alias_method :redact?, :redact
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_type = args[:entity_type] if args.key?(:entity_type)
          @id = args[:id] if args.key?(:id)
          @is_list = args[:is_list] if args.key?(:is_list)
          @redact = args[:redact] if args.key?(:redact)
        end
      end
      
      # Represents an example that the agent is trained on to identify the intent.
      class GoogleCloudDialogflowCxV3beta1IntentTrainingPhrase
        include Google::Apis::Core::Hashable
      
        # Output only. The unique identifier of the training phrase.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Required. The ordered list of training phrase parts. The parts are
        # concatenated in order to form the training phrase. Note: The API does not
        # automatically annotate training phrases like the Dialogflow Console does. Note:
        # Do not forget to include whitespace at part boundaries, so the training
        # phrase is well formatted when the parts are concatenated. If the training
        # phrase does not need to be annotated with parameters, you just need a single
        # part with only the Part.text field set. If you want to annotate the training
        # phrase, you must create multiple parts, where the fields of each part are
        # populated in one of two ways: - `Part.text` is set to a part of the phrase
        # that has no parameters. - `Part.text` is set to a part of the phrase that you
        # want to annotate, and the `parameter_id` field is set.
        # Corresponds to the JSON property `parts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1IntentTrainingPhrasePart>]
        attr_accessor :parts
      
        # Indicates how many times this example was added to the intent.
        # Corresponds to the JSON property `repeatCount`
        # @return [Fixnum]
        attr_accessor :repeat_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @id = args[:id] if args.key?(:id)
          @parts = args[:parts] if args.key?(:parts)
          @repeat_count = args[:repeat_count] if args.key?(:repeat_count)
        end
      end
      
      # Represents a part of a training phrase.
      class GoogleCloudDialogflowCxV3beta1IntentTrainingPhrasePart
        include Google::Apis::Core::Hashable
      
        # The parameter used to annotate this part of the training phrase. This field is
        # required for annotated parts of the training phrase.
        # Corresponds to the JSON property `parameterId`
        # @return [String]
        attr_accessor :parameter_id
      
        # Required. The text for this part.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameter_id = args[:parameter_id] if args.key?(:parameter_id)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # The Knowledge Connector settings for this page or flow. This includes
      # information such as the attached Knowledge Bases, and the way to execute
      # fulfillment.
      class GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettings
        include Google::Apis::Core::Hashable
      
        # Optional. List of related data store connections.
        # Corresponds to the JSON property `dataStoreConnections`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1DataStoreConnection>]
        attr_accessor :data_store_connections
      
        # Whether Knowledge Connector is enabled or not.
        # Corresponds to the JSON property `enabled`
        # @return [Boolean]
        attr_accessor :enabled
        alias_method :enabled?, :enabled
      
        # The target flow to transition to. Format: `projects//locations//agents//flows/`
        # .
        # Corresponds to the JSON property `targetFlow`
        # @return [String]
        attr_accessor :target_flow
      
        # The target page to transition to. Format: `projects//locations//agents//flows//
        # pages/`.
        # Corresponds to the JSON property `targetPage`
        # @return [String]
        attr_accessor :target_page
      
        # A fulfillment can do one or more of the following actions at the same time: *
        # Generate rich message responses. * Set parameter values. * Call the webhook.
        # Fulfillments can be called at various stages in the Page or Form lifecycle.
        # For example, when a DetectIntentRequest drives a session to enter a new page,
        # the page's entry fulfillment can add a static response to the QueryResult in
        # the returning DetectIntentResponse, call the webhook (for example, to load
        # user data from a database), or both.
        # Corresponds to the JSON property `triggerFulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1Fulfillment]
        attr_accessor :trigger_fulfillment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_store_connections = args[:data_store_connections] if args.key?(:data_store_connections)
          @enabled = args[:enabled] if args.key?(:enabled)
          @target_flow = args[:target_flow] if args.key?(:target_flow)
          @target_page = args[:target_page] if args.key?(:target_page)
          @trigger_fulfillment = args[:trigger_fulfillment] if args.key?(:trigger_fulfillment)
        end
      end
      
      # Represents the language information of the request.
      class GoogleCloudDialogflowCxV3beta1LanguageInfo
        include Google::Apis::Core::Hashable
      
        # The confidence score of the detected language between 0 and 1.
        # Corresponds to the JSON property `confidenceScore`
        # @return [Float]
        attr_accessor :confidence_score
      
        # The language code specified in the original request.
        # Corresponds to the JSON property `inputLanguageCode`
        # @return [String]
        attr_accessor :input_language_code
      
        # The language code detected for this request based on the user conversation.
        # Corresponds to the JSON property `resolvedLanguageCode`
        # @return [String]
        attr_accessor :resolved_language_code
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_score = args[:confidence_score] if args.key?(:confidence_score)
          @input_language_code = args[:input_language_code] if args.key?(:input_language_code)
          @resolved_language_code = args[:resolved_language_code] if args.key?(:resolved_language_code)
        end
      end
      
      # A Dialogflow CX conversation (session) can be described and visualized as a
      # state machine. The states of a CX session are represented by pages. For each
      # flow, you define many pages, where your combined pages can handle a complete
      # conversation on the topics the flow is designed for. At any given moment,
      # exactly one page is the current page, the current page is considered active,
      # and the flow associated with that page is considered active. Every flow has a
      # special start page. When a flow initially becomes active, the start page page
      # becomes the current page. For each conversational turn, the current page will
      # either stay the same or transition to another page. You configure each page to
      # collect information from the end-user that is relevant for the conversational
      # state represented by the page. For more information, see the [Page guide](
      # https://cloud.google.com/dialogflow/cx/docs/concept/page).
      class GoogleCloudDialogflowCxV3beta1Page
        include Google::Apis::Core::Hashable
      
        # Hierarchical advanced settings for agent/flow/page/fulfillment/parameter.
        # Settings exposed at lower level overrides the settings exposed at higher level.
        # Overriding occurs at the sub-setting level. For example, the
        # playback_interruption_settings at fulfillment level only overrides the
        # playback_interruption_settings at the agent level, leaving other settings at
        # the agent level unchanged. DTMF settings does not override each other. DTMF
        # settings set at different levels define DTMF detections running in parallel.
        # Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
        # Corresponds to the JSON property `advancedSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1AdvancedSettings]
        attr_accessor :advanced_settings
      
        # The description of the page. The maximum length is 500 characters.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The human-readable name of the page, unique within the flow.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # A fulfillment can do one or more of the following actions at the same time: *
        # Generate rich message responses. * Set parameter values. * Call the webhook.
        # Fulfillments can be called at various stages in the Page or Form lifecycle.
        # For example, when a DetectIntentRequest drives a session to enter a new page,
        # the page's entry fulfillment can add a static response to the QueryResult in
        # the returning DetectIntentResponse, call the webhook (for example, to load
        # user data from a database), or both.
        # Corresponds to the JSON property `entryFulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1Fulfillment]
        attr_accessor :entry_fulfillment
      
        # Handlers associated with the page to handle events such as webhook errors, no
        # match or no input.
        # Corresponds to the JSON property `eventHandlers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1EventHandler>]
        attr_accessor :event_handlers
      
        # A form is a data model that groups related parameters that can be collected
        # from the user. The process in which the agent prompts the user and collects
        # parameter values from the user is called form filling. A form can be added to
        # a page. When form filling is done, the filled parameters will be written to
        # the session.
        # Corresponds to the JSON property `form`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1Form]
        attr_accessor :form
      
        # The Knowledge Connector settings for this page or flow. This includes
        # information such as the attached Knowledge Bases, and the way to execute
        # fulfillment.
        # Corresponds to the JSON property `knowledgeConnectorSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettings]
        attr_accessor :knowledge_connector_settings
      
        # The unique identifier of the page. Required for the Pages.UpdatePage method.
        # Pages.CreatePage populates the name automatically. Format: `projects//
        # locations//agents//flows//pages/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Ordered list of `TransitionRouteGroups` added to the page. Transition route
        # groups must be unique within a page. If the page links both flow-level
        # transition route groups and agent-level transition route groups, the flow-
        # level ones will have higher priority and will be put before the agent-level
        # ones. * If multiple transition routes within a page scope refer to the same
        # intent, then the precedence order is: page's transition route -> page's
        # transition route group -> flow's transition routes. * If multiple transition
        # route groups within a page contain the same intent, then the first group in
        # the ordered list takes precedence. Format:`projects//locations//agents//flows//
        # transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/
        # ` for agent-level groups.
        # Corresponds to the JSON property `transitionRouteGroups`
        # @return [Array<String>]
        attr_accessor :transition_route_groups
      
        # A list of transitions for the transition rules of this page. They route the
        # conversation to another page in the same flow, or another flow. When we are in
        # a certain page, the TransitionRoutes are evaluated in the following order: *
        # TransitionRoutes defined in the page with intent specified. * TransitionRoutes
        # defined in the transition route groups with intent specified. *
        # TransitionRoutes defined in flow with intent specified. * TransitionRoutes
        # defined in the transition route groups with intent specified. *
        # TransitionRoutes defined in the page with only condition specified. *
        # TransitionRoutes defined in the transition route groups with only condition
        # specified.
        # Corresponds to the JSON property `transitionRoutes`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TransitionRoute>]
        attr_accessor :transition_routes
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @advanced_settings = args[:advanced_settings] if args.key?(:advanced_settings)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @entry_fulfillment = args[:entry_fulfillment] if args.key?(:entry_fulfillment)
          @event_handlers = args[:event_handlers] if args.key?(:event_handlers)
          @form = args[:form] if args.key?(:form)
          @knowledge_connector_settings = args[:knowledge_connector_settings] if args.key?(:knowledge_connector_settings)
          @name = args[:name] if args.key?(:name)
          @transition_route_groups = args[:transition_route_groups] if args.key?(:transition_route_groups)
          @transition_routes = args[:transition_routes] if args.key?(:transition_routes)
        end
      end
      
      # Represents page information communicated to and from the webhook.
      class GoogleCloudDialogflowCxV3beta1PageInfo
        include Google::Apis::Core::Hashable
      
        # Always present for WebhookRequest. Ignored for WebhookResponse. The unique
        # identifier of the current page. Format: `projects//locations//agents//flows//
        # pages/`.
        # Corresponds to the JSON property `currentPage`
        # @return [String]
        attr_accessor :current_page
      
        # Always present for WebhookRequest. Ignored for WebhookResponse. The display
        # name of the current page.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents form information.
        # Corresponds to the JSON property `formInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1PageInfoFormInfo]
        attr_accessor :form_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @current_page = args[:current_page] if args.key?(:current_page)
          @display_name = args[:display_name] if args.key?(:display_name)
          @form_info = args[:form_info] if args.key?(:form_info)
        end
      end
      
      # Represents form information.
      class GoogleCloudDialogflowCxV3beta1PageInfoFormInfo
        include Google::Apis::Core::Hashable
      
        # Optional for both WebhookRequest and WebhookResponse. The parameters contained
        # in the form. Note that the webhook cannot add or remove any form parameter.
        # Corresponds to the JSON property `parameterInfo`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1PageInfoFormInfoParameterInfo>]
        attr_accessor :parameter_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameter_info = args[:parameter_info] if args.key?(:parameter_info)
        end
      end
      
      # Represents parameter information.
      class GoogleCloudDialogflowCxV3beta1PageInfoFormInfoParameterInfo
        include Google::Apis::Core::Hashable
      
        # Always present for WebhookRequest. Required for WebhookResponse. The human-
        # readable name of the parameter, unique within the form. This field cannot be
        # modified by the webhook.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional for WebhookRequest. Ignored for WebhookResponse. Indicates if the
        # parameter value was just collected on the last conversation turn.
        # Corresponds to the JSON property `justCollected`
        # @return [Boolean]
        attr_accessor :just_collected
        alias_method :just_collected?, :just_collected
      
        # Optional for both WebhookRequest and WebhookResponse. Indicates whether the
        # parameter is required. Optional parameters will not trigger prompts; however,
        # they are filled if the user specifies them. Required parameters must be filled
        # before form filling concludes.
        # Corresponds to the JSON property `required`
        # @return [Boolean]
        attr_accessor :required
        alias_method :required?, :required
      
        # Always present for WebhookRequest. Required for WebhookResponse. The state of
        # the parameter. This field can be set to INVALID by the webhook to invalidate
        # the parameter; other values set by the webhook will be ignored.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Optional for both WebhookRequest and WebhookResponse. The value of the
        # parameter. This field can be set by the webhook to change the parameter value.
        # Corresponds to the JSON property `value`
        # @return [Object]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
          @just_collected = args[:just_collected] if args.key?(:just_collected)
          @required = args[:required] if args.key?(:required)
          @state = args[:state] if args.key?(:state)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Represents the query input. It can contain one of: 1. A conversational query
      # in the form of text. 2. An intent query that specifies which intent to trigger.
      # 3. Natural language speech audio to be processed. 4. An event to be triggered.
      # 5. DTMF digits to invoke an intent and fill in parameter value. 6. The
      # results of a tool executed by the client.
      class GoogleCloudDialogflowCxV3beta1QueryInput
        include Google::Apis::Core::Hashable
      
        # Represents the natural speech audio to be processed.
        # Corresponds to the JSON property `audio`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1AudioInput]
        attr_accessor :audio
      
        # Represents the input for dtmf event.
        # Corresponds to the JSON property `dtmf`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1DtmfInput]
        attr_accessor :dtmf
      
        # Represents the event to trigger.
        # Corresponds to the JSON property `event`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1EventInput]
        attr_accessor :event
      
        # Represents the intent to trigger programmatically rather than as a result of
        # natural language processing.
        # Corresponds to the JSON property `intent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1IntentInput]
        attr_accessor :intent
      
        # Required. The language of the input. See [Language Support](https://cloud.
        # google.com/dialogflow/cx/docs/reference/language) for a list of the currently
        # supported language codes. Note that queries in the same session do not
        # necessarily need to specify the same language.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Represents the natural language text to be processed.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TextInput]
        attr_accessor :text
      
        # The result of calling a tool's action that has been executed by the client.
        # Corresponds to the JSON property `toolCallResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ToolCallResult]
        attr_accessor :tool_call_result
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio = args[:audio] if args.key?(:audio)
          @dtmf = args[:dtmf] if args.key?(:dtmf)
          @event = args[:event] if args.key?(:event)
          @intent = args[:intent] if args.key?(:intent)
          @language_code = args[:language_code] if args.key?(:language_code)
          @text = args[:text] if args.key?(:text)
          @tool_call_result = args[:tool_call_result] if args.key?(:tool_call_result)
        end
      end
      
      # Represents a response message that can be returned by a conversational agent.
      # Response messages are also used for output audio synthesis. The approach is as
      # follows: * If at least one OutputAudioText response is present, then all
      # OutputAudioText responses are linearly concatenated, and the result is used
      # for output audio synthesis. * If the OutputAudioText responses are a mixture
      # of text and SSML, then the concatenated result is treated as SSML; otherwise,
      # the result is treated as either text or SSML as appropriate. The agent
      # designer should ideally use either text or SSML consistently throughout the
      # bot design. * Otherwise, all Text responses are linearly concatenated, and the
      # result is used for output audio synthesis. This approach allows for more
      # sophisticated user experience scenarios, where the text displayed to the user
      # may differ from what is heard.
      class GoogleCloudDialogflowCxV3beta1ResponseMessage
        include Google::Apis::Core::Hashable
      
        # The channel which the response is associated with. Clients can specify the
        # channel via QueryParameters.channel, and only associated channel response will
        # be returned.
        # Corresponds to the JSON property `channel`
        # @return [String]
        attr_accessor :channel
      
        # Indicates that the conversation succeeded, i.e., the bot handled the issue
        # that the customer talked to it about. Dialogflow only uses this to determine
        # which conversations should be counted as successful and doesn't process the
        # metadata in this message in any way. Note that Dialogflow also considers
        # conversations that get to the conversation end page as successful even if they
        # don't return ConversationSuccess. You may set this, for example: * In the
        # entry_fulfillment of a Page if entering the page indicates that the
        # conversation succeeded. * In a webhook response when you determine that you
        # handled the customer issue.
        # Corresponds to the JSON property `conversationSuccess`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessageConversationSuccess]
        attr_accessor :conversation_success
      
        # Indicates that interaction with the Dialogflow agent has ended. This message
        # is generated by Dialogflow only and not supposed to be defined by the user.
        # Corresponds to the JSON property `endInteraction`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessageEndInteraction]
        attr_accessor :end_interaction
      
        # Represents info card response. If the response contains generative knowledge
        # prediction, Dialogflow will return a payload with Infobot Messenger compatible
        # info card. Otherwise, the info card response is skipped.
        # Corresponds to the JSON property `knowledgeInfoCard`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessageKnowledgeInfoCard]
        attr_accessor :knowledge_info_card
      
        # Indicates that the conversation should be handed off to a live agent.
        # Dialogflow only uses this to determine which conversations were handed off to
        # a human agent for measurement purposes. What else to do with this signal is up
        # to you and your handoff procedures. You may set this, for example: * In the
        # entry_fulfillment of a Page if entering the page indicates something went
        # extremely wrong in the conversation. * In a webhook response when you
        # determine that the customer issue can only be handled by a human.
        # Corresponds to the JSON property `liveAgentHandoff`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessageLiveAgentHandoff]
        attr_accessor :live_agent_handoff
      
        # Represents an audio message that is composed of both segments synthesized from
        # the Dialogflow agent prompts and ones hosted externally at the specified URIs.
        # The external URIs are specified via play_audio. This message is generated by
        # Dialogflow only and not supposed to be defined by the user.
        # Corresponds to the JSON property `mixedAudio`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudio]
        attr_accessor :mixed_audio
      
        # A text or ssml response that is preferentially used for TTS output audio
        # synthesis, as described in the comment on the ResponseMessage message.
        # Corresponds to the JSON property `outputAudioText`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessageOutputAudioText]
        attr_accessor :output_audio_text
      
        # Returns a response containing a custom, platform-specific payload.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Specifies an audio clip to be played by the client as part of the response.
        # Corresponds to the JSON property `playAudio`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessagePlayAudio]
        attr_accessor :play_audio
      
        # Represents the signal that telles the client to transfer the phone call
        # connected to the agent to a third-party endpoint.
        # Corresponds to the JSON property `telephonyTransferCall`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessageTelephonyTransferCall]
        attr_accessor :telephony_transfer_call
      
        # The text response message.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessageText]
        attr_accessor :text
      
        # Represents a call of a specific tool's action with the specified inputs.
        # Corresponds to the JSON property `toolCall`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ToolCall]
        attr_accessor :tool_call
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @channel = args[:channel] if args.key?(:channel)
          @conversation_success = args[:conversation_success] if args.key?(:conversation_success)
          @end_interaction = args[:end_interaction] if args.key?(:end_interaction)
          @knowledge_info_card = args[:knowledge_info_card] if args.key?(:knowledge_info_card)
          @live_agent_handoff = args[:live_agent_handoff] if args.key?(:live_agent_handoff)
          @mixed_audio = args[:mixed_audio] if args.key?(:mixed_audio)
          @output_audio_text = args[:output_audio_text] if args.key?(:output_audio_text)
          @payload = args[:payload] if args.key?(:payload)
          @play_audio = args[:play_audio] if args.key?(:play_audio)
          @telephony_transfer_call = args[:telephony_transfer_call] if args.key?(:telephony_transfer_call)
          @text = args[:text] if args.key?(:text)
          @tool_call = args[:tool_call] if args.key?(:tool_call)
        end
      end
      
      # Indicates that the conversation succeeded, i.e., the bot handled the issue
      # that the customer talked to it about. Dialogflow only uses this to determine
      # which conversations should be counted as successful and doesn't process the
      # metadata in this message in any way. Note that Dialogflow also considers
      # conversations that get to the conversation end page as successful even if they
      # don't return ConversationSuccess. You may set this, for example: * In the
      # entry_fulfillment of a Page if entering the page indicates that the
      # conversation succeeded. * In a webhook response when you determine that you
      # handled the customer issue.
      class GoogleCloudDialogflowCxV3beta1ResponseMessageConversationSuccess
        include Google::Apis::Core::Hashable
      
        # Custom metadata. Dialogflow doesn't impose any structure on this.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # Indicates that interaction with the Dialogflow agent has ended. This message
      # is generated by Dialogflow only and not supposed to be defined by the user.
      class GoogleCloudDialogflowCxV3beta1ResponseMessageEndInteraction
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Represents info card response. If the response contains generative knowledge
      # prediction, Dialogflow will return a payload with Infobot Messenger compatible
      # info card. Otherwise, the info card response is skipped.
      class GoogleCloudDialogflowCxV3beta1ResponseMessageKnowledgeInfoCard
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Indicates that the conversation should be handed off to a live agent.
      # Dialogflow only uses this to determine which conversations were handed off to
      # a human agent for measurement purposes. What else to do with this signal is up
      # to you and your handoff procedures. You may set this, for example: * In the
      # entry_fulfillment of a Page if entering the page indicates something went
      # extremely wrong in the conversation. * In a webhook response when you
      # determine that the customer issue can only be handled by a human.
      class GoogleCloudDialogflowCxV3beta1ResponseMessageLiveAgentHandoff
        include Google::Apis::Core::Hashable
      
        # Custom metadata for your handoff procedure. Dialogflow doesn't impose any
        # structure on this.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # Represents an audio message that is composed of both segments synthesized from
      # the Dialogflow agent prompts and ones hosted externally at the specified URIs.
      # The external URIs are specified via play_audio. This message is generated by
      # Dialogflow only and not supposed to be defined by the user.
      class GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudio
        include Google::Apis::Core::Hashable
      
        # Segments this audio response is composed of.
        # Corresponds to the JSON property `segments`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudioSegment>]
        attr_accessor :segments
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @segments = args[:segments] if args.key?(:segments)
        end
      end
      
      # Represents one segment of audio.
      class GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudioSegment
        include Google::Apis::Core::Hashable
      
        # Output only. Whether the playback of this segment can be interrupted by the
        # end user's speech and the client should then start the next Dialogflow request.
        # Corresponds to the JSON property `allowPlaybackInterruption`
        # @return [Boolean]
        attr_accessor :allow_playback_interruption
        alias_method :allow_playback_interruption?, :allow_playback_interruption
      
        # Raw audio synthesized from the Dialogflow agent's response using the output
        # config specified in the request.
        # Corresponds to the JSON property `audio`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :audio
      
        # Client-specific URI that points to an audio clip accessible to the client.
        # Dialogflow does not impose any validation on it.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_playback_interruption = args[:allow_playback_interruption] if args.key?(:allow_playback_interruption)
          @audio = args[:audio] if args.key?(:audio)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # A text or ssml response that is preferentially used for TTS output audio
      # synthesis, as described in the comment on the ResponseMessage message.
      class GoogleCloudDialogflowCxV3beta1ResponseMessageOutputAudioText
        include Google::Apis::Core::Hashable
      
        # Output only. Whether the playback of this message can be interrupted by the
        # end user's speech and the client can then starts the next Dialogflow request.
        # Corresponds to the JSON property `allowPlaybackInterruption`
        # @return [Boolean]
        attr_accessor :allow_playback_interruption
        alias_method :allow_playback_interruption?, :allow_playback_interruption
      
        # The SSML text to be synthesized. For more information, see [SSML](/speech/text-
        # to-speech/docs/ssml).
        # Corresponds to the JSON property `ssml`
        # @return [String]
        attr_accessor :ssml
      
        # The raw text to be synthesized.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_playback_interruption = args[:allow_playback_interruption] if args.key?(:allow_playback_interruption)
          @ssml = args[:ssml] if args.key?(:ssml)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Specifies an audio clip to be played by the client as part of the response.
      class GoogleCloudDialogflowCxV3beta1ResponseMessagePlayAudio
        include Google::Apis::Core::Hashable
      
        # Output only. Whether the playback of this message can be interrupted by the
        # end user's speech and the client can then starts the next Dialogflow request.
        # Corresponds to the JSON property `allowPlaybackInterruption`
        # @return [Boolean]
        attr_accessor :allow_playback_interruption
        alias_method :allow_playback_interruption?, :allow_playback_interruption
      
        # Required. URI of the audio clip. Dialogflow does not impose any validation on
        # this value. It is specific to the client that reads it.
        # Corresponds to the JSON property `audioUri`
        # @return [String]
        attr_accessor :audio_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_playback_interruption = args[:allow_playback_interruption] if args.key?(:allow_playback_interruption)
          @audio_uri = args[:audio_uri] if args.key?(:audio_uri)
        end
      end
      
      # Represents the signal that telles the client to transfer the phone call
      # connected to the agent to a third-party endpoint.
      class GoogleCloudDialogflowCxV3beta1ResponseMessageTelephonyTransferCall
        include Google::Apis::Core::Hashable
      
        # Transfer the call to a phone number in [E.164 format](https://en.wikipedia.org/
        # wiki/E.164).
        # Corresponds to the JSON property `phoneNumber`
        # @return [String]
        attr_accessor :phone_number
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @phone_number = args[:phone_number] if args.key?(:phone_number)
        end
      end
      
      # The text response message.
      class GoogleCloudDialogflowCxV3beta1ResponseMessageText
        include Google::Apis::Core::Hashable
      
        # Output only. Whether the playback of this message can be interrupted by the
        # end user's speech and the client can then starts the next Dialogflow request.
        # Corresponds to the JSON property `allowPlaybackInterruption`
        # @return [Boolean]
        attr_accessor :allow_playback_interruption
        alias_method :allow_playback_interruption?, :allow_playback_interruption
      
        # Required. A collection of text response variants. If multiple variants are
        # defined, only one text response variant is returned at runtime.
        # Corresponds to the JSON property `text`
        # @return [Array<String>]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_playback_interruption = args[:allow_playback_interruption] if args.key?(:allow_playback_interruption)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Metadata returned for the Environments.RunContinuousTest long running
      # operation.
      class GoogleCloudDialogflowCxV3beta1RunContinuousTestMetadata
        include Google::Apis::Core::Hashable
      
        # The test errors.
        # Corresponds to the JSON property `errors`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TestError>]
        attr_accessor :errors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @errors = args[:errors] if args.key?(:errors)
        end
      end
      
      # The response message for Environments.RunContinuousTest.
      class GoogleCloudDialogflowCxV3beta1RunContinuousTestResponse
        include Google::Apis::Core::Hashable
      
        # Represents a result from running a test case in an agent environment.
        # Corresponds to the JSON property `continuousTestResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ContinuousTestResult]
        attr_accessor :continuous_test_result
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @continuous_test_result = args[:continuous_test_result] if args.key?(:continuous_test_result)
        end
      end
      
      # Metadata returned for the TestCases.RunTestCase long running operation. This
      # message currently has no fields.
      class GoogleCloudDialogflowCxV3beta1RunTestCaseMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The response message for TestCases.RunTestCase.
      class GoogleCloudDialogflowCxV3beta1RunTestCaseResponse
        include Google::Apis::Core::Hashable
      
        # Represents a result from running a test case in an agent environment.
        # Corresponds to the JSON property `result`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TestCaseResult]
        attr_accessor :result
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @result = args[:result] if args.key?(:result)
        end
      end
      
      # Represents session information communicated to and from the webhook.
      class GoogleCloudDialogflowCxV3beta1SessionInfo
        include Google::Apis::Core::Hashable
      
        # Optional for WebhookRequest. Optional for WebhookResponse. All parameters
        # collected from forms and intents during the session. Parameters can be created,
        # updated, or removed by the webhook. To remove a parameter from the session,
        # the webhook should explicitly set the parameter value to null in
        # WebhookResponse. The map is keyed by parameters' display names.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        # Always present for WebhookRequest. Ignored for WebhookResponse. The unique
        # identifier of the session. This field can be used by the webhook to identify a
        # session. Format: `projects//locations//agents//sessions/` or `projects//
        # locations//agents//environments//sessions/` if environment is specified.
        # Corresponds to the JSON property `session`
        # @return [String]
        attr_accessor :session
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameters = args[:parameters] if args.key?(:parameters)
          @session = args[:session] if args.key?(:session)
        end
      end
      
      # Represents a test case.
      class GoogleCloudDialogflowCxV3beta1TestCase
        include Google::Apis::Core::Hashable
      
        # Output only. When the test was created.
        # Corresponds to the JSON property `creationTime`
        # @return [String]
        attr_accessor :creation_time
      
        # Required. The human-readable name of the test case, unique within the agent.
        # Limit of 200 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a result from running a test case in an agent environment.
        # Corresponds to the JSON property `lastTestResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TestCaseResult]
        attr_accessor :last_test_result
      
        # The unique identifier of the test case. TestCases.CreateTestCase will populate
        # the name automatically. Otherwise use format: `projects//locations//agents//
        # testCases/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Additional freeform notes about the test case. Limit of 400 characters.
        # Corresponds to the JSON property `notes`
        # @return [String]
        attr_accessor :notes
      
        # Tags are short descriptions that users may apply to test cases for
        # organizational and filtering purposes. Each tag should start with "#" and has
        # a limit of 30 characters.
        # Corresponds to the JSON property `tags`
        # @return [Array<String>]
        attr_accessor :tags
      
        # The conversation turns uttered when the test case was created, in
        # chronological order. These include the canonical set of agent utterances that
        # should occur when the agent is working properly.
        # Corresponds to the JSON property `testCaseConversationTurns`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ConversationTurn>]
        attr_accessor :test_case_conversation_turns
      
        # Represents configurations for a test case.
        # Corresponds to the JSON property `testConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TestConfig]
        attr_accessor :test_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @creation_time = args[:creation_time] if args.key?(:creation_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @last_test_result = args[:last_test_result] if args.key?(:last_test_result)
          @name = args[:name] if args.key?(:name)
          @notes = args[:notes] if args.key?(:notes)
          @tags = args[:tags] if args.key?(:tags)
          @test_case_conversation_turns = args[:test_case_conversation_turns] if args.key?(:test_case_conversation_turns)
          @test_config = args[:test_config] if args.key?(:test_config)
        end
      end
      
      # Error info for importing a test.
      class GoogleCloudDialogflowCxV3beta1TestCaseError
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :status
      
        # Represents a test case.
        # Corresponds to the JSON property `testCase`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1TestCase]
        attr_accessor :test_case
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @status = args[:status] if args.key?(:status)
          @test_case = args[:test_case] if args.key?(:test_case)
        end
      end
      
      # Represents a result from running a test case in an agent environment.
      class GoogleCloudDialogflowCxV3beta1TestCaseResult
        include Google::Apis::Core::Hashable
      
        # The conversation turns uttered during the test case replay in chronological
        # order.
        # Corresponds to the JSON property `conversationTurns`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ConversationTurn>]
        attr_accessor :conversation_turns
      
        # Environment where the test was run. If not set, it indicates the draft
        # environment.
        # Corresponds to the JSON property `environment`
        # @return [String]
        attr_accessor :environment
      
        # The resource name for the test case result. Format: `projects//locations//
        # agents//testCases//results/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Whether the test case passed in the agent environment.
        # Corresponds to the JSON property `testResult`
        # @return [String]
        attr_accessor :test_result
      
        # The time that the test was run.
        # Corresponds to the JSON property `testTime`
        # @return [String]
        attr_accessor :test_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_turns = args[:conversation_turns] if args.key?(:conversation_turns)
          @environment = args[:environment] if args.key?(:environment)
          @name = args[:name] if args.key?(:name)
          @test_result = args[:test_result] if args.key?(:test_result)
          @test_time = args[:test_time] if args.key?(:test_time)
        end
      end
      
      # Represents configurations for a test case.
      class GoogleCloudDialogflowCxV3beta1TestConfig
        include Google::Apis::Core::Hashable
      
        # Flow name to start the test case with. Format: `projects//locations//agents//
        # flows/`. Only one of `flow` and `page` should be set to indicate the starting
        # point of the test case. If neither is set, the test case will start with start
        # page on the default start flow.
        # Corresponds to the JSON property `flow`
        # @return [String]
        attr_accessor :flow
      
        # The page to start the test case with. Format: `projects//locations//agents//
        # flows//pages/`. Only one of `flow` and `page` should be set to indicate the
        # starting point of the test case. If neither is set, the test case will start
        # with start page on the default start flow.
        # Corresponds to the JSON property `page`
        # @return [String]
        attr_accessor :page
      
        # Session parameters to be compared when calculating differences.
        # Corresponds to the JSON property `trackingParameters`
        # @return [Array<String>]
        attr_accessor :tracking_parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @flow = args[:flow] if args.key?(:flow)
          @page = args[:page] if args.key?(:page)
          @tracking_parameters = args[:tracking_parameters] if args.key?(:tracking_parameters)
        end
      end
      
      # Error info for running a test.
      class GoogleCloudDialogflowCxV3beta1TestError
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :status
      
        # The test case resource name.
        # Corresponds to the JSON property `testCase`
        # @return [String]
        attr_accessor :test_case
      
        # The timestamp when the test was completed.
        # Corresponds to the JSON property `testTime`
        # @return [String]
        attr_accessor :test_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @status = args[:status] if args.key?(:status)
          @test_case = args[:test_case] if args.key?(:test_case)
          @test_time = args[:test_time] if args.key?(:test_time)
        end
      end
      
      # The description of differences between original and replayed agent output.
      class GoogleCloudDialogflowCxV3beta1TestRunDifference
        include Google::Apis::Core::Hashable
      
        # A human readable description of the diff, showing the actual output vs
        # expected output.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The type of diff.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Represents the natural language text to be processed.
      class GoogleCloudDialogflowCxV3beta1TextInput
        include Google::Apis::Core::Hashable
      
        # Required. The UTF-8 encoded natural language text to be processed.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Represents a call of a specific tool's action with the specified inputs.
      class GoogleCloudDialogflowCxV3beta1ToolCall
        include Google::Apis::Core::Hashable
      
        # Required. The name of the tool's action associated with this call.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # Optional. The action's input parameters.
        # Corresponds to the JSON property `inputParameters`
        # @return [Hash<String,Object>]
        attr_accessor :input_parameters
      
        # Required. The tool associated with this call. Format: `projects//locations//
        # agents//tools/`.
        # Corresponds to the JSON property `tool`
        # @return [String]
        attr_accessor :tool
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @input_parameters = args[:input_parameters] if args.key?(:input_parameters)
          @tool = args[:tool] if args.key?(:tool)
        end
      end
      
      # The result of calling a tool's action that has been executed by the client.
      class GoogleCloudDialogflowCxV3beta1ToolCallResult
        include Google::Apis::Core::Hashable
      
        # Required. The name of the tool's action associated with this call.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # An error produced by the tool call.
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ToolCallResultError]
        attr_accessor :error
      
        # The tool call's output parameters.
        # Corresponds to the JSON property `outputParameters`
        # @return [Hash<String,Object>]
        attr_accessor :output_parameters
      
        # Required. The tool associated with this call. Format: `projects//locations//
        # agents//tools/`.
        # Corresponds to the JSON property `tool`
        # @return [String]
        attr_accessor :tool
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @error = args[:error] if args.key?(:error)
          @output_parameters = args[:output_parameters] if args.key?(:output_parameters)
          @tool = args[:tool] if args.key?(:tool)
        end
      end
      
      # An error produced by the tool call.
      class GoogleCloudDialogflowCxV3beta1ToolCallResultError
        include Google::Apis::Core::Hashable
      
        # Optional. The error message of the function.
        # Corresponds to the JSON property `message`
        # @return [String]
        attr_accessor :message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @message = args[:message] if args.key?(:message)
        end
      end
      
      # A transition route specifies a intent that can be matched and/or a data
      # condition that can be evaluated during a session. When a specified transition
      # is matched, the following actions are taken in order: * If there is a `
      # trigger_fulfillment` associated with the transition, it will be called. * If
      # there is a `target_page` associated with the transition, the session will
      # transition into the specified page. * If there is a `target_flow` associated
      # with the transition, the session will transition into the specified flow.
      class GoogleCloudDialogflowCxV3beta1TransitionRoute
        include Google::Apis::Core::Hashable
      
        # The condition to evaluate against form parameters or session parameters. See
        # the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/
        # reference/condition). At least one of `intent` or `condition` must be
        # specified. When both `intent` and `condition` are specified, the transition
        # can only happen when both are fulfilled.
        # Corresponds to the JSON property `condition`
        # @return [String]
        attr_accessor :condition
      
        # Optional. The description of the transition route. The maximum length is 500
        # characters.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The unique identifier of an Intent. Format: `projects//locations//agents//
        # intents/`. Indicates that the transition can only happen when the given intent
        # is matched. At least one of `intent` or `condition` must be specified. When
        # both `intent` and `condition` are specified, the transition can only happen
        # when both are fulfilled.
        # Corresponds to the JSON property `intent`
        # @return [String]
        attr_accessor :intent
      
        # Output only. The unique identifier of this transition route.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The target flow to transition to. Format: `projects//locations//agents//flows/`
        # .
        # Corresponds to the JSON property `targetFlow`
        # @return [String]
        attr_accessor :target_flow
      
        # The target page to transition to. Format: `projects//locations//agents//flows//
        # pages/`.
        # Corresponds to the JSON property `targetPage`
        # @return [String]
        attr_accessor :target_page
      
        # A fulfillment can do one or more of the following actions at the same time: *
        # Generate rich message responses. * Set parameter values. * Call the webhook.
        # Fulfillments can be called at various stages in the Page or Form lifecycle.
        # For example, when a DetectIntentRequest drives a session to enter a new page,
        # the page's entry fulfillment can add a static response to the QueryResult in
        # the returning DetectIntentResponse, call the webhook (for example, to load
        # user data from a database), or both.
        # Corresponds to the JSON property `triggerFulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1Fulfillment]
        attr_accessor :trigger_fulfillment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @condition = args[:condition] if args.key?(:condition)
          @description = args[:description] if args.key?(:description)
          @intent = args[:intent] if args.key?(:intent)
          @name = args[:name] if args.key?(:name)
          @target_flow = args[:target_flow] if args.key?(:target_flow)
          @target_page = args[:target_page] if args.key?(:target_page)
          @trigger_fulfillment = args[:trigger_fulfillment] if args.key?(:trigger_fulfillment)
        end
      end
      
      # Collection of all signals that were extracted for a single turn of the
      # conversation.
      class GoogleCloudDialogflowCxV3beta1TurnSignals
        include Google::Apis::Core::Hashable
      
        # Whether agent responded with LiveAgentHandoff fulfillment.
        # Corresponds to the JSON property `agentEscalated`
        # @return [Boolean]
        attr_accessor :agent_escalated
        alias_method :agent_escalated?, :agent_escalated
      
        # Whether user was using DTMF input.
        # Corresponds to the JSON property `dtmfUsed`
        # @return [Boolean]
        attr_accessor :dtmf_used
        alias_method :dtmf_used?, :dtmf_used
      
        # Failure reasons of the turn.
        # Corresponds to the JSON property `failureReasons`
        # @return [Array<String>]
        attr_accessor :failure_reasons
      
        # Whether NLU predicted NO_MATCH.
        # Corresponds to the JSON property `noMatch`
        # @return [Boolean]
        attr_accessor :no_match
        alias_method :no_match?, :no_match
      
        # Whether user provided no input.
        # Corresponds to the JSON property `noUserInput`
        # @return [Boolean]
        attr_accessor :no_user_input
        alias_method :no_user_input?, :no_user_input
      
        # Whether turn resulted in End Session page.
        # Corresponds to the JSON property `reachedEndPage`
        # @return [Boolean]
        attr_accessor :reached_end_page
        alias_method :reached_end_page?, :reached_end_page
      
        # Sentiment magnitude of the user utterance if [sentiment](https://cloud.google.
        # com/dialogflow/cx/docs/concept/sentiment) was enabled.
        # Corresponds to the JSON property `sentimentMagnitude`
        # @return [Float]
        attr_accessor :sentiment_magnitude
      
        # Sentiment score of the user utterance if [sentiment](https://cloud.google.com/
        # dialogflow/cx/docs/concept/sentiment) was enabled.
        # Corresponds to the JSON property `sentimentScore`
        # @return [Float]
        attr_accessor :sentiment_score
      
        # Whether user was specifically asking for a live agent.
        # Corresponds to the JSON property `userEscalated`
        # @return [Boolean]
        attr_accessor :user_escalated
        alias_method :user_escalated?, :user_escalated
      
        # Human-readable statuses of the webhooks triggered during this turn.
        # Corresponds to the JSON property `webhookStatuses`
        # @return [Array<String>]
        attr_accessor :webhook_statuses
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_escalated = args[:agent_escalated] if args.key?(:agent_escalated)
          @dtmf_used = args[:dtmf_used] if args.key?(:dtmf_used)
          @failure_reasons = args[:failure_reasons] if args.key?(:failure_reasons)
          @no_match = args[:no_match] if args.key?(:no_match)
          @no_user_input = args[:no_user_input] if args.key?(:no_user_input)
          @reached_end_page = args[:reached_end_page] if args.key?(:reached_end_page)
          @sentiment_magnitude = args[:sentiment_magnitude] if args.key?(:sentiment_magnitude)
          @sentiment_score = args[:sentiment_score] if args.key?(:sentiment_score)
          @user_escalated = args[:user_escalated] if args.key?(:user_escalated)
          @webhook_statuses = args[:webhook_statuses] if args.key?(:webhook_statuses)
        end
      end
      
      # Webhooks host the developer's business logic. During a session, webhooks allow
      # the developer to use the data extracted by Dialogflow's natural language
      # processing to generate dynamic responses, validate collected data, or trigger
      # actions on the backend.
      class GoogleCloudDialogflowCxV3beta1Webhook
        include Google::Apis::Core::Hashable
      
        # Indicates whether the webhook is disabled.
        # Corresponds to the JSON property `disabled`
        # @return [Boolean]
        attr_accessor :disabled
        alias_method :disabled?, :disabled
      
        # Required. The human-readable name of the webhook, unique within the agent.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents configuration for a generic web service.
        # Corresponds to the JSON property `genericWebService`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1WebhookGenericWebService]
        attr_accessor :generic_web_service
      
        # The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook
        # method. Webhooks.CreateWebhook populates the name automatically. Format: `
        # projects//locations//agents//webhooks/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Represents configuration for a [Service Directory](https://cloud.google.com/
        # service-directory) service.
        # Corresponds to the JSON property `serviceDirectory`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfig]
        attr_accessor :service_directory
      
        # Webhook execution timeout. Execution is considered failed if Dialogflow doesn'
        # t receive a response from webhook at the end of the timeout period. Defaults
        # to 5 seconds, maximum allowed timeout is 30 seconds.
        # Corresponds to the JSON property `timeout`
        # @return [String]
        attr_accessor :timeout
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disabled = args[:disabled] if args.key?(:disabled)
          @display_name = args[:display_name] if args.key?(:display_name)
          @generic_web_service = args[:generic_web_service] if args.key?(:generic_web_service)
          @name = args[:name] if args.key?(:name)
          @service_directory = args[:service_directory] if args.key?(:service_directory)
          @timeout = args[:timeout] if args.key?(:timeout)
        end
      end
      
      # Represents configuration for a generic web service.
      class GoogleCloudDialogflowCxV3beta1WebhookGenericWebService
        include Google::Apis::Core::Hashable
      
        # Optional. Specifies a list of allowed custom CA certificates (in DER format)
        # for HTTPS verification. This overrides the default SSL trust store. If this is
        # empty or unspecified, Dialogflow will use Google's default trust store to
        # verify certificates. N.B. Make sure the HTTPS server certificates are signed
        # with "subject alt name". For instance a certificate can be self-signed using
        # the following command, ``` openssl x509 -req -days 200 -in example.com.csr \ -
        # signkey example.com.key \ -out example.com.crt \ -extfile <(printf "\
        # nsubjectAltName='DNS:www.example.com'") ```
        # Corresponds to the JSON property `allowedCaCerts`
        # @return [Array<String>]
        attr_accessor :allowed_ca_certs
      
        # Optional. HTTP method for the flexible webhook calls. Standard webhook always
        # uses POST.
        # Corresponds to the JSON property `httpMethod`
        # @return [String]
        attr_accessor :http_method
      
        # Represents configuration of OAuth client credential flow for 3rd party API
        # authentication.
        # Corresponds to the JSON property `oauthConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceOAuthConfig]
        attr_accessor :oauth_config
      
        # Optional. Maps the values extracted from specific fields of the flexible
        # webhook response into session parameters. - Key: session parameter name -
        # Value: field path in the webhook response
        # Corresponds to the JSON property `parameterMapping`
        # @return [Hash<String,String>]
        attr_accessor :parameter_mapping
      
        # The password for HTTP Basic authentication.
        # Corresponds to the JSON property `password`
        # @return [String]
        attr_accessor :password
      
        # Optional. Defines a custom JSON object as request body to send to flexible
        # webhook.
        # Corresponds to the JSON property `requestBody`
        # @return [String]
        attr_accessor :request_body
      
        # The HTTP request headers to send together with webhook requests.
        # Corresponds to the JSON property `requestHeaders`
        # @return [Hash<String,String>]
        attr_accessor :request_headers
      
        # Optional. The SecretManager secret version resource storing the username:
        # password pair for HTTP Basic authentication. Format: `projects/`project`/
        # secrets/`secret`/versions/`version``
        # Corresponds to the JSON property `secretVersionForUsernamePassword`
        # @return [String]
        attr_accessor :secret_version_for_username_password
      
        # Optional. The HTTP request headers to send together with webhook requests.
        # Header values are stored in SecretManager secret versions. When the same
        # header name is specified in both `request_headers` and `
        # secret_versions_for_request_headers`, the value in `
        # secret_versions_for_request_headers` will be used.
        # Corresponds to the JSON property `secretVersionsForRequestHeaders`
        # @return [Hash<String,Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceSecretVersionHeaderValue>]
        attr_accessor :secret_versions_for_request_headers
      
        # Optional. Indicate the auth token type generated from the [Diglogflow service
        # agent](https://cloud.google.com/iam/docs/service-agents#dialogflow-service-
        # agent). The generated token is sent in the Authorization header.
        # Corresponds to the JSON property `serviceAgentAuth`
        # @return [String]
        attr_accessor :service_agent_auth
      
        # Required. The webhook URI for receiving POST requests. It must use https
        # protocol.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        # The user name for HTTP Basic authentication.
        # Corresponds to the JSON property `username`
        # @return [String]
        attr_accessor :username
      
        # Optional. Type of the webhook.
        # Corresponds to the JSON property `webhookType`
        # @return [String]
        attr_accessor :webhook_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allowed_ca_certs = args[:allowed_ca_certs] if args.key?(:allowed_ca_certs)
          @http_method = args[:http_method] if args.key?(:http_method)
          @oauth_config = args[:oauth_config] if args.key?(:oauth_config)
          @parameter_mapping = args[:parameter_mapping] if args.key?(:parameter_mapping)
          @password = args[:password] if args.key?(:password)
          @request_body = args[:request_body] if args.key?(:request_body)
          @request_headers = args[:request_headers] if args.key?(:request_headers)
          @secret_version_for_username_password = args[:secret_version_for_username_password] if args.key?(:secret_version_for_username_password)
          @secret_versions_for_request_headers = args[:secret_versions_for_request_headers] if args.key?(:secret_versions_for_request_headers)
          @service_agent_auth = args[:service_agent_auth] if args.key?(:service_agent_auth)
          @uri = args[:uri] if args.key?(:uri)
          @username = args[:username] if args.key?(:username)
          @webhook_type = args[:webhook_type] if args.key?(:webhook_type)
        end
      end
      
      # Represents configuration of OAuth client credential flow for 3rd party API
      # authentication.
      class GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceOAuthConfig
        include Google::Apis::Core::Hashable
      
        # Required. The client ID provided by the 3rd party platform.
        # Corresponds to the JSON property `clientId`
        # @return [String]
        attr_accessor :client_id
      
        # Optional. The client secret provided by the 3rd party platform.
        # Corresponds to the JSON property `clientSecret`
        # @return [String]
        attr_accessor :client_secret
      
        # Optional. The OAuth scopes to grant.
        # Corresponds to the JSON property `scopes`
        # @return [Array<String>]
        attr_accessor :scopes
      
        # Optional. The name of the SecretManager secret version resource storing the
        # client secret. If this field is set, the `client_secret` field will be ignored.
        # Format: `projects/`project`/secrets/`secret`/versions/`version``
        # Corresponds to the JSON property `secretVersionForClientSecret`
        # @return [String]
        attr_accessor :secret_version_for_client_secret
      
        # Required. The token endpoint provided by the 3rd party platform to exchange an
        # access token.
        # Corresponds to the JSON property `tokenEndpoint`
        # @return [String]
        attr_accessor :token_endpoint
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @client_id = args[:client_id] if args.key?(:client_id)
          @client_secret = args[:client_secret] if args.key?(:client_secret)
          @scopes = args[:scopes] if args.key?(:scopes)
          @secret_version_for_client_secret = args[:secret_version_for_client_secret] if args.key?(:secret_version_for_client_secret)
          @token_endpoint = args[:token_endpoint] if args.key?(:token_endpoint)
        end
      end
      
      # Represents the value of an HTTP header stored in a SecretManager secret
      # version.
      class GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceSecretVersionHeaderValue
        include Google::Apis::Core::Hashable
      
        # Required. The SecretManager secret version resource storing the header value.
        # Format: `projects/`project`/secrets/`secret`/versions/`version``
        # Corresponds to the JSON property `secretVersion`
        # @return [String]
        attr_accessor :secret_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @secret_version = args[:secret_version] if args.key?(:secret_version)
        end
      end
      
      # The request message for a webhook call. The request is sent as a JSON object
      # and the field names will be presented in camel cases. You may see undocumented
      # fields in an actual request. These fields are used internally by Dialogflow
      # and should be ignored.
      class GoogleCloudDialogflowCxV3beta1WebhookRequest
        include Google::Apis::Core::Hashable
      
        # Always present. The unique identifier of the DetectIntentResponse that will be
        # returned to the API caller.
        # Corresponds to the JSON property `detectIntentResponseId`
        # @return [String]
        attr_accessor :detect_intent_response_id
      
        # If DTMF was provided as input, this field will contain the DTMF digits.
        # Corresponds to the JSON property `dtmfDigits`
        # @return [String]
        attr_accessor :dtmf_digits
      
        # Represents fulfillment information communicated to the webhook.
        # Corresponds to the JSON property `fulfillmentInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1WebhookRequestFulfillmentInfo]
        attr_accessor :fulfillment_info
      
        # Represents intent information communicated to the webhook.
        # Corresponds to the JSON property `intentInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1WebhookRequestIntentInfo]
        attr_accessor :intent_info
      
        # The language code specified in the original request.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Represents the language information of the request.
        # Corresponds to the JSON property `languageInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1LanguageInfo]
        attr_accessor :language_info
      
        # The list of rich message responses to present to the user. Webhook can choose
        # to append or replace this list in WebhookResponse.fulfillment_response;
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessage>]
        attr_accessor :messages
      
        # Represents page information communicated to and from the webhook.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1PageInfo]
        attr_accessor :page_info
      
        # Custom data set in QueryParameters.payload.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Represents the result of sentiment analysis.
        # Corresponds to the JSON property `sentimentAnalysisResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1WebhookRequestSentimentAnalysisResult]
        attr_accessor :sentiment_analysis_result
      
        # Represents session information communicated to and from the webhook.
        # Corresponds to the JSON property `sessionInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1SessionInfo]
        attr_accessor :session_info
      
        # If natural language text was provided as input, this field will contain a copy
        # of the text.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # If natural language speech audio was provided as input, this field will
        # contain the transcript for the audio.
        # Corresponds to the JSON property `transcript`
        # @return [String]
        attr_accessor :transcript
      
        # If an event was provided as input, this field will contain the name of the
        # event.
        # Corresponds to the JSON property `triggerEvent`
        # @return [String]
        attr_accessor :trigger_event
      
        # If an intent was provided as input, this field will contain a copy of the
        # intent identifier. Format: `projects//locations//agents//intents/`.
        # Corresponds to the JSON property `triggerIntent`
        # @return [String]
        attr_accessor :trigger_intent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @detect_intent_response_id = args[:detect_intent_response_id] if args.key?(:detect_intent_response_id)
          @dtmf_digits = args[:dtmf_digits] if args.key?(:dtmf_digits)
          @fulfillment_info = args[:fulfillment_info] if args.key?(:fulfillment_info)
          @intent_info = args[:intent_info] if args.key?(:intent_info)
          @language_code = args[:language_code] if args.key?(:language_code)
          @language_info = args[:language_info] if args.key?(:language_info)
          @messages = args[:messages] if args.key?(:messages)
          @page_info = args[:page_info] if args.key?(:page_info)
          @payload = args[:payload] if args.key?(:payload)
          @sentiment_analysis_result = args[:sentiment_analysis_result] if args.key?(:sentiment_analysis_result)
          @session_info = args[:session_info] if args.key?(:session_info)
          @text = args[:text] if args.key?(:text)
          @transcript = args[:transcript] if args.key?(:transcript)
          @trigger_event = args[:trigger_event] if args.key?(:trigger_event)
          @trigger_intent = args[:trigger_intent] if args.key?(:trigger_intent)
        end
      end
      
      # Represents fulfillment information communicated to the webhook.
      class GoogleCloudDialogflowCxV3beta1WebhookRequestFulfillmentInfo
        include Google::Apis::Core::Hashable
      
        # Always present. The value of the Fulfillment.tag field will be populated in
        # this field by Dialogflow when the associated webhook is called. The tag is
        # typically used by the webhook service to identify which fulfillment is being
        # called, but it could be used for other purposes.
        # Corresponds to the JSON property `tag`
        # @return [String]
        attr_accessor :tag
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tag = args[:tag] if args.key?(:tag)
        end
      end
      
      # Represents intent information communicated to the webhook.
      class GoogleCloudDialogflowCxV3beta1WebhookRequestIntentInfo
        include Google::Apis::Core::Hashable
      
        # The confidence of the matched intent. Values range from 0.0 (completely
        # uncertain) to 1.0 (completely certain).
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Always present. The display name of the last matched intent.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Always present. The unique identifier of the last matched intent. Format: `
        # projects//locations//agents//intents/`.
        # Corresponds to the JSON property `lastMatchedIntent`
        # @return [String]
        attr_accessor :last_matched_intent
      
        # Parameters identified as a result of intent matching. This is a map of the
        # name of the identified parameter to the value of the parameter identified from
        # the user's utterance. All parameters defined in the matched intent that are
        # identified will be surfaced here.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1WebhookRequestIntentInfoIntentParameterValue>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @display_name = args[:display_name] if args.key?(:display_name)
          @last_matched_intent = args[:last_matched_intent] if args.key?(:last_matched_intent)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Represents a value for an intent parameter.
      class GoogleCloudDialogflowCxV3beta1WebhookRequestIntentInfoIntentParameterValue
        include Google::Apis::Core::Hashable
      
        # Always present. Original text value extracted from user utterance.
        # Corresponds to the JSON property `originalValue`
        # @return [String]
        attr_accessor :original_value
      
        # Always present. Structured value for the parameter extracted from user
        # utterance.
        # Corresponds to the JSON property `resolvedValue`
        # @return [Object]
        attr_accessor :resolved_value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @original_value = args[:original_value] if args.key?(:original_value)
          @resolved_value = args[:resolved_value] if args.key?(:resolved_value)
        end
      end
      
      # Represents the result of sentiment analysis.
      class GoogleCloudDialogflowCxV3beta1WebhookRequestSentimentAnalysisResult
        include Google::Apis::Core::Hashable
      
        # A non-negative number in the [0, +inf) range, which represents the absolute
        # magnitude of sentiment, regardless of score (positive or negative).
        # Corresponds to the JSON property `magnitude`
        # @return [Float]
        attr_accessor :magnitude
      
        # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @magnitude = args[:magnitude] if args.key?(:magnitude)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # The response message for a webhook call.
      class GoogleCloudDialogflowCxV3beta1WebhookResponse
        include Google::Apis::Core::Hashable
      
        # Represents a fulfillment response to the user.
        # Corresponds to the JSON property `fulfillmentResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1WebhookResponseFulfillmentResponse]
        attr_accessor :fulfillment_response
      
        # Represents page information communicated to and from the webhook.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1PageInfo]
        attr_accessor :page_info
      
        # Value to append directly to QueryResult.webhook_payloads.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Represents session information communicated to and from the webhook.
        # Corresponds to the JSON property `sessionInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1SessionInfo]
        attr_accessor :session_info
      
        # The target flow to transition to. Format: `projects//locations//agents//flows/`
        # .
        # Corresponds to the JSON property `targetFlow`
        # @return [String]
        attr_accessor :target_flow
      
        # The target page to transition to. Format: `projects//locations//agents//flows//
        # pages/`.
        # Corresponds to the JSON property `targetPage`
        # @return [String]
        attr_accessor :target_page
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @fulfillment_response = args[:fulfillment_response] if args.key?(:fulfillment_response)
          @page_info = args[:page_info] if args.key?(:page_info)
          @payload = args[:payload] if args.key?(:payload)
          @session_info = args[:session_info] if args.key?(:session_info)
          @target_flow = args[:target_flow] if args.key?(:target_flow)
          @target_page = args[:target_page] if args.key?(:target_page)
        end
      end
      
      # Represents a fulfillment response to the user.
      class GoogleCloudDialogflowCxV3beta1WebhookResponseFulfillmentResponse
        include Google::Apis::Core::Hashable
      
        # Merge behavior for `messages`.
        # Corresponds to the JSON property `mergeBehavior`
        # @return [String]
        attr_accessor :merge_behavior
      
        # The list of rich message responses to present to the user.
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1ResponseMessage>]
        attr_accessor :messages
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @merge_behavior = args[:merge_behavior] if args.key?(:merge_behavior)
          @messages = args[:messages] if args.key?(:messages)
        end
      end
      
      # Represents configuration for a [Service Directory](https://cloud.google.com/
      # service-directory) service.
      class GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfig
        include Google::Apis::Core::Hashable
      
        # Represents configuration for a generic web service.
        # Corresponds to the JSON property `genericWebService`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowCxV3beta1WebhookGenericWebService]
        attr_accessor :generic_web_service
      
        # Required. The name of [Service Directory](https://cloud.google.com/service-
        # directory) service. Format: `projects//locations//namespaces//services/`. `
        # Location ID` of the service directory must be the same as the location of the
        # agent.
        # Corresponds to the JSON property `service`
        # @return [String]
        attr_accessor :service
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_web_service = args[:generic_web_service] if args.key?(:generic_web_service)
          @service = args[:service] if args.key?(:service)
        end
      end
      
      # Agent Coaching instructions that customer can configure.
      class GoogleCloudDialogflowV2AgentCoachingInstruction
        include Google::Apis::Core::Hashable
      
        # Optional. The action that human agent should take. For example, "apologize for
        # the slow shipping". If the users only want to use agent coaching for intent
        # detection, agent_action can be empty
        # Corresponds to the JSON property `agentAction`
        # @return [String]
        attr_accessor :agent_action
      
        # Optional. The condition of the instruction. For example, "the customer wants
        # to cancel an order". If the users want the instruction to be triggered
        # unconditionally, the condition can be empty.
        # Corresponds to the JSON property `condition`
        # @return [String]
        attr_accessor :condition
      
        # Optional. The detailed description of this instruction.
        # Corresponds to the JSON property `displayDetails`
        # @return [String]
        attr_accessor :display_details
      
        # Optional. Display name for the instruction.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Duplication check for the suggestion.
        # Corresponds to the JSON property `duplicateCheckResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingInstructionDuplicateCheckResult]
        attr_accessor :duplicate_check_result
      
        # Optional. The action that system should take. For example, "call GetOrderTime
        # with order_number=`order number provided by the customer`". If the users don't
        # have plugins or don't want to trigger plugins, the system_action can be empty
        # Corresponds to the JSON property `systemAction`
        # @return [String]
        attr_accessor :system_action
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_action = args[:agent_action] if args.key?(:agent_action)
          @condition = args[:condition] if args.key?(:condition)
          @display_details = args[:display_details] if args.key?(:display_details)
          @display_name = args[:display_name] if args.key?(:display_name)
          @duplicate_check_result = args[:duplicate_check_result] if args.key?(:duplicate_check_result)
          @system_action = args[:system_action] if args.key?(:system_action)
        end
      end
      
      # Duplication check for the suggestion.
      class GoogleCloudDialogflowV2AgentCoachingInstructionDuplicateCheckResult
        include Google::Apis::Core::Hashable
      
        # Output only. The duplicate suggestions.
        # Corresponds to the JSON property `duplicateSuggestions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingInstructionDuplicateCheckResultDuplicateSuggestion>]
        attr_accessor :duplicate_suggestions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @duplicate_suggestions = args[:duplicate_suggestions] if args.key?(:duplicate_suggestions)
        end
      end
      
      # The duplicate suggestion details.
      class GoogleCloudDialogflowV2AgentCoachingInstructionDuplicateCheckResultDuplicateSuggestion
        include Google::Apis::Core::Hashable
      
        # Output only. The answer record id of the past duplicate suggestion.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Output only. The similarity score of between the past and current suggestion.
        # Corresponds to the JSON property `similarityScore`
        # @return [Float]
        attr_accessor :similarity_score
      
        # Output only. The index of the duplicate suggestion in the past suggestion list.
        # Corresponds to the JSON property `suggestionIndex`
        # @return [Fixnum]
        attr_accessor :suggestion_index
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @similarity_score = args[:similarity_score] if args.key?(:similarity_score)
          @suggestion_index = args[:suggestion_index] if args.key?(:suggestion_index)
        end
      end
      
      # Suggestion for coaching agents.
      class GoogleCloudDialogflowV2AgentCoachingSuggestion
        include Google::Apis::Core::Hashable
      
        # Optional. Suggested actions for the agent to take.
        # Corresponds to the JSON property `agentActionSuggestions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingSuggestionAgentActionSuggestion>]
        attr_accessor :agent_action_suggestions
      
        # Optional. Instructions applicable based on the current context.
        # Corresponds to the JSON property `applicableInstructions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingInstruction>]
        attr_accessor :applicable_instructions
      
        # Optional. Sample response for the Agent.
        # Corresponds to the JSON property `sampleResponses`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingSuggestionSampleResponse>]
        attr_accessor :sample_responses
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_action_suggestions = args[:agent_action_suggestions] if args.key?(:agent_action_suggestions)
          @applicable_instructions = args[:applicable_instructions] if args.key?(:applicable_instructions)
          @sample_responses = args[:sample_responses] if args.key?(:sample_responses)
        end
      end
      
      # Actions suggested for the agent. This is based on applicable instructions.
      class GoogleCloudDialogflowV2AgentCoachingSuggestionAgentActionSuggestion
        include Google::Apis::Core::Hashable
      
        # Optional. The suggested action for the agent.
        # Corresponds to the JSON property `agentAction`
        # @return [String]
        attr_accessor :agent_action
      
        # Duplication check for the suggestion.
        # Corresponds to the JSON property `duplicateCheckResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingSuggestionDuplicateCheckResult]
        attr_accessor :duplicate_check_result
      
        # Sources for the suggestion.
        # Corresponds to the JSON property `sources`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingSuggestionSources]
        attr_accessor :sources
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_action = args[:agent_action] if args.key?(:agent_action)
          @duplicate_check_result = args[:duplicate_check_result] if args.key?(:duplicate_check_result)
          @sources = args[:sources] if args.key?(:sources)
        end
      end
      
      # Duplication check for the suggestion.
      class GoogleCloudDialogflowV2AgentCoachingSuggestionDuplicateCheckResult
        include Google::Apis::Core::Hashable
      
        # Output only. The duplicate suggestions.
        # Corresponds to the JSON property `duplicateSuggestions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingSuggestionDuplicateCheckResultDuplicateSuggestion>]
        attr_accessor :duplicate_suggestions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @duplicate_suggestions = args[:duplicate_suggestions] if args.key?(:duplicate_suggestions)
        end
      end
      
      # The duplicate suggestion details. Keeping answer_record and sources together
      # as they are identifiers for duplicate suggestions.
      class GoogleCloudDialogflowV2AgentCoachingSuggestionDuplicateCheckResultDuplicateSuggestion
        include Google::Apis::Core::Hashable
      
        # Output only. The answer record id of the past duplicate suggestion.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Output only. The similarity score of between the past and current suggestion.
        # Corresponds to the JSON property `similarityScore`
        # @return [Float]
        attr_accessor :similarity_score
      
        # Sources for the suggestion.
        # Corresponds to the JSON property `sources`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingSuggestionSources]
        attr_accessor :sources
      
        # Output only. The index of the duplicate suggestion in the past suggestion list.
        # Corresponds to the JSON property `suggestionIndex`
        # @return [Fixnum]
        attr_accessor :suggestion_index
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @similarity_score = args[:similarity_score] if args.key?(:similarity_score)
          @sources = args[:sources] if args.key?(:sources)
          @suggestion_index = args[:suggestion_index] if args.key?(:suggestion_index)
        end
      end
      
      # Sample response that the agent can use. This could be based on applicable
      # instructions and ingested data from other systems.
      class GoogleCloudDialogflowV2AgentCoachingSuggestionSampleResponse
        include Google::Apis::Core::Hashable
      
        # Duplication check for the suggestion.
        # Corresponds to the JSON property `duplicateCheckResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingSuggestionDuplicateCheckResult]
        attr_accessor :duplicate_check_result
      
        # Optional. Sample response for Agent in text.
        # Corresponds to the JSON property `responseText`
        # @return [String]
        attr_accessor :response_text
      
        # Sources for the suggestion.
        # Corresponds to the JSON property `sources`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingSuggestionSources]
        attr_accessor :sources
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @duplicate_check_result = args[:duplicate_check_result] if args.key?(:duplicate_check_result)
          @response_text = args[:response_text] if args.key?(:response_text)
          @sources = args[:sources] if args.key?(:sources)
        end
      end
      
      # Sources for the suggestion.
      class GoogleCloudDialogflowV2AgentCoachingSuggestionSources
        include Google::Apis::Core::Hashable
      
        # Output only. Source instruction indexes for the suggestion. This is the index
        # of the applicable_instructions field.
        # Corresponds to the JSON property `instructionIndexes`
        # @return [Array<Fixnum>]
        attr_accessor :instruction_indexes
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instruction_indexes = args[:instruction_indexes] if args.key?(:instruction_indexes)
        end
      end
      
      # Represents a part of a message possibly annotated with an entity. The part can
      # be an entity or purely a part of the message between two entities or message
      # start/end.
      class GoogleCloudDialogflowV2AnnotatedMessagePart
        include Google::Apis::Core::Hashable
      
        # The [Dialogflow system entity type](https://cloud.google.com/dialogflow/docs/
        # reference/system-entities) of this message part. If this is empty, Dialogflow
        # could not annotate the phrase part with a system entity.
        # Corresponds to the JSON property `entityType`
        # @return [String]
        attr_accessor :entity_type
      
        # The [Dialogflow system entity formatted value ](https://cloud.google.com/
        # dialogflow/docs/reference/system-entities) of this message part. For example
        # for a system entity of type `@sys.unit-currency`, this may contain: ` "amount":
        # 5, "currency": "USD" `
        # Corresponds to the JSON property `formattedValue`
        # @return [Object]
        attr_accessor :formatted_value
      
        # A part of a message possibly annotated with an entity.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_type = args[:entity_type] if args.key?(:entity_type)
          @formatted_value = args[:formatted_value] if args.key?(:formatted_value)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Represents article answer.
      class GoogleCloudDialogflowV2ArticleAnswer
        include Google::Apis::Core::Hashable
      
        # The name of answer record, in the format of "projects//locations//
        # answerRecords/"
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Article match confidence. The system's confidence score that this article is a
        # good match for this conversation, as a value from 0.0 (completely uncertain)
        # to 1.0 (completely certain).
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # A map that contains metadata about the answer and the document from which it
        # originates.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,String>]
        attr_accessor :metadata
      
        # Article snippets.
        # Corresponds to the JSON property `snippets`
        # @return [Array<String>]
        attr_accessor :snippets
      
        # The article title.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # The article URI.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @confidence = args[:confidence] if args.key?(:confidence)
          @metadata = args[:metadata] if args.key?(:metadata)
          @snippets = args[:snippets] if args.key?(:snippets)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Metadata for article suggestion models.
      class GoogleCloudDialogflowV2ArticleSuggestionModelMetadata
        include Google::Apis::Core::Hashable
      
        # Optional. Type of the article suggestion model. If not provided, model_type is
        # used.
        # Corresponds to the JSON property `trainingModelType`
        # @return [String]
        attr_accessor :training_model_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @training_model_type = args[:training_model_type] if args.key?(:training_model_type)
        end
      end
      
      # The response message for EntityTypes.BatchUpdateEntityTypes.
      class GoogleCloudDialogflowV2BatchUpdateEntityTypesResponse
        include Google::Apis::Core::Hashable
      
        # The collection of updated or created entity types.
        # Corresponds to the JSON property `entityTypes`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2EntityType>]
        attr_accessor :entity_types
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_types = args[:entity_types] if args.key?(:entity_types)
        end
      end
      
      # The response message for Intents.BatchUpdateIntents.
      class GoogleCloudDialogflowV2BatchUpdateIntentsResponse
        include Google::Apis::Core::Hashable
      
        # The collection of updated or created intents.
        # Corresponds to the JSON property `intents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2Intent>]
        attr_accessor :intents
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intents = args[:intents] if args.key?(:intents)
        end
      end
      
      # Metadata for a ConversationProfiles.ClearSuggestionFeatureConfig operation.
      class GoogleCloudDialogflowV2ClearSuggestionFeatureConfigOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the conversation profile. Format: `projects//locations//
        # conversationProfiles/`
        # Corresponds to the JSON property `conversationProfile`
        # @return [String]
        attr_accessor :conversation_profile
      
        # Timestamp whe the request was created. The time is measured on server side.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The participant role to remove the suggestion feature config. Only
        # HUMAN_AGENT or END_USER can be used.
        # Corresponds to the JSON property `participantRole`
        # @return [String]
        attr_accessor :participant_role
      
        # Required. The type of the suggestion feature to remove.
        # Corresponds to the JSON property `suggestionFeatureType`
        # @return [String]
        attr_accessor :suggestion_feature_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_profile = args[:conversation_profile] if args.key?(:conversation_profile)
          @create_time = args[:create_time] if args.key?(:create_time)
          @participant_role = args[:participant_role] if args.key?(:participant_role)
          @suggestion_feature_type = args[:suggestion_feature_type] if args.key?(:suggestion_feature_type)
        end
      end
      
      # Dialogflow contexts are similar to natural language context. If a person says
      # to you "they are orange", you need context in order to understand what "they"
      # is referring to. Similarly, for Dialogflow to handle an end-user expression
      # like that, it needs to be provided with context in order to correctly match an
      # intent. Using contexts, you can control the flow of a conversation. You can
      # configure contexts for an intent by setting input and output contexts, which
      # are identified by string names. When an intent is matched, any configured
      # output contexts for that intent become active. While any contexts are active,
      # Dialogflow is more likely to match intents that are configured with input
      # contexts that correspond to the currently active contexts. For more
      # information about context, see the [Contexts guide](https://cloud.google.com/
      # dialogflow/docs/contexts-overview).
      class GoogleCloudDialogflowV2Context
        include Google::Apis::Core::Hashable
      
        # Optional. The number of conversational query requests after which the context
        # expires. The default is `0`. If set to `0`, the context expires immediately.
        # Contexts expire automatically after 20 minutes if there are no matching
        # queries.
        # Corresponds to the JSON property `lifespanCount`
        # @return [Fixnum]
        attr_accessor :lifespan_count
      
        # Required. The unique identifier of the context. Format: `projects//agent/
        # sessions//contexts/`, or `projects//agent/environments//users//sessions//
        # contexts/`. The `Context ID` is always converted to lowercase, may only
        # contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `
        # Environment ID` is not specified, we assume default 'draft' environment. If `
        # User ID` is not specified, we assume default '-' user. The following context
        # names are reserved for internal use by Dialogflow. You should not use these
        # contexts or create contexts with these names: * `__system_counters__` * `*
        # _id_dialog_context` * `*_dialog_params_size`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The collection of parameters associated with this context. Depending
        # on your protocol or client library language, this is a map, associative array,
        # symbol table, dictionary, or JSON object composed of a collection of (MapKey,
        # MapValue) pairs: * MapKey type: string * MapKey value: parameter name *
        # MapValue type: If parameter's entity type is a composite entity then use map,
        # otherwise, depending on the parameter value type, it could be one of string,
        # number, boolean, null, list or map. * MapValue value: If parameter's entity
        # type is a composite entity then use map from composite entity property names
        # to property values, otherwise, use parameter value.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @lifespan_count = args[:lifespan_count] if args.key?(:lifespan_count)
          @name = args[:name] if args.key?(:name)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Represents a notification sent to Pub/Sub subscribers for conversation
      # lifecycle events.
      class GoogleCloudDialogflowV2ConversationEvent
        include Google::Apis::Core::Hashable
      
        # The unique identifier of the conversation this notification refers to. Format:
        # `projects//conversations/`.
        # Corresponds to the JSON property `conversation`
        # @return [String]
        attr_accessor :conversation
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `errorStatus`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :error_status
      
        # Represents a message posted into a conversation.
        # Corresponds to the JSON property `newMessagePayload`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2Message]
        attr_accessor :new_message_payload
      
        # Contains a speech recognition result corresponding to a portion of the audio
        # that is currently being processed or an indication that this is the end of the
        # single requested utterance. While end-user audio is being processed,
        # Dialogflow sends a series of results. Each result may contain a `transcript`
        # value. A transcript represents a portion of the utterance. While the
        # recognizer is processing audio, transcript values may be interim values or
        # finalized values. Once a transcript is finalized, the `is_final` value is set
        # to true and processing continues for the next transcript. If `
        # StreamingDetectIntentRequest.query_input.audio_config.single_utterance` was
        # true, and the recognizer has completed processing audio, the `message_type`
        # value is set to `END_OF_SINGLE_UTTERANCE and the following (last) result
        # contains the last finalized transcript. The complete end-user utterance is
        # determined by concatenating the finalized transcript values received for the
        # series of results. In the following example, single utterance is enabled. In
        # the case where single utterance is not enabled, result 7 would not occur. ```
        # Num | transcript | message_type | is_final --- | ----------------------- | ----
        # ------------------- | -------- 1 | "tube" | TRANSCRIPT | false 2 | "to be a" |
        # TRANSCRIPT | false 3 | "to be" | TRANSCRIPT | false 4 | "to be or not to be" |
        # TRANSCRIPT | true 5 | "that's" | TRANSCRIPT | false 6 | "that is | TRANSCRIPT |
        # false 7 | unset | END_OF_SINGLE_UTTERANCE | unset 8 | " that is the question"
        # | TRANSCRIPT | true ``` Concatenating the finalized transcripts with `is_final`
        # set to true, the complete utterance becomes "to be or not to be that is the
        # question".
        # Corresponds to the JSON property `newRecognitionResultPayload`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2StreamingRecognitionResult]
        attr_accessor :new_recognition_result_payload
      
        # The type of the event that this notification refers to.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation = args[:conversation] if args.key?(:conversation)
          @error_status = args[:error_status] if args.key?(:error_status)
          @new_message_payload = args[:new_message_payload] if args.key?(:new_message_payload)
          @new_recognition_result_payload = args[:new_recognition_result_payload] if args.key?(:new_recognition_result_payload)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Represents a conversation model.
      class GoogleCloudDialogflowV2ConversationModel
        include Google::Apis::Core::Hashable
      
        # Metadata for article suggestion models.
        # Corresponds to the JSON property `articleSuggestionModelMetadata`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2ArticleSuggestionModelMetadata]
        attr_accessor :article_suggestion_model_metadata
      
        # Output only. Creation time of this model.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. Datasets used to create model.
        # Corresponds to the JSON property `datasets`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2InputDataset>]
        attr_accessor :datasets
      
        # Required. The display name of the model. At most 64 bytes long.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Language code for the conversation model. If not specified, the language is en-
        # US. Language at ConversationModel should be set for all non en-us languages.
        # This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt)
        # language tag. Example: "en-US".
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # ConversationModel resource name. Format: `projects//conversationModels/`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. A read only boolean field reflecting Zone Isolation status of the
        # model.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. A read only boolean field reflecting Zone Separation status of
        # the model.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Metadata for smart reply models.
        # Corresponds to the JSON property `smartReplyModelMetadata`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SmartReplyModelMetadata]
        attr_accessor :smart_reply_model_metadata
      
        # Output only. State of the model. A model can only serve prediction requests
        # after it gets deployed.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @article_suggestion_model_metadata = args[:article_suggestion_model_metadata] if args.key?(:article_suggestion_model_metadata)
          @create_time = args[:create_time] if args.key?(:create_time)
          @datasets = args[:datasets] if args.key?(:datasets)
          @display_name = args[:display_name] if args.key?(:display_name)
          @language_code = args[:language_code] if args.key?(:language_code)
          @name = args[:name] if args.key?(:name)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @smart_reply_model_metadata = args[:smart_reply_model_metadata] if args.key?(:smart_reply_model_metadata)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # Metadata for CreateConversationDataset.
      class GoogleCloudDialogflowV2CreateConversationDatasetOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the conversation dataset that will be created. Format: `
        # projects//locations//conversationDatasets/`
        # Corresponds to the JSON property `conversationDataset`
        # @return [String]
        attr_accessor :conversation_dataset
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_dataset = args[:conversation_dataset] if args.key?(:conversation_dataset)
        end
      end
      
      # Metadata for a ConversationModels.CreateConversationModelEvaluation operation.
      class GoogleCloudDialogflowV2CreateConversationModelEvaluationOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the conversation model. Format: `projects//locations//
        # conversationModels/`
        # Corresponds to the JSON property `conversationModel`
        # @return [String]
        attr_accessor :conversation_model
      
        # The resource name of the conversation model. Format: `projects//locations//
        # conversationModels//evaluations/`
        # Corresponds to the JSON property `conversationModelEvaluation`
        # @return [String]
        attr_accessor :conversation_model_evaluation
      
        # Timestamp when the request to create conversation model was submitted. The
        # time is measured on server side.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # State of CreateConversationModel operation.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_model = args[:conversation_model] if args.key?(:conversation_model)
          @conversation_model_evaluation = args[:conversation_model_evaluation] if args.key?(:conversation_model_evaluation)
          @create_time = args[:create_time] if args.key?(:create_time)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # Metadata for a ConversationModels.CreateConversationModel operation.
      class GoogleCloudDialogflowV2CreateConversationModelOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the conversation model. Format: `projects//
        # conversationModels/`
        # Corresponds to the JSON property `conversationModel`
        # @return [String]
        attr_accessor :conversation_model
      
        # Timestamp when the request to create conversation model is submitted. The time
        # is measured on server side.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # The time when the operation finished.
        # Corresponds to the JSON property `doneTime`
        # @return [String]
        attr_accessor :done_time
      
        # State of CreateConversationModel operation.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_model = args[:conversation_model] if args.key?(:conversation_model)
          @create_time = args[:create_time] if args.key?(:create_time)
          @done_time = args[:done_time] if args.key?(:done_time)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # Metadata for DeleteConversationDataset.
      class GoogleCloudDialogflowV2DeleteConversationDatasetOperationMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Metadata for a ConversationModels.DeleteConversationModel operation.
      class GoogleCloudDialogflowV2DeleteConversationModelOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the conversation model. Format: `projects//
        # conversationModels/`
        # Corresponds to the JSON property `conversationModel`
        # @return [String]
        attr_accessor :conversation_model
      
        # Timestamp when delete conversation model request was created. The time is
        # measured on server side.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # The time when the operation finished.
        # Corresponds to the JSON property `doneTime`
        # @return [String]
        attr_accessor :done_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_model = args[:conversation_model] if args.key?(:conversation_model)
          @create_time = args[:create_time] if args.key?(:create_time)
          @done_time = args[:done_time] if args.key?(:done_time)
        end
      end
      
      # Metadata for a ConversationModels.DeployConversationModel operation.
      class GoogleCloudDialogflowV2DeployConversationModelOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the conversation model. Format: `projects//
        # conversationModels/`
        # Corresponds to the JSON property `conversationModel`
        # @return [String]
        attr_accessor :conversation_model
      
        # Timestamp when request to deploy conversation model was submitted. The time is
        # measured on server side.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # The time when the operation finished.
        # Corresponds to the JSON property `doneTime`
        # @return [String]
        attr_accessor :done_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_model = args[:conversation_model] if args.key?(:conversation_model)
          @create_time = args[:create_time] if args.key?(:create_time)
          @done_time = args[:done_time] if args.key?(:done_time)
        end
      end
      
      # A customer-managed encryption key specification that can be applied to all
      # created resources (e.g. Conversation).
      class GoogleCloudDialogflowV2EncryptionSpec
        include Google::Apis::Core::Hashable
      
        # Required. The name of customer-managed encryption key that is used to secure a
        # resource and its sub-resources. If empty, the resource is secured by the
        # default Google encryption key. Only the key in the same location as this
        # resource is allowed to be used for encryption. Format: `projects/`project`/
        # locations/`location`/keyRings/`keyRing`/cryptoKeys/`key``
        # Corresponds to the JSON property `kmsKey`
        # @return [String]
        attr_accessor :kms_key
      
        # Immutable. The resource name of the encryption key specification resource.
        # Format: projects/`project`/locations/`location`/encryptionSpec
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kms_key = args[:kms_key] if args.key?(:kms_key)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Each intent parameter has a type, called the entity type, which dictates
      # exactly how data from an end-user expression is extracted. Dialogflow provides
      # predefined system entities that can match many common types of data. For
      # example, there are system entities for matching dates, times, colors, email
      # addresses, and so on. You can also create your own custom entities for
      # matching custom data. For example, you could define a vegetable entity that
      # can match the types of vegetables available for purchase with a grocery store
      # agent. For more information, see the [Entity guide](https://cloud.google.com/
      # dialogflow/docs/entities-overview).
      class GoogleCloudDialogflowV2EntityType
        include Google::Apis::Core::Hashable
      
        # Optional. Indicates whether the entity type can be automatically expanded.
        # Corresponds to the JSON property `autoExpansionMode`
        # @return [String]
        attr_accessor :auto_expansion_mode
      
        # Required. The name of the entity type.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. Enables fuzzy entity extraction during classification.
        # Corresponds to the JSON property `enableFuzzyExtraction`
        # @return [Boolean]
        attr_accessor :enable_fuzzy_extraction
        alias_method :enable_fuzzy_extraction?, :enable_fuzzy_extraction
      
        # Optional. The collection of entity entries associated with the entity type.
        # Corresponds to the JSON property `entities`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2EntityTypeEntity>]
        attr_accessor :entities
      
        # Required. Indicates the kind of entity type.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The unique identifier of the entity type. Required for EntityTypes.
        # UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Format: `
        # projects//agent/entityTypes/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @auto_expansion_mode = args[:auto_expansion_mode] if args.key?(:auto_expansion_mode)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enable_fuzzy_extraction = args[:enable_fuzzy_extraction] if args.key?(:enable_fuzzy_extraction)
          @entities = args[:entities] if args.key?(:entities)
          @kind = args[:kind] if args.key?(:kind)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # An **entity entry** for an associated entity type.
      class GoogleCloudDialogflowV2EntityTypeEntity
        include Google::Apis::Core::Hashable
      
        # Required. A collection of value synonyms. For example, if the entity type is *
        # vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For
        # `KIND_LIST` entity types: * This collection must contain exactly one synonym
        # equal to `value`.
        # Corresponds to the JSON property `synonyms`
        # @return [Array<String>]
        attr_accessor :synonyms
      
        # Required. The primary value associated with this entity entry. For example, if
        # the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP`
        # entity types: * A reference value to be used in place of synonyms. For `
        # KIND_LIST` entity types: * A string that can contain references to other
        # entity types (with or without aliases).
        # Corresponds to the JSON property `value`
        # @return [String]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @synonyms = args[:synonyms] if args.key?(:synonyms)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Events allow for matching intents by event name instead of the natural
      # language input. For instance, input `` can trigger a personalized welcome
      # response. The parameter `name` may be used by the agent in the response: `"
      # Hello #welcome_event.name! What can I do for you today?"`.
      class GoogleCloudDialogflowV2EventInput
        include Google::Apis::Core::Hashable
      
        # Required. The language of this query. See [Language Support](https://cloud.
        # google.com/dialogflow/docs/reference/language) for a list of the currently
        # supported language codes. Note that queries in the same session do not
        # necessarily need to specify the same language. This field is ignored when used
        # in the context of a WebhookResponse.followup_event_input field, because the
        # language was already defined in the originating detect intent request.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Required. The unique identifier of the event.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The collection of parameters associated with the event. Depending on your
        # protocol or client library language, this is a map, associative array, symbol
        # table, dictionary, or JSON object composed of a collection of (MapKey,
        # MapValue) pairs: * MapKey type: string * MapKey value: parameter name *
        # MapValue type: If parameter's entity type is a composite entity then use map,
        # otherwise, depending on the parameter value type, it could be one of string,
        # number, boolean, null, list or map. * MapValue value: If parameter's entity
        # type is a composite entity then use map from composite entity property names
        # to property values, otherwise, use parameter value.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @language_code = args[:language_code] if args.key?(:language_code)
          @name = args[:name] if args.key?(:name)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # The response message for Agents.ExportAgent.
      class GoogleCloudDialogflowV2ExportAgentResponse
        include Google::Apis::Core::Hashable
      
        # Zip compressed raw byte content for agent.
        # Corresponds to the JSON property `agentContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :agent_content
      
        # The URI to a file containing the exported agent. This field is populated only
        # if `agent_uri` is specified in `ExportAgentRequest`.
        # Corresponds to the JSON property `agentUri`
        # @return [String]
        attr_accessor :agent_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_content = args[:agent_content] if args.key?(:agent_content)
          @agent_uri = args[:agent_uri] if args.key?(:agent_uri)
        end
      end
      
      # Metadata related to the Export Data Operations (e.g. ExportDocument).
      class GoogleCloudDialogflowV2ExportOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Google Cloud Storage location for the output.
        # Corresponds to the JSON property `exportedGcsDestination`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2GcsDestination]
        attr_accessor :exported_gcs_destination
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @exported_gcs_destination = args[:exported_gcs_destination] if args.key?(:exported_gcs_destination)
        end
      end
      
      # Represents answer from "frequently asked questions".
      class GoogleCloudDialogflowV2FaqAnswer
        include Google::Apis::Core::Hashable
      
        # The piece of text from the `source` knowledge base document.
        # Corresponds to the JSON property `answer`
        # @return [String]
        attr_accessor :answer
      
        # The name of answer record, in the format of "projects//locations//
        # answerRecords/"
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # The system's confidence score that this Knowledge answer is a good match for
        # this conversational query, range from 0.0 (completely uncertain) to 1.0 (
        # completely certain).
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # A map that contains metadata about the answer and the document from which it
        # originates.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,String>]
        attr_accessor :metadata
      
        # The corresponding FAQ question.
        # Corresponds to the JSON property `question`
        # @return [String]
        attr_accessor :question
      
        # Indicates which Knowledge Document this answer was extracted from. Format: `
        # projects//locations//agent/knowledgeBases//documents/`.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer = args[:answer] if args.key?(:answer)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @confidence = args[:confidence] if args.key?(:confidence)
          @metadata = args[:metadata] if args.key?(:metadata)
          @question = args[:question] if args.key?(:question)
          @source = args[:source] if args.key?(:source)
        end
      end
      
      # Suggestion generated using free form generator.
      class GoogleCloudDialogflowV2FreeFormSuggestion
        include Google::Apis::Core::Hashable
      
        # Required. Free form suggestion.
        # Corresponds to the JSON property `response`
        # @return [String]
        attr_accessor :response
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @response = args[:response] if args.key?(:response)
        end
      end
      
      # Google Cloud Storage location for the output.
      class GoogleCloudDialogflowV2GcsDestination
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage URIs for the output. A URI is of the form: `gs://
        # bucket/object-prefix-or-name` Whether a prefix or name is used depends on the
        # use case. The requesting user must have "write-permission" to the bucket.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # The response message for Conversations.GenerateSuggestions.
      class GoogleCloudDialogflowV2GenerateSuggestionsResponse
        include Google::Apis::Core::Hashable
      
        # The answers generated for the conversation based on context.
        # Corresponds to the JSON property `generatorSuggestionAnswers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2GenerateSuggestionsResponseGeneratorSuggestionAnswer>]
        attr_accessor :generator_suggestion_answers
      
        # The name of the latest conversation message used as context for compiling
        # suggestion. Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generator_suggestion_answers = args[:generator_suggestion_answers] if args.key?(:generator_suggestion_answers)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # A GeneratorSuggestion answer.
      class GoogleCloudDialogflowV2GenerateSuggestionsResponseGeneratorSuggestionAnswer
        include Google::Apis::Core::Hashable
      
        # Answer record that uniquely identifies the suggestion. This can be used to
        # provide suggestion feedback.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Suggestion generated using a Generator.
        # Corresponds to the JSON property `generatorSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2GeneratorSuggestion]
        attr_accessor :generator_suggestion
      
        # The name of the generator used to generate this suggestion. Format: `projects//
        # locations//generators/`.
        # Corresponds to the JSON property `sourceGenerator`
        # @return [String]
        attr_accessor :source_generator
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @generator_suggestion = args[:generator_suggestion] if args.key?(:generator_suggestion)
          @source_generator = args[:source_generator] if args.key?(:source_generator)
        end
      end
      
      # Suggestion generated using a Generator.
      class GoogleCloudDialogflowV2GeneratorSuggestion
        include Google::Apis::Core::Hashable
      
        # Suggestion for coaching agents.
        # Corresponds to the JSON property `agentCoachingSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AgentCoachingSuggestion]
        attr_accessor :agent_coaching_suggestion
      
        # Suggestion generated using free form generator.
        # Corresponds to the JSON property `freeFormSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2FreeFormSuggestion]
        attr_accessor :free_form_suggestion
      
        # Suggested summary of the conversation.
        # Corresponds to the JSON property `summarySuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SummarySuggestion]
        attr_accessor :summary_suggestion
      
        # Optional. List of request and response for tool calls executed.
        # Corresponds to the JSON property `toolCallInfo`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2GeneratorSuggestionToolCallInfo>]
        attr_accessor :tool_call_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_coaching_suggestion = args[:agent_coaching_suggestion] if args.key?(:agent_coaching_suggestion)
          @free_form_suggestion = args[:free_form_suggestion] if args.key?(:free_form_suggestion)
          @summary_suggestion = args[:summary_suggestion] if args.key?(:summary_suggestion)
          @tool_call_info = args[:tool_call_info] if args.key?(:tool_call_info)
        end
      end
      
      # Request and response for a tool call.
      class GoogleCloudDialogflowV2GeneratorSuggestionToolCallInfo
        include Google::Apis::Core::Hashable
      
        # Represents a call of a specific tool's action with the specified inputs.
        # Corresponds to the JSON property `toolCall`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2ToolCall]
        attr_accessor :tool_call
      
        # The result of calling a tool's action.
        # Corresponds to the JSON property `toolCallResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2ToolCallResult]
        attr_accessor :tool_call_result
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tool_call = args[:tool_call] if args.key?(:tool_call)
          @tool_call_result = args[:tool_call_result] if args.key?(:tool_call_result)
        end
      end
      
      # Represents a notification sent to Cloud Pub/Sub subscribers for human agent
      # assistant events in a specific conversation.
      class GoogleCloudDialogflowV2HumanAgentAssistantEvent
        include Google::Apis::Core::Hashable
      
        # The conversation this notification refers to. Format: `projects//conversations/
        # `.
        # Corresponds to the JSON property `conversation`
        # @return [String]
        attr_accessor :conversation
      
        # The participant that the suggestion is compiled for. Format: `projects//
        # conversations//participants/`. It will not be set in legacy workflow.
        # Corresponds to the JSON property `participant`
        # @return [String]
        attr_accessor :participant
      
        # The suggestion results payload that this notification refers to.
        # Corresponds to the JSON property `suggestionResults`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SuggestionResult>]
        attr_accessor :suggestion_results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation = args[:conversation] if args.key?(:conversation)
          @participant = args[:participant] if args.key?(:participant)
          @suggestion_results = args[:suggestion_results] if args.key?(:suggestion_results)
        end
      end
      
      # Metadata for a ConversationDatasets.ImportConversationData operation.
      class GoogleCloudDialogflowV2ImportConversationDataOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the imported conversation dataset. Format: `projects//
        # locations//conversationDatasets/`
        # Corresponds to the JSON property `conversationDataset`
        # @return [String]
        attr_accessor :conversation_dataset
      
        # Timestamp when import conversation data request was created. The time is
        # measured on server side.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Partial failures are failures that don't fail the whole long running operation,
        # e.g. single files that couldn't be read.
        # Corresponds to the JSON property `partialFailures`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleRpcStatus>]
        attr_accessor :partial_failures
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_dataset = args[:conversation_dataset] if args.key?(:conversation_dataset)
          @create_time = args[:create_time] if args.key?(:create_time)
          @partial_failures = args[:partial_failures] if args.key?(:partial_failures)
        end
      end
      
      # Response used for ConversationDatasets.ImportConversationData long running
      # operation.
      class GoogleCloudDialogflowV2ImportConversationDataOperationResponse
        include Google::Apis::Core::Hashable
      
        # The resource name of the imported conversation dataset. Format: `projects//
        # locations//conversationDatasets/`
        # Corresponds to the JSON property `conversationDataset`
        # @return [String]
        attr_accessor :conversation_dataset
      
        # Number of conversations imported successfully.
        # Corresponds to the JSON property `importCount`
        # @return [Fixnum]
        attr_accessor :import_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_dataset = args[:conversation_dataset] if args.key?(:conversation_dataset)
          @import_count = args[:import_count] if args.key?(:import_count)
        end
      end
      
      # Response message for Documents.ImportDocuments.
      class GoogleCloudDialogflowV2ImportDocumentsResponse
        include Google::Apis::Core::Hashable
      
        # Includes details about skipped documents or any other warnings.
        # Corresponds to the JSON property `warnings`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleRpcStatus>]
        attr_accessor :warnings
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @warnings = args[:warnings] if args.key?(:warnings)
        end
      end
      
      # Metadata for initializing a location-level encryption specification.
      class GoogleCloudDialogflowV2InitializeEncryptionSpecMetadata
        include Google::Apis::Core::Hashable
      
        # The request to initialize a location-level encryption specification.
        # Corresponds to the JSON property `request`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2InitializeEncryptionSpecRequest]
        attr_accessor :request
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @request = args[:request] if args.key?(:request)
        end
      end
      
      # The request to initialize a location-level encryption specification.
      class GoogleCloudDialogflowV2InitializeEncryptionSpecRequest
        include Google::Apis::Core::Hashable
      
        # A customer-managed encryption key specification that can be applied to all
        # created resources (e.g. Conversation).
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2EncryptionSpec]
        attr_accessor :encryption_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
        end
      end
      
      # InputDataset used to create model or do evaluation. NextID:5
      class GoogleCloudDialogflowV2InputDataset
        include Google::Apis::Core::Hashable
      
        # Required. ConversationDataset resource name. Format: `projects//locations//
        # conversationDatasets/`
        # Corresponds to the JSON property `dataset`
        # @return [String]
        attr_accessor :dataset
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dataset = args[:dataset] if args.key?(:dataset)
        end
      end
      
      # An intent categorizes an end-user's intention for one conversation turn. For
      # each agent, you define many intents, where your combined intents can handle a
      # complete conversation. When an end-user writes or says something, referred to
      # as an end-user expression or end-user input, Dialogflow matches the end-user
      # input to the best intent in your agent. Matching an intent is also known as
      # intent classification. For more information, see the [intent guide](https://
      # cloud.google.com/dialogflow/docs/intents-overview).
      class GoogleCloudDialogflowV2Intent
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the action associated with the intent. Note: The action
        # name must not contain whitespaces.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # Optional. The list of platforms for which the first responses will be copied
        # from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
        # Corresponds to the JSON property `defaultResponsePlatforms`
        # @return [Array<String>]
        attr_accessor :default_response_platforms
      
        # Required. The name of this intent.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. Indicates that this intent ends an interaction. Some integrations (e.
        # g., Actions on Google or Dialogflow phone gateway) use this information to
        # close interaction with an end user. Default is false.
        # Corresponds to the JSON property `endInteraction`
        # @return [Boolean]
        attr_accessor :end_interaction
        alias_method :end_interaction?, :end_interaction
      
        # Optional. The collection of event names that trigger the intent. If the
        # collection of input contexts is not empty, all of the contexts must be present
        # in the active user session for an event to trigger this intent. Event names
        # are limited to 150 characters.
        # Corresponds to the JSON property `events`
        # @return [Array<String>]
        attr_accessor :events
      
        # Output only. Read-only. Information about all followup intents that have this
        # intent as a direct or indirect parent. We populate this field only in the
        # output.
        # Corresponds to the JSON property `followupIntentInfo`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentFollowupIntentInfo>]
        attr_accessor :followup_intent_info
      
        # Optional. The list of context names required for this intent to be triggered.
        # Format: `projects//agent/sessions/-/contexts/`.
        # Corresponds to the JSON property `inputContextNames`
        # @return [Array<String>]
        attr_accessor :input_context_names
      
        # Optional. Indicates whether this is a fallback intent.
        # Corresponds to the JSON property `isFallback`
        # @return [Boolean]
        attr_accessor :is_fallback
        alias_method :is_fallback?, :is_fallback
      
        # Optional. Indicates that a live agent should be brought in to handle the
        # interaction with the user. In most cases, when you set this flag to true, you
        # would also want to set end_interaction to true as well. Default is false.
        # Corresponds to the JSON property `liveAgentHandoff`
        # @return [Boolean]
        attr_accessor :live_agent_handoff
        alias_method :live_agent_handoff?, :live_agent_handoff
      
        # Optional. The collection of rich messages corresponding to the `Response`
        # field in the Dialogflow console.
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessage>]
        attr_accessor :messages
      
        # Optional. Indicates whether Machine Learning is disabled for the intent. Note:
        # If `ml_disabled` setting is set to true, then this intent is not taken into
        # account during inference in `ML ONLY` match mode. Also, auto-markup in the UI
        # is turned off.
        # Corresponds to the JSON property `mlDisabled`
        # @return [Boolean]
        attr_accessor :ml_disabled
        alias_method :ml_disabled?, :ml_disabled
      
        # Optional. The unique identifier of this intent. Required for Intents.
        # UpdateIntent and Intents.BatchUpdateIntents methods. Format: `projects//agent/
        # intents/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The collection of contexts that are activated when the intent is
        # matched. Context messages in this collection should not set the parameters
        # field. Setting the `lifespan_count` to 0 will reset the context when the
        # intent is matched. Format: `projects//agent/sessions/-/contexts/`.
        # Corresponds to the JSON property `outputContexts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2Context>]
        attr_accessor :output_contexts
      
        # Optional. The collection of parameters associated with the intent.
        # Corresponds to the JSON property `parameters`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentParameter>]
        attr_accessor :parameters
      
        # Read-only after creation. The unique identifier of the parent intent in the
        # chain of followup intents. You can set this field when creating an intent, for
        # example with CreateIntent or BatchUpdateIntents, in order to make this intent
        # a followup intent. It identifies the parent followup intent. Format: `projects/
        # /agent/intents/`.
        # Corresponds to the JSON property `parentFollowupIntentName`
        # @return [String]
        attr_accessor :parent_followup_intent_name
      
        # Optional. The priority of this intent. Higher numbers represent higher
        # priorities. - If the supplied value is unspecified or 0, the service
        # translates the value to 500,000, which corresponds to the `Normal` priority in
        # the console. - If the supplied value is negative, the intent is ignored in
        # runtime detect intent requests.
        # Corresponds to the JSON property `priority`
        # @return [Fixnum]
        attr_accessor :priority
      
        # Optional. Indicates whether to delete all contexts in the current session when
        # this intent is matched.
        # Corresponds to the JSON property `resetContexts`
        # @return [Boolean]
        attr_accessor :reset_contexts
        alias_method :reset_contexts?, :reset_contexts
      
        # Output only. Read-only. The unique identifier of the root intent in the chain
        # of followup intents. It identifies the correct followup intents chain for this
        # intent. We populate this field only in the output. Format: `projects//agent/
        # intents/`.
        # Corresponds to the JSON property `rootFollowupIntentName`
        # @return [String]
        attr_accessor :root_followup_intent_name
      
        # Optional. The collection of examples that the agent is trained on.
        # Corresponds to the JSON property `trainingPhrases`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentTrainingPhrase>]
        attr_accessor :training_phrases
      
        # Optional. Indicates whether webhooks are enabled for the intent.
        # Corresponds to the JSON property `webhookState`
        # @return [String]
        attr_accessor :webhook_state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @default_response_platforms = args[:default_response_platforms] if args.key?(:default_response_platforms)
          @display_name = args[:display_name] if args.key?(:display_name)
          @end_interaction = args[:end_interaction] if args.key?(:end_interaction)
          @events = args[:events] if args.key?(:events)
          @followup_intent_info = args[:followup_intent_info] if args.key?(:followup_intent_info)
          @input_context_names = args[:input_context_names] if args.key?(:input_context_names)
          @is_fallback = args[:is_fallback] if args.key?(:is_fallback)
          @live_agent_handoff = args[:live_agent_handoff] if args.key?(:live_agent_handoff)
          @messages = args[:messages] if args.key?(:messages)
          @ml_disabled = args[:ml_disabled] if args.key?(:ml_disabled)
          @name = args[:name] if args.key?(:name)
          @output_contexts = args[:output_contexts] if args.key?(:output_contexts)
          @parameters = args[:parameters] if args.key?(:parameters)
          @parent_followup_intent_name = args[:parent_followup_intent_name] if args.key?(:parent_followup_intent_name)
          @priority = args[:priority] if args.key?(:priority)
          @reset_contexts = args[:reset_contexts] if args.key?(:reset_contexts)
          @root_followup_intent_name = args[:root_followup_intent_name] if args.key?(:root_followup_intent_name)
          @training_phrases = args[:training_phrases] if args.key?(:training_phrases)
          @webhook_state = args[:webhook_state] if args.key?(:webhook_state)
        end
      end
      
      # Represents a single followup intent in the chain.
      class GoogleCloudDialogflowV2IntentFollowupIntentInfo
        include Google::Apis::Core::Hashable
      
        # The unique identifier of the followup intent. Format: `projects//agent/intents/
        # `.
        # Corresponds to the JSON property `followupIntentName`
        # @return [String]
        attr_accessor :followup_intent_name
      
        # The unique identifier of the followup intent's parent. Format: `projects//
        # agent/intents/`.
        # Corresponds to the JSON property `parentFollowupIntentName`
        # @return [String]
        attr_accessor :parent_followup_intent_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @followup_intent_name = args[:followup_intent_name] if args.key?(:followup_intent_name)
          @parent_followup_intent_name = args[:parent_followup_intent_name] if args.key?(:parent_followup_intent_name)
        end
      end
      
      # A rich response message. Corresponds to the intent `Response` field in the
      # Dialogflow console. For more information, see [Rich response messages](https://
      # cloud.google.com/dialogflow/docs/intents-rich-messages).
      class GoogleCloudDialogflowV2IntentMessage
        include Google::Apis::Core::Hashable
      
        # The basic card message. Useful for displaying information.
        # Corresponds to the JSON property `basicCard`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageBasicCard]
        attr_accessor :basic_card
      
        # Browse Carousel Card for Actions on Google. https://developers.google.com/
        # actions/assistant/responses#browsing_carousel
        # Corresponds to the JSON property `browseCarouselCard`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageBrowseCarouselCard]
        attr_accessor :browse_carousel_card
      
        # The card response message.
        # Corresponds to the JSON property `card`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageCard]
        attr_accessor :card
      
        # The card for presenting a carousel of options to select from.
        # Corresponds to the JSON property `carouselSelect`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageCarouselSelect]
        attr_accessor :carousel_select
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageImage]
        attr_accessor :image
      
        # The suggestion chip message that allows the user to jump out to the app or
        # website associated with this agent.
        # Corresponds to the JSON property `linkOutSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageLinkOutSuggestion]
        attr_accessor :link_out_suggestion
      
        # The card for presenting a list of options to select from.
        # Corresponds to the JSON property `listSelect`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageListSelect]
        attr_accessor :list_select
      
        # The media content card for Actions on Google.
        # Corresponds to the JSON property `mediaContent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageMediaContent]
        attr_accessor :media_content
      
        # A custom platform-specific response.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Optional. The platform that this message is intended for.
        # Corresponds to the JSON property `platform`
        # @return [String]
        attr_accessor :platform
      
        # The quick replies response message.
        # Corresponds to the JSON property `quickReplies`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageQuickReplies]
        attr_accessor :quick_replies
      
        # The collection of simple response candidates. This message in `QueryResult.
        # fulfillment_messages` and `WebhookResponse.fulfillment_messages` should
        # contain only one `SimpleResponse`.
        # Corresponds to the JSON property `simpleResponses`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageSimpleResponses]
        attr_accessor :simple_responses
      
        # The collection of suggestions.
        # Corresponds to the JSON property `suggestions`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageSuggestions]
        attr_accessor :suggestions
      
        # Table card for Actions on Google.
        # Corresponds to the JSON property `tableCard`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageTableCard]
        attr_accessor :table_card
      
        # The text response message.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageText]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @basic_card = args[:basic_card] if args.key?(:basic_card)
          @browse_carousel_card = args[:browse_carousel_card] if args.key?(:browse_carousel_card)
          @card = args[:card] if args.key?(:card)
          @carousel_select = args[:carousel_select] if args.key?(:carousel_select)
          @image = args[:image] if args.key?(:image)
          @link_out_suggestion = args[:link_out_suggestion] if args.key?(:link_out_suggestion)
          @list_select = args[:list_select] if args.key?(:list_select)
          @media_content = args[:media_content] if args.key?(:media_content)
          @payload = args[:payload] if args.key?(:payload)
          @platform = args[:platform] if args.key?(:platform)
          @quick_replies = args[:quick_replies] if args.key?(:quick_replies)
          @simple_responses = args[:simple_responses] if args.key?(:simple_responses)
          @suggestions = args[:suggestions] if args.key?(:suggestions)
          @table_card = args[:table_card] if args.key?(:table_card)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # The basic card message. Useful for displaying information.
      class GoogleCloudDialogflowV2IntentMessageBasicCard
        include Google::Apis::Core::Hashable
      
        # Optional. The collection of card buttons.
        # Corresponds to the JSON property `buttons`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageBasicCardButton>]
        attr_accessor :buttons
      
        # Required, unless image is present. The body text of the card.
        # Corresponds to the JSON property `formattedText`
        # @return [String]
        attr_accessor :formatted_text
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageImage]
        attr_accessor :image
      
        # Optional. The subtitle of the card.
        # Corresponds to the JSON property `subtitle`
        # @return [String]
        attr_accessor :subtitle
      
        # Optional. The title of the card.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @buttons = args[:buttons] if args.key?(:buttons)
          @formatted_text = args[:formatted_text] if args.key?(:formatted_text)
          @image = args[:image] if args.key?(:image)
          @subtitle = args[:subtitle] if args.key?(:subtitle)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # The button object that appears at the bottom of a card.
      class GoogleCloudDialogflowV2IntentMessageBasicCardButton
        include Google::Apis::Core::Hashable
      
        # Opens the given URI.
        # Corresponds to the JSON property `openUriAction`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageBasicCardButtonOpenUriAction]
        attr_accessor :open_uri_action
      
        # Required. The title of the button.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @open_uri_action = args[:open_uri_action] if args.key?(:open_uri_action)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Opens the given URI.
      class GoogleCloudDialogflowV2IntentMessageBasicCardButtonOpenUriAction
        include Google::Apis::Core::Hashable
      
        # Required. The HTTP or HTTPS scheme URI.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Browse Carousel Card for Actions on Google. https://developers.google.com/
      # actions/assistant/responses#browsing_carousel
      class GoogleCloudDialogflowV2IntentMessageBrowseCarouselCard
        include Google::Apis::Core::Hashable
      
        # Optional. Settings for displaying the image. Applies to every image in items.
        # Corresponds to the JSON property `imageDisplayOptions`
        # @return [String]
        attr_accessor :image_display_options
      
        # Required. List of items in the Browse Carousel Card. Minimum of two items,
        # maximum of ten.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItem>]
        attr_accessor :items
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @image_display_options = args[:image_display_options] if args.key?(:image_display_options)
          @items = args[:items] if args.key?(:items)
        end
      end
      
      # Browsing carousel tile
      class GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItem
        include Google::Apis::Core::Hashable
      
        # Optional. Description of the carousel item. Maximum of four lines of text.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum
        # of one line of text.
        # Corresponds to the JSON property `footer`
        # @return [String]
        attr_accessor :footer
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageImage]
        attr_accessor :image
      
        # Actions on Google action to open a given url.
        # Corresponds to the JSON property `openUriAction`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction]
        attr_accessor :open_uri_action
      
        # Required. Title of the carousel item. Maximum of two lines of text.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @footer = args[:footer] if args.key?(:footer)
          @image = args[:image] if args.key?(:image)
          @open_uri_action = args[:open_uri_action] if args.key?(:open_uri_action)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Actions on Google action to open a given url.
      class GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction
        include Google::Apis::Core::Hashable
      
        # Required. URL
        # Corresponds to the JSON property `url`
        # @return [String]
        attr_accessor :url
      
        # Optional. Specifies the type of viewer that is used when opening the URL.
        # Defaults to opening via web browser.
        # Corresponds to the JSON property `urlTypeHint`
        # @return [String]
        attr_accessor :url_type_hint
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @url = args[:url] if args.key?(:url)
          @url_type_hint = args[:url_type_hint] if args.key?(:url_type_hint)
        end
      end
      
      # The card response message.
      class GoogleCloudDialogflowV2IntentMessageCard
        include Google::Apis::Core::Hashable
      
        # Optional. The collection of card buttons.
        # Corresponds to the JSON property `buttons`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageCardButton>]
        attr_accessor :buttons
      
        # Optional. The public URI to an image file for the card.
        # Corresponds to the JSON property `imageUri`
        # @return [String]
        attr_accessor :image_uri
      
        # Optional. The subtitle of the card.
        # Corresponds to the JSON property `subtitle`
        # @return [String]
        attr_accessor :subtitle
      
        # Optional. The title of the card.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @buttons = args[:buttons] if args.key?(:buttons)
          @image_uri = args[:image_uri] if args.key?(:image_uri)
          @subtitle = args[:subtitle] if args.key?(:subtitle)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Contains information about a button.
      class GoogleCloudDialogflowV2IntentMessageCardButton
        include Google::Apis::Core::Hashable
      
        # Optional. The text to send back to the Dialogflow API or a URI to open.
        # Corresponds to the JSON property `postback`
        # @return [String]
        attr_accessor :postback
      
        # Optional. The text to show on the button.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @postback = args[:postback] if args.key?(:postback)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # The card for presenting a carousel of options to select from.
      class GoogleCloudDialogflowV2IntentMessageCarouselSelect
        include Google::Apis::Core::Hashable
      
        # Required. Carousel items.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageCarouselSelectItem>]
        attr_accessor :items
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
        end
      end
      
      # An item in the carousel.
      class GoogleCloudDialogflowV2IntentMessageCarouselSelectItem
        include Google::Apis::Core::Hashable
      
        # Optional. The body text of the card.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageImage]
        attr_accessor :image
      
        # Additional info about the select item for when it is triggered in a dialog.
        # Corresponds to the JSON property `info`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageSelectItemInfo]
        attr_accessor :info
      
        # Required. Title of the carousel item.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @image = args[:image] if args.key?(:image)
          @info = args[:info] if args.key?(:info)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Column properties for TableCard.
      class GoogleCloudDialogflowV2IntentMessageColumnProperties
        include Google::Apis::Core::Hashable
      
        # Required. Column heading.
        # Corresponds to the JSON property `header`
        # @return [String]
        attr_accessor :header
      
        # Optional. Defines text alignment for all cells in this column.
        # Corresponds to the JSON property `horizontalAlignment`
        # @return [String]
        attr_accessor :horizontal_alignment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @header = args[:header] if args.key?(:header)
          @horizontal_alignment = args[:horizontal_alignment] if args.key?(:horizontal_alignment)
        end
      end
      
      # The image response message.
      class GoogleCloudDialogflowV2IntentMessageImage
        include Google::Apis::Core::Hashable
      
        # Optional. A text description of the image to be used for accessibility, e.g.,
        # screen readers.
        # Corresponds to the JSON property `accessibilityText`
        # @return [String]
        attr_accessor :accessibility_text
      
        # Optional. The public URI to an image file.
        # Corresponds to the JSON property `imageUri`
        # @return [String]
        attr_accessor :image_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @accessibility_text = args[:accessibility_text] if args.key?(:accessibility_text)
          @image_uri = args[:image_uri] if args.key?(:image_uri)
        end
      end
      
      # The suggestion chip message that allows the user to jump out to the app or
      # website associated with this agent.
      class GoogleCloudDialogflowV2IntentMessageLinkOutSuggestion
        include Google::Apis::Core::Hashable
      
        # Required. The name of the app or site this chip is linking to.
        # Corresponds to the JSON property `destinationName`
        # @return [String]
        attr_accessor :destination_name
      
        # Required. The URI of the app or site to open when the user taps the suggestion
        # chip.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @destination_name = args[:destination_name] if args.key?(:destination_name)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # The card for presenting a list of options to select from.
      class GoogleCloudDialogflowV2IntentMessageListSelect
        include Google::Apis::Core::Hashable
      
        # Required. List items.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageListSelectItem>]
        attr_accessor :items
      
        # Optional. Subtitle of the list.
        # Corresponds to the JSON property `subtitle`
        # @return [String]
        attr_accessor :subtitle
      
        # Optional. The overall title of the list.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @subtitle = args[:subtitle] if args.key?(:subtitle)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # An item in the list.
      class GoogleCloudDialogflowV2IntentMessageListSelectItem
        include Google::Apis::Core::Hashable
      
        # Optional. The main text describing the item.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageImage]
        attr_accessor :image
      
        # Additional info about the select item for when it is triggered in a dialog.
        # Corresponds to the JSON property `info`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageSelectItemInfo]
        attr_accessor :info
      
        # Required. The title of the list item.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @image = args[:image] if args.key?(:image)
          @info = args[:info] if args.key?(:info)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # The media content card for Actions on Google.
      class GoogleCloudDialogflowV2IntentMessageMediaContent
        include Google::Apis::Core::Hashable
      
        # Required. List of media objects.
        # Corresponds to the JSON property `mediaObjects`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageMediaContentResponseMediaObject>]
        attr_accessor :media_objects
      
        # Optional. What type of media is the content (ie "audio").
        # Corresponds to the JSON property `mediaType`
        # @return [String]
        attr_accessor :media_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @media_objects = args[:media_objects] if args.key?(:media_objects)
          @media_type = args[:media_type] if args.key?(:media_type)
        end
      end
      
      # Response media object for media content card.
      class GoogleCloudDialogflowV2IntentMessageMediaContentResponseMediaObject
        include Google::Apis::Core::Hashable
      
        # Required. Url where the media is stored.
        # Corresponds to the JSON property `contentUrl`
        # @return [String]
        attr_accessor :content_url
      
        # Optional. Description of media card.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The image response message.
        # Corresponds to the JSON property `icon`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageImage]
        attr_accessor :icon
      
        # The image response message.
        # Corresponds to the JSON property `largeImage`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageImage]
        attr_accessor :large_image
      
        # Required. Name of media card.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content_url = args[:content_url] if args.key?(:content_url)
          @description = args[:description] if args.key?(:description)
          @icon = args[:icon] if args.key?(:icon)
          @large_image = args[:large_image] if args.key?(:large_image)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # The quick replies response message.
      class GoogleCloudDialogflowV2IntentMessageQuickReplies
        include Google::Apis::Core::Hashable
      
        # Optional. The collection of quick replies.
        # Corresponds to the JSON property `quickReplies`
        # @return [Array<String>]
        attr_accessor :quick_replies
      
        # Optional. The title of the collection of quick replies.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @quick_replies = args[:quick_replies] if args.key?(:quick_replies)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Additional info about the select item for when it is triggered in a dialog.
      class GoogleCloudDialogflowV2IntentMessageSelectItemInfo
        include Google::Apis::Core::Hashable
      
        # Required. A unique key that will be sent back to the agent if this response is
        # given.
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        # Optional. A list of synonyms that can also be used to trigger this item in
        # dialog.
        # Corresponds to the JSON property `synonyms`
        # @return [Array<String>]
        attr_accessor :synonyms
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @key = args[:key] if args.key?(:key)
          @synonyms = args[:synonyms] if args.key?(:synonyms)
        end
      end
      
      # The simple response message containing speech or text.
      class GoogleCloudDialogflowV2IntentMessageSimpleResponse
        include Google::Apis::Core::Hashable
      
        # Optional. The text to display.
        # Corresponds to the JSON property `displayText`
        # @return [String]
        attr_accessor :display_text
      
        # One of text_to_speech or ssml must be provided. Structured spoken response to
        # the user in the SSML format. Mutually exclusive with text_to_speech.
        # Corresponds to the JSON property `ssml`
        # @return [String]
        attr_accessor :ssml
      
        # One of text_to_speech or ssml must be provided. The plain text of the speech
        # output. Mutually exclusive with ssml.
        # Corresponds to the JSON property `textToSpeech`
        # @return [String]
        attr_accessor :text_to_speech
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_text = args[:display_text] if args.key?(:display_text)
          @ssml = args[:ssml] if args.key?(:ssml)
          @text_to_speech = args[:text_to_speech] if args.key?(:text_to_speech)
        end
      end
      
      # The collection of simple response candidates. This message in `QueryResult.
      # fulfillment_messages` and `WebhookResponse.fulfillment_messages` should
      # contain only one `SimpleResponse`.
      class GoogleCloudDialogflowV2IntentMessageSimpleResponses
        include Google::Apis::Core::Hashable
      
        # Required. The list of simple responses.
        # Corresponds to the JSON property `simpleResponses`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageSimpleResponse>]
        attr_accessor :simple_responses
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @simple_responses = args[:simple_responses] if args.key?(:simple_responses)
        end
      end
      
      # The suggestion chip message that the user can tap to quickly post a reply to
      # the conversation.
      class GoogleCloudDialogflowV2IntentMessageSuggestion
        include Google::Apis::Core::Hashable
      
        # Required. The text shown the in the suggestion chip.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # The collection of suggestions.
      class GoogleCloudDialogflowV2IntentMessageSuggestions
        include Google::Apis::Core::Hashable
      
        # Required. The list of suggested replies.
        # Corresponds to the JSON property `suggestions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageSuggestion>]
        attr_accessor :suggestions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @suggestions = args[:suggestions] if args.key?(:suggestions)
        end
      end
      
      # Table card for Actions on Google.
      class GoogleCloudDialogflowV2IntentMessageTableCard
        include Google::Apis::Core::Hashable
      
        # Optional. List of buttons for the card.
        # Corresponds to the JSON property `buttons`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageBasicCardButton>]
        attr_accessor :buttons
      
        # Optional. Display properties for the columns in this table.
        # Corresponds to the JSON property `columnProperties`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageColumnProperties>]
        attr_accessor :column_properties
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageImage]
        attr_accessor :image
      
        # Optional. Rows in this table of data.
        # Corresponds to the JSON property `rows`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageTableCardRow>]
        attr_accessor :rows
      
        # Optional. Subtitle to the title.
        # Corresponds to the JSON property `subtitle`
        # @return [String]
        attr_accessor :subtitle
      
        # Required. Title of the card.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @buttons = args[:buttons] if args.key?(:buttons)
          @column_properties = args[:column_properties] if args.key?(:column_properties)
          @image = args[:image] if args.key?(:image)
          @rows = args[:rows] if args.key?(:rows)
          @subtitle = args[:subtitle] if args.key?(:subtitle)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Cell of TableCardRow.
      class GoogleCloudDialogflowV2IntentMessageTableCardCell
        include Google::Apis::Core::Hashable
      
        # Required. Text in this cell.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Row of TableCard.
      class GoogleCloudDialogflowV2IntentMessageTableCardRow
        include Google::Apis::Core::Hashable
      
        # Optional. List of cells that make up this row.
        # Corresponds to the JSON property `cells`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessageTableCardCell>]
        attr_accessor :cells
      
        # Optional. Whether to add a visual divider after this row.
        # Corresponds to the JSON property `dividerAfter`
        # @return [Boolean]
        attr_accessor :divider_after
        alias_method :divider_after?, :divider_after
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cells = args[:cells] if args.key?(:cells)
          @divider_after = args[:divider_after] if args.key?(:divider_after)
        end
      end
      
      # The text response message.
      class GoogleCloudDialogflowV2IntentMessageText
        include Google::Apis::Core::Hashable
      
        # Optional. The collection of the agent's responses.
        # Corresponds to the JSON property `text`
        # @return [Array<String>]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Represents intent parameters.
      class GoogleCloudDialogflowV2IntentParameter
        include Google::Apis::Core::Hashable
      
        # Optional. The default value to use when the `value` yields an empty result.
        # Default values can be extracted from contexts by using the following syntax: `#
        # context_name.parameter_name`.
        # Corresponds to the JSON property `defaultValue`
        # @return [String]
        attr_accessor :default_value
      
        # Required. The name of the parameter.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. The name of the entity type, prefixed with `@`, that describes
        # values of the parameter. If the parameter is required, this must be provided.
        # Corresponds to the JSON property `entityTypeDisplayName`
        # @return [String]
        attr_accessor :entity_type_display_name
      
        # Optional. Indicates whether the parameter represents a list of values.
        # Corresponds to the JSON property `isList`
        # @return [Boolean]
        attr_accessor :is_list
        alias_method :is_list?, :is_list
      
        # Optional. Indicates whether the parameter is required. That is, whether the
        # intent cannot be completed without collecting the parameter value.
        # Corresponds to the JSON property `mandatory`
        # @return [Boolean]
        attr_accessor :mandatory
        alias_method :mandatory?, :mandatory
      
        # The unique identifier of this parameter.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The collection of prompts that the agent can present to the user in
        # order to collect a value for the parameter.
        # Corresponds to the JSON property `prompts`
        # @return [Array<String>]
        attr_accessor :prompts
      
        # Optional. The definition of the parameter value. It can be: - a constant
        # string, - a parameter value defined as `$parameter_name`, - an original
        # parameter value defined as `$parameter_name.original`, - a parameter value
        # from some context defined as `#context_name.parameter_name`.
        # Corresponds to the JSON property `value`
        # @return [String]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @default_value = args[:default_value] if args.key?(:default_value)
          @display_name = args[:display_name] if args.key?(:display_name)
          @entity_type_display_name = args[:entity_type_display_name] if args.key?(:entity_type_display_name)
          @is_list = args[:is_list] if args.key?(:is_list)
          @mandatory = args[:mandatory] if args.key?(:mandatory)
          @name = args[:name] if args.key?(:name)
          @prompts = args[:prompts] if args.key?(:prompts)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Represents an example that the agent is trained on.
      class GoogleCloudDialogflowV2IntentTrainingPhrase
        include Google::Apis::Core::Hashable
      
        # Output only. The unique identifier of this training phrase.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Required. The ordered list of training phrase parts. The parts are
        # concatenated in order to form the training phrase. Note: The API does not
        # automatically annotate training phrases like the Dialogflow Console does. Note:
        # Do not forget to include whitespace at part boundaries, so the training
        # phrase is well formatted when the parts are concatenated. If the training
        # phrase does not need to be annotated with parameters, you just need a single
        # part with only the Part.text field set. If you want to annotate the training
        # phrase, you must create multiple parts, where the fields of each part are
        # populated in one of two ways: - `Part.text` is set to a part of the phrase
        # that has no parameters. - `Part.text` is set to a part of the phrase that you
        # want to annotate, and the `entity_type`, `alias`, and `user_defined` fields
        # are all set.
        # Corresponds to the JSON property `parts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentTrainingPhrasePart>]
        attr_accessor :parts
      
        # Optional. Indicates how many times this example was added to the intent. Each
        # time a developer adds an existing sample by editing an intent or training,
        # this counter is increased.
        # Corresponds to the JSON property `timesAddedCount`
        # @return [Fixnum]
        attr_accessor :times_added_count
      
        # Required. The type of the training phrase.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @parts = args[:parts] if args.key?(:parts)
          @times_added_count = args[:times_added_count] if args.key?(:times_added_count)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Represents a part of a training phrase.
      class GoogleCloudDialogflowV2IntentTrainingPhrasePart
        include Google::Apis::Core::Hashable
      
        # Optional. The parameter name for the value extracted from the annotated part
        # of the example. This field is required for annotated parts of the training
        # phrase.
        # Corresponds to the JSON property `alias`
        # @return [String]
        attr_accessor :alias
      
        # Optional. The entity type name prefixed with `@`. This field is required for
        # annotated parts of the training phrase.
        # Corresponds to the JSON property `entityType`
        # @return [String]
        attr_accessor :entity_type
      
        # Required. The text for this part.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Optional. Indicates whether the text was manually annotated. This field is set
        # to true when the Dialogflow Console is used to manually annotate the part.
        # When creating an annotated part with the API, you must set this to true.
        # Corresponds to the JSON property `userDefined`
        # @return [Boolean]
        attr_accessor :user_defined
        alias_method :user_defined?, :user_defined
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @alias = args[:alias] if args.key?(:alias)
          @entity_type = args[:entity_type] if args.key?(:entity_type)
          @text = args[:text] if args.key?(:text)
          @user_defined = args[:user_defined] if args.key?(:user_defined)
        end
      end
      
      # Represents a Knowledge Assist answer.
      class GoogleCloudDialogflowV2KnowledgeAssistAnswer
        include Google::Apis::Core::Hashable
      
        # The name of the answer record. Format: `projects//locations//answer Records/`.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Represents a suggested query.
        # Corresponds to the JSON property `suggestedQuery`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2KnowledgeAssistAnswerSuggestedQuery]
        attr_accessor :suggested_query
      
        # Represents an answer from Knowledge. Currently supports FAQ and Generative
        # answers.
        # Corresponds to the JSON property `suggestedQueryAnswer`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswer]
        attr_accessor :suggested_query_answer
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @suggested_query = args[:suggested_query] if args.key?(:suggested_query)
          @suggested_query_answer = args[:suggested_query_answer] if args.key?(:suggested_query_answer)
        end
      end
      
      # Represents an answer from Knowledge. Currently supports FAQ and Generative
      # answers.
      class GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswer
        include Google::Apis::Core::Hashable
      
        # The piece of text from the `source` that answers this suggested query.
        # Corresponds to the JSON property `answerText`
        # @return [String]
        attr_accessor :answer_text
      
        # Details about source of FAQ answer.
        # Corresponds to the JSON property `faqSource`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerFaqSource]
        attr_accessor :faq_source
      
        # Details about source of Generative answer.
        # Corresponds to the JSON property `generativeSource`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerGenerativeSource]
        attr_accessor :generative_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_text = args[:answer_text] if args.key?(:answer_text)
          @faq_source = args[:faq_source] if args.key?(:faq_source)
          @generative_source = args[:generative_source] if args.key?(:generative_source)
        end
      end
      
      # Details about source of FAQ answer.
      class GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerFaqSource
        include Google::Apis::Core::Hashable
      
        # The corresponding FAQ question.
        # Corresponds to the JSON property `question`
        # @return [String]
        attr_accessor :question
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @question = args[:question] if args.key?(:question)
        end
      end
      
      # Details about source of Generative answer.
      class GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerGenerativeSource
        include Google::Apis::Core::Hashable
      
        # All snippets used for this Generative Prediction, with their source URI and
        # data.
        # Corresponds to the JSON property `snippets`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerGenerativeSourceSnippet>]
        attr_accessor :snippets
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @snippets = args[:snippets] if args.key?(:snippets)
        end
      end
      
      # Snippet Source for a Generative Prediction.
      class GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerGenerativeSourceSnippet
        include Google::Apis::Core::Hashable
      
        # Metadata of the document.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        # Text taken from that URI.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Title of the document.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # URI the data is sourced from.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata = args[:metadata] if args.key?(:metadata)
          @text = args[:text] if args.key?(:text)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Represents a suggested query.
      class GoogleCloudDialogflowV2KnowledgeAssistAnswerSuggestedQuery
        include Google::Apis::Core::Hashable
      
        # Suggested query text.
        # Corresponds to the JSON property `queryText`
        # @return [String]
        attr_accessor :query_text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @query_text = args[:query_text] if args.key?(:query_text)
        end
      end
      
      # Metadata in google::longrunning::Operation for Knowledge operations.
      class GoogleCloudDialogflowV2KnowledgeOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The time when the operation finished.
        # Corresponds to the JSON property `doneTime`
        # @return [String]
        attr_accessor :done_time
      
        # Metadata related to the Export Data Operations (e.g. ExportDocument).
        # Corresponds to the JSON property `exportOperationMetadata`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2ExportOperationMetadata]
        attr_accessor :export_operation_metadata
      
        # The name of the knowledge base interacted with during the operation.
        # Corresponds to the JSON property `knowledgeBase`
        # @return [String]
        attr_accessor :knowledge_base
      
        # Output only. The current state of this operation.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @done_time = args[:done_time] if args.key?(:done_time)
          @export_operation_metadata = args[:export_operation_metadata] if args.key?(:export_operation_metadata)
          @knowledge_base = args[:knowledge_base] if args.key?(:knowledge_base)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # Represents a message posted into a conversation.
      class GoogleCloudDialogflowV2Message
        include Google::Apis::Core::Hashable
      
        # Required. The message content.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # Output only. The time when the message was created in Contact Center AI.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The message language. This should be a [BCP-47](https://www.rfc-
        # editor.org/rfc/bcp/bcp47.txt) language tag. Example: "en-US".
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Represents the result of annotation for the message.
        # Corresponds to the JSON property `messageAnnotation`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2MessageAnnotation]
        attr_accessor :message_annotation
      
        # Optional. The unique identifier of the message. Format: `projects//locations//
        # conversations//messages/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. The participant that sends this message.
        # Corresponds to the JSON property `participant`
        # @return [String]
        attr_accessor :participant
      
        # Output only. The role of the participant.
        # Corresponds to the JSON property `participantRole`
        # @return [String]
        attr_accessor :participant_role
      
        # Optional. The time when the message was sent. For voice messages, this is the
        # time when an utterance started.
        # Corresponds to the JSON property `sendTime`
        # @return [String]
        attr_accessor :send_time
      
        # The result of sentiment analysis. Sentiment analysis inspects user input and
        # identifies the prevailing subjective opinion, especially to determine a user's
        # attitude as positive, negative, or neutral. For DetectIntent, it needs to be
        # configured in DetectIntentRequest.query_params. For StreamingDetectIntent, it
        # needs to be configured in StreamingDetectIntentRequest.query_params. And for
        # Participants.AnalyzeContent and Participants.StreamingAnalyzeContent, it needs
        # to be configured in ConversationProfile.human_agent_assistant_config
        # Corresponds to the JSON property `sentimentAnalysis`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SentimentAnalysisResult]
        attr_accessor :sentiment_analysis
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @create_time = args[:create_time] if args.key?(:create_time)
          @language_code = args[:language_code] if args.key?(:language_code)
          @message_annotation = args[:message_annotation] if args.key?(:message_annotation)
          @name = args[:name] if args.key?(:name)
          @participant = args[:participant] if args.key?(:participant)
          @participant_role = args[:participant_role] if args.key?(:participant_role)
          @send_time = args[:send_time] if args.key?(:send_time)
          @sentiment_analysis = args[:sentiment_analysis] if args.key?(:sentiment_analysis)
        end
      end
      
      # Represents the result of annotation for the message.
      class GoogleCloudDialogflowV2MessageAnnotation
        include Google::Apis::Core::Hashable
      
        # Indicates whether the text message contains entities.
        # Corresponds to the JSON property `containEntities`
        # @return [Boolean]
        attr_accessor :contain_entities
        alias_method :contain_entities?, :contain_entities
      
        # The collection of annotated message parts ordered by their position in the
        # message. You can recover the annotated message by concatenating [
        # AnnotatedMessagePart.text].
        # Corresponds to the JSON property `parts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2AnnotatedMessagePart>]
        attr_accessor :parts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contain_entities = args[:contain_entities] if args.key?(:contain_entities)
          @parts = args[:parts] if args.key?(:parts)
        end
      end
      
      # Represents the contents of the original request that was passed to the `[
      # Streaming]DetectIntent` call.
      class GoogleCloudDialogflowV2OriginalDetectIntentRequest
        include Google::Apis::Core::Hashable
      
        # Optional. This field is set to the value of the `QueryParameters.payload`
        # field passed in the request. Some integrations that query a Dialogflow agent
        # may provide additional information in the payload. In particular, for the
        # Dialogflow Phone Gateway integration, this field has the form: ` "telephony": `
        # "caller_id": "+18558363987" ` ` Note: The caller ID field (`caller_id`) will
        # be redacted for Trial Edition agents and populated with the caller ID in [E.
        # 164 format](https://en.wikipedia.org/wiki/E.164) for Essentials Edition agents.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # The source of this request, e.g., `google`, `facebook`, `slack`. It is set by
        # Dialogflow-owned servers.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        # Optional. The version of the protocol used for this request. This field is AoG-
        # specific.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @payload = args[:payload] if args.key?(:payload)
          @source = args[:source] if args.key?(:source)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Represents the result of conversational query or event processing.
      class GoogleCloudDialogflowV2QueryResult
        include Google::Apis::Core::Hashable
      
        # The action name from the matched intent.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # This field is set to: - `false` if the matched intent has required parameters
        # and not all of the required parameter values have been collected. - `true` if
        # all required parameter values have been collected, or if the matched intent
        # doesn't contain any required parameters.
        # Corresponds to the JSON property `allRequiredParamsPresent`
        # @return [Boolean]
        attr_accessor :all_required_params_present
        alias_method :all_required_params_present?, :all_required_params_present
      
        # Indicates whether the conversational query triggers a cancellation for slot
        # filling. For more information, see the [cancel slot filling documentation](
        # https://cloud.google.com/dialogflow/es/docs/intents-actions-parameters#cancel).
        # Corresponds to the JSON property `cancelsSlotFilling`
        # @return [Boolean]
        attr_accessor :cancels_slot_filling
        alias_method :cancels_slot_filling?, :cancels_slot_filling
      
        # Free-form diagnostic information for the associated detect intent request. The
        # fields of this data can change without notice, so you should not write code
        # that depends on its structure. The data may contain: - webhook call latency -
        # webhook errors
        # Corresponds to the JSON property `diagnosticInfo`
        # @return [Hash<String,Object>]
        attr_accessor :diagnostic_info
      
        # The collection of rich messages to present to the user.
        # Corresponds to the JSON property `fulfillmentMessages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessage>]
        attr_accessor :fulfillment_messages
      
        # The text to be pronounced to the user or shown on the screen. Note: This is a
        # legacy field, `fulfillment_messages` should be preferred.
        # Corresponds to the JSON property `fulfillmentText`
        # @return [String]
        attr_accessor :fulfillment_text
      
        # An intent categorizes an end-user's intention for one conversation turn. For
        # each agent, you define many intents, where your combined intents can handle a
        # complete conversation. When an end-user writes or says something, referred to
        # as an end-user expression or end-user input, Dialogflow matches the end-user
        # input to the best intent in your agent. Matching an intent is also known as
        # intent classification. For more information, see the [intent guide](https://
        # cloud.google.com/dialogflow/docs/intents-overview).
        # Corresponds to the JSON property `intent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2Intent]
        attr_accessor :intent
      
        # The intent detection confidence. Values range from 0.0 (completely uncertain)
        # to 1.0 (completely certain). This value is for informational purpose only and
        # is only used to help match the best intent within the classification threshold.
        # This value may change for the same end-user expression at any time due to a
        # model retraining or change in implementation. If there are `multiple
        # knowledge_answers` messages, this value is set to the greatest `
        # knowledgeAnswers.match_confidence` value in the list.
        # Corresponds to the JSON property `intentDetectionConfidence`
        # @return [Float]
        attr_accessor :intent_detection_confidence
      
        # The language that was triggered during intent detection. See [Language Support]
        # (https://cloud.google.com/dialogflow/docs/reference/language) for a list of
        # the currently supported language codes.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # The collection of output contexts. If applicable, `output_contexts.parameters`
        # contains entries with name `.original` containing the original parameter
        # values before the query.
        # Corresponds to the JSON property `outputContexts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2Context>]
        attr_accessor :output_contexts
      
        # The collection of extracted parameters. Depending on your protocol or client
        # library language, this is a map, associative array, symbol table, dictionary,
        # or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey
        # type: string * MapKey value: parameter name * MapValue type: If parameter's
        # entity type is a composite entity then use map, otherwise, depending on the
        # parameter value type, it could be one of string, number, boolean, null, list
        # or map. * MapValue value: If parameter's entity type is a composite entity
        # then use map from composite entity property names to property values,
        # otherwise, use parameter value.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        # The original conversational query text: - If natural language text was
        # provided as input, `query_text` contains a copy of the input. - If natural
        # language speech audio was provided as input, `query_text` contains the speech
        # recognition result. If speech recognizer produced multiple alternatives, a
        # particular one is picked. - If automatic spell correction is enabled, `
        # query_text` will contain the corrected user input.
        # Corresponds to the JSON property `queryText`
        # @return [String]
        attr_accessor :query_text
      
        # The result of sentiment analysis. Sentiment analysis inspects user input and
        # identifies the prevailing subjective opinion, especially to determine a user's
        # attitude as positive, negative, or neutral. For DetectIntent, it needs to be
        # configured in DetectIntentRequest.query_params. For StreamingDetectIntent, it
        # needs to be configured in StreamingDetectIntentRequest.query_params. And for
        # Participants.AnalyzeContent and Participants.StreamingAnalyzeContent, it needs
        # to be configured in ConversationProfile.human_agent_assistant_config
        # Corresponds to the JSON property `sentimentAnalysisResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SentimentAnalysisResult]
        attr_accessor :sentiment_analysis_result
      
        # The Speech recognition confidence between 0.0 and 1.0. A higher number
        # indicates an estimated greater likelihood that the recognized words are
        # correct. The default of 0.0 is a sentinel value indicating that confidence was
        # not set. This field is not guaranteed to be accurate or set. In particular
        # this field isn't set for StreamingDetectIntent since the streaming endpoint
        # has separate confidence estimates per portion of the audio in
        # StreamingRecognitionResult.
        # Corresponds to the JSON property `speechRecognitionConfidence`
        # @return [Float]
        attr_accessor :speech_recognition_confidence
      
        # If the query was fulfilled by a webhook call, this field is set to the value
        # of the `payload` field returned in the webhook response.
        # Corresponds to the JSON property `webhookPayload`
        # @return [Hash<String,Object>]
        attr_accessor :webhook_payload
      
        # If the query was fulfilled by a webhook call, this field is set to the value
        # of the `source` field returned in the webhook response.
        # Corresponds to the JSON property `webhookSource`
        # @return [String]
        attr_accessor :webhook_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @all_required_params_present = args[:all_required_params_present] if args.key?(:all_required_params_present)
          @cancels_slot_filling = args[:cancels_slot_filling] if args.key?(:cancels_slot_filling)
          @diagnostic_info = args[:diagnostic_info] if args.key?(:diagnostic_info)
          @fulfillment_messages = args[:fulfillment_messages] if args.key?(:fulfillment_messages)
          @fulfillment_text = args[:fulfillment_text] if args.key?(:fulfillment_text)
          @intent = args[:intent] if args.key?(:intent)
          @intent_detection_confidence = args[:intent_detection_confidence] if args.key?(:intent_detection_confidence)
          @language_code = args[:language_code] if args.key?(:language_code)
          @output_contexts = args[:output_contexts] if args.key?(:output_contexts)
          @parameters = args[:parameters] if args.key?(:parameters)
          @query_text = args[:query_text] if args.key?(:query_text)
          @sentiment_analysis_result = args[:sentiment_analysis_result] if args.key?(:sentiment_analysis_result)
          @speech_recognition_confidence = args[:speech_recognition_confidence] if args.key?(:speech_recognition_confidence)
          @webhook_payload = args[:webhook_payload] if args.key?(:webhook_payload)
          @webhook_source = args[:webhook_source] if args.key?(:webhook_source)
        end
      end
      
      # The sentiment, such as positive/negative feeling or association, for a unit of
      # analysis, such as the query text. See: https://cloud.google.com/natural-
      # language/docs/basics#interpreting_sentiment_analysis_values for how to
      # interpret the result.
      class GoogleCloudDialogflowV2Sentiment
        include Google::Apis::Core::Hashable
      
        # A non-negative number in the [0, +inf) range, which represents the absolute
        # magnitude of sentiment, regardless of score (positive or negative).
        # Corresponds to the JSON property `magnitude`
        # @return [Float]
        attr_accessor :magnitude
      
        # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @magnitude = args[:magnitude] if args.key?(:magnitude)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # The result of sentiment analysis. Sentiment analysis inspects user input and
      # identifies the prevailing subjective opinion, especially to determine a user's
      # attitude as positive, negative, or neutral. For DetectIntent, it needs to be
      # configured in DetectIntentRequest.query_params. For StreamingDetectIntent, it
      # needs to be configured in StreamingDetectIntentRequest.query_params. And for
      # Participants.AnalyzeContent and Participants.StreamingAnalyzeContent, it needs
      # to be configured in ConversationProfile.human_agent_assistant_config
      class GoogleCloudDialogflowV2SentimentAnalysisResult
        include Google::Apis::Core::Hashable
      
        # The sentiment, such as positive/negative feeling or association, for a unit of
        # analysis, such as the query text. See: https://cloud.google.com/natural-
        # language/docs/basics#interpreting_sentiment_analysis_values for how to
        # interpret the result.
        # Corresponds to the JSON property `queryTextSentiment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2Sentiment]
        attr_accessor :query_text_sentiment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @query_text_sentiment = args[:query_text_sentiment] if args.key?(:query_text_sentiment)
        end
      end
      
      # A session represents a conversation between a Dialogflow agent and an end-user.
      # You can create special entities, called session entities, during a session.
      # Session entities can extend or replace custom entity types and only exist
      # during the session that they were created for. All session data, including
      # session entities, is stored by Dialogflow for 20 minutes. For more information,
      # see the [session entity guide](https://cloud.google.com/dialogflow/docs/
      # entities-session).
      class GoogleCloudDialogflowV2SessionEntityType
        include Google::Apis::Core::Hashable
      
        # Required. The collection of entities associated with this session entity type.
        # Corresponds to the JSON property `entities`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2EntityTypeEntity>]
        attr_accessor :entities
      
        # Required. Indicates whether the additional data should override or supplement
        # the custom entity type definition.
        # Corresponds to the JSON property `entityOverrideMode`
        # @return [String]
        attr_accessor :entity_override_mode
      
        # Required. The unique identifier of this session entity type. Format: `projects/
        # /agent/sessions//entityTypes/`, or `projects//agent/environments//users//
        # sessions//entityTypes/`. If `Environment ID` is not specified, we assume
        # default 'draft' environment. If `User ID` is not specified, we assume default '
        # -' user. `` must be the display name of an existing entity type in the same
        # agent that will be overridden or supplemented.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entities = args[:entities] if args.key?(:entities)
          @entity_override_mode = args[:entity_override_mode] if args.key?(:entity_override_mode)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Metadata for a ConversationProfiles.SetSuggestionFeatureConfig operation.
      class GoogleCloudDialogflowV2SetSuggestionFeatureConfigOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the conversation profile. Format: `projects//locations//
        # conversationProfiles/`
        # Corresponds to the JSON property `conversationProfile`
        # @return [String]
        attr_accessor :conversation_profile
      
        # Timestamp whe the request was created. The time is measured on server side.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The participant role to add or update the suggestion feature config.
        # Only HUMAN_AGENT or END_USER can be used.
        # Corresponds to the JSON property `participantRole`
        # @return [String]
        attr_accessor :participant_role
      
        # Required. The type of the suggestion feature to add or update.
        # Corresponds to the JSON property `suggestionFeatureType`
        # @return [String]
        attr_accessor :suggestion_feature_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_profile = args[:conversation_profile] if args.key?(:conversation_profile)
          @create_time = args[:create_time] if args.key?(:create_time)
          @participant_role = args[:participant_role] if args.key?(:participant_role)
          @suggestion_feature_type = args[:suggestion_feature_type] if args.key?(:suggestion_feature_type)
        end
      end
      
      # Represents a smart reply answer.
      class GoogleCloudDialogflowV2SmartReplyAnswer
        include Google::Apis::Core::Hashable
      
        # The name of answer record, in the format of "projects//locations//
        # answerRecords/"
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Smart reply confidence. The system's confidence score that this reply is a
        # good match for this conversation, as a value from 0.0 (completely uncertain)
        # to 1.0 (completely certain).
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # The content of the reply.
        # Corresponds to the JSON property `reply`
        # @return [String]
        attr_accessor :reply
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @confidence = args[:confidence] if args.key?(:confidence)
          @reply = args[:reply] if args.key?(:reply)
        end
      end
      
      # Metadata for smart reply models.
      class GoogleCloudDialogflowV2SmartReplyModelMetadata
        include Google::Apis::Core::Hashable
      
        # Optional. Type of the smart reply model. If not provided, model_type is used.
        # Corresponds to the JSON property `trainingModelType`
        # @return [String]
        attr_accessor :training_model_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @training_model_type = args[:training_model_type] if args.key?(:training_model_type)
        end
      end
      
      # Information for a word recognized by the speech recognizer.
      class GoogleCloudDialogflowV2SpeechWordInfo
        include Google::Apis::Core::Hashable
      
        # The Speech confidence between 0.0 and 1.0 for this word. A higher number
        # indicates an estimated greater likelihood that the recognized word is correct.
        # The default of 0.0 is a sentinel value indicating that confidence was not set.
        # This field is not guaranteed to be fully stable over time for the same audio
        # input. Users should also not rely on it to always be provided.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Time offset relative to the beginning of the audio that corresponds to the end
        # of the spoken word. This is an experimental feature and the accuracy of the
        # time offset can vary.
        # Corresponds to the JSON property `endOffset`
        # @return [String]
        attr_accessor :end_offset
      
        # Time offset relative to the beginning of the audio that corresponds to the
        # start of the spoken word. This is an experimental feature and the accuracy of
        # the time offset can vary.
        # Corresponds to the JSON property `startOffset`
        # @return [String]
        attr_accessor :start_offset
      
        # The word this info is for.
        # Corresponds to the JSON property `word`
        # @return [String]
        attr_accessor :word
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @end_offset = args[:end_offset] if args.key?(:end_offset)
          @start_offset = args[:start_offset] if args.key?(:start_offset)
          @word = args[:word] if args.key?(:word)
        end
      end
      
      # Contains a speech recognition result corresponding to a portion of the audio
      # that is currently being processed or an indication that this is the end of the
      # single requested utterance. While end-user audio is being processed,
      # Dialogflow sends a series of results. Each result may contain a `transcript`
      # value. A transcript represents a portion of the utterance. While the
      # recognizer is processing audio, transcript values may be interim values or
      # finalized values. Once a transcript is finalized, the `is_final` value is set
      # to true and processing continues for the next transcript. If `
      # StreamingDetectIntentRequest.query_input.audio_config.single_utterance` was
      # true, and the recognizer has completed processing audio, the `message_type`
      # value is set to `END_OF_SINGLE_UTTERANCE and the following (last) result
      # contains the last finalized transcript. The complete end-user utterance is
      # determined by concatenating the finalized transcript values received for the
      # series of results. In the following example, single utterance is enabled. In
      # the case where single utterance is not enabled, result 7 would not occur. ```
      # Num | transcript | message_type | is_final --- | ----------------------- | ----
      # ------------------- | -------- 1 | "tube" | TRANSCRIPT | false 2 | "to be a" |
      # TRANSCRIPT | false 3 | "to be" | TRANSCRIPT | false 4 | "to be or not to be" |
      # TRANSCRIPT | true 5 | "that's" | TRANSCRIPT | false 6 | "that is | TRANSCRIPT |
      # false 7 | unset | END_OF_SINGLE_UTTERANCE | unset 8 | " that is the question"
      # | TRANSCRIPT | true ``` Concatenating the finalized transcripts with `is_final`
      # set to true, the complete utterance becomes "to be or not to be that is the
      # question".
      class GoogleCloudDialogflowV2StreamingRecognitionResult
        include Google::Apis::Core::Hashable
      
        # The Speech confidence between 0.0 and 1.0 for the current portion of audio. A
        # higher number indicates an estimated greater likelihood that the recognized
        # words are correct. The default of 0.0 is a sentinel value indicating that
        # confidence was not set. This field is typically only provided if `is_final` is
        # true and you should not rely on it being accurate or even set.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # If `false`, the `StreamingRecognitionResult` represents an interim result that
        # may change. If `true`, the recognizer will not return any further hypotheses
        # about this piece of the audio. May only be populated for `message_type` = `
        # TRANSCRIPT`.
        # Corresponds to the JSON property `isFinal`
        # @return [Boolean]
        attr_accessor :is_final
        alias_method :is_final?, :is_final
      
        # Detected language code for the transcript.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Type of the result message.
        # Corresponds to the JSON property `messageType`
        # @return [String]
        attr_accessor :message_type
      
        # Time offset of the end of this Speech recognition result relative to the
        # beginning of the audio. Only populated for `message_type` = `TRANSCRIPT`.
        # Corresponds to the JSON property `speechEndOffset`
        # @return [String]
        attr_accessor :speech_end_offset
      
        # Word-specific information for the words recognized by Speech in transcript.
        # Populated if and only if `message_type` = `TRANSCRIPT` and [InputAudioConfig.
        # enable_word_info] is set.
        # Corresponds to the JSON property `speechWordInfo`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SpeechWordInfo>]
        attr_accessor :speech_word_info
      
        # Transcript text representing the words that the user spoke. Populated if and
        # only if `message_type` = `TRANSCRIPT`.
        # Corresponds to the JSON property `transcript`
        # @return [String]
        attr_accessor :transcript
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @is_final = args[:is_final] if args.key?(:is_final)
          @language_code = args[:language_code] if args.key?(:language_code)
          @message_type = args[:message_type] if args.key?(:message_type)
          @speech_end_offset = args[:speech_end_offset] if args.key?(:speech_end_offset)
          @speech_word_info = args[:speech_word_info] if args.key?(:speech_word_info)
          @transcript = args[:transcript] if args.key?(:transcript)
        end
      end
      
      # The response message for Participants.SuggestArticles.
      class GoogleCloudDialogflowV2SuggestArticlesResponse
        include Google::Apis::Core::Hashable
      
        # Articles ordered by score in descending order.
        # Corresponds to the JSON property `articleAnswers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2ArticleAnswer>]
        attr_accessor :article_answers
      
        # Number of messages prior to and including latest_message to compile the
        # suggestion. It may be smaller than the SuggestArticlesRequest.context_size
        # field in the request if there aren't that many messages in the conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # The name of the latest conversation message used to compile suggestion for.
        # Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @article_answers = args[:article_answers] if args.key?(:article_answers)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The request message for Participants.SuggestFaqAnswers.
      class GoogleCloudDialogflowV2SuggestFaqAnswersResponse
        include Google::Apis::Core::Hashable
      
        # Number of messages prior to and including latest_message to compile the
        # suggestion. It may be smaller than the SuggestFaqAnswersRequest.context_size
        # field in the request if there aren't that many messages in the conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Answers extracted from FAQ documents.
        # Corresponds to the JSON property `faqAnswers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2FaqAnswer>]
        attr_accessor :faq_answers
      
        # The name of the latest conversation message used to compile suggestion for.
        # Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @faq_answers = args[:faq_answers] if args.key?(:faq_answers)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The response message for Participants.SuggestKnowledgeAssist.
      class GoogleCloudDialogflowV2SuggestKnowledgeAssistResponse
        include Google::Apis::Core::Hashable
      
        # Number of messages prior to and including latest_message to compile the
        # suggestion. It may be smaller than the SuggestKnowledgeAssistRequest.
        # context_size field in the request if there are fewer messages in the
        # conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Represents a Knowledge Assist answer.
        # Corresponds to the JSON property `knowledgeAssistAnswer`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2KnowledgeAssistAnswer]
        attr_accessor :knowledge_assist_answer
      
        # The name of the latest conversation message used to compile suggestion for.
        # Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @knowledge_assist_answer = args[:knowledge_assist_answer] if args.key?(:knowledge_assist_answer)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The response message for Participants.SuggestSmartReplies.
      class GoogleCloudDialogflowV2SuggestSmartRepliesResponse
        include Google::Apis::Core::Hashable
      
        # Number of messages prior to and including latest_message to compile the
        # suggestion. It may be smaller than the SuggestSmartRepliesRequest.context_size
        # field in the request if there aren't that many messages in the conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # The name of the latest conversation message used to compile suggestion for.
        # Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        # Output only. Multiple reply options provided by smart reply service. The order
        # is based on the rank of the model prediction. The maximum number of the
        # returned replies is set in SmartReplyConfig.
        # Corresponds to the JSON property `smartReplyAnswers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SmartReplyAnswer>]
        attr_accessor :smart_reply_answers
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
          @smart_reply_answers = args[:smart_reply_answers] if args.key?(:smart_reply_answers)
        end
      end
      
      # One response of different type of suggestion response which is used in the
      # response of Participants.AnalyzeContent and Participants.AnalyzeContent, as
      # well as HumanAgentAssistantEvent.
      class GoogleCloudDialogflowV2SuggestionResult
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :error
      
        # The response message for Conversations.GenerateSuggestions.
        # Corresponds to the JSON property `generateSuggestionsResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2GenerateSuggestionsResponse]
        attr_accessor :generate_suggestions_response
      
        # The response message for Participants.SuggestArticles.
        # Corresponds to the JSON property `suggestArticlesResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SuggestArticlesResponse]
        attr_accessor :suggest_articles_response
      
        # The request message for Participants.SuggestFaqAnswers.
        # Corresponds to the JSON property `suggestFaqAnswersResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SuggestFaqAnswersResponse]
        attr_accessor :suggest_faq_answers_response
      
        # The response message for Participants.SuggestKnowledgeAssist.
        # Corresponds to the JSON property `suggestKnowledgeAssistResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SuggestKnowledgeAssistResponse]
        attr_accessor :suggest_knowledge_assist_response
      
        # The response message for Participants.SuggestSmartReplies.
        # Corresponds to the JSON property `suggestSmartRepliesResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SuggestSmartRepliesResponse]
        attr_accessor :suggest_smart_replies_response
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @error = args[:error] if args.key?(:error)
          @generate_suggestions_response = args[:generate_suggestions_response] if args.key?(:generate_suggestions_response)
          @suggest_articles_response = args[:suggest_articles_response] if args.key?(:suggest_articles_response)
          @suggest_faq_answers_response = args[:suggest_faq_answers_response] if args.key?(:suggest_faq_answers_response)
          @suggest_knowledge_assist_response = args[:suggest_knowledge_assist_response] if args.key?(:suggest_knowledge_assist_response)
          @suggest_smart_replies_response = args[:suggest_smart_replies_response] if args.key?(:suggest_smart_replies_response)
        end
      end
      
      # Suggested summary of the conversation.
      class GoogleCloudDialogflowV2SummarySuggestion
        include Google::Apis::Core::Hashable
      
        # Required. All the parts of generated summary.
        # Corresponds to the JSON property `summarySections`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SummarySuggestionSummarySection>]
        attr_accessor :summary_sections
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @summary_sections = args[:summary_sections] if args.key?(:summary_sections)
        end
      end
      
      # A component of the generated summary.
      class GoogleCloudDialogflowV2SummarySuggestionSummarySection
        include Google::Apis::Core::Hashable
      
        # Required. Name of the section.
        # Corresponds to the JSON property `section`
        # @return [String]
        attr_accessor :section
      
        # Required. Summary text for the section.
        # Corresponds to the JSON property `summary`
        # @return [String]
        attr_accessor :summary
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @section = args[:section] if args.key?(:section)
          @summary = args[:summary] if args.key?(:summary)
        end
      end
      
      # Represents a call of a specific tool's action with the specified inputs.
      class GoogleCloudDialogflowV2ToolCall
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the tool's action associated with this call.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # Optional. The answer record associated with this tool call.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Output only. Create time of the tool call.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The action's input parameters.
        # Corresponds to the JSON property `inputParameters`
        # @return [Hash<String,Object>]
        attr_accessor :input_parameters
      
        # Output only. State of the tool call.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Optional. The tool associated with this call. Format: `projects//locations//
        # tools/`.
        # Corresponds to the JSON property `tool`
        # @return [String]
        attr_accessor :tool
      
        # Optional. A human readable description of the tool.
        # Corresponds to the JSON property `toolDisplayDetails`
        # @return [String]
        attr_accessor :tool_display_details
      
        # Optional. A human readable short name of the tool, to be shown on the UI.
        # Corresponds to the JSON property `toolDisplayName`
        # @return [String]
        attr_accessor :tool_display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @create_time = args[:create_time] if args.key?(:create_time)
          @input_parameters = args[:input_parameters] if args.key?(:input_parameters)
          @state = args[:state] if args.key?(:state)
          @tool = args[:tool] if args.key?(:tool)
          @tool_display_details = args[:tool_display_details] if args.key?(:tool_display_details)
          @tool_display_name = args[:tool_display_name] if args.key?(:tool_display_name)
        end
      end
      
      # The result of calling a tool's action.
      class GoogleCloudDialogflowV2ToolCallResult
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the tool's action associated with this call.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # Optional. The answer record associated with this tool call result.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Only populated if the response content is utf-8 encoded.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # Output only. Create time of the tool call result.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # An error produced by the tool call.
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2ToolCallResultError]
        attr_accessor :error
      
        # Only populated if the response content is not utf-8 encoded. (by definition
        # byte fields are base64 encoded).
        # Corresponds to the JSON property `rawContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :raw_content
      
        # Optional. The tool associated with this call. Format: `projects//locations//
        # tools/`.
        # Corresponds to the JSON property `tool`
        # @return [String]
        attr_accessor :tool
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @content = args[:content] if args.key?(:content)
          @create_time = args[:create_time] if args.key?(:create_time)
          @error = args[:error] if args.key?(:error)
          @raw_content = args[:raw_content] if args.key?(:raw_content)
          @tool = args[:tool] if args.key?(:tool)
        end
      end
      
      # An error produced by the tool call.
      class GoogleCloudDialogflowV2ToolCallResultError
        include Google::Apis::Core::Hashable
      
        # Optional. The error message of the function.
        # Corresponds to the JSON property `message`
        # @return [String]
        attr_accessor :message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @message = args[:message] if args.key?(:message)
        end
      end
      
      # Metadata for a ConversationModels.UndeployConversationModel operation.
      class GoogleCloudDialogflowV2UndeployConversationModelOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the conversation model. Format: `projects//
        # conversationModels/`
        # Corresponds to the JSON property `conversationModel`
        # @return [String]
        attr_accessor :conversation_model
      
        # Timestamp when the request to undeploy conversation model was submitted. The
        # time is measured on server side.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # The time when the operation finished.
        # Corresponds to the JSON property `doneTime`
        # @return [String]
        attr_accessor :done_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_model = args[:conversation_model] if args.key?(:conversation_model)
          @create_time = args[:create_time] if args.key?(:create_time)
          @done_time = args[:done_time] if args.key?(:done_time)
        end
      end
      
      # The request message for a webhook call.
      class GoogleCloudDialogflowV2WebhookRequest
        include Google::Apis::Core::Hashable
      
        # Represents the contents of the original request that was passed to the `[
        # Streaming]DetectIntent` call.
        # Corresponds to the JSON property `originalDetectIntentRequest`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2OriginalDetectIntentRequest]
        attr_accessor :original_detect_intent_request
      
        # Represents the result of conversational query or event processing.
        # Corresponds to the JSON property `queryResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2QueryResult]
        attr_accessor :query_result
      
        # The unique identifier of the response. Contains the same value as `[Streaming]
        # DetectIntentResponse.response_id`.
        # Corresponds to the JSON property `responseId`
        # @return [String]
        attr_accessor :response_id
      
        # The unique identifier of detectIntent request session. Can be used to identify
        # end-user inside webhook implementation. Format: `projects//agent/sessions/`,
        # or `projects//agent/environments//users//sessions/`.
        # Corresponds to the JSON property `session`
        # @return [String]
        attr_accessor :session
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @original_detect_intent_request = args[:original_detect_intent_request] if args.key?(:original_detect_intent_request)
          @query_result = args[:query_result] if args.key?(:query_result)
          @response_id = args[:response_id] if args.key?(:response_id)
          @session = args[:session] if args.key?(:session)
        end
      end
      
      # The response message for a webhook call. This response is validated by the
      # Dialogflow server. If validation fails, an error will be returned in the
      # QueryResult.diagnostic_info field. Setting JSON fields to an empty value with
      # the wrong type is a common error. To avoid this error: - Use `""` for empty
      # strings - Use ```` or `null` for empty objects - Use `[]` or `null` for empty
      # arrays For more information, see the [Protocol Buffers Language Guide](https://
      # developers.google.com/protocol-buffers/docs/proto3#json).
      class GoogleCloudDialogflowV2WebhookResponse
        include Google::Apis::Core::Hashable
      
        # Events allow for matching intents by event name instead of the natural
        # language input. For instance, input `` can trigger a personalized welcome
        # response. The parameter `name` may be used by the agent in the response: `"
        # Hello #welcome_event.name! What can I do for you today?"`.
        # Corresponds to the JSON property `followupEventInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2EventInput]
        attr_accessor :followup_event_input
      
        # Optional. The rich response messages intended for the end-user. When provided,
        # Dialogflow uses this field to populate QueryResult.fulfillment_messages sent
        # to the integration or API caller.
        # Corresponds to the JSON property `fulfillmentMessages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2IntentMessage>]
        attr_accessor :fulfillment_messages
      
        # Optional. The text response message intended for the end-user. It is
        # recommended to use `fulfillment_messages.text.text[0]` instead. When provided,
        # Dialogflow uses this field to populate QueryResult.fulfillment_text sent to
        # the integration or API caller.
        # Corresponds to the JSON property `fulfillmentText`
        # @return [String]
        attr_accessor :fulfillment_text
      
        # Optional. The collection of output contexts that will overwrite currently
        # active contexts for the session and reset their lifespans. When provided,
        # Dialogflow uses this field to populate QueryResult.output_contexts sent to the
        # integration or API caller.
        # Corresponds to the JSON property `outputContexts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2Context>]
        attr_accessor :output_contexts
      
        # Optional. This field can be used to pass custom data from your webhook to the
        # integration or API caller. Arbitrary JSON objects are supported. When provided,
        # Dialogflow uses this field to populate QueryResult.webhook_payload sent to
        # the integration or API caller. This field is also used by the [Google
        # Assistant integration](https://cloud.google.com/dialogflow/docs/integrations/
        # aog) for rich response messages. See the format definition at [Google
        # Assistant Dialogflow webhook format](https://developers.google.com/assistant/
        # actions/build/json/dialogflow-webhook-json)
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Optional. Additional session entity types to replace or extend developer
        # entity types with. The entity synonyms apply to all languages and persist for
        # the session. Setting this data from a webhook overwrites the session entity
        # types that have been set using `detectIntent`, `streamingDetectIntent` or
        # SessionEntityType management methods.
        # Corresponds to the JSON property `sessionEntityTypes`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2SessionEntityType>]
        attr_accessor :session_entity_types
      
        # Optional. A custom field used to identify the webhook source. Arbitrary
        # strings are supported. When provided, Dialogflow uses this field to populate
        # QueryResult.webhook_source sent to the integration or API caller.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @followup_event_input = args[:followup_event_input] if args.key?(:followup_event_input)
          @fulfillment_messages = args[:fulfillment_messages] if args.key?(:fulfillment_messages)
          @fulfillment_text = args[:fulfillment_text] if args.key?(:fulfillment_text)
          @output_contexts = args[:output_contexts] if args.key?(:output_contexts)
          @payload = args[:payload] if args.key?(:payload)
          @session_entity_types = args[:session_entity_types] if args.key?(:session_entity_types)
          @source = args[:source] if args.key?(:source)
        end
      end
      
      # A Dialogflow agent is a virtual agent that handles conversations with your end-
      # users. It is a natural language understanding module that understands the
      # nuances of human language. Dialogflow translates end-user text or audio during
      # a conversation to structured data that your apps and services can understand.
      # You design and build a Dialogflow agent to handle the types of conversations
      # required for your system. For more information about agents, see the [Agent
      # guide](https://cloud.google.com/dialogflow/docs/agents-overview).
      class GoogleCloudDialogflowV2beta1Agent
        include Google::Apis::Core::Hashable
      
        # Optional. API version displayed in Dialogflow console. If not specified, V2
        # API is assumed. Clients are free to query different service endpoints for
        # different API versions. However, bots connectors and webhook calls will follow
        # the specified API version.
        # Corresponds to the JSON property `apiVersion`
        # @return [String]
        attr_accessor :api_version
      
        # Optional. The URI of the agent's avatar. Avatars are used throughout the
        # Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/
        # dialogflow/docs/integrations/web-demo) integration.
        # Corresponds to the JSON property `avatarUri`
        # @return [String]
        attr_accessor :avatar_uri
      
        # Optional. To filter out false positive results and still get variety in
        # matched natural language inputs for your agent, you can tune the machine
        # learning classification threshold. If the returned score value is less than
        # the threshold value, then a fallback intent will be triggered or, if there are
        # no fallback intents defined, no intent will be triggered. The score values
        # range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.
        # 0, the default of 0.3 is used.
        # Corresponds to the JSON property `classificationThreshold`
        # @return [Float]
        attr_accessor :classification_threshold
      
        # Required. The default language of the agent as a language tag. See [Language
        # Support](https://cloud.google.com/dialogflow/docs/reference/language) for a
        # list of the currently supported language codes. This field cannot be set by
        # the `Update` method.
        # Corresponds to the JSON property `defaultLanguageCode`
        # @return [String]
        attr_accessor :default_language_code
      
        # Optional. The description of this agent. The maximum length is 500 characters.
        # If exceeded, the request is rejected.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The name of this agent.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. Determines whether this agent should log conversation queries.
        # Corresponds to the JSON property `enableLogging`
        # @return [Boolean]
        attr_accessor :enable_logging
        alias_method :enable_logging?, :enable_logging
      
        # Optional. Determines how intents are detected from user queries.
        # Corresponds to the JSON property `matchMode`
        # @return [String]
        attr_accessor :match_mode
      
        # Required. The project of this agent. Format: `projects/` or `projects//
        # locations/`
        # Corresponds to the JSON property `parent`
        # @return [String]
        attr_accessor :parent
      
        # Optional. The list of all languages supported by this agent (except for the `
        # default_language_code`).
        # Corresponds to the JSON property `supportedLanguageCodes`
        # @return [Array<String>]
        attr_accessor :supported_language_codes
      
        # Optional. The agent tier. If not specified, TIER_STANDARD is assumed.
        # Corresponds to the JSON property `tier`
        # @return [String]
        attr_accessor :tier
      
        # Required. The time zone of this agent from the [time zone database](https://
        # www.iana.org/time-zones), e.g., America/New_York, Europe/Paris.
        # Corresponds to the JSON property `timeZone`
        # @return [String]
        attr_accessor :time_zone
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @api_version = args[:api_version] if args.key?(:api_version)
          @avatar_uri = args[:avatar_uri] if args.key?(:avatar_uri)
          @classification_threshold = args[:classification_threshold] if args.key?(:classification_threshold)
          @default_language_code = args[:default_language_code] if args.key?(:default_language_code)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enable_logging = args[:enable_logging] if args.key?(:enable_logging)
          @match_mode = args[:match_mode] if args.key?(:match_mode)
          @parent = args[:parent] if args.key?(:parent)
          @supported_language_codes = args[:supported_language_codes] if args.key?(:supported_language_codes)
          @tier = args[:tier] if args.key?(:tier)
          @time_zone = args[:time_zone] if args.key?(:time_zone)
        end
      end
      
      # Detail feedback of Agent Assistant result.
      class GoogleCloudDialogflowV2beta1AgentAssistantFeedback
        include Google::Apis::Core::Hashable
      
        # Optional. Whether or not the suggested answer is relevant. For example: *
        # Query: "Can I change my mailing address?" * Suggested document says: "Items
        # must be returned/exchanged within 60 days of the purchase date." *
        # answer_relevance: AnswerRelevance.IRRELEVANT
        # Corresponds to the JSON property `answerRelevance`
        # @return [String]
        attr_accessor :answer_relevance
      
        # Optional. Whether or not the information in the document is correct. For
        # example: * Query: "Can I return the package in 2 days once received?" *
        # Suggested document says: "Items must be returned/exchanged within 60 days of
        # the purchase date." * Ground truth: "No return or exchange is allowed." *
        # document_correctness: INCORRECT
        # Corresponds to the JSON property `documentCorrectness`
        # @return [String]
        attr_accessor :document_correctness
      
        # Optional. Whether or not the suggested document is efficient. For example, if
        # the document is poorly written, hard to understand, hard to use or too long to
        # find useful information, document_efficiency is DocumentEfficiency.INEFFICIENT.
        # Corresponds to the JSON property `documentEfficiency`
        # @return [String]
        attr_accessor :document_efficiency
      
        # Feedback for knowledge assist.
        # Corresponds to the JSON property `knowledgeAssistFeedback`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentAssistantFeedbackKnowledgeAssistFeedback]
        attr_accessor :knowledge_assist_feedback
      
        # Feedback for knowledge search.
        # Corresponds to the JSON property `knowledgeSearchFeedback`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentAssistantFeedbackKnowledgeSearchFeedback]
        attr_accessor :knowledge_search_feedback
      
        # Feedback for conversation summarization.
        # Corresponds to the JSON property `summarizationFeedback`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentAssistantFeedbackSummarizationFeedback]
        attr_accessor :summarization_feedback
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_relevance = args[:answer_relevance] if args.key?(:answer_relevance)
          @document_correctness = args[:document_correctness] if args.key?(:document_correctness)
          @document_efficiency = args[:document_efficiency] if args.key?(:document_efficiency)
          @knowledge_assist_feedback = args[:knowledge_assist_feedback] if args.key?(:knowledge_assist_feedback)
          @knowledge_search_feedback = args[:knowledge_search_feedback] if args.key?(:knowledge_search_feedback)
          @summarization_feedback = args[:summarization_feedback] if args.key?(:summarization_feedback)
        end
      end
      
      # Feedback for knowledge assist.
      class GoogleCloudDialogflowV2beta1AgentAssistantFeedbackKnowledgeAssistFeedback
        include Google::Apis::Core::Hashable
      
        # Whether the suggested answer was copied by the human agent. If the value is
        # set to be true, AnswerFeedback.clicked will be updated to be true.
        # Corresponds to the JSON property `answerCopied`
        # @return [Boolean]
        attr_accessor :answer_copied
        alias_method :answer_copied?, :answer_copied
      
        # The URIs clicked by the human agent. The value is appended for each
        # UpdateAnswerRecordRequest. If the value is not empty, AnswerFeedback.clicked
        # will be updated to be true.
        # Corresponds to the JSON property `clickedUris`
        # @return [Array<String>]
        attr_accessor :clicked_uris
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_copied = args[:answer_copied] if args.key?(:answer_copied)
          @clicked_uris = args[:clicked_uris] if args.key?(:clicked_uris)
        end
      end
      
      # Feedback for knowledge search.
      class GoogleCloudDialogflowV2beta1AgentAssistantFeedbackKnowledgeSearchFeedback
        include Google::Apis::Core::Hashable
      
        # Whether the answer was copied by the human agent or not. If the value is set
        # to be true, AnswerFeedback.clicked will be updated to be true.
        # Corresponds to the JSON property `answerCopied`
        # @return [Boolean]
        attr_accessor :answer_copied
        alias_method :answer_copied?, :answer_copied
      
        # The URIs clicked by the human agent. The value is appended for each
        # UpdateAnswerRecordRequest. If the value is not empty, AnswerFeedback.clicked
        # will be updated to be true.
        # Corresponds to the JSON property `clickedUris`
        # @return [Array<String>]
        attr_accessor :clicked_uris
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_copied = args[:answer_copied] if args.key?(:answer_copied)
          @clicked_uris = args[:clicked_uris] if args.key?(:clicked_uris)
        end
      end
      
      # Feedback for conversation summarization.
      class GoogleCloudDialogflowV2beta1AgentAssistantFeedbackSummarizationFeedback
        include Google::Apis::Core::Hashable
      
        # Timestamp when composing of the summary starts.
        # Corresponds to the JSON property `startTimestamp`
        # @return [String]
        attr_accessor :start_timestamp
      
        # Timestamp when the summary was submitted.
        # Corresponds to the JSON property `submitTimestamp`
        # @return [String]
        attr_accessor :submit_timestamp
      
        # Text of actual submitted summary.
        # Corresponds to the JSON property `summaryText`
        # @return [String]
        attr_accessor :summary_text
      
        # Optional. Actual text sections of submitted summary.
        # Corresponds to the JSON property `textSections`
        # @return [Hash<String,String>]
        attr_accessor :text_sections
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @start_timestamp = args[:start_timestamp] if args.key?(:start_timestamp)
          @submit_timestamp = args[:submit_timestamp] if args.key?(:submit_timestamp)
          @summary_text = args[:summary_text] if args.key?(:summary_text)
          @text_sections = args[:text_sections] if args.key?(:text_sections)
        end
      end
      
      # Represents a record of a human agent assistant answer.
      class GoogleCloudDialogflowV2beta1AgentAssistantRecord
        include Google::Apis::Core::Hashable
      
        # Represents article answer.
        # Corresponds to the JSON property `articleSuggestionAnswer`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ArticleAnswer]
        attr_accessor :article_suggestion_answer
      
        # Represents a Dialogflow assist answer.
        # Corresponds to the JSON property `dialogflowAssistAnswer`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1DialogflowAssistAnswer]
        attr_accessor :dialogflow_assist_answer
      
        # Represents answer from "frequently asked questions".
        # Corresponds to the JSON property `faqAnswer`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1FaqAnswer]
        attr_accessor :faq_answer
      
        # Suggestion generated using a Generator.
        # Corresponds to the JSON property `generatorSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorSuggestion]
        attr_accessor :generator_suggestion
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @article_suggestion_answer = args[:article_suggestion_answer] if args.key?(:article_suggestion_answer)
          @dialogflow_assist_answer = args[:dialogflow_assist_answer] if args.key?(:dialogflow_assist_answer)
          @faq_answer = args[:faq_answer] if args.key?(:faq_answer)
          @generator_suggestion = args[:generator_suggestion] if args.key?(:generator_suggestion)
        end
      end
      
      # Agent Coaching context that customer can configure.
      class GoogleCloudDialogflowV2beta1AgentCoachingContext
        include Google::Apis::Core::Hashable
      
        # Optional. Customized instructions for agent coaching.
        # Corresponds to the JSON property `instructions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingInstruction>]
        attr_accessor :instructions
      
        # Optional. Output language code.
        # Corresponds to the JSON property `outputLanguageCode`
        # @return [String]
        attr_accessor :output_language_code
      
        # Optional. The overarching guidance for the agent coaching. This should be set
        # only for v1.5 and later versions.
        # Corresponds to the JSON property `overarchingGuidance`
        # @return [String]
        attr_accessor :overarching_guidance
      
        # Optional. Version of the feature. If not set, default to latest version.
        # Current candidates are ["2.5"].
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instructions = args[:instructions] if args.key?(:instructions)
          @output_language_code = args[:output_language_code] if args.key?(:output_language_code)
          @overarching_guidance = args[:overarching_guidance] if args.key?(:overarching_guidance)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Agent Coaching instructions that customer can configure.
      class GoogleCloudDialogflowV2beta1AgentCoachingInstruction
        include Google::Apis::Core::Hashable
      
        # Optional. The action that human agent should take. For example, "apologize for
        # the slow shipping". If the users only want to use agent coaching for intent
        # detection, agent_action can be empty
        # Corresponds to the JSON property `agentAction`
        # @return [String]
        attr_accessor :agent_action
      
        # Optional. The condition of the instruction. For example, "the customer wants
        # to cancel an order". If the users want the instruction to be triggered
        # unconditionally, the condition can be empty.
        # Corresponds to the JSON property `condition`
        # @return [String]
        attr_accessor :condition
      
        # Optional. The detailed description of this instruction.
        # Corresponds to the JSON property `displayDetails`
        # @return [String]
        attr_accessor :display_details
      
        # Optional. Display name for the instruction.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Duplication check for the suggestion.
        # Corresponds to the JSON property `duplicateCheckResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingInstructionDuplicateCheckResult]
        attr_accessor :duplicate_check_result
      
        # Optional. The action that system should take. For example, "call GetOrderTime
        # with order_number=`order number provided by the customer`". If the users don't
        # have plugins or don't want to trigger plugins, the system_action can be empty
        # Corresponds to the JSON property `systemAction`
        # @return [String]
        attr_accessor :system_action
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_action = args[:agent_action] if args.key?(:agent_action)
          @condition = args[:condition] if args.key?(:condition)
          @display_details = args[:display_details] if args.key?(:display_details)
          @display_name = args[:display_name] if args.key?(:display_name)
          @duplicate_check_result = args[:duplicate_check_result] if args.key?(:duplicate_check_result)
          @system_action = args[:system_action] if args.key?(:system_action)
        end
      end
      
      # Duplication check for the suggestion.
      class GoogleCloudDialogflowV2beta1AgentCoachingInstructionDuplicateCheckResult
        include Google::Apis::Core::Hashable
      
        # Output only. The duplicate suggestions.
        # Corresponds to the JSON property `duplicateSuggestions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingInstructionDuplicateCheckResultDuplicateSuggestion>]
        attr_accessor :duplicate_suggestions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @duplicate_suggestions = args[:duplicate_suggestions] if args.key?(:duplicate_suggestions)
        end
      end
      
      # The duplicate suggestion details.
      class GoogleCloudDialogflowV2beta1AgentCoachingInstructionDuplicateCheckResultDuplicateSuggestion
        include Google::Apis::Core::Hashable
      
        # Output only. The answer record id of the past duplicate suggestion.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Output only. The similarity score of between the past and current suggestion.
        # Corresponds to the JSON property `similarityScore`
        # @return [Float]
        attr_accessor :similarity_score
      
        # Output only. The index of the duplicate suggestion in the past suggestion list.
        # Corresponds to the JSON property `suggestionIndex`
        # @return [Fixnum]
        attr_accessor :suggestion_index
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @similarity_score = args[:similarity_score] if args.key?(:similarity_score)
          @suggestion_index = args[:suggestion_index] if args.key?(:suggestion_index)
        end
      end
      
      # Suggestion for coaching agents.
      class GoogleCloudDialogflowV2beta1AgentCoachingSuggestion
        include Google::Apis::Core::Hashable
      
        # Optional. Suggested actions for the agent to take.
        # Corresponds to the JSON property `agentActionSuggestions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingSuggestionAgentActionSuggestion>]
        attr_accessor :agent_action_suggestions
      
        # Optional. Instructions applicable based on the current context.
        # Corresponds to the JSON property `applicableInstructions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingInstruction>]
        attr_accessor :applicable_instructions
      
        # Optional. Sample response for the Agent.
        # Corresponds to the JSON property `sampleResponses`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingSuggestionSampleResponse>]
        attr_accessor :sample_responses
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_action_suggestions = args[:agent_action_suggestions] if args.key?(:agent_action_suggestions)
          @applicable_instructions = args[:applicable_instructions] if args.key?(:applicable_instructions)
          @sample_responses = args[:sample_responses] if args.key?(:sample_responses)
        end
      end
      
      # Actions suggested for the agent. This is based on applicable instructions.
      class GoogleCloudDialogflowV2beta1AgentCoachingSuggestionAgentActionSuggestion
        include Google::Apis::Core::Hashable
      
        # Optional. The suggested action for the agent.
        # Corresponds to the JSON property `agentAction`
        # @return [String]
        attr_accessor :agent_action
      
        # Duplication check for the suggestion.
        # Corresponds to the JSON property `duplicateCheckResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingSuggestionDuplicateCheckResult]
        attr_accessor :duplicate_check_result
      
        # Sources for the suggestion.
        # Corresponds to the JSON property `sources`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingSuggestionSources]
        attr_accessor :sources
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_action = args[:agent_action] if args.key?(:agent_action)
          @duplicate_check_result = args[:duplicate_check_result] if args.key?(:duplicate_check_result)
          @sources = args[:sources] if args.key?(:sources)
        end
      end
      
      # Duplication check for the suggestion.
      class GoogleCloudDialogflowV2beta1AgentCoachingSuggestionDuplicateCheckResult
        include Google::Apis::Core::Hashable
      
        # Output only. The duplicate suggestions.
        # Corresponds to the JSON property `duplicateSuggestions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingSuggestionDuplicateCheckResultDuplicateSuggestion>]
        attr_accessor :duplicate_suggestions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @duplicate_suggestions = args[:duplicate_suggestions] if args.key?(:duplicate_suggestions)
        end
      end
      
      # The duplicate suggestion details. Keeping answer_record and sources together
      # as they are identifiers for duplicate suggestions.
      class GoogleCloudDialogflowV2beta1AgentCoachingSuggestionDuplicateCheckResultDuplicateSuggestion
        include Google::Apis::Core::Hashable
      
        # Output only. The answer record id of the past duplicate suggestion.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Output only. The similarity score of between the past and current suggestion.
        # Corresponds to the JSON property `similarityScore`
        # @return [Float]
        attr_accessor :similarity_score
      
        # Sources for the suggestion.
        # Corresponds to the JSON property `sources`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingSuggestionSources]
        attr_accessor :sources
      
        # Output only. The index of the duplicate suggestion in the past suggestion list.
        # Corresponds to the JSON property `suggestionIndex`
        # @return [Fixnum]
        attr_accessor :suggestion_index
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @similarity_score = args[:similarity_score] if args.key?(:similarity_score)
          @sources = args[:sources] if args.key?(:sources)
          @suggestion_index = args[:suggestion_index] if args.key?(:suggestion_index)
        end
      end
      
      # Sample response that the agent can use. This could be based on applicable
      # instructions and ingested data from other systems.
      class GoogleCloudDialogflowV2beta1AgentCoachingSuggestionSampleResponse
        include Google::Apis::Core::Hashable
      
        # Duplication check for the suggestion.
        # Corresponds to the JSON property `duplicateCheckResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingSuggestionDuplicateCheckResult]
        attr_accessor :duplicate_check_result
      
        # Optional. Sample response for Agent in text.
        # Corresponds to the JSON property `responseText`
        # @return [String]
        attr_accessor :response_text
      
        # Sources for the suggestion.
        # Corresponds to the JSON property `sources`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingSuggestionSources]
        attr_accessor :sources
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @duplicate_check_result = args[:duplicate_check_result] if args.key?(:duplicate_check_result)
          @response_text = args[:response_text] if args.key?(:response_text)
          @sources = args[:sources] if args.key?(:sources)
        end
      end
      
      # Sources for the suggestion.
      class GoogleCloudDialogflowV2beta1AgentCoachingSuggestionSources
        include Google::Apis::Core::Hashable
      
        # Output only. Source instruction indexes for the suggestion. This is the index
        # of the applicable_instructions field.
        # Corresponds to the JSON property `instructionIndexes`
        # @return [Array<Fixnum>]
        attr_accessor :instruction_indexes
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instruction_indexes = args[:instruction_indexes] if args.key?(:instruction_indexes)
        end
      end
      
      # The request message for Participants.AnalyzeContent.
      class GoogleCloudDialogflowV2beta1AnalyzeContentRequest
        include Google::Apis::Core::Hashable
      
        # Represents the parameters of human assist query.
        # Corresponds to the JSON property `assistQueryParams`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AssistQueryParameters]
        attr_accessor :assist_query_params
      
        # Represents the natural language speech audio to be processed.
        # Corresponds to the JSON property `audioInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AudioInput]
        attr_accessor :audio_input
      
        # The unique identifier of the Dialogflow CX page to override the `current_page`
        # in the session. Format: `projects//locations//agents//flows//pages/`. If `
        # cx_current_page` is specified, the previous state of the session will be
        # ignored by Dialogflow CX, including the previous page and the previous session
        # parameters. In most cases, `cx_current_page` and `cx_parameters` should be
        # configured together to direct a session to a specific state. Note: this field
        # should only be used if you are connecting to a Dialogflow CX agent.
        # Corresponds to the JSON property `cxCurrentPage`
        # @return [String]
        attr_accessor :cx_current_page
      
        # Additional parameters to be put into Dialogflow CX session parameters. To
        # remove a parameter from the session, clients should explicitly set the
        # parameter value to null. Note: this field should only be used if you are
        # connecting to a Dialogflow CX agent.
        # Corresponds to the JSON property `cxParameters`
        # @return [Hash<String,Object>]
        attr_accessor :cx_parameters
      
        # Events allow for matching intents by event name instead of the natural
        # language input. For instance, input `` can trigger a personalized welcome
        # response. The parameter `name` may be used by the agent in the response: `"
        # Hello #welcome_event.name! What can I do for you today?"`.
        # Corresponds to the JSON property `eventInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EventInput]
        attr_accessor :event_input
      
        # Represents the intent to trigger programmatically rather than as a result of
        # natural language processing. The intent input is only used for V3 agent.
        # Corresponds to the JSON property `intentInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentInput]
        attr_accessor :intent_input
      
        # Optional. The send time of the message from end user or human agent's
        # perspective. It is used for identifying the same message under one participant.
        # For BatchCreateMessages API only: Given two messages under the same
        # participant: * If send time are different regardless of whether the content of
        # the messages are exactly the same, the conversation will regard them as two
        # distinct messages sent by the participant. * If send time is the same
        # regardless of whether the content of the messages are exactly the same, the
        # conversation will regard them as same message, and ignore the message received
        # later. If the value is not provided, a new request will always be regarded as
        # a new message without any de-duplication.
        # Corresponds to the JSON property `messageSendTime`
        # @return [String]
        attr_accessor :message_send_time
      
        # Represents the parameters of the conversational query.
        # Corresponds to the JSON property `queryParams`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1QueryParameters]
        attr_accessor :query_params
      
        # Instructs the speech synthesizer how to generate the output audio content. If
        # this audio config is supplied in a request, it overrides all existing text-to-
        # speech settings applied to the agent.
        # Corresponds to the JSON property `replyAudioConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1OutputAudioConfig]
        attr_accessor :reply_audio_config
      
        # A unique identifier for this request. Restricted to 36 ASCII characters. A
        # random UUID is recommended. This request is only idempotent if a `request_id`
        # is provided.
        # Corresponds to the JSON property `requestId`
        # @return [String]
        attr_accessor :request_id
      
        # Represents the action to take for a tool call that requires confirmation.
        # Corresponds to the JSON property `suggestionInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestionInput]
        attr_accessor :suggestion_input
      
        # Represents the natural language text to be processed.
        # Corresponds to the JSON property `textInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1TextInput]
        attr_accessor :text_input
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @assist_query_params = args[:assist_query_params] if args.key?(:assist_query_params)
          @audio_input = args[:audio_input] if args.key?(:audio_input)
          @cx_current_page = args[:cx_current_page] if args.key?(:cx_current_page)
          @cx_parameters = args[:cx_parameters] if args.key?(:cx_parameters)
          @event_input = args[:event_input] if args.key?(:event_input)
          @intent_input = args[:intent_input] if args.key?(:intent_input)
          @message_send_time = args[:message_send_time] if args.key?(:message_send_time)
          @query_params = args[:query_params] if args.key?(:query_params)
          @reply_audio_config = args[:reply_audio_config] if args.key?(:reply_audio_config)
          @request_id = args[:request_id] if args.key?(:request_id)
          @suggestion_input = args[:suggestion_input] if args.key?(:suggestion_input)
          @text_input = args[:text_input] if args.key?(:text_input)
        end
      end
      
      # The response message for Participants.AnalyzeContent.
      class GoogleCloudDialogflowV2beta1AnalyzeContentResponse
        include Google::Apis::Core::Hashable
      
        # Represents a response from an automated agent.
        # Corresponds to the JSON property `automatedAgentReply`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AutomatedAgentReply]
        attr_accessor :automated_agent_reply
      
        # The message in the response that indicates the parameters of DTMF.
        # Corresponds to the JSON property `dtmfParameters`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1DtmfParameters]
        attr_accessor :dtmf_parameters
      
        # The suggestions for end user. The order is the same as
        # HumanAgentAssistantConfig.SuggestionConfig.feature_configs of
        # HumanAgentAssistantConfig.end_user_suggestion_config. Same as
        # human_agent_suggestion_results, any failure of Agent Assist features will not
        # lead to the overall failure of an AnalyzeContent API call. Instead, the
        # features will fail silently with the error field set in the corresponding
        # SuggestionResult.
        # Corresponds to the JSON property `endUserSuggestionResults`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestionResult>]
        attr_accessor :end_user_suggestion_results
      
        # The suggestions for most recent human agent. The order is the same as
        # HumanAgentAssistantConfig.SuggestionConfig.feature_configs of
        # HumanAgentAssistantConfig.human_agent_suggestion_config. Note that any failure
        # of Agent Assist features will not lead to the overall failure of an
        # AnalyzeContent API call. Instead, the features will fail silently with the
        # error field set in the corresponding SuggestionResult.
        # Corresponds to the JSON property `humanAgentSuggestionResults`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestionResult>]
        attr_accessor :human_agent_suggestion_results
      
        # Represents a message posted into a conversation.
        # Corresponds to the JSON property `message`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Message]
        attr_accessor :message
      
        # Represents the natural language speech audio to be played to the end user.
        # Corresponds to the JSON property `replyAudio`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1OutputAudio]
        attr_accessor :reply_audio
      
        # Output only. The output text content. This field is set if the automated agent
        # responded with text to show to the user.
        # Corresponds to the JSON property `replyText`
        # @return [String]
        attr_accessor :reply_text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @automated_agent_reply = args[:automated_agent_reply] if args.key?(:automated_agent_reply)
          @dtmf_parameters = args[:dtmf_parameters] if args.key?(:dtmf_parameters)
          @end_user_suggestion_results = args[:end_user_suggestion_results] if args.key?(:end_user_suggestion_results)
          @human_agent_suggestion_results = args[:human_agent_suggestion_results] if args.key?(:human_agent_suggestion_results)
          @message = args[:message] if args.key?(:message)
          @reply_audio = args[:reply_audio] if args.key?(:reply_audio)
          @reply_text = args[:reply_text] if args.key?(:reply_text)
        end
      end
      
      # Represents a part of a message possibly annotated with an entity. The part can
      # be an entity or purely a part of the message between two entities or message
      # start/end.
      class GoogleCloudDialogflowV2beta1AnnotatedMessagePart
        include Google::Apis::Core::Hashable
      
        # Optional. The [Dialogflow system entity type](https://cloud.google.com/
        # dialogflow/docs/reference/system-entities) of this message part. If this is
        # empty, Dialogflow could not annotate the phrase part with a system entity.
        # Corresponds to the JSON property `entityType`
        # @return [String]
        attr_accessor :entity_type
      
        # Optional. The [Dialogflow system entity formatted value ](https://cloud.google.
        # com/dialogflow/docs/reference/system-entities) of this message part. For
        # example for a system entity of type `@sys.unit-currency`, this may contain: ` "
        # amount": 5, "currency": "USD" `
        # Corresponds to the JSON property `formattedValue`
        # @return [Object]
        attr_accessor :formatted_value
      
        # Required. A part of a message possibly annotated with an entity.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_type = args[:entity_type] if args.key?(:entity_type)
          @formatted_value = args[:formatted_value] if args.key?(:formatted_value)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Represents feedback the customer has about the quality & correctness of a
      # certain answer in a conversation.
      class GoogleCloudDialogflowV2beta1AnswerFeedback
        include Google::Apis::Core::Hashable
      
        # Detail feedback of Agent Assistant result.
        # Corresponds to the JSON property `agentAssistantDetailFeedback`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentAssistantFeedback]
        attr_accessor :agent_assistant_detail_feedback
      
        # Time when the answer/item was clicked.
        # Corresponds to the JSON property `clickTime`
        # @return [String]
        attr_accessor :click_time
      
        # Indicates whether the answer/item was clicked by the human agent or not.
        # Default to false. For knowledge search, the answer record is considered to be
        # clicked if the answer was copied or any URI was clicked.
        # Corresponds to the JSON property `clicked`
        # @return [Boolean]
        attr_accessor :clicked
        alias_method :clicked?, :clicked
      
        # The correctness level of the specific answer.
        # Corresponds to the JSON property `correctnessLevel`
        # @return [String]
        attr_accessor :correctness_level
      
        # Time when the answer/item was displayed.
        # Corresponds to the JSON property `displayTime`
        # @return [String]
        attr_accessor :display_time
      
        # Indicates whether the answer/item was displayed to the human agent in the
        # agent desktop UI. Default to false.
        # Corresponds to the JSON property `displayed`
        # @return [Boolean]
        attr_accessor :displayed
        alias_method :displayed?, :displayed
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_assistant_detail_feedback = args[:agent_assistant_detail_feedback] if args.key?(:agent_assistant_detail_feedback)
          @click_time = args[:click_time] if args.key?(:click_time)
          @clicked = args[:clicked] if args.key?(:clicked)
          @correctness_level = args[:correctness_level] if args.key?(:correctness_level)
          @display_time = args[:display_time] if args.key?(:display_time)
          @displayed = args[:displayed] if args.key?(:displayed)
        end
      end
      
      # Answer records are records to manage answer history and feedbacks for
      # Dialogflow. Currently, answer record includes: - human agent assistant article
      # suggestion - human agent assistant faq article It doesn't include: - `
      # DetectIntent` intent matching - `DetectIntent` knowledge Answer records are
      # not related to the conversation history in the Dialogflow Console. A Record is
      # generated even when the end-user disables conversation history in the console.
      # Records are created when there's a human agent assistant suggestion generated.
      # A typical workflow for customers provide feedback to an answer is: 1. For
      # human agent assistant, customers get suggestion via ListSuggestions API.
      # Together with the answers, AnswerRecord.name are returned to the customers. 2.
      # The customer uses the AnswerRecord.name to call the UpdateAnswerRecord method
      # to send feedback about a specific answer that they believe is wrong.
      class GoogleCloudDialogflowV2beta1AnswerRecord
        include Google::Apis::Core::Hashable
      
        # Represents a record of a human agent assistant answer.
        # Corresponds to the JSON property `agentAssistantRecord`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentAssistantRecord]
        attr_accessor :agent_assistant_record
      
        # Represents feedback the customer has about the quality & correctness of a
        # certain answer in a conversation.
        # Corresponds to the JSON property `answerFeedback`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AnswerFeedback]
        attr_accessor :answer_feedback
      
        # The unique identifier of this answer record. Required for AnswerRecords.
        # UpdateAnswerRecord method. Format: `projects//locations//answerRecords/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_assistant_record = args[:agent_assistant_record] if args.key?(:agent_assistant_record)
          @answer_feedback = args[:answer_feedback] if args.key?(:answer_feedback)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Represents article answer.
      class GoogleCloudDialogflowV2beta1ArticleAnswer
        include Google::Apis::Core::Hashable
      
        # The name of answer record, in the format of "projects//locations//
        # answerRecords/"
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # A map that contains metadata about the answer and the document from which it
        # originates.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,String>]
        attr_accessor :metadata
      
        # Output only. Article snippets.
        # Corresponds to the JSON property `snippets`
        # @return [Array<String>]
        attr_accessor :snippets
      
        # The article title.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # The article URI.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @metadata = args[:metadata] if args.key?(:metadata)
          @snippets = args[:snippets] if args.key?(:snippets)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Represents the parameters of human assist query.
      class GoogleCloudDialogflowV2beta1AssistQueryParameters
        include Google::Apis::Core::Hashable
      
        # Key-value filters on the metadata of documents returned by article suggestion.
        # If specified, article suggestion only returns suggested documents that match
        # all filters in their Document.metadata. Multiple values for a metadata key
        # should be concatenated by comma. For example, filters to match all documents
        # that have 'US' or 'CA' in their market metadata values and 'agent' in their
        # user metadata values will be ``` documents_metadata_filters ` key: "market"
        # value: "US,CA" ` documents_metadata_filters ` key: "user" value: "agent" ` ```
        # Corresponds to the JSON property `documentsMetadataFilters`
        # @return [Hash<String,String>]
        attr_accessor :documents_metadata_filters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @documents_metadata_filters = args[:documents_metadata_filters] if args.key?(:documents_metadata_filters)
        end
      end
      
      # Represents the natural language speech audio to be processed.
      class GoogleCloudDialogflowV2beta1AudioInput
        include Google::Apis::Core::Hashable
      
        # Required. The natural language speech audio to be processed. A single request
        # can contain up to 2 minutes of speech audio data. The transcribed text cannot
        # contain more than 256 bytes for virtual agent interactions.
        # Corresponds to the JSON property `audio`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :audio
      
        # Instructs the speech recognizer on how to process the audio content.
        # Corresponds to the JSON property `config`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1InputAudioConfig]
        attr_accessor :config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio = args[:audio] if args.key?(:audio)
          @config = args[:config] if args.key?(:config)
        end
      end
      
      # Defines the Automated Agent to connect to a conversation.
      class GoogleCloudDialogflowV2beta1AutomatedAgentConfig
        include Google::Apis::Core::Hashable
      
        # Required. ID of the Dialogflow agent environment to use. This project needs to
        # either be the same project as the conversation or you need to grant `service-@
        # gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent`
        # role in this project. - For ES agents, use format: `projects//locations//agent/
        # environments/`. If environment is not specified, the default `draft`
        # environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/
        # rpc/google.cloud.dialogflow.v2beta1#google.cloud.dialogflow.v2beta1.
        # DetectIntentRequest) for more details. - For CX agents, use format `projects//
        # locations//agents//environments/`. If environment is not specified, the
        # default `draft` environment is used.
        # Corresponds to the JSON property `agent`
        # @return [String]
        attr_accessor :agent
      
        # Optional. Configure lifetime of the Dialogflow session. By default, a
        # Dialogflow CX session remains active and its data is stored for 30 minutes
        # after the last request is sent for the session. This value should be no longer
        # than 1 day.
        # Corresponds to the JSON property `sessionTtl`
        # @return [String]
        attr_accessor :session_ttl
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent = args[:agent] if args.key?(:agent)
          @session_ttl = args[:session_ttl] if args.key?(:session_ttl)
        end
      end
      
      # Represents a response from an automated agent.
      class GoogleCloudDialogflowV2beta1AutomatedAgentReply
        include Google::Apis::Core::Hashable
      
        # Indicates whether the partial automated agent reply is interruptible when a
        # later reply message arrives. e.g. if the agent specified some music as partial
        # response, it can be cancelled.
        # Corresponds to the JSON property `allowCancellation`
        # @return [Boolean]
        attr_accessor :allow_cancellation
        alias_method :allow_cancellation?, :allow_cancellation
      
        # AutomatedAgentReply type.
        # Corresponds to the JSON property `automatedAgentReplyType`
        # @return [String]
        attr_accessor :automated_agent_reply_type
      
        # The auth code for accessing Call Companion UI.
        # Corresponds to the JSON property `callCompanionAuthCode`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :call_companion_auth_code
      
        # The unique identifier of the current Dialogflow CX conversation page. Format: `
        # projects//locations//agents//flows//pages/`.
        # Corresponds to the JSON property `cxCurrentPage`
        # @return [String]
        attr_accessor :cx_current_page
      
        # The collection of current Dialogflow CX agent session parameters at the time
        # of this response. Deprecated: Use `parameters` instead.
        # Corresponds to the JSON property `cxSessionParameters`
        # @return [Hash<String,Object>]
        attr_accessor :cx_session_parameters
      
        # The message returned from the DetectIntent method.
        # Corresponds to the JSON property `detectIntentResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1DetectIntentResponse]
        attr_accessor :detect_intent_response
      
        # Event name if an event is triggered for the query.
        # Corresponds to the JSON property `event`
        # @return [String]
        attr_accessor :event
      
        # Name of the intent if an intent is matched for the query. For a V2 query, the
        # value format is `projects//locations/ /agent/intents/`. For a V3 query, the
        # value format is `projects//locations/ /agents//intents/`.
        # Corresponds to the JSON property `intent`
        # @return [String]
        attr_accessor :intent
      
        # The confidence of the match. Values range from 0.0 (completely uncertain) to 1.
        # 0 (completely certain). This value is for informational purpose only and is
        # only used to help match the best intent within the classification threshold.
        # This value may change for the same end-user expression at any time due to a
        # model retraining or change in implementation.
        # Corresponds to the JSON property `matchConfidence`
        # @return [Float]
        attr_accessor :match_confidence
      
        # The collection of current parameters at the time of this response.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        # Response messages from the automated agent.
        # Corresponds to the JSON property `responseMessages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ResponseMessage>]
        attr_accessor :response_messages
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_cancellation = args[:allow_cancellation] if args.key?(:allow_cancellation)
          @automated_agent_reply_type = args[:automated_agent_reply_type] if args.key?(:automated_agent_reply_type)
          @call_companion_auth_code = args[:call_companion_auth_code] if args.key?(:call_companion_auth_code)
          @cx_current_page = args[:cx_current_page] if args.key?(:cx_current_page)
          @cx_session_parameters = args[:cx_session_parameters] if args.key?(:cx_session_parameters)
          @detect_intent_response = args[:detect_intent_response] if args.key?(:detect_intent_response)
          @event = args[:event] if args.key?(:event)
          @intent = args[:intent] if args.key?(:intent)
          @match_confidence = args[:match_confidence] if args.key?(:match_confidence)
          @parameters = args[:parameters] if args.key?(:parameters)
          @response_messages = args[:response_messages] if args.key?(:response_messages)
        end
      end
      
      # Configuration of the barge-in behavior. Barge-in instructs the API to return a
      # detected utterance at a proper time while the client is playing back the
      # response audio from a previous request. When the client sees the utterance, it
      # should stop the playback and immediately get ready for receiving the responses
      # for the current request. The barge-in handling requires the client to start
      # streaming audio input as soon as it starts playing back the audio from the
      # previous response. The playback is modeled into two phases: * No barge-in
      # phase: which goes first and during which speech detection should not be
      # carried out. * Barge-in phase: which follows the no barge-in phase and during
      # which the API starts speech detection and may inform the client that an
      # utterance has been detected. Note that no-speech event is not expected in this
      # phase. The client provides this configuration in terms of the durations of
      # those two phases. The durations are measured in terms of the audio length from
      # the start of the input audio. The flow goes like below: ``` --> Time without
      # speech detection | utterance only | utterance or no-speech event | | +---------
      # ----+ | +------------+ | +---------------+ ----------+ no barge-in +-|-+ barge-
      # in +-|-+ normal period +----------- +-------------+ | +------------+ | +-------
      # --------+ ``` No-speech event is a response with END_OF_UTTERANCE without any
      # transcript following up.
      class GoogleCloudDialogflowV2beta1BargeInConfig
        include Google::Apis::Core::Hashable
      
        # Duration that is not eligible for barge-in at the beginning of the input audio.
        # Corresponds to the JSON property `noBargeInDuration`
        # @return [String]
        attr_accessor :no_barge_in_duration
      
        # Total duration for the playback at the beginning of the input audio.
        # Corresponds to the JSON property `totalDuration`
        # @return [String]
        attr_accessor :total_duration
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @no_barge_in_duration = args[:no_barge_in_duration] if args.key?(:no_barge_in_duration)
          @total_duration = args[:total_duration] if args.key?(:total_duration)
        end
      end
      
      # The request message for EntityTypes.BatchCreateEntities.
      class GoogleCloudDialogflowV2beta1BatchCreateEntitiesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The entities to create.
        # Corresponds to the JSON property `entities`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EntityTypeEntity>]
        attr_accessor :entities
      
        # Optional. The language used to access language-specific data. If not specified,
        # the agent's default language is used. For more information, see [Multilingual
        # intent and entity data](https://cloud.google.com/dialogflow/docs/agents-
        # multilingual#intent-entity).
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entities = args[:entities] if args.key?(:entities)
          @language_code = args[:language_code] if args.key?(:language_code)
        end
      end
      
      # The request message for Conversations.BatchCreateMessagesRequest.
      class GoogleCloudDialogflowV2beta1BatchCreateMessagesRequest
        include Google::Apis::Core::Hashable
      
        # Required. A maximum of 300 messages can be created in a batch.
        # CreateMessageRequest.message.send_time is required. All created messages will
        # have identical Message.create_time.
        # Corresponds to the JSON property `requests`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1CreateMessageRequest>]
        attr_accessor :requests
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @requests = args[:requests] if args.key?(:requests)
        end
      end
      
      # The request message for Conversations.BatchCreateMessagesResponse.
      class GoogleCloudDialogflowV2beta1BatchCreateMessagesResponse
        include Google::Apis::Core::Hashable
      
        # Messages created.
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Message>]
        attr_accessor :messages
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @messages = args[:messages] if args.key?(:messages)
        end
      end
      
      # The request message for EntityTypes.BatchDeleteEntities.
      class GoogleCloudDialogflowV2beta1BatchDeleteEntitiesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The reference `values` of the entities to delete. Note that these
        # are not fully-qualified names, i.e. they don't start with `projects/`.
        # Corresponds to the JSON property `entityValues`
        # @return [Array<String>]
        attr_accessor :entity_values
      
        # Optional. The language used to access language-specific data. If not specified,
        # the agent's default language is used. For more information, see [Multilingual
        # intent and entity data](https://cloud.google.com/dialogflow/docs/agents-
        # multilingual#intent-entity).
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_values = args[:entity_values] if args.key?(:entity_values)
          @language_code = args[:language_code] if args.key?(:language_code)
        end
      end
      
      # The request message for EntityTypes.BatchDeleteEntityTypes.
      class GoogleCloudDialogflowV2beta1BatchDeleteEntityTypesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The names entity types to delete. All names must point to the same
        # agent as `parent`.
        # Corresponds to the JSON property `entityTypeNames`
        # @return [Array<String>]
        attr_accessor :entity_type_names
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_type_names = args[:entity_type_names] if args.key?(:entity_type_names)
        end
      end
      
      # The request message for Intents.BatchDeleteIntents.
      class GoogleCloudDialogflowV2beta1BatchDeleteIntentsRequest
        include Google::Apis::Core::Hashable
      
        # Required. The collection of intents to delete. Only intent `name` must be
        # filled in.
        # Corresponds to the JSON property `intents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Intent>]
        attr_accessor :intents
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intents = args[:intents] if args.key?(:intents)
        end
      end
      
      # The request message for EntityTypes.BatchUpdateEntities.
      class GoogleCloudDialogflowV2beta1BatchUpdateEntitiesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The entities to update or create.
        # Corresponds to the JSON property `entities`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EntityTypeEntity>]
        attr_accessor :entities
      
        # Optional. The language used to access language-specific data. If not specified,
        # the agent's default language is used. For more information, see [Multilingual
        # intent and entity data](https://cloud.google.com/dialogflow/docs/agents-
        # multilingual#intent-entity).
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Optional. The mask to control which fields get updated.
        # Corresponds to the JSON property `updateMask`
        # @return [String]
        attr_accessor :update_mask
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entities = args[:entities] if args.key?(:entities)
          @language_code = args[:language_code] if args.key?(:language_code)
          @update_mask = args[:update_mask] if args.key?(:update_mask)
        end
      end
      
      # The request message for EntityTypes.BatchUpdateEntityTypes.
      class GoogleCloudDialogflowV2beta1BatchUpdateEntityTypesRequest
        include Google::Apis::Core::Hashable
      
        # This message is a wrapper around a collection of entity types.
        # Corresponds to the JSON property `entityTypeBatchInline`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EntityTypeBatch]
        attr_accessor :entity_type_batch_inline
      
        # The URI to a Google Cloud Storage file containing entity types to update or
        # create. The file format can either be a serialized proto (of EntityBatch type)
        # or a JSON object. Note: The URI must start with "gs://".
        # Corresponds to the JSON property `entityTypeBatchUri`
        # @return [String]
        attr_accessor :entity_type_batch_uri
      
        # Optional. The language used to access language-specific data. If not specified,
        # the agent's default language is used. For more information, see [Multilingual
        # intent and entity data](https://cloud.google.com/dialogflow/docs/agents-
        # multilingual#intent-entity).
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Optional. The mask to control which fields get updated.
        # Corresponds to the JSON property `updateMask`
        # @return [String]
        attr_accessor :update_mask
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_type_batch_inline = args[:entity_type_batch_inline] if args.key?(:entity_type_batch_inline)
          @entity_type_batch_uri = args[:entity_type_batch_uri] if args.key?(:entity_type_batch_uri)
          @language_code = args[:language_code] if args.key?(:language_code)
          @update_mask = args[:update_mask] if args.key?(:update_mask)
        end
      end
      
      # The response message for EntityTypes.BatchUpdateEntityTypes.
      class GoogleCloudDialogflowV2beta1BatchUpdateEntityTypesResponse
        include Google::Apis::Core::Hashable
      
        # The collection of updated or created entity types.
        # Corresponds to the JSON property `entityTypes`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EntityType>]
        attr_accessor :entity_types
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_types = args[:entity_types] if args.key?(:entity_types)
        end
      end
      
      # The request message for Intents.BatchUpdateIntents.
      class GoogleCloudDialogflowV2beta1BatchUpdateIntentsRequest
        include Google::Apis::Core::Hashable
      
        # This message is a wrapper around a collection of intents.
        # Corresponds to the JSON property `intentBatchInline`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentBatch]
        attr_accessor :intent_batch_inline
      
        # The URI to a Google Cloud Storage file containing intents to update or create.
        # The file format can either be a serialized proto (of IntentBatch type) or JSON
        # object. Note: The URI must start with "gs://".
        # Corresponds to the JSON property `intentBatchUri`
        # @return [String]
        attr_accessor :intent_batch_uri
      
        # Optional. The resource view to apply to the returned intent.
        # Corresponds to the JSON property `intentView`
        # @return [String]
        attr_accessor :intent_view
      
        # Optional. The language used to access language-specific data. If not specified,
        # the agent's default language is used. For more information, see [Multilingual
        # intent and entity data](https://cloud.google.com/dialogflow/docs/agents-
        # multilingual#intent-entity).
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Optional. The mask to control which fields get updated.
        # Corresponds to the JSON property `updateMask`
        # @return [String]
        attr_accessor :update_mask
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intent_batch_inline = args[:intent_batch_inline] if args.key?(:intent_batch_inline)
          @intent_batch_uri = args[:intent_batch_uri] if args.key?(:intent_batch_uri)
          @intent_view = args[:intent_view] if args.key?(:intent_view)
          @language_code = args[:language_code] if args.key?(:language_code)
          @update_mask = args[:update_mask] if args.key?(:update_mask)
        end
      end
      
      # The response message for Intents.BatchUpdateIntents.
      class GoogleCloudDialogflowV2beta1BatchUpdateIntentsResponse
        include Google::Apis::Core::Hashable
      
        # The collection of updated or created intents.
        # Corresponds to the JSON property `intents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Intent>]
        attr_accessor :intents
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intents = args[:intents] if args.key?(:intents)
        end
      end
      
      # Metadata for a ConversationProfile.ClearSuggestionFeatureConfig operation.
      class GoogleCloudDialogflowV2beta1ClearSuggestionFeatureConfigOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the conversation profile. Format: `projects//locations//
        # conversationProfiles/`
        # Corresponds to the JSON property `conversationProfile`
        # @return [String]
        attr_accessor :conversation_profile
      
        # Timestamp whe the request was created. The time is measured on server side.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The participant role to remove the suggestion feature config. Only
        # HUMAN_AGENT or END_USER can be used.
        # Corresponds to the JSON property `participantRole`
        # @return [String]
        attr_accessor :participant_role
      
        # Required. The type of the suggestion feature to remove.
        # Corresponds to the JSON property `suggestionFeatureType`
        # @return [String]
        attr_accessor :suggestion_feature_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_profile = args[:conversation_profile] if args.key?(:conversation_profile)
          @create_time = args[:create_time] if args.key?(:create_time)
          @participant_role = args[:participant_role] if args.key?(:participant_role)
          @suggestion_feature_type = args[:suggestion_feature_type] if args.key?(:suggestion_feature_type)
        end
      end
      
      # The request message for ConversationProfiles.ClearFeature.
      class GoogleCloudDialogflowV2beta1ClearSuggestionFeatureConfigRequest
        include Google::Apis::Core::Hashable
      
        # Required. The participant role to remove the suggestion feature config. Only
        # HUMAN_AGENT or END_USER can be used.
        # Corresponds to the JSON property `participantRole`
        # @return [String]
        attr_accessor :participant_role
      
        # Required. The type of the suggestion feature to remove.
        # Corresponds to the JSON property `suggestionFeatureType`
        # @return [String]
        attr_accessor :suggestion_feature_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @participant_role = args[:participant_role] if args.key?(:participant_role)
          @suggestion_feature_type = args[:suggestion_feature_type] if args.key?(:suggestion_feature_type)
        end
      end
      
      # The request message for Participants.CompileSuggestion.
      class GoogleCloudDialogflowV2beta1CompileSuggestionRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Max number of messages prior to and including [latest_message] to
        # use as context when compiling the suggestion. If zero or less than zero, 20 is
        # used.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Optional. The name of the latest conversation message to compile suggestion
        # for. If empty, it will be the latest message of the conversation. Format: `
        # projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The response message for Participants.CompileSuggestion.
      class GoogleCloudDialogflowV2beta1CompileSuggestionResponse
        include Google::Apis::Core::Hashable
      
        # Number of messages prior to and including latest_message to compile the
        # suggestion. It may be smaller than the CompileSuggestionRequest.context_size
        # field in the request if there aren't that many messages in the conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # The name of the latest conversation message used to compile suggestion for.
        # Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        # Represents a suggestion for a human agent.
        # Corresponds to the JSON property `suggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Suggestion]
        attr_accessor :suggestion
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
          @suggestion = args[:suggestion] if args.key?(:suggestion)
        end
      end
      
      # The request message for Conversations.CompleteConversation.
      class GoogleCloudDialogflowV2beta1CompleteConversationRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Represents a connection for SIP Trunk.
      class GoogleCloudDialogflowV2beta1Connection
        include Google::Apis::Core::Hashable
      
        # Output only. The unique identifier of the SIP Trunk connection.
        # Corresponds to the JSON property `connectionId`
        # @return [String]
        attr_accessor :connection_id
      
        # The error details of Sip Trunk connection authentication.
        # Corresponds to the JSON property `errorDetails`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConnectionErrorDetails]
        attr_accessor :error_details
      
        # Output only. State of the connection.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. When the connection status changed.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @connection_id = args[:connection_id] if args.key?(:connection_id)
          @error_details = args[:error_details] if args.key?(:error_details)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # The error details of Sip Trunk connection authentication.
      class GoogleCloudDialogflowV2beta1ConnectionErrorDetails
        include Google::Apis::Core::Hashable
      
        # Output only. The status of the certificate authentication.
        # Corresponds to the JSON property `certificateState`
        # @return [String]
        attr_accessor :certificate_state
      
        # The error message provided from SIP trunking auth service
        # Corresponds to the JSON property `errorMessage`
        # @return [String]
        attr_accessor :error_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @certificate_state = args[:certificate_state] if args.key?(:certificate_state)
          @error_message = args[:error_message] if args.key?(:error_message)
        end
      end
      
      # Dialogflow contexts are similar to natural language context. If a person says
      # to you "they are orange", you need context in order to understand what "they"
      # is referring to. Similarly, for Dialogflow to handle an end-user expression
      # like that, it needs to be provided with context in order to correctly match an
      # intent. Using contexts, you can control the flow of a conversation. You can
      # configure contexts for an intent by setting input and output contexts, which
      # are identified by string names. When an intent is matched, any configured
      # output contexts for that intent become active. While any contexts are active,
      # Dialogflow is more likely to match intents that are configured with input
      # contexts that correspond to the currently active contexts. For more
      # information about context, see the [Contexts guide](https://cloud.google.com/
      # dialogflow/docs/contexts-overview).
      class GoogleCloudDialogflowV2beta1Context
        include Google::Apis::Core::Hashable
      
        # Optional. The number of conversational query requests after which the context
        # expires. The default is `0`. If set to `0`, the context expires immediately.
        # Contexts expire automatically after 20 minutes if there are no matching
        # queries.
        # Corresponds to the JSON property `lifespanCount`
        # @return [Fixnum]
        attr_accessor :lifespan_count
      
        # Required. The unique identifier of the context. Supported formats: - `projects/
        # /agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`
        # , - `projects//agent/environments//users//sessions//contexts/`, - `projects//
        # locations//agent/environments//users//sessions//contexts/`, The `Context ID`
        # is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%`
        # and may be at most 250 bytes long. If `Environment ID` is not specified, we
        # assume default 'draft' environment. If `User ID` is not specified, we assume
        # default '-' user. The following context names are reserved for internal use by
        # Dialogflow. You should not use these contexts or create contexts with these
        # names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The collection of parameters associated with this context. Depending
        # on your protocol or client library language, this is a map, associative array,
        # symbol table, dictionary, or JSON object composed of a collection of (MapKey,
        # MapValue) pairs: * MapKey type: string * MapKey value: parameter name *
        # MapValue type: If parameter's entity type is a composite entity then use map,
        # otherwise, depending on the parameter value type, it could be one of string,
        # number, boolean, null, list or map. * MapValue value: If parameter's entity
        # type is a composite entity then use map from composite entity property names
        # to property values, otherwise, use parameter value.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @lifespan_count = args[:lifespan_count] if args.key?(:lifespan_count)
          @name = args[:name] if args.key?(:name)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Represents a conversation. A conversation is an interaction between an agent,
      # including live agents and Dialogflow agents, and a support customer.
      # Conversations can include phone calls and text-based chat sessions.
      class GoogleCloudDialogflowV2beta1Conversation
        include Google::Apis::Core::Hashable
      
        # Required. The Conversation Profile to be used to configure this Conversation.
        # This field cannot be updated. Format: `projects//locations//
        # conversationProfiles/`.
        # Corresponds to the JSON property `conversationProfile`
        # @return [String]
        attr_accessor :conversation_profile
      
        # Optional. The stage of a conversation. It indicates whether the virtual agent
        # or a human agent is handling the conversation. If the conversation is created
        # with the conversation profile that has Dialogflow config set, defaults to
        # ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to
        # ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the
        # conversation profile that has Dialogflow config set but explicitly sets
        # conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips
        # ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to
        # ConversationStage.HUMAN_ASSIST_STAGE.
        # Corresponds to the JSON property `conversationStage`
        # @return [String]
        attr_accessor :conversation_stage
      
        # Output only. The time the conversation was finished.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # Output only. The context reference updates provided by external systems.
        # Corresponds to the JSON property `ingestedContextReferences`
        # @return [Hash<String,Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationContextReference>]
        attr_accessor :ingested_context_references
      
        # Output only. The current state of the Conversation.
        # Corresponds to the JSON property `lifecycleState`
        # @return [String]
        attr_accessor :lifecycle_state
      
        # Output only. Identifier. The unique identifier of this conversation. Format: `
        # projects//locations//conversations/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Represents a phone number for telephony integration. It allows for connecting
        # a particular conversation over telephony.
        # Corresponds to the JSON property `phoneNumber`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationPhoneNumber]
        attr_accessor :phone_number
      
        # Output only. The time the conversation was started.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # The information about phone calls connected via phone gateway to the
        # conversation.
        # Corresponds to the JSON property `telephonyConnectionInfo`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfo]
        attr_accessor :telephony_connection_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_profile = args[:conversation_profile] if args.key?(:conversation_profile)
          @conversation_stage = args[:conversation_stage] if args.key?(:conversation_stage)
          @end_time = args[:end_time] if args.key?(:end_time)
          @ingested_context_references = args[:ingested_context_references] if args.key?(:ingested_context_references)
          @lifecycle_state = args[:lifecycle_state] if args.key?(:lifecycle_state)
          @name = args[:name] if args.key?(:name)
          @phone_number = args[:phone_number] if args.key?(:phone_number)
          @start_time = args[:start_time] if args.key?(:start_time)
          @telephony_connection_info = args[:telephony_connection_info] if args.key?(:telephony_connection_info)
        end
      end
      
      # Context of the conversation, including transcripts.
      class GoogleCloudDialogflowV2beta1ConversationContext
        include Google::Apis::Core::Hashable
      
        # Optional. List of message transcripts in the conversation.
        # Corresponds to the JSON property `messageEntries`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1MessageEntry>]
        attr_accessor :message_entries
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @message_entries = args[:message_entries] if args.key?(:message_entries)
        end
      end
      
      # Represents a piece of ingested context information.
      class GoogleCloudDialogflowV2beta1ConversationContextReference
        include Google::Apis::Core::Hashable
      
        # Required. The list of content updates for a context reference.
        # Corresponds to the JSON property `contextContents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationContextReferenceContextContent>]
        attr_accessor :context_contents
      
        # Output only. The time the context reference was first created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The language of the information ingested, defaults to "en-US" if not
        # set.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Required. The mode in which context reference contents are updated.
        # Corresponds to the JSON property `updateMode`
        # @return [String]
        attr_accessor :update_mode
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_contents = args[:context_contents] if args.key?(:context_contents)
          @create_time = args[:create_time] if args.key?(:create_time)
          @language_code = args[:language_code] if args.key?(:language_code)
          @update_mode = args[:update_mode] if args.key?(:update_mode)
        end
      end
      
      # Contents ingested.
      class GoogleCloudDialogflowV2beta1ConversationContextReferenceContextContent
        include Google::Apis::Core::Hashable
      
        # If the context content was generated from a tool call, specify the answer
        # record associated with the tool call. Format: `projects//locations//
        # answerRecords/`.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Required. The information ingested in a single request.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # Required. The format of the ingested string.
        # Corresponds to the JSON property `contentFormat`
        # @return [String]
        attr_accessor :content_format
      
        # Output only. The time when this information was incorporated into the relevant
        # context reference.
        # Corresponds to the JSON property `ingestionTime`
        # @return [String]
        attr_accessor :ingestion_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @content = args[:content] if args.key?(:content)
          @content_format = args[:content_format] if args.key?(:content_format)
          @ingestion_time = args[:ingestion_time] if args.key?(:ingestion_time)
        end
      end
      
      # Represents a notification sent to Pub/Sub subscribers for conversation
      # lifecycle events.
      class GoogleCloudDialogflowV2beta1ConversationEvent
        include Google::Apis::Core::Hashable
      
        # Required. The unique identifier of the conversation this notification refers
        # to. Format: `projects//conversations/`.
        # Corresponds to the JSON property `conversation`
        # @return [String]
        attr_accessor :conversation
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `errorStatus`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :error_status
      
        # Represents a message posted into a conversation.
        # Corresponds to the JSON property `newMessagePayload`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Message]
        attr_accessor :new_message_payload
      
        # Contains a speech recognition result corresponding to a portion of the audio
        # that is currently being processed or an indication that this is the end of the
        # single requested utterance. While end-user audio is being processed,
        # Dialogflow sends a series of results. Each result may contain a `transcript`
        # value. A transcript represents a portion of the utterance. While the
        # recognizer is processing audio, transcript values may be interim values or
        # finalized values. Once a transcript is finalized, the `is_final` value is set
        # to true and processing continues for the next transcript. If `
        # StreamingDetectIntentRequest.query_input.audio_config.single_utterance` was
        # true, and the recognizer has completed processing audio, the `message_type`
        # value is set to `END_OF_SINGLE_UTTERANCE and the following (last) result
        # contains the last finalized transcript. The complete end-user utterance is
        # determined by concatenating the finalized transcript values received for the
        # series of results. In the following example, single utterance is enabled. In
        # the case where single utterance is not enabled, result 7 would not occur. ```
        # Num | transcript | message_type | is_final --- | ----------------------- | ----
        # ------------------- | -------- 1 | "tube" | TRANSCRIPT | false 2 | "to be a" |
        # TRANSCRIPT | false 3 | "to be" | TRANSCRIPT | false 4 | "to be or not to be" |
        # TRANSCRIPT | true 5 | "that's" | TRANSCRIPT | false 6 | "that is | TRANSCRIPT |
        # false 7 | unset | END_OF_SINGLE_UTTERANCE | unset 8 | " that is the question"
        # | TRANSCRIPT | true ``` Concatenating the finalized transcripts with `is_final`
        # set to true, the complete utterance becomes "to be or not to be that is the
        # question".
        # Corresponds to the JSON property `newRecognitionResultPayload`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1StreamingRecognitionResult]
        attr_accessor :new_recognition_result_payload
      
        # Required. The type of the event that this notification refers to.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation = args[:conversation] if args.key?(:conversation)
          @error_status = args[:error_status] if args.key?(:error_status)
          @new_message_payload = args[:new_message_payload] if args.key?(:new_message_payload)
          @new_recognition_result_payload = args[:new_recognition_result_payload] if args.key?(:new_recognition_result_payload)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Represents a phone number for telephony integration. It allows for connecting
      # a particular conversation over telephony.
      class GoogleCloudDialogflowV2beta1ConversationPhoneNumber
        include Google::Apis::Core::Hashable
      
        # Output only. Desired country code for the phone number.
        # Corresponds to the JSON property `countryCode`
        # @return [Fixnum]
        attr_accessor :country_code
      
        # Output only. The phone number to connect to this conversation.
        # Corresponds to the JSON property `phoneNumber`
        # @return [String]
        attr_accessor :phone_number
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @country_code = args[:country_code] if args.key?(:country_code)
          @phone_number = args[:phone_number] if args.key?(:phone_number)
        end
      end
      
      # Defines the services to connect to incoming Dialogflow conversations.
      class GoogleCloudDialogflowV2beta1ConversationProfile
        include Google::Apis::Core::Hashable
      
        # Defines the Automated Agent to connect to a conversation.
        # Corresponds to the JSON property `automatedAgentConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AutomatedAgentConfig]
        attr_accessor :automated_agent_config
      
        # Output only. Create time of the conversation profile.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. Human readable name for this profile. Max length 1024 bytes.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Defines the Human Agent Assistant to connect to a conversation.
        # Corresponds to the JSON property `humanAgentAssistantConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfig]
        attr_accessor :human_agent_assistant_config
      
        # Defines the hand off to a live agent, typically on which external agent
        # service provider to connect to a conversation. Currently, this feature is not
        # general available, please contact Google to get access.
        # Corresponds to the JSON property `humanAgentHandoffConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentHandoffConfig]
        attr_accessor :human_agent_handoff_config
      
        # Language code for the conversation profile. If not specified, the language is
        # en-US. Language at ConversationProfile should be set for all non en-us
        # languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.
        # txt) language tag. Example: "en-US".
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Defines logging behavior for conversation lifecycle events.
        # Corresponds to the JSON property `loggingConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1LoggingConfig]
        attr_accessor :logging_config
      
        # The unique identifier of this conversation profile. Format: `projects//
        # locations//conversationProfiles/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Defines notification behavior.
        # Corresponds to the JSON property `newMessageEventNotificationConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1NotificationConfig]
        attr_accessor :new_message_event_notification_config
      
        # Defines notification behavior.
        # Corresponds to the JSON property `newRecognitionResultNotificationConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1NotificationConfig]
        attr_accessor :new_recognition_result_notification_config
      
        # Defines notification behavior.
        # Corresponds to the JSON property `notificationConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1NotificationConfig]
        attr_accessor :notification_config
      
        # Name of the CX SecuritySettings reference for the agent. Format: `projects//
        # locations//securitySettings/`.
        # Corresponds to the JSON property `securitySettings`
        # @return [String]
        attr_accessor :security_settings
      
        # Configures speech transcription for ConversationProfile.
        # Corresponds to the JSON property `sttConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SpeechToTextConfig]
        attr_accessor :stt_config
      
        # The time zone of this conversational profile from the [time zone database](
        # https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris.
        # Defaults to America/New_York.
        # Corresponds to the JSON property `timeZone`
        # @return [String]
        attr_accessor :time_zone
      
        # Configuration of how speech should be synthesized.
        # Corresponds to the JSON property `ttsConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig]
        attr_accessor :tts_config
      
        # Output only. Update time of the conversation profile.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @automated_agent_config = args[:automated_agent_config] if args.key?(:automated_agent_config)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @human_agent_assistant_config = args[:human_agent_assistant_config] if args.key?(:human_agent_assistant_config)
          @human_agent_handoff_config = args[:human_agent_handoff_config] if args.key?(:human_agent_handoff_config)
          @language_code = args[:language_code] if args.key?(:language_code)
          @logging_config = args[:logging_config] if args.key?(:logging_config)
          @name = args[:name] if args.key?(:name)
          @new_message_event_notification_config = args[:new_message_event_notification_config] if args.key?(:new_message_event_notification_config)
          @new_recognition_result_notification_config = args[:new_recognition_result_notification_config] if args.key?(:new_recognition_result_notification_config)
          @notification_config = args[:notification_config] if args.key?(:notification_config)
          @security_settings = args[:security_settings] if args.key?(:security_settings)
          @stt_config = args[:stt_config] if args.key?(:stt_config)
          @time_zone = args[:time_zone] if args.key?(:time_zone)
          @tts_config = args[:tts_config] if args.key?(:tts_config)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # The information about phone calls connected via phone gateway to the
      # conversation.
      class GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfo
        include Google::Apis::Core::Hashable
      
        # Output only. The number dialed to connect this call in E.164 format.
        # Corresponds to the JSON property `dialedNumber`
        # @return [String]
        attr_accessor :dialed_number
      
        # Output only. The mime content from the initial SIP INVITE.
        # Corresponds to the JSON property `extraMimeContents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfoMimeContent>]
        attr_accessor :extra_mime_contents
      
        # Optional. SDP of the call. It's initially the SDP answer to the incoming call,
        # but maybe later updated for the purpose of making the link active, etc.
        # Corresponds to the JSON property `sdp`
        # @return [String]
        attr_accessor :sdp
      
        # Output only. The SIP headers from the initial SIP INVITE.
        # Corresponds to the JSON property `sipHeaders`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfoSipHeader>]
        attr_accessor :sip_headers
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dialed_number = args[:dialed_number] if args.key?(:dialed_number)
          @extra_mime_contents = args[:extra_mime_contents] if args.key?(:extra_mime_contents)
          @sdp = args[:sdp] if args.key?(:sdp)
          @sip_headers = args[:sip_headers] if args.key?(:sip_headers)
        end
      end
      
      # The mime content from the initial SIP INVITE.
      class GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfoMimeContent
        include Google::Apis::Core::Hashable
      
        # Optional. The content payload.
        # Corresponds to the JSON property `content`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :content
      
        # Optional. The mime type of the content.
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # The SIP headers from the initial SIP INVITE.
      class GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfoSipHeader
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the header.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The value of the header.
        # Corresponds to the JSON property `value`
        # @return [String]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # The request message to create one Message. Currently it is only used in
      # BatchCreateMessagesRequest.
      class GoogleCloudDialogflowV2beta1CreateMessageRequest
        include Google::Apis::Core::Hashable
      
        # Represents a message posted into a conversation.
        # Corresponds to the JSON property `message`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Message]
        attr_accessor :message
      
        # Required. Resource identifier of the conversation to create message. Format: `
        # projects//locations//conversations/`.
        # Corresponds to the JSON property `parent`
        # @return [String]
        attr_accessor :parent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @message = args[:message] if args.key?(:message)
          @parent = args[:parent] if args.key?(:parent)
        end
      end
      
      # Pronunciation customization for a phrase.
      class GoogleCloudDialogflowV2beta1CustomPronunciationParams
        include Google::Apis::Core::Hashable
      
        # The phonetic encoding of the phrase.
        # Corresponds to the JSON property `phoneticEncoding`
        # @return [String]
        attr_accessor :phonetic_encoding
      
        # The phrase to which the customization is applied. The phrase can be multiple
        # words, such as proper nouns, but shouldn't span the length of the sentence.
        # Corresponds to the JSON property `phrase`
        # @return [String]
        attr_accessor :phrase
      
        # The pronunciation of the phrase. This must be in the phonetic encoding
        # specified above.
        # Corresponds to the JSON property `pronunciation`
        # @return [String]
        attr_accessor :pronunciation
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @phonetic_encoding = args[:phonetic_encoding] if args.key?(:phonetic_encoding)
          @phrase = args[:phrase] if args.key?(:phrase)
          @pronunciation = args[:pronunciation] if args.key?(:pronunciation)
        end
      end
      
      # The request to detect user's intent.
      class GoogleCloudDialogflowV2beta1DetectIntentRequest
        include Google::Apis::Core::Hashable
      
        # The natural language speech audio to be processed. This field should be
        # populated iff `query_input` is set to an input audio config. A single request
        # can contain up to 1 minute of speech audio data.
        # Corresponds to the JSON property `inputAudio`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :input_audio
      
        # Instructs the speech synthesizer how to generate the output audio content. If
        # this audio config is supplied in a request, it overrides all existing text-to-
        # speech settings applied to the agent.
        # Corresponds to the JSON property `outputAudioConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1OutputAudioConfig]
        attr_accessor :output_audio_config
      
        # Mask for output_audio_config indicating which settings in this request-level
        # config should override speech synthesizer settings defined at agent-level. If
        # unspecified or empty, output_audio_config replaces the agent-level config in
        # its entirety.
        # Corresponds to the JSON property `outputAudioConfigMask`
        # @return [String]
        attr_accessor :output_audio_config_mask
      
        # Represents the query input. It can contain either: 1. An audio config which
        # instructs the speech recognizer how to process the speech audio. 2. A
        # conversational query in the form of text. 3. An event that specifies which
        # intent to trigger.
        # Corresponds to the JSON property `queryInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1QueryInput]
        attr_accessor :query_input
      
        # Represents the parameters of the conversational query.
        # Corresponds to the JSON property `queryParams`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1QueryParameters]
        attr_accessor :query_params
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @input_audio = args[:input_audio] if args.key?(:input_audio)
          @output_audio_config = args[:output_audio_config] if args.key?(:output_audio_config)
          @output_audio_config_mask = args[:output_audio_config_mask] if args.key?(:output_audio_config_mask)
          @query_input = args[:query_input] if args.key?(:query_input)
          @query_params = args[:query_params] if args.key?(:query_params)
        end
      end
      
      # The message returned from the DetectIntent method.
      class GoogleCloudDialogflowV2beta1DetectIntentResponse
        include Google::Apis::Core::Hashable
      
        # If Knowledge Connectors are enabled, there could be more than one result
        # returned for a given query or event, and this field will contain all results
        # except for the top one, which is captured in query_result. The alternative
        # results are ordered by decreasing `QueryResult.intent_detection_confidence`.
        # If Knowledge Connectors are disabled, this field will be empty until multiple
        # responses for regular intents are supported, at which point those additional
        # results will be surfaced here.
        # Corresponds to the JSON property `alternativeQueryResults`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1QueryResult>]
        attr_accessor :alternative_query_results
      
        # The audio data bytes encoded as specified in the request. Note: The output
        # audio is generated based on the values of default platform text responses
        # found in the `query_result.fulfillment_messages` field. If multiple default
        # text responses exist, they will be concatenated when generating audio. If no
        # default platform text responses exist, the generated audio content will be
        # empty. 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.
        # Corresponds to the JSON property `outputAudio`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :output_audio
      
        # Instructs the speech synthesizer how to generate the output audio content. If
        # this audio config is supplied in a request, it overrides all existing text-to-
        # speech settings applied to the agent.
        # Corresponds to the JSON property `outputAudioConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1OutputAudioConfig]
        attr_accessor :output_audio_config
      
        # Represents the result of conversational query or event processing.
        # Corresponds to the JSON property `queryResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1QueryResult]
        attr_accessor :query_result
      
        # The unique identifier of the response. It can be used to locate a response in
        # the training example set or for reporting issues.
        # Corresponds to the JSON property `responseId`
        # @return [String]
        attr_accessor :response_id
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `webhookStatus`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :webhook_status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @alternative_query_results = args[:alternative_query_results] if args.key?(:alternative_query_results)
          @output_audio = args[:output_audio] if args.key?(:output_audio)
          @output_audio_config = args[:output_audio_config] if args.key?(:output_audio_config)
          @query_result = args[:query_result] if args.key?(:query_result)
          @response_id = args[:response_id] if args.key?(:response_id)
          @webhook_status = args[:webhook_status] if args.key?(:webhook_status)
        end
      end
      
      # Represents a Dialogflow assist answer.
      class GoogleCloudDialogflowV2beta1DialogflowAssistAnswer
        include Google::Apis::Core::Hashable
      
        # The name of answer record, in the format of "projects//locations//
        # answerRecords/"
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Represents an intent suggestion.
        # Corresponds to the JSON property `intentSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentSuggestion]
        attr_accessor :intent_suggestion
      
        # Represents the result of conversational query or event processing.
        # Corresponds to the JSON property `queryResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1QueryResult]
        attr_accessor :query_result
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @intent_suggestion = args[:intent_suggestion] if args.key?(:intent_suggestion)
          @query_result = args[:query_result] if args.key?(:query_result)
        end
      end
      
      # A knowledge document to be used by a KnowledgeBase. For more information, see
      # the [knowledge base guide](https://cloud.google.com/dialogflow/docs/how/
      # knowledge-bases). Note: The `projects.agent.knowledgeBases.documents` resource
      # is deprecated; only use `projects.knowledgeBases.documents`.
      class GoogleCloudDialogflowV2beta1Document
        include Google::Apis::Core::Hashable
      
        # The raw content of the document. This field is only permitted for
        # EXTRACTIVE_QA and FAQ knowledge types. Note: This field is in the process of
        # being deprecated, please use raw_content instead.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The URI where the file content is located. For documents stored in Google
        # Cloud Storage, these URIs must have the form `gs:///`. NOTE: External URLs
        # must correspond to public webpages, i.e., they must be indexed by Google
        # Search. In particular, URLs for showing documents in Google Cloud Storage (i.e.
        # the URL in your browser) are not supported. Instead use the `gs://` format
        # URI described above.
        # Corresponds to the JSON property `contentUri`
        # @return [String]
        attr_accessor :content_uri
      
        # Required. The display name of the document. The name must be 1024 bytes or
        # less; otherwise, the creation request fails.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. If true, we try to automatically reload the document every day (at a
        # time picked by the system). If false or unspecified, we don't try to
        # automatically reload the document. Currently you can only enable automatic
        # reload for documents sourced from a public url, see `source` field for the
        # source types. Reload status can be tracked in `latest_reload_status`. If a
        # reload fails, we will keep the document unchanged. If a reload fails with
        # internal errors, the system will try to reload the document on the next day.
        # If a reload fails with non-retriable errors (e.g. PERMISSION_DENIED), the
        # system will not try to reload the document anymore. You need to manually
        # reload the document successfully by calling `ReloadDocument` and clear the
        # errors.
        # Corresponds to the JSON property `enableAutoReload`
        # @return [Boolean]
        attr_accessor :enable_auto_reload
        alias_method :enable_auto_reload?, :enable_auto_reload
      
        # Required. The knowledge type of document content.
        # Corresponds to the JSON property `knowledgeTypes`
        # @return [Array<String>]
        attr_accessor :knowledge_types
      
        # The status of a reload attempt.
        # Corresponds to the JSON property `latestReloadStatus`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1DocumentReloadStatus]
        attr_accessor :latest_reload_status
      
        # Optional. Metadata for the document. The metadata supports arbitrary key-value
        # pairs. Suggested use cases include storing a document's title, an external URL
        # distinct from the document's content_uri, etc. The max size of a `key` or a `
        # value` of the metadata is 1024 bytes.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,String>]
        attr_accessor :metadata
      
        # Required. The MIME type of this document.
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        # Optional. The document resource name. The name must be empty when creating a
        # document. Format: `projects//locations//knowledgeBases//documents/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The raw content of the document. This field is only permitted for
        # EXTRACTIVE_QA and FAQ knowledge types.
        # Corresponds to the JSON property `rawContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :raw_content
      
        # Output only. The current state of the document.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @content_uri = args[:content_uri] if args.key?(:content_uri)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enable_auto_reload = args[:enable_auto_reload] if args.key?(:enable_auto_reload)
          @knowledge_types = args[:knowledge_types] if args.key?(:knowledge_types)
          @latest_reload_status = args[:latest_reload_status] if args.key?(:latest_reload_status)
          @metadata = args[:metadata] if args.key?(:metadata)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
          @name = args[:name] if args.key?(:name)
          @raw_content = args[:raw_content] if args.key?(:raw_content)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # The status of a reload attempt.
      class GoogleCloudDialogflowV2beta1DocumentReloadStatus
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :status
      
        # Output only. The time of a reload attempt. This reload may have been triggered
        # automatically or manually and may not have succeeded.
        # Corresponds to the JSON property `time`
        # @return [String]
        attr_accessor :time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @status = args[:status] if args.key?(:status)
          @time = args[:time] if args.key?(:time)
        end
      end
      
      # The message in the response that indicates the parameters of DTMF.
      class GoogleCloudDialogflowV2beta1DtmfParameters
        include Google::Apis::Core::Hashable
      
        # Indicates whether DTMF input can be handled in the next request.
        # Corresponds to the JSON property `acceptsDtmfInput`
        # @return [Boolean]
        attr_accessor :accepts_dtmf_input
        alias_method :accepts_dtmf_input?, :accepts_dtmf_input
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @accepts_dtmf_input = args[:accepts_dtmf_input] if args.key?(:accepts_dtmf_input)
        end
      end
      
      # A customer-managed encryption key specification that can be applied to all
      # created resources (e.g. Conversation).
      class GoogleCloudDialogflowV2beta1EncryptionSpec
        include Google::Apis::Core::Hashable
      
        # Required. The name of customer-managed encryption key that is used to secure a
        # resource and its sub-resources. If empty, the resource is secured by the
        # default Google encryption key. Only the key in the same location as this
        # resource is allowed to be used for encryption. Format: `projects/`project`/
        # locations/`location`/keyRings/`keyRing`/cryptoKeys/`key``
        # Corresponds to the JSON property `kmsKey`
        # @return [String]
        attr_accessor :kms_key
      
        # Immutable. The resource name of the encryption key specification resource.
        # Format: projects/`project`/locations/`location`/encryptionSpec
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kms_key = args[:kms_key] if args.key?(:kms_key)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Each intent parameter has a type, called the entity type, which dictates
      # exactly how data from an end-user expression is extracted. Dialogflow provides
      # predefined system entities that can match many common types of data. For
      # example, there are system entities for matching dates, times, colors, email
      # addresses, and so on. You can also create your own custom entities for
      # matching custom data. For example, you could define a vegetable entity that
      # can match the types of vegetables available for purchase with a grocery store
      # agent. For more information, see the [Entity guide](https://cloud.google.com/
      # dialogflow/docs/entities-overview).
      class GoogleCloudDialogflowV2beta1EntityType
        include Google::Apis::Core::Hashable
      
        # Optional. Indicates whether the entity type can be automatically expanded.
        # Corresponds to the JSON property `autoExpansionMode`
        # @return [String]
        attr_accessor :auto_expansion_mode
      
        # Required. The name of the entity type.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. Enables fuzzy entity extraction during classification.
        # Corresponds to the JSON property `enableFuzzyExtraction`
        # @return [Boolean]
        attr_accessor :enable_fuzzy_extraction
        alias_method :enable_fuzzy_extraction?, :enable_fuzzy_extraction
      
        # Optional. The collection of entity entries associated with the entity type.
        # Corresponds to the JSON property `entities`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EntityTypeEntity>]
        attr_accessor :entities
      
        # Required. Indicates the kind of entity type.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The unique identifier of the entity type. Required for EntityTypes.
        # UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Supported
        # formats: - `projects//agent/entityTypes/` - `projects//locations//agent/
        # entityTypes/`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @auto_expansion_mode = args[:auto_expansion_mode] if args.key?(:auto_expansion_mode)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enable_fuzzy_extraction = args[:enable_fuzzy_extraction] if args.key?(:enable_fuzzy_extraction)
          @entities = args[:entities] if args.key?(:entities)
          @kind = args[:kind] if args.key?(:kind)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # This message is a wrapper around a collection of entity types.
      class GoogleCloudDialogflowV2beta1EntityTypeBatch
        include Google::Apis::Core::Hashable
      
        # A collection of entity types.
        # Corresponds to the JSON property `entityTypes`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EntityType>]
        attr_accessor :entity_types
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_types = args[:entity_types] if args.key?(:entity_types)
        end
      end
      
      # An **entity entry** for an associated entity type.
      class GoogleCloudDialogflowV2beta1EntityTypeEntity
        include Google::Apis::Core::Hashable
      
        # Required. A collection of value synonyms. For example, if the entity type is *
        # vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For
        # `KIND_LIST` entity types: * This collection must contain exactly one synonym
        # equal to `value`.
        # Corresponds to the JSON property `synonyms`
        # @return [Array<String>]
        attr_accessor :synonyms
      
        # Required. The primary value associated with this entity entry. For example, if
        # the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP`
        # entity types: * A reference value to be used in place of synonyms. For `
        # KIND_LIST` entity types: * A string that can contain references to other
        # entity types (with or without aliases).
        # Corresponds to the JSON property `value`
        # @return [String]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @synonyms = args[:synonyms] if args.key?(:synonyms)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # You can create multiple versions of your agent and publish them to separate
      # environments. When you edit an agent, you are editing the draft agent. At any
      # point, you can save the draft agent as an agent version, which is an immutable
      # snapshot of your agent. When you save the draft agent, it is published to the
      # default environment. When you create agent versions, you can publish them to
      # custom environments. You can create a variety of custom environments for: -
      # testing - development - production - etc. For more information, see the [
      # versions and environments guide](https://cloud.google.com/dialogflow/docs/
      # agents-versions).
      class GoogleCloudDialogflowV2beta1Environment
        include Google::Apis::Core::Hashable
      
        # Optional. The agent version loaded into this environment. Supported formats: -
        # `projects//agent/versions/` - `projects//locations//agent/versions/`
        # Corresponds to the JSON property `agentVersion`
        # @return [String]
        attr_accessor :agent_version
      
        # Optional. The developer-provided description for this environment. The maximum
        # length is 500 characters. If exceeded, the request is rejected.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # By default, your agent responds to a matched intent with a static response. As
        # an alternative, you can provide a more dynamic response by using fulfillment.
        # When you enable fulfillment for an intent, Dialogflow responds to that intent
        # by calling a service that you define. For example, if an end-user wants to
        # schedule a haircut on Friday, your service can check your database and respond
        # to the end-user with availability information for Friday. For more information,
        # see the [fulfillment guide](https://cloud.google.com/dialogflow/docs/
        # fulfillment-overview).
        # Corresponds to the JSON property `fulfillment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Fulfillment]
        attr_accessor :fulfillment
      
        # Output only. The unique identifier of this agent environment. Supported
        # formats: - `projects//agent/environments/` - `projects//locations//agent/
        # environments/`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. The state of this environment. This field is read-only, i.e., it
        # cannot be set by create and update methods.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Instructs the speech synthesizer on how to generate the output audio content.
        # Corresponds to the JSON property `textToSpeechSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1TextToSpeechSettings]
        attr_accessor :text_to_speech_settings
      
        # Output only. The last update time of this environment. This field is read-only,
        # i.e., it cannot be set by create and update methods.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_version = args[:agent_version] if args.key?(:agent_version)
          @description = args[:description] if args.key?(:description)
          @fulfillment = args[:fulfillment] if args.key?(:fulfillment)
          @name = args[:name] if args.key?(:name)
          @state = args[:state] if args.key?(:state)
          @text_to_speech_settings = args[:text_to_speech_settings] if args.key?(:text_to_speech_settings)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # The response message for Environments.GetEnvironmentHistory.
      class GoogleCloudDialogflowV2beta1EnvironmentHistory
        include Google::Apis::Core::Hashable
      
        # Output only. The list of agent environments. There will be a maximum number of
        # items returned based on the page_size field in the request.
        # Corresponds to the JSON property `entries`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EnvironmentHistoryEntry>]
        attr_accessor :entries
      
        # Output only. Token to retrieve the next page of results, or empty if there are
        # no more results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # Output only. The name of the environment this history is for. Supported
        # formats: - `projects//agent/environments/` - `projects//locations//agent/
        # environments/`
        # Corresponds to the JSON property `parent`
        # @return [String]
        attr_accessor :parent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entries = args[:entries] if args.key?(:entries)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @parent = args[:parent] if args.key?(:parent)
        end
      end
      
      # Represents an environment history entry.
      class GoogleCloudDialogflowV2beta1EnvironmentHistoryEntry
        include Google::Apis::Core::Hashable
      
        # The agent version loaded into this environment history entry.
        # Corresponds to the JSON property `agentVersion`
        # @return [String]
        attr_accessor :agent_version
      
        # The creation time of this environment history entry.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # The developer-provided description for this environment history entry.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_version = args[:agent_version] if args.key?(:agent_version)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
        end
      end
      
      # A common evalaution pipeline status.
      class GoogleCloudDialogflowV2beta1EvaluationStatus
        include Google::Apis::Core::Hashable
      
        # Output only. If the value is `false`, it means the evaluation is still in
        # progress. If `true`, the operation is completed, and either `error` or `
        # response` is available.
        # Corresponds to the JSON property `done`
        # @return [Boolean]
        attr_accessor :done
        alias_method :done?, :done
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `pipelineStatus`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :pipeline_status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @done = args[:done] if args.key?(:done)
          @pipeline_status = args[:pipeline_status] if args.key?(:pipeline_status)
        end
      end
      
      # Events allow for matching intents by event name instead of the natural
      # language input. For instance, input `` can trigger a personalized welcome
      # response. The parameter `name` may be used by the agent in the response: `"
      # Hello #welcome_event.name! What can I do for you today?"`.
      class GoogleCloudDialogflowV2beta1EventInput
        include Google::Apis::Core::Hashable
      
        # Required. The language of this query. See [Language Support](https://cloud.
        # google.com/dialogflow/docs/reference/language) for a list of the currently
        # supported language codes. Note that queries in the same session do not
        # necessarily need to specify the same language. This field is ignored when used
        # in the context of a WebhookResponse.followup_event_input field, because the
        # language was already defined in the originating detect intent request.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Required. The unique identifier of the event.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The collection of parameters associated with the event. Depending on your
        # protocol or client library language, this is a map, associative array, symbol
        # table, dictionary, or JSON object composed of a collection of (MapKey,
        # MapValue) pairs: * MapKey type: string * MapKey value: parameter name *
        # MapValue type: If parameter's entity type is a composite entity then use map,
        # otherwise, depending on the parameter value type, it could be one of string,
        # number, boolean, null, list or map. * MapValue value: If parameter's entity
        # type is a composite entity then use map from composite entity property names
        # to property values, otherwise, use parameter value.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @language_code = args[:language_code] if args.key?(:language_code)
          @name = args[:name] if args.key?(:name)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # The request message for Agents.ExportAgent.
      class GoogleCloudDialogflowV2beta1ExportAgentRequest
        include Google::Apis::Core::Hashable
      
        # Optional. The [Google Cloud Storage](https://cloud.google.com/storage/docs/)
        # URI to export the agent to. The format of this URI must be `gs:///`. If left
        # unspecified, the serialized agent is returned inline. Dialogflow performs a
        # write operation for the Cloud Storage object on the caller's behalf, so your
        # request authentication must have write permissions for the object. For more
        # information, see [Dialogflow access control](https://cloud.google.com/
        # dialogflow/cx/docs/concept/access-control#storage).
        # Corresponds to the JSON property `agentUri`
        # @return [String]
        attr_accessor :agent_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_uri = args[:agent_uri] if args.key?(:agent_uri)
        end
      end
      
      # The response message for Agents.ExportAgent.
      class GoogleCloudDialogflowV2beta1ExportAgentResponse
        include Google::Apis::Core::Hashable
      
        # Zip compressed raw byte content for agent.
        # Corresponds to the JSON property `agentContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :agent_content
      
        # The URI to a file containing the exported agent. This field is populated only
        # if `agent_uri` is specified in `ExportAgentRequest`.
        # Corresponds to the JSON property `agentUri`
        # @return [String]
        attr_accessor :agent_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_content = args[:agent_content] if args.key?(:agent_content)
          @agent_uri = args[:agent_uri] if args.key?(:agent_uri)
        end
      end
      
      # Metadata related to the Export Data Operations (e.g. ExportDocument).
      class GoogleCloudDialogflowV2beta1ExportOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Google Cloud Storage location for the output.
        # Corresponds to the JSON property `exportedGcsDestination`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GcsDestination]
        attr_accessor :exported_gcs_destination
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @exported_gcs_destination = args[:exported_gcs_destination] if args.key?(:exported_gcs_destination)
        end
      end
      
      # Represents answer from "frequently asked questions".
      class GoogleCloudDialogflowV2beta1FaqAnswer
        include Google::Apis::Core::Hashable
      
        # The piece of text from the `source` knowledge base document.
        # Corresponds to the JSON property `answer`
        # @return [String]
        attr_accessor :answer
      
        # The name of answer record, in the format of "projects//locations//
        # answerRecords/"
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # The system's confidence score that this Knowledge answer is a good match for
        # this conversational query, range from 0.0 (completely uncertain) to 1.0 (
        # completely certain).
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # A map that contains metadata about the answer and the document from which it
        # originates.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,String>]
        attr_accessor :metadata
      
        # The corresponding FAQ question.
        # Corresponds to the JSON property `question`
        # @return [String]
        attr_accessor :question
      
        # Indicates which Knowledge Document this answer was extracted from. Format: `
        # projects//locations//agent/knowledgeBases//documents/`.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer = args[:answer] if args.key?(:answer)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @confidence = args[:confidence] if args.key?(:confidence)
          @metadata = args[:metadata] if args.key?(:metadata)
          @question = args[:question] if args.key?(:question)
          @source = args[:source] if args.key?(:source)
        end
      end
      
      # Providing examples in the generator (i.e. building a few-shot generator) helps
      # convey the desired format of the LLM response.
      class GoogleCloudDialogflowV2beta1FewShotExample
        include Google::Apis::Core::Hashable
      
        # Context of the conversation, including transcripts.
        # Corresponds to the JSON property `conversationContext`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationContext]
        attr_accessor :conversation_context
      
        # Optional. Key is the placeholder field name in input, value is the value of
        # the placeholder. E.g. instruction contains "@price", and ingested data has <"
        # price", "10">
        # Corresponds to the JSON property `extraInfo`
        # @return [Hash<String,String>]
        attr_accessor :extra_info
      
        # Suggestion generated using a Generator.
        # Corresponds to the JSON property `output`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorSuggestion]
        attr_accessor :output
      
        # List of summarization sections.
        # Corresponds to the JSON property `summarizationSectionList`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationSectionList]
        attr_accessor :summarization_section_list
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_context = args[:conversation_context] if args.key?(:conversation_context)
          @extra_info = args[:extra_info] if args.key?(:extra_info)
          @output = args[:output] if args.key?(:output)
          @summarization_section_list = args[:summarization_section_list] if args.key?(:summarization_section_list)
        end
      end
      
      # Free form generator context that customer can configure.
      class GoogleCloudDialogflowV2beta1FreeFormContext
        include Google::Apis::Core::Hashable
      
        # Optional. Free form text input to LLM.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Suggestion generated using free form generator.
      class GoogleCloudDialogflowV2beta1FreeFormSuggestion
        include Google::Apis::Core::Hashable
      
        # Required. Free form suggestion.
        # Corresponds to the JSON property `response`
        # @return [String]
        attr_accessor :response
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @response = args[:response] if args.key?(:response)
        end
      end
      
      # By default, your agent responds to a matched intent with a static response. As
      # an alternative, you can provide a more dynamic response by using fulfillment.
      # When you enable fulfillment for an intent, Dialogflow responds to that intent
      # by calling a service that you define. For example, if an end-user wants to
      # schedule a haircut on Friday, your service can check your database and respond
      # to the end-user with availability information for Friday. For more information,
      # see the [fulfillment guide](https://cloud.google.com/dialogflow/docs/
      # fulfillment-overview).
      class GoogleCloudDialogflowV2beta1Fulfillment
        include Google::Apis::Core::Hashable
      
        # The human-readable name of the fulfillment, unique within the agent. This
        # field is not used for Fulfillment in an Environment.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Whether fulfillment is enabled.
        # Corresponds to the JSON property `enabled`
        # @return [Boolean]
        attr_accessor :enabled
        alias_method :enabled?, :enabled
      
        # The field defines whether the fulfillment is enabled for certain features.
        # Corresponds to the JSON property `features`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1FulfillmentFeature>]
        attr_accessor :features
      
        # Represents configuration for a generic web service. Dialogflow supports two
        # mechanisms for authentications: - Basic authentication with username and
        # password. - Authentication with additional authentication headers. More
        # information could be found at: https://cloud.google.com/dialogflow/docs/
        # fulfillment-configure.
        # Corresponds to the JSON property `genericWebService`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1FulfillmentGenericWebService]
        attr_accessor :generic_web_service
      
        # Required. The unique identifier of the fulfillment. Supported formats: - `
        # projects//agent/fulfillment` - `projects//locations//agent/fulfillment` This
        # field is not used for Fulfillment in an Environment.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enabled = args[:enabled] if args.key?(:enabled)
          @features = args[:features] if args.key?(:features)
          @generic_web_service = args[:generic_web_service] if args.key?(:generic_web_service)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Whether fulfillment is enabled for the specific feature.
      class GoogleCloudDialogflowV2beta1FulfillmentFeature
        include Google::Apis::Core::Hashable
      
        # The type of the feature that enabled for fulfillment.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Represents configuration for a generic web service. Dialogflow supports two
      # mechanisms for authentications: - Basic authentication with username and
      # password. - Authentication with additional authentication headers. More
      # information could be found at: https://cloud.google.com/dialogflow/docs/
      # fulfillment-configure.
      class GoogleCloudDialogflowV2beta1FulfillmentGenericWebService
        include Google::Apis::Core::Hashable
      
        # Optional. Indicates if generic web service is created through Cloud Functions
        # integration. Defaults to false. is_cloud_function is deprecated. Cloud
        # functions can be configured by its uri as a regular web service now.
        # Corresponds to the JSON property `isCloudFunction`
        # @return [Boolean]
        attr_accessor :is_cloud_function
        alias_method :is_cloud_function?, :is_cloud_function
      
        # The password for HTTP Basic authentication.
        # Corresponds to the JSON property `password`
        # @return [String]
        attr_accessor :password
      
        # The HTTP request headers to send together with fulfillment requests.
        # Corresponds to the JSON property `requestHeaders`
        # @return [Hash<String,String>]
        attr_accessor :request_headers
      
        # Required. The fulfillment URI for receiving POST requests. It must use https
        # protocol.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        # The user name for HTTP Basic authentication.
        # Corresponds to the JSON property `username`
        # @return [String]
        attr_accessor :username
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @is_cloud_function = args[:is_cloud_function] if args.key?(:is_cloud_function)
          @password = args[:password] if args.key?(:password)
          @request_headers = args[:request_headers] if args.key?(:request_headers)
          @uri = args[:uri] if args.key?(:uri)
          @username = args[:username] if args.key?(:username)
        end
      end
      
      # Google Cloud Storage location for the output.
      class GoogleCloudDialogflowV2beta1GcsDestination
        include Google::Apis::Core::Hashable
      
        # Required. The Google Cloud Storage URIs for the output. A URI is of the form: `
        # gs://bucket/object-prefix-or-name` Whether a prefix or name is used depends on
        # the use case. The requesting user must have "write-permission" to the bucket.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Google Cloud Storage location for single input.
      class GoogleCloudDialogflowV2beta1GcsSource
        include Google::Apis::Core::Hashable
      
        # Required. The Google Cloud Storage URIs for the inputs. A URI is of the form: `
        # gs://bucket/object-prefix-or-name` Whether a prefix or name is used depends on
        # the use case.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Google Cloud Storage locations for the inputs.
      class GoogleCloudDialogflowV2beta1GcsSources
        include Google::Apis::Core::Hashable
      
        # Required. Google Cloud Storage URIs for the inputs. A URI is of the form: `gs:/
        # /bucket/object-prefix-or-name` Whether a prefix or name is used depends on the
        # use case.
        # Corresponds to the JSON property `uris`
        # @return [Array<String>]
        attr_accessor :uris
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uris = args[:uris] if args.key?(:uris)
        end
      end
      
      # The request message for Conversations.GenerateStatelessSuggestion.
      class GoogleCloudDialogflowV2beta1GenerateStatelessSuggestionRequest
        include Google::Apis::Core::Hashable
      
        # Optional. A section of ingested context information. The key is the name of
        # the context reference and the value contains the contents of the context
        # reference. The key is used to incorporate ingested context references to
        # enhance the generator.
        # Corresponds to the JSON property `contextReferences`
        # @return [Hash<String,Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationContextReference>]
        attr_accessor :context_references
      
        # Context of the conversation, including transcripts.
        # Corresponds to the JSON property `conversationContext`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationContext]
        attr_accessor :conversation_context
      
        # LLM generator.
        # Corresponds to the JSON property `generator`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Generator]
        attr_accessor :generator
      
        # The resource name of the existing created generator. Format: `projects//
        # locations//generators/`
        # Corresponds to the JSON property `generatorName`
        # @return [String]
        attr_accessor :generator_name
      
        # Optional. Name of the CX SecuritySettings which is used to redact generated
        # response. If this field is empty, try to fetch v2 security_settings, which is
        # a project level setting. If this field is empty and no v2 security_settings
        # set up in this project, no redaction will be done. Format: `projects//
        # locations//securitySettings/`.
        # Corresponds to the JSON property `securitySettings`
        # @return [String]
        attr_accessor :security_settings
      
        # Optional. A list of trigger events. Generator will be triggered only if it's
        # trigger event is included here.
        # Corresponds to the JSON property `triggerEvents`
        # @return [Array<String>]
        attr_accessor :trigger_events
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_references = args[:context_references] if args.key?(:context_references)
          @conversation_context = args[:conversation_context] if args.key?(:conversation_context)
          @generator = args[:generator] if args.key?(:generator)
          @generator_name = args[:generator_name] if args.key?(:generator_name)
          @security_settings = args[:security_settings] if args.key?(:security_settings)
          @trigger_events = args[:trigger_events] if args.key?(:trigger_events)
        end
      end
      
      # The response message for Conversations.GenerateStatelessSuggestion.
      class GoogleCloudDialogflowV2beta1GenerateStatelessSuggestionResponse
        include Google::Apis::Core::Hashable
      
        # Suggestion generated using a Generator.
        # Corresponds to the JSON property `generatorSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorSuggestion]
        attr_accessor :generator_suggestion
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generator_suggestion = args[:generator_suggestion] if args.key?(:generator_suggestion)
        end
      end
      
      # The request message for Conversations.GenerateStatelessSummary.
      class GoogleCloudDialogflowV2beta1GenerateStatelessSummaryRequest
        include Google::Apis::Core::Hashable
      
        # Defines the services to connect to incoming Dialogflow conversations.
        # Corresponds to the JSON property `conversationProfile`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationProfile]
        attr_accessor :conversation_profile
      
        # Optional. The name of the latest conversation message used as context for
        # generating a Summary. If empty, the latest message of the conversation will be
        # used. The format is specific to the user and the names of the messages
        # provided.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        # Optional. Max number of messages prior to and including [latest_message] to
        # use as context when compiling the suggestion. By default 500 and at most 1000.
        # Corresponds to the JSON property `maxContextSize`
        # @return [Fixnum]
        attr_accessor :max_context_size
      
        # The minimum amount of information required to generate a Summary without
        # having a Conversation resource created.
        # Corresponds to the JSON property `statelessConversation`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GenerateStatelessSummaryRequestMinimalConversation]
        attr_accessor :stateless_conversation
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_profile = args[:conversation_profile] if args.key?(:conversation_profile)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
          @max_context_size = args[:max_context_size] if args.key?(:max_context_size)
          @stateless_conversation = args[:stateless_conversation] if args.key?(:stateless_conversation)
        end
      end
      
      # The minimum amount of information required to generate a Summary without
      # having a Conversation resource created.
      class GoogleCloudDialogflowV2beta1GenerateStatelessSummaryRequestMinimalConversation
        include Google::Apis::Core::Hashable
      
        # Required. The messages that the Summary will be generated from. It is expected
        # that this message content is already redacted and does not contain any PII.
        # Required fields: `content, language_code, participant, participant_role`
        # Optional fields: `send_time` If send_time is not provided, then the messages
        # must be provided in chronological order.
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Message>]
        attr_accessor :messages
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @messages = args[:messages] if args.key?(:messages)
        end
      end
      
      # The response message for Conversations.GenerateStatelessSummary.
      class GoogleCloudDialogflowV2beta1GenerateStatelessSummaryResponse
        include Google::Apis::Core::Hashable
      
        # Number of messages prior to and including last_conversation_message used to
        # compile the suggestion. It may be smaller than the
        # GenerateStatelessSummaryRequest.context_size field in the request if there
        # weren't that many messages in the conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # The name of the latest conversation message used as context for compiling
        # suggestion. The format is specific to the user and the names of the messages
        # provided.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        # Generated summary for a conversation.
        # Corresponds to the JSON property `summary`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GenerateStatelessSummaryResponseSummary]
        attr_accessor :summary
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
          @summary = args[:summary] if args.key?(:summary)
        end
      end
      
      # Generated summary for a conversation.
      class GoogleCloudDialogflowV2beta1GenerateStatelessSummaryResponseSummary
        include Google::Apis::Core::Hashable
      
        # The baseline model version used to generate this summary. It is empty if a
        # baseline model was not used to generate this summary.
        # Corresponds to the JSON property `baselineModelVersion`
        # @return [String]
        attr_accessor :baseline_model_version
      
        # The summary content that is concatenated into one string.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # The summary content that is divided into sections. The key is the section's
        # name and the value is the section's content. There is no specific format for
        # the key or value.
        # Corresponds to the JSON property `textSections`
        # @return [Hash<String,String>]
        attr_accessor :text_sections
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @baseline_model_version = args[:baseline_model_version] if args.key?(:baseline_model_version)
          @text = args[:text] if args.key?(:text)
          @text_sections = args[:text_sections] if args.key?(:text_sections)
        end
      end
      
      # The request message for Conversations.GenerateSuggestions.
      class GoogleCloudDialogflowV2beta1GenerateSuggestionsRequest
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the latest conversation message for which the request is
        # triggered. Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        # Optional. A list of trigger events. Only generators configured in the
        # conversation_profile whose trigger_event is listed here will be triggered.
        # Corresponds to the JSON property `triggerEvents`
        # @return [Array<String>]
        attr_accessor :trigger_events
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
          @trigger_events = args[:trigger_events] if args.key?(:trigger_events)
        end
      end
      
      # The response message for Conversations.GenerateSuggestions.
      class GoogleCloudDialogflowV2beta1GenerateSuggestionsResponse
        include Google::Apis::Core::Hashable
      
        # The answers generated for the conversation based on context.
        # Corresponds to the JSON property `generatorSuggestionAnswers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GenerateSuggestionsResponseGeneratorSuggestionAnswer>]
        attr_accessor :generator_suggestion_answers
      
        # The name of the latest conversation message used as context for compiling
        # suggestion. Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generator_suggestion_answers = args[:generator_suggestion_answers] if args.key?(:generator_suggestion_answers)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # A GeneratorSuggestion answer.
      class GoogleCloudDialogflowV2beta1GenerateSuggestionsResponseGeneratorSuggestionAnswer
        include Google::Apis::Core::Hashable
      
        # Answer record that uniquely identifies the suggestion. This can be used to
        # provide suggestion feedback.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Suggestion generated using a Generator.
        # Corresponds to the JSON property `generatorSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorSuggestion]
        attr_accessor :generator_suggestion
      
        # The name of the generator used to generate this suggestion. Format: `projects//
        # locations//generators/`.
        # Corresponds to the JSON property `sourceGenerator`
        # @return [String]
        attr_accessor :source_generator
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @generator_suggestion = args[:generator_suggestion] if args.key?(:generator_suggestion)
          @source_generator = args[:source_generator] if args.key?(:source_generator)
        end
      end
      
      # LLM generator.
      class GoogleCloudDialogflowV2beta1Generator
        include Google::Apis::Core::Hashable
      
        # Agent Coaching context that customer can configure.
        # Corresponds to the JSON property `agentCoachingContext`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingContext]
        attr_accessor :agent_coaching_context
      
        # Output only. Creation time of this generator.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. Human readable description of the generator.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Free form generator context that customer can configure.
        # Corresponds to the JSON property `freeFormContext`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1FreeFormContext]
        attr_accessor :free_form_context
      
        # The parameters of inference.
        # Corresponds to the JSON property `inferenceParameter`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1InferenceParameter]
        attr_accessor :inference_parameter
      
        # Output only. Identifier. The resource name of the generator. Format: `projects/
        # /locations//generators/`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The published Large Language Model name. * To use the latest model
        # version, specify the model name without version number. Example: `text-bison` *
        # To use a stable model version, specify the version number as well. Example: `
        # text-bison@002`.
        # Corresponds to the JSON property `publishedModel`
        # @return [String]
        attr_accessor :published_model
      
        # Config for suggestion deduping. NEXT_ID: 3
        # Corresponds to the JSON property `suggestionDedupingConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestionDedupingConfig]
        attr_accessor :suggestion_deduping_config
      
        # Summarization context that customer can configure.
        # Corresponds to the JSON property `summarizationContext`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationContext]
        attr_accessor :summarization_context
      
        # Optional. Resource names of the tools that the generator can choose from.
        # Format: `projects//locations//tools/`.
        # Corresponds to the JSON property `tools`
        # @return [Array<String>]
        attr_accessor :tools
      
        # Optional. The trigger event of the generator. It defines when the generator is
        # triggered in a conversation.
        # Corresponds to the JSON property `triggerEvent`
        # @return [String]
        attr_accessor :trigger_event
      
        # Output only. Update time of this generator.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_coaching_context = args[:agent_coaching_context] if args.key?(:agent_coaching_context)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @free_form_context = args[:free_form_context] if args.key?(:free_form_context)
          @inference_parameter = args[:inference_parameter] if args.key?(:inference_parameter)
          @name = args[:name] if args.key?(:name)
          @published_model = args[:published_model] if args.key?(:published_model)
          @suggestion_deduping_config = args[:suggestion_deduping_config] if args.key?(:suggestion_deduping_config)
          @summarization_context = args[:summarization_context] if args.key?(:summarization_context)
          @tools = args[:tools] if args.key?(:tools)
          @trigger_event = args[:trigger_event] if args.key?(:trigger_event)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Represents evaluation result of a generator.
      class GoogleCloudDialogflowV2beta1GeneratorEvaluation
        include Google::Apis::Core::Hashable
      
        # Output only. Completion time of this generator evaluation.
        # Corresponds to the JSON property `completeTime`
        # @return [String]
        attr_accessor :complete_time
      
        # Output only. Creation time of this generator evaluation.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The display name of the generator evaluation. At most 64 bytes long.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # A common evalaution pipeline status.
        # Corresponds to the JSON property `evaluationStatus`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EvaluationStatus]
        attr_accessor :evaluation_status
      
        # Generator evaluation input config.
        # Corresponds to the JSON property `generatorEvaluationConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorEvaluationConfig]
        attr_accessor :generator_evaluation_config
      
        # LLM generator.
        # Corresponds to the JSON property `initialGenerator`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Generator]
        attr_accessor :initial_generator
      
        # Output only. Identifier. The resource name of the evaluation. Format: `
        # projects//locations//generators// evaluations/`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. A read only boolean field reflecting Zone Isolation status of the
        # model. The field is an aggregated value of ZI status of its underlying
        # dependencies. See more details in go/zicy-resource-placement#resource-status
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. A read only boolean field reflecting Zone Separation status of
        # the model. The field is an aggregated value of ZS status of its underlying
        # dependencies. See more details in go/zicy-resource-placement#resource-status
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Evaluation metrics for summarization generator.
        # Corresponds to the JSON property `summarizationMetrics`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetrics]
        attr_accessor :summarization_metrics
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @complete_time = args[:complete_time] if args.key?(:complete_time)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @evaluation_status = args[:evaluation_status] if args.key?(:evaluation_status)
          @generator_evaluation_config = args[:generator_evaluation_config] if args.key?(:generator_evaluation_config)
          @initial_generator = args[:initial_generator] if args.key?(:initial_generator)
          @name = args[:name] if args.key?(:name)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @summarization_metrics = args[:summarization_metrics] if args.key?(:summarization_metrics)
        end
      end
      
      # Generator evaluation input config.
      class GoogleCloudDialogflowV2beta1GeneratorEvaluationConfig
        include Google::Apis::Core::Hashable
      
        # Input data config details
        # Corresponds to the JSON property `inputDataConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorEvaluationConfigInputDataConfig]
        attr_accessor :input_data_config
      
        # Required. The output Cloud Storage bucket path to store eval files, e.g.
        # per_summary_accuracy_score report. This path is provided by customer and files
        # stored in it are visible to customer, no internal data should be stored in
        # this path.
        # Corresponds to the JSON property `outputGcsBucketPath`
        # @return [String]
        attr_accessor :output_gcs_bucket_path
      
        # Evaluation configs for summarization generator.
        # Corresponds to the JSON property `summarizationConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorEvaluationConfigSummarizationConfig]
        attr_accessor :summarization_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @input_data_config = args[:input_data_config] if args.key?(:input_data_config)
          @output_gcs_bucket_path = args[:output_gcs_bucket_path] if args.key?(:output_gcs_bucket_path)
          @summarization_config = args[:summarization_config] if args.key?(:summarization_config)
        end
      end
      
      # The distinctive configs for Agent Assist conversations as the conversation
      # source.
      class GoogleCloudDialogflowV2beta1GeneratorEvaluationConfigAgentAssistInputDataConfig
        include Google::Apis::Core::Hashable
      
        # Required. The end of the time range for conversations to be evaluated. Only
        # conversations ended at or before this timestamp will be sampled.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # Required. The start of the time range for conversations to be evaluated. Only
        # conversations created at or after this timestamp will be sampled.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_time = args[:end_time] if args.key?(:end_time)
          @start_time = args[:start_time] if args.key?(:start_time)
        end
      end
      
      # The distinctive configs for dataset as the conversation source.
      class GoogleCloudDialogflowV2beta1GeneratorEvaluationConfigDatasetInputDataConfig
        include Google::Apis::Core::Hashable
      
        # Required. The identifier of the dataset to be evaluated. Format: `projects//
        # locations//datasets/`.
        # Corresponds to the JSON property `dataset`
        # @return [String]
        attr_accessor :dataset
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dataset = args[:dataset] if args.key?(:dataset)
        end
      end
      
      # Input data config details
      class GoogleCloudDialogflowV2beta1GeneratorEvaluationConfigInputDataConfig
        include Google::Apis::Core::Hashable
      
        # The distinctive configs for Agent Assist conversations as the conversation
        # source.
        # Corresponds to the JSON property `agentAssistInputDataConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorEvaluationConfigAgentAssistInputDataConfig]
        attr_accessor :agent_assist_input_data_config
      
        # The distinctive configs for dataset as the conversation source.
        # Corresponds to the JSON property `datasetInputDataConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorEvaluationConfigDatasetInputDataConfig]
        attr_accessor :dataset_input_data_config
      
        # Optional. The end timestamp to fetch conversation data.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # Required. The source type of input data.
        # Corresponds to the JSON property `inputDataSourceType`
        # @return [String]
        attr_accessor :input_data_source_type
      
        # Optional. Whether the summary generation is allowed when the pre-existing
        # qualified summaries are insufficient to cover the sample size.
        # Corresponds to the JSON property `isSummaryGenerationAllowed`
        # @return [Boolean]
        attr_accessor :is_summary_generation_allowed
        alias_method :is_summary_generation_allowed?, :is_summary_generation_allowed
      
        # Optional. Desired number of conversation-summary pairs to be evaluated.
        # Corresponds to the JSON property `sampleSize`
        # @return [Fixnum]
        attr_accessor :sample_size
      
        # Optional. The start timestamp to fetch conversation data.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Optional. Option to control whether summaries are generated during evaluation.
        # Corresponds to the JSON property `summaryGenerationOption`
        # @return [String]
        attr_accessor :summary_generation_option
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_assist_input_data_config = args[:agent_assist_input_data_config] if args.key?(:agent_assist_input_data_config)
          @dataset_input_data_config = args[:dataset_input_data_config] if args.key?(:dataset_input_data_config)
          @end_time = args[:end_time] if args.key?(:end_time)
          @input_data_source_type = args[:input_data_source_type] if args.key?(:input_data_source_type)
          @is_summary_generation_allowed = args[:is_summary_generation_allowed] if args.key?(:is_summary_generation_allowed)
          @sample_size = args[:sample_size] if args.key?(:sample_size)
          @start_time = args[:start_time] if args.key?(:start_time)
          @summary_generation_option = args[:summary_generation_option] if args.key?(:summary_generation_option)
        end
      end
      
      # Evaluation configs for summarization generator.
      class GoogleCloudDialogflowV2beta1GeneratorEvaluationConfigSummarizationConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Version for summarization accuracy. This will determine the prompt
        # and model used at backend.
        # Corresponds to the JSON property `accuracyEvaluationVersion`
        # @return [String]
        attr_accessor :accuracy_evaluation_version
      
        # Optional. Version for summarization completeness. This will determine the
        # prompt and model used at backend.
        # Corresponds to the JSON property `completenessEvaluationVersion`
        # @return [String]
        attr_accessor :completeness_evaluation_version
      
        # Optional. Enable accuracy evaluation.
        # Corresponds to the JSON property `enableAccuracyEvaluation`
        # @return [Boolean]
        attr_accessor :enable_accuracy_evaluation
        alias_method :enable_accuracy_evaluation?, :enable_accuracy_evaluation
      
        # Optional. Enable completeness evaluation.
        # Corresponds to the JSON property `enableCompletenessEvaluation`
        # @return [Boolean]
        attr_accessor :enable_completeness_evaluation
        alias_method :enable_completeness_evaluation?, :enable_completeness_evaluation
      
        # Output only. Version for summarization evaluation.
        # Corresponds to the JSON property `evaluatorVersion`
        # @return [String]
        attr_accessor :evaluator_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @accuracy_evaluation_version = args[:accuracy_evaluation_version] if args.key?(:accuracy_evaluation_version)
          @completeness_evaluation_version = args[:completeness_evaluation_version] if args.key?(:completeness_evaluation_version)
          @enable_accuracy_evaluation = args[:enable_accuracy_evaluation] if args.key?(:enable_accuracy_evaluation)
          @enable_completeness_evaluation = args[:enable_completeness_evaluation] if args.key?(:enable_completeness_evaluation)
          @evaluator_version = args[:evaluator_version] if args.key?(:evaluator_version)
        end
      end
      
      # Suggestion generated using a Generator.
      class GoogleCloudDialogflowV2beta1GeneratorSuggestion
        include Google::Apis::Core::Hashable
      
        # Suggestion for coaching agents.
        # Corresponds to the JSON property `agentCoachingSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AgentCoachingSuggestion]
        attr_accessor :agent_coaching_suggestion
      
        # Suggestion generated using free form generator.
        # Corresponds to the JSON property `freeFormSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1FreeFormSuggestion]
        attr_accessor :free_form_suggestion
      
        # Suggested summary of the conversation.
        # Corresponds to the JSON property `summarySuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarySuggestion]
        attr_accessor :summary_suggestion
      
        # Optional. List of request and response for tool calls executed.
        # Corresponds to the JSON property `toolCallInfo`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorSuggestionToolCallInfo>]
        attr_accessor :tool_call_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_coaching_suggestion = args[:agent_coaching_suggestion] if args.key?(:agent_coaching_suggestion)
          @free_form_suggestion = args[:free_form_suggestion] if args.key?(:free_form_suggestion)
          @summary_suggestion = args[:summary_suggestion] if args.key?(:summary_suggestion)
          @tool_call_info = args[:tool_call_info] if args.key?(:tool_call_info)
        end
      end
      
      # Request and response for a tool call.
      class GoogleCloudDialogflowV2beta1GeneratorSuggestionToolCallInfo
        include Google::Apis::Core::Hashable
      
        # Represents a call of a specific tool's action with the specified inputs.
        # Corresponds to the JSON property `toolCall`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ToolCall]
        attr_accessor :tool_call
      
        # The result of calling a tool's action.
        # Corresponds to the JSON property `toolCallResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ToolCallResult]
        attr_accessor :tool_call_result
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tool_call = args[:tool_call] if args.key?(:tool_call)
          @tool_call_result = args[:tool_call_result] if args.key?(:tool_call_result)
        end
      end
      
      # Defines the Human Agent Assistant to connect to a conversation.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfig
        include Google::Apis::Core::Hashable
      
        # Detail human agent assistant config.
        # Corresponds to the JSON property `endUserSuggestionConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfig]
        attr_accessor :end_user_suggestion_config
      
        # Detail human agent assistant config.
        # Corresponds to the JSON property `humanAgentSuggestionConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfig]
        attr_accessor :human_agent_suggestion_config
      
        # Configuration for analyses to run on each conversation message.
        # Corresponds to the JSON property `messageAnalysisConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigMessageAnalysisConfig]
        attr_accessor :message_analysis_config
      
        # Defines notification behavior.
        # Corresponds to the JSON property `notificationConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1NotificationConfig]
        attr_accessor :notification_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_user_suggestion_config = args[:end_user_suggestion_config] if args.key?(:end_user_suggestion_config)
          @human_agent_suggestion_config = args[:human_agent_suggestion_config] if args.key?(:human_agent_suggestion_config)
          @message_analysis_config = args[:message_analysis_config] if args.key?(:message_analysis_config)
          @notification_config = args[:notification_config] if args.key?(:notification_config)
        end
      end
      
      # Custom conversation models used in agent assist feature. Supported feature:
      # ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY, CONVERSATION_SUMMARIZATION.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationModelConfig
        include Google::Apis::Core::Hashable
      
        # Version of current baseline model. It will be ignored if model is set. Valid
        # versions are: - Article Suggestion baseline model: - 0.9 - 1.0 (default) -
        # Summarization baseline model: - 1.0
        # Corresponds to the JSON property `baselineModelVersion`
        # @return [String]
        attr_accessor :baseline_model_version
      
        # Conversation model resource name. Format: `projects//conversationModels/`.
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @baseline_model_version = args[:baseline_model_version] if args.key?(:baseline_model_version)
          @model = args[:model] if args.key?(:model)
        end
      end
      
      # Config to process conversation.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationProcessConfig
        include Google::Apis::Core::Hashable
      
        # Number of recent non-small-talk sentences to use as context for article and
        # FAQ suggestion
        # Corresponds to the JSON property `recentSentencesCount`
        # @return [Fixnum]
        attr_accessor :recent_sentences_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @recent_sentences_count = args[:recent_sentences_count] if args.key?(:recent_sentences_count)
        end
      end
      
      # Configuration for analyses to run on each conversation message.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigMessageAnalysisConfig
        include Google::Apis::Core::Hashable
      
        # Enable entity extraction in conversation messages on [agent assist stage](
        # https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages).
        # If unspecified, defaults to false. Currently, this feature is not general
        # available, please contact Google to get access.
        # Corresponds to the JSON property `enableEntityExtraction`
        # @return [Boolean]
        attr_accessor :enable_entity_extraction
        alias_method :enable_entity_extraction?, :enable_entity_extraction
      
        # Enable sentiment analysis in conversation messages on [agent assist stage](
        # https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages).
        # If unspecified, defaults to false. Sentiment analysis inspects user input and
        # identifies the prevailing subjective opinion, especially to determine a user's
        # attitude as positive, negative, or neutral: https://cloud.google.com/natural-
        # language/docs/basics#sentiment_analysis For Participants.
        # StreamingAnalyzeContent method, result will be in
        # StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For
        # Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.
        # message.SentimentAnalysisResult For Conversations.ListMessages method, result
        # will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub
        # notification is configured, result will be in ConversationEvent.
        # new_message_payload.SentimentAnalysisResult.
        # Corresponds to the JSON property `enableSentimentAnalysis`
        # @return [Boolean]
        attr_accessor :enable_sentiment_analysis
        alias_method :enable_sentiment_analysis?, :enable_sentiment_analysis
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_entity_extraction = args[:enable_entity_extraction] if args.key?(:enable_entity_extraction)
          @enable_sentiment_analysis = args[:enable_sentiment_analysis] if args.key?(:enable_sentiment_analysis)
        end
      end
      
      # Detail human agent assistant config.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfig
        include Google::Apis::Core::Hashable
      
        # Optional. When disable_high_latency_features_sync_delivery is true and using
        # the AnalyzeContent API, we will not deliver the responses from high latency
        # features in the API response. The human_agent_assistant_config.
        # notification_config must be configured and enable_event_based_suggestion must
        # be set to true to receive the responses from high latency features in Pub/Sub.
        # High latency feature(s): KNOWLEDGE_ASSIST
        # Corresponds to the JSON property `disableHighLatencyFeaturesSyncDelivery`
        # @return [Boolean]
        attr_accessor :disable_high_latency_features_sync_delivery
        alias_method :disable_high_latency_features_sync_delivery?, :disable_high_latency_features_sync_delivery
      
        # Optional. If true, enable asynchronous execution of tools.
        # Corresponds to the JSON property `enableAsyncToolCall`
        # @return [Boolean]
        attr_accessor :enable_async_tool_call
        alias_method :enable_async_tool_call?, :enable_async_tool_call
      
        # Configuration of different suggestion features. One feature can have only one
        # config.
        # Corresponds to the JSON property `featureConfigs`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfig>]
        attr_accessor :feature_configs
      
        # Optional. List of various generator resource names used in the conversation
        # profile.
        # Corresponds to the JSON property `generators`
        # @return [Array<String>]
        attr_accessor :generators
      
        # If `group_suggestion_responses` is false, and there are multiple `
        # feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we
        # will try to deliver suggestions to customers as soon as we get new suggestion.
        # Different type of suggestions based on the same context will be in separate
        # Pub/Sub event or `StreamingAnalyzeContentResponse`. If `
        # group_suggestion_responses` set to true. All the suggestions to the same
        # participant based on the same context will be grouped into a single Pub/Sub
        # event or StreamingAnalyzeContentResponse.
        # Corresponds to the JSON property `groupSuggestionResponses`
        # @return [Boolean]
        attr_accessor :group_suggestion_responses
        alias_method :group_suggestion_responses?, :group_suggestion_responses
      
        # Optional. Enable skipping event based suggestion if the suggestion is empty.
        # For example, with this field disabled, Knowledge Assist feature sends a Pub/
        # Sub message when there are no suggestions. Enabling this field will change the
        # behavior to skip the Pub/Sub message in this situation.
        # Corresponds to the JSON property `skipEmptyEventBasedSuggestion`
        # @return [Boolean]
        attr_accessor :skip_empty_event_based_suggestion
        alias_method :skip_empty_event_based_suggestion?, :skip_empty_event_based_suggestion
      
        # Optional. If true, use unredacted transcript data (Supported features:
        # AI_COACH) and use unredacted ingested context (Supported features: All Agent
        # Assist features)
        # Corresponds to the JSON property `useUnredactedConversationData`
        # @return [Boolean]
        attr_accessor :use_unredacted_conversation_data
        alias_method :use_unredacted_conversation_data?, :use_unredacted_conversation_data
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disable_high_latency_features_sync_delivery = args[:disable_high_latency_features_sync_delivery] if args.key?(:disable_high_latency_features_sync_delivery)
          @enable_async_tool_call = args[:enable_async_tool_call] if args.key?(:enable_async_tool_call)
          @feature_configs = args[:feature_configs] if args.key?(:feature_configs)
          @generators = args[:generators] if args.key?(:generators)
          @group_suggestion_responses = args[:group_suggestion_responses] if args.key?(:group_suggestion_responses)
          @skip_empty_event_based_suggestion = args[:skip_empty_event_based_suggestion] if args.key?(:skip_empty_event_based_suggestion)
          @use_unredacted_conversation_data = args[:use_unredacted_conversation_data] if args.key?(:use_unredacted_conversation_data)
        end
      end
      
      # Config for suggestion features.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfig
        include Google::Apis::Core::Hashable
      
        # Custom conversation models used in agent assist feature. Supported feature:
        # ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY, CONVERSATION_SUMMARIZATION.
        # Corresponds to the JSON property `conversationModelConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationModelConfig]
        attr_accessor :conversation_model_config
      
        # Config to process conversation.
        # Corresponds to the JSON property `conversationProcessConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationProcessConfig]
        attr_accessor :conversation_process_config
      
        # Optional. Disable the logging of search queries sent by human agents. It can
        # prevent those queries from being stored at answer records. Supported features:
        # KNOWLEDGE_SEARCH.
        # Corresponds to the JSON property `disableAgentQueryLogging`
        # @return [Boolean]
        attr_accessor :disable_agent_query_logging
        alias_method :disable_agent_query_logging?, :disable_agent_query_logging
      
        # Optional. Enable including conversation context during query answer generation.
        # Supported features: KNOWLEDGE_SEARCH.
        # Corresponds to the JSON property `enableConversationAugmentedQuery`
        # @return [Boolean]
        attr_accessor :enable_conversation_augmented_query
        alias_method :enable_conversation_augmented_query?, :enable_conversation_augmented_query
      
        # Automatically iterates all participants and tries to compile suggestions.
        # Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST,
        # ENTITY_EXTRACTION, KNOWLEDGE_ASSIST.
        # Corresponds to the JSON property `enableEventBasedSuggestion`
        # @return [Boolean]
        attr_accessor :enable_event_based_suggestion
        alias_method :enable_event_based_suggestion?, :enable_event_based_suggestion
      
        # Optional. Enable query suggestion only. Supported features: KNOWLEDGE_ASSIST
        # Corresponds to the JSON property `enableQuerySuggestionOnly`
        # @return [Boolean]
        attr_accessor :enable_query_suggestion_only
        alias_method :enable_query_suggestion_only?, :enable_query_suggestion_only
      
        # Optional. Enable query suggestion even if we can't find its answer. By default,
        # queries are suggested only if we find its answer. Supported features:
        # KNOWLEDGE_ASSIST
        # Corresponds to the JSON property `enableQuerySuggestionWhenNoAnswer`
        # @return [Boolean]
        attr_accessor :enable_query_suggestion_when_no_answer
        alias_method :enable_query_suggestion_when_no_answer?, :enable_query_suggestion_when_no_answer
      
        # Optional. Enable returning detailed reasons for suggestion results. For
        # example, with this field disabled, Knowledge Search feature returns NotFound
        # error when no answer is found for the input query. Enabling this field will
        # change the behavior to return an OK response with detailed information
        # indicating the lack of results. Supported features: KNOWLEDGE_SEARCH,
        # KNOWLEDGE_ASSIST
        # Corresponds to the JSON property `enableResponseDebugInfo`
        # @return [Boolean]
        attr_accessor :enable_response_debug_info
        alias_method :enable_response_debug_info?, :enable_response_debug_info
      
        # Config for suggestion query.
        # Corresponds to the JSON property `queryConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfig]
        attr_accessor :query_config
      
        # Settings for Responsible AI checks.
        # Corresponds to the JSON property `raiSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1RaiSettings]
        attr_accessor :rai_settings
      
        # The type of Human Agent Assistant API suggestion to perform, and the maximum
        # number of results to return for that type. Multiple `Feature` objects can be
        # specified in the `features` list.
        # Corresponds to the JSON property `suggestionFeature`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestionFeature]
        attr_accessor :suggestion_feature
      
        # Settings of suggestion trigger.
        # Corresponds to the JSON property `suggestionTriggerSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionTriggerSettings]
        attr_accessor :suggestion_trigger_settings
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_model_config = args[:conversation_model_config] if args.key?(:conversation_model_config)
          @conversation_process_config = args[:conversation_process_config] if args.key?(:conversation_process_config)
          @disable_agent_query_logging = args[:disable_agent_query_logging] if args.key?(:disable_agent_query_logging)
          @enable_conversation_augmented_query = args[:enable_conversation_augmented_query] if args.key?(:enable_conversation_augmented_query)
          @enable_event_based_suggestion = args[:enable_event_based_suggestion] if args.key?(:enable_event_based_suggestion)
          @enable_query_suggestion_only = args[:enable_query_suggestion_only] if args.key?(:enable_query_suggestion_only)
          @enable_query_suggestion_when_no_answer = args[:enable_query_suggestion_when_no_answer] if args.key?(:enable_query_suggestion_when_no_answer)
          @enable_response_debug_info = args[:enable_response_debug_info] if args.key?(:enable_response_debug_info)
          @query_config = args[:query_config] if args.key?(:query_config)
          @rai_settings = args[:rai_settings] if args.key?(:rai_settings)
          @suggestion_feature = args[:suggestion_feature] if args.key?(:suggestion_feature)
          @suggestion_trigger_settings = args[:suggestion_trigger_settings] if args.key?(:suggestion_trigger_settings)
        end
      end
      
      # Config for suggestion query.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfig
        include Google::Apis::Core::Hashable
      
        # Confidence threshold of query result. Agent Assist gives each suggestion a
        # score in the range [0.0, 1.0], based on the relevance between the suggestion
        # and the current conversation context. A score of 0.0 has no relevance, while a
        # score of 1.0 has high relevance. Only suggestions with a score greater than or
        # equal to the value of this field are included in the results. For a baseline
        # model (the default), the recommended value is in the range [0.05, 0.1]. For a
        # custom model, there is no recommended value. Tune this value by starting from
        # a very low value and slowly increasing until you have desired results. If this
        # field is not set, it is default to 0.0, which means that all suggestions are
        # returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY,
        # SMART_COMPOSE, KNOWLEDGE_SEARCH, KNOWLEDGE_ASSIST, ENTITY_EXTRACTION.
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # Settings that determine how to filter recent conversation context when
        # generating suggestions.
        # Corresponds to the JSON property `contextFilterSettings`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettings]
        attr_accessor :context_filter_settings
      
        # Optional. The number of recent messages to include in the context. Supported
        # features: KNOWLEDGE_ASSIST.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST,
        # ENTITY_EXTRACTION.
        # Corresponds to the JSON property `dialogflowQuerySource`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySource]
        attr_accessor :dialogflow_query_source
      
        # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE.
        # Corresponds to the JSON property `documentQuerySource`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySource]
        attr_accessor :document_query_source
      
        # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ.
        # Corresponds to the JSON property `knowledgeBaseQuerySource`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySource]
        attr_accessor :knowledge_base_query_source
      
        # Maximum number of results to return. Currently, if unset, defaults to 10. And
        # the max number is 20.
        # Corresponds to the JSON property `maxResults`
        # @return [Fixnum]
        attr_accessor :max_results
      
        # Custom sections to return when requesting a summary of a conversation. This is
        # only supported when `baseline_model_version` == '2.0'. Supported features:
        # CONVERSATION_SUMMARIZATION, CONVERSATION_SUMMARIZATION_VOICE.
        # Corresponds to the JSON property `sections`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigSections]
        attr_accessor :sections
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @context_filter_settings = args[:context_filter_settings] if args.key?(:context_filter_settings)
          @context_size = args[:context_size] if args.key?(:context_size)
          @dialogflow_query_source = args[:dialogflow_query_source] if args.key?(:dialogflow_query_source)
          @document_query_source = args[:document_query_source] if args.key?(:document_query_source)
          @knowledge_base_query_source = args[:knowledge_base_query_source] if args.key?(:knowledge_base_query_source)
          @max_results = args[:max_results] if args.key?(:max_results)
          @sections = args[:sections] if args.key?(:sections)
        end
      end
      
      # Settings that determine how to filter recent conversation context when
      # generating suggestions.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettings
        include Google::Apis::Core::Hashable
      
        # If set to true, the last message from virtual agent (hand off message) and the
        # message before it (trigger message of hand off) are dropped.
        # Corresponds to the JSON property `dropHandoffMessages`
        # @return [Boolean]
        attr_accessor :drop_handoff_messages
        alias_method :drop_handoff_messages?, :drop_handoff_messages
      
        # If set to true, all messages from ivr stage are dropped.
        # Corresponds to the JSON property `dropIvrMessages`
        # @return [Boolean]
        attr_accessor :drop_ivr_messages
        alias_method :drop_ivr_messages?, :drop_ivr_messages
      
        # If set to true, all messages from virtual agent are dropped.
        # Corresponds to the JSON property `dropVirtualAgentMessages`
        # @return [Boolean]
        attr_accessor :drop_virtual_agent_messages
        alias_method :drop_virtual_agent_messages?, :drop_virtual_agent_messages
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @drop_handoff_messages = args[:drop_handoff_messages] if args.key?(:drop_handoff_messages)
          @drop_ivr_messages = args[:drop_ivr_messages] if args.key?(:drop_ivr_messages)
          @drop_virtual_agent_messages = args[:drop_virtual_agent_messages] if args.key?(:drop_virtual_agent_messages)
        end
      end
      
      # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST,
      # ENTITY_EXTRACTION.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySource
        include Google::Apis::Core::Hashable
      
        # Required. The name of a dialogflow virtual agent used for end user side intent
        # detection and suggestion. Format: `projects//locations//agent`. When multiple
        # agents are allowed in the same Dialogflow project.
        # Corresponds to the JSON property `agent`
        # @return [String]
        attr_accessor :agent
      
        # The configuration used for human agent side Dialogflow assist suggestion.
        # Corresponds to the JSON property `humanAgentSideConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfig]
        attr_accessor :human_agent_side_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent = args[:agent] if args.key?(:agent)
          @human_agent_side_config = args[:human_agent_side_config] if args.key?(:human_agent_side_config)
        end
      end
      
      # The configuration used for human agent side Dialogflow assist suggestion.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfig
        include Google::Apis::Core::Hashable
      
        # Optional. The name of a dialogflow virtual agent used for intent detection and
        # suggestion triggered by human agent. Format: `projects//locations//agent`.
        # Corresponds to the JSON property `agent`
        # @return [String]
        attr_accessor :agent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent = args[:agent] if args.key?(:agent)
        end
      end
      
      # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySource
        include Google::Apis::Core::Hashable
      
        # Required. Knowledge documents to query from. Format: `projects//locations//
        # knowledgeBases//documents/`. Currently, only one document is supported.
        # Corresponds to the JSON property `documents`
        # @return [Array<String>]
        attr_accessor :documents
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @documents = args[:documents] if args.key?(:documents)
        end
      end
      
      # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySource
        include Google::Apis::Core::Hashable
      
        # Required. Knowledge bases to query. Format: `projects//locations//
        # knowledgeBases/`. Currently, only one knowledge base is supported.
        # Corresponds to the JSON property `knowledgeBases`
        # @return [Array<String>]
        attr_accessor :knowledge_bases
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @knowledge_bases = args[:knowledge_bases] if args.key?(:knowledge_bases)
        end
      end
      
      # Custom sections to return when requesting a summary of a conversation. This is
      # only supported when `baseline_model_version` == '2.0'. Supported features:
      # CONVERSATION_SUMMARIZATION, CONVERSATION_SUMMARIZATION_VOICE.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigSections
        include Google::Apis::Core::Hashable
      
        # The selected sections chosen to return when requesting a summary of a
        # conversation. A duplicate selected section will be treated as a single
        # selected section. If section types are not provided, the default will be `
        # SITUATION, ACTION, RESULT`.
        # Corresponds to the JSON property `sectionTypes`
        # @return [Array<String>]
        attr_accessor :section_types
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @section_types = args[:section_types] if args.key?(:section_types)
        end
      end
      
      # Settings of suggestion trigger.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionTriggerSettings
        include Google::Apis::Core::Hashable
      
        # Do not trigger if last utterance is small talk.
        # Corresponds to the JSON property `noSmallTalk`
        # @return [Boolean]
        attr_accessor :no_small_talk
        alias_method :no_small_talk?, :no_small_talk
      
        # Only trigger suggestion if participant role of last utterance is END_USER.
        # Corresponds to the JSON property `onlyEndUser`
        # @return [Boolean]
        attr_accessor :only_end_user
        alias_method :only_end_user?, :only_end_user
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @no_small_talk = args[:no_small_talk] if args.key?(:no_small_talk)
          @only_end_user = args[:only_end_user] if args.key?(:only_end_user)
        end
      end
      
      # Output only. Represents a notification sent to Pub/Sub subscribers for agent
      # assistant events in a specific conversation.
      class GoogleCloudDialogflowV2beta1HumanAgentAssistantEvent
        include Google::Apis::Core::Hashable
      
        # The conversation this notification refers to. Format: `projects//conversations/
        # `.
        # Corresponds to the JSON property `conversation`
        # @return [String]
        attr_accessor :conversation
      
        # The participant that the suggestion is compiled for. And This field is used to
        # call Participants.ListSuggestions API. Format: `projects//conversations//
        # participants/`. It will not be set in legacy workflow.
        # HumanAgentAssistantConfig.name for more information.
        # Corresponds to the JSON property `participant`
        # @return [String]
        attr_accessor :participant
      
        # The suggestion results payload that this notification refers to. It will only
        # be set when HumanAgentAssistantConfig.SuggestionConfig.
        # group_suggestion_responses sets to true.
        # Corresponds to the JSON property `suggestionResults`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestionResult>]
        attr_accessor :suggestion_results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation = args[:conversation] if args.key?(:conversation)
          @participant = args[:participant] if args.key?(:participant)
          @suggestion_results = args[:suggestion_results] if args.key?(:suggestion_results)
        end
      end
      
      # Defines the hand off to a live agent, typically on which external agent
      # service provider to connect to a conversation. Currently, this feature is not
      # general available, please contact Google to get access.
      class GoogleCloudDialogflowV2beta1HumanAgentHandoffConfig
        include Google::Apis::Core::Hashable
      
        # Configuration specific to [LivePerson](https://www.liveperson.com).
        # Corresponds to the JSON property `livePersonConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigLivePersonConfig]
        attr_accessor :live_person_config
      
        # Configuration specific to Salesforce Live Agent.
        # Corresponds to the JSON property `salesforceLiveAgentConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigSalesforceLiveAgentConfig]
        attr_accessor :salesforce_live_agent_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @live_person_config = args[:live_person_config] if args.key?(:live_person_config)
          @salesforce_live_agent_config = args[:salesforce_live_agent_config] if args.key?(:salesforce_live_agent_config)
        end
      end
      
      # Configuration specific to [LivePerson](https://www.liveperson.com).
      class GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigLivePersonConfig
        include Google::Apis::Core::Hashable
      
        # Required. Account number of the LivePerson account to connect. This is the
        # account number you input at the login page.
        # Corresponds to the JSON property `accountNumber`
        # @return [String]
        attr_accessor :account_number
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @account_number = args[:account_number] if args.key?(:account_number)
        end
      end
      
      # Configuration specific to Salesforce Live Agent.
      class GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigSalesforceLiveAgentConfig
        include Google::Apis::Core::Hashable
      
        # Required. Live Agent chat button ID.
        # Corresponds to the JSON property `buttonId`
        # @return [String]
        attr_accessor :button_id
      
        # Required. Live Agent deployment ID.
        # Corresponds to the JSON property `deploymentId`
        # @return [String]
        attr_accessor :deployment_id
      
        # Required. Domain of the Live Agent endpoint for this agent. You can find the
        # endpoint URL in the `Live Agent settings` page. For example if URL has the
        # form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.
        # la4-c2-phx.salesforceliveagent.com.
        # Corresponds to the JSON property `endpointDomain`
        # @return [String]
        attr_accessor :endpoint_domain
      
        # Required. The organization ID of the Salesforce account.
        # Corresponds to the JSON property `organizationId`
        # @return [String]
        attr_accessor :organization_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @button_id = args[:button_id] if args.key?(:button_id)
          @deployment_id = args[:deployment_id] if args.key?(:deployment_id)
          @endpoint_domain = args[:endpoint_domain] if args.key?(:endpoint_domain)
          @organization_id = args[:organization_id] if args.key?(:organization_id)
        end
      end
      
      # The request message for Agents.ImportAgent.
      class GoogleCloudDialogflowV2beta1ImportAgentRequest
        include Google::Apis::Core::Hashable
      
        # Zip compressed raw byte content for agent.
        # Corresponds to the JSON property `agentContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :agent_content
      
        # The URI to a Google Cloud Storage file containing the agent to import. Note:
        # The URI must start with "gs://". Dialogflow performs a read operation for the
        # Cloud Storage object on the caller's behalf, so your request authentication
        # must have read permissions for the object. For more information, see [
        # Dialogflow access control](https://cloud.google.com/dialogflow/cx/docs/concept/
        # access-control#storage).
        # Corresponds to the JSON property `agentUri`
        # @return [String]
        attr_accessor :agent_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_content = args[:agent_content] if args.key?(:agent_content)
          @agent_uri = args[:agent_uri] if args.key?(:agent_uri)
        end
      end
      
      # The template used for importing documents.
      class GoogleCloudDialogflowV2beta1ImportDocumentTemplate
        include Google::Apis::Core::Hashable
      
        # Required. The knowledge type of document content.
        # Corresponds to the JSON property `knowledgeTypes`
        # @return [Array<String>]
        attr_accessor :knowledge_types
      
        # Metadata for the document. The metadata supports arbitrary key-value pairs.
        # Suggested use cases include storing a document's title, an external URL
        # distinct from the document's content_uri, etc. The max size of a `key` or a `
        # value` of the metadata is 1024 bytes.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,String>]
        attr_accessor :metadata
      
        # Required. The MIME type of the document.
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @knowledge_types = args[:knowledge_types] if args.key?(:knowledge_types)
          @metadata = args[:metadata] if args.key?(:metadata)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # Request message for Documents.ImportDocuments.
      class GoogleCloudDialogflowV2beta1ImportDocumentsRequest
        include Google::Apis::Core::Hashable
      
        # The template used for importing documents.
        # Corresponds to the JSON property `documentTemplate`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ImportDocumentTemplate]
        attr_accessor :document_template
      
        # Google Cloud Storage locations for the inputs.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GcsSources]
        attr_accessor :gcs_source
      
        # Whether to import custom metadata from Google Cloud Storage. Only valid when
        # the document source is Google Cloud Storage URI.
        # Corresponds to the JSON property `importGcsCustomMetadata`
        # @return [Boolean]
        attr_accessor :import_gcs_custom_metadata
        alias_method :import_gcs_custom_metadata?, :import_gcs_custom_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @document_template = args[:document_template] if args.key?(:document_template)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
          @import_gcs_custom_metadata = args[:import_gcs_custom_metadata] if args.key?(:import_gcs_custom_metadata)
        end
      end
      
      # Response message for Documents.ImportDocuments.
      class GoogleCloudDialogflowV2beta1ImportDocumentsResponse
        include Google::Apis::Core::Hashable
      
        # Includes details about skipped documents or any other warnings.
        # Corresponds to the JSON property `warnings`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleRpcStatus>]
        attr_accessor :warnings
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @warnings = args[:warnings] if args.key?(:warnings)
        end
      end
      
      # The parameters of inference.
      class GoogleCloudDialogflowV2beta1InferenceParameter
        include Google::Apis::Core::Hashable
      
        # Optional. Maximum number of the output tokens for the generator.
        # Corresponds to the JSON property `maxOutputTokens`
        # @return [Fixnum]
        attr_accessor :max_output_tokens
      
        # Optional. Controls the randomness of LLM predictions. Low temperature = less
        # random. High temperature = more random. If unset (or 0), uses a default value
        # of 0.
        # Corresponds to the JSON property `temperature`
        # @return [Float]
        attr_accessor :temperature
      
        # Optional. Top-k changes how the model selects tokens for output. A top-k of 1
        # means the selected token is the most probable among all tokens in the model's
        # vocabulary (also called greedy decoding), while a top-k of 3 means that the
        # next token is selected from among the 3 most probable tokens (using
        # temperature). For each token selection step, the top K tokens with the highest
        # probabilities are sampled. Then tokens are further filtered based on topP with
        # the final token selected using temperature sampling. Specify a lower value for
        # less random responses and a higher value for more random responses. Acceptable
        # value is [1, 40], default to 40.
        # Corresponds to the JSON property `topK`
        # @return [Fixnum]
        attr_accessor :top_k
      
        # Optional. Top-p changes how the model selects tokens for output. Tokens are
        # selected from most K (see topK parameter) probable to least until the sum of
        # their probabilities equals the top-p value. For example, if tokens A, B, and C
        # have a probability of 0.3, 0.2, and 0.1 and the top-p value is 0.5, then the
        # model will select either A or B as the next token (using temperature) and
        # doesn't consider C. The default top-p value is 0.95. Specify a lower value for
        # less random responses and a higher value for more random responses. Acceptable
        # value is [0.0, 1.0], default to 0.95.
        # Corresponds to the JSON property `topP`
        # @return [Float]
        attr_accessor :top_p
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_output_tokens = args[:max_output_tokens] if args.key?(:max_output_tokens)
          @temperature = args[:temperature] if args.key?(:temperature)
          @top_k = args[:top_k] if args.key?(:top_k)
          @top_p = args[:top_p] if args.key?(:top_p)
        end
      end
      
      # The request message for ConversationsService.IngestContextReferences.
      class GoogleCloudDialogflowV2beta1IngestContextReferencesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The context references to ingest. The key is the name of the context
        # reference and the value contains the contents of the context reference. The
        # key is used to incorporate ingested context references to enhance the
        # generator.
        # Corresponds to the JSON property `contextReferences`
        # @return [Hash<String,Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationContextReference>]
        attr_accessor :context_references
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_references = args[:context_references] if args.key?(:context_references)
        end
      end
      
      # The response message for ConversationsService.IngestContextReferences.
      class GoogleCloudDialogflowV2beta1IngestContextReferencesResponse
        include Google::Apis::Core::Hashable
      
        # All context references ingested.
        # Corresponds to the JSON property `ingestedContextReferences`
        # @return [Hash<String,Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationContextReference>]
        attr_accessor :ingested_context_references
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @ingested_context_references = args[:ingested_context_references] if args.key?(:ingested_context_references)
        end
      end
      
      # Metadata for initializing a location-level encryption specification.
      class GoogleCloudDialogflowV2beta1InitializeEncryptionSpecMetadata
        include Google::Apis::Core::Hashable
      
        # The request to initialize a location-level encryption specification.
        # Corresponds to the JSON property `request`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1InitializeEncryptionSpecRequest]
        attr_accessor :request
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @request = args[:request] if args.key?(:request)
        end
      end
      
      # The request to initialize a location-level encryption specification.
      class GoogleCloudDialogflowV2beta1InitializeEncryptionSpecRequest
        include Google::Apis::Core::Hashable
      
        # A customer-managed encryption key specification that can be applied to all
        # created resources (e.g. Conversation).
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EncryptionSpec]
        attr_accessor :encryption_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
        end
      end
      
      # Instructs the speech recognizer on how to process the audio content.
      class GoogleCloudDialogflowV2beta1InputAudioConfig
        include Google::Apis::Core::Hashable
      
        # Required. Audio encoding of the audio content to process.
        # Corresponds to the JSON property `audioEncoding`
        # @return [String]
        attr_accessor :audio_encoding
      
        # Configuration of the barge-in behavior. Barge-in instructs the API to return a
        # detected utterance at a proper time while the client is playing back the
        # response audio from a previous request. When the client sees the utterance, it
        # should stop the playback and immediately get ready for receiving the responses
        # for the current request. The barge-in handling requires the client to start
        # streaming audio input as soon as it starts playing back the audio from the
        # previous response. The playback is modeled into two phases: * No barge-in
        # phase: which goes first and during which speech detection should not be
        # carried out. * Barge-in phase: which follows the no barge-in phase and during
        # which the API starts speech detection and may inform the client that an
        # utterance has been detected. Note that no-speech event is not expected in this
        # phase. The client provides this configuration in terms of the durations of
        # those two phases. The durations are measured in terms of the audio length from
        # the start of the input audio. The flow goes like below: ``` --> Time without
        # speech detection | utterance only | utterance or no-speech event | | +---------
        # ----+ | +------------+ | +---------------+ ----------+ no barge-in +-|-+ barge-
        # in +-|-+ normal period +----------- +-------------+ | +------------+ | +-------
        # --------+ ``` No-speech event is a response with END_OF_UTTERANCE without any
        # transcript following up.
        # Corresponds to the JSON property `bargeInConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1BargeInConfig]
        attr_accessor :barge_in_config
      
        # If set, use this no-speech timeout when the agent does not provide a no-speech
        # timeout itself.
        # Corresponds to the JSON property `defaultNoSpeechTimeout`
        # @return [String]
        attr_accessor :default_no_speech_timeout
      
        # Only used in Participants.AnalyzeContent and Participants.
        # StreamingAnalyzeContent. If `false` and recognition doesn't return any result,
        # trigger `NO_SPEECH_RECOGNIZED` event to Dialogflow agent.
        # Corresponds to the JSON property `disableNoSpeechRecognizedEvent`
        # @return [Boolean]
        attr_accessor :disable_no_speech_recognized_event
        alias_method :disable_no_speech_recognized_event?, :disable_no_speech_recognized_event
      
        # Enable automatic punctuation option at the speech backend.
        # Corresponds to the JSON property `enableAutomaticPunctuation`
        # @return [Boolean]
        attr_accessor :enable_automatic_punctuation
        alias_method :enable_automatic_punctuation?, :enable_automatic_punctuation
      
        # If `true`, Dialogflow returns SpeechWordInfo in StreamingRecognitionResult
        # with information about the recognized speech words, e.g. start and end time
        # offsets. If false or unspecified, Speech doesn't return any word-level
        # information.
        # Corresponds to the JSON property `enableWordInfo`
        # @return [Boolean]
        attr_accessor :enable_word_info
        alias_method :enable_word_info?, :enable_word_info
      
        # Required. The language of the supplied audio. Dialogflow does not do
        # translations. See [Language Support](https://cloud.google.com/dialogflow/docs/
        # reference/language) for a list of the currently supported language codes. Note
        # that queries in the same session do not necessarily need to specify the same
        # language. If not set, the language is inferred from the ConversationProfile.
        # stt_config.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Optional. Which Speech model to select for the given request. For more
        # information, see [Speech models](https://cloud.google.com/dialogflow/es/docs/
        # speech-models).
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Which variant of the Speech model to use.
        # Corresponds to the JSON property `modelVariant`
        # @return [String]
        attr_accessor :model_variant
      
        # If `true`, the request will opt out for STT conformer model migration. This
        # field will be deprecated once force migration takes place in June 2024. Please
        # refer to [Dialogflow ES Speech model migration](https://cloud.google.com/
        # dialogflow/es/docs/speech-model-migration).
        # Corresponds to the JSON property `optOutConformerModelMigration`
        # @return [Boolean]
        attr_accessor :opt_out_conformer_model_migration
        alias_method :opt_out_conformer_model_migration?, :opt_out_conformer_model_migration
      
        # A list of strings containing words and phrases that the speech recognizer
        # should recognize with higher likelihood. See [the Cloud Speech documentation](
        # https://cloud.google.com/speech-to-text/docs/basics#phrase-hints) for more
        # details. This field is deprecated. Please use [`speech_contexts`]() instead.
        # If you specify both [`phrase_hints`]() and [`speech_contexts`](), Dialogflow
        # will treat the [`phrase_hints`]() as a single additional [`SpeechContext`]().
        # Corresponds to the JSON property `phraseHints`
        # @return [Array<String>]
        attr_accessor :phrase_hints
      
        # A collection of phrase set resources to use for speech adaptation.
        # Corresponds to the JSON property `phraseSets`
        # @return [Array<String>]
        attr_accessor :phrase_sets
      
        # Required. Sample rate (in Hertz) of the audio content sent in the query. Refer
        # to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/
        # docs/basics) for more details.
        # Corresponds to the JSON property `sampleRateHertz`
        # @return [Fixnum]
        attr_accessor :sample_rate_hertz
      
        # If `false` (default), recognition does not cease until the client closes the
        # stream. If `true`, the recognizer will detect a single spoken utterance in
        # input audio. Recognition ceases when it detects the audio's voice has stopped
        # or paused. In this case, once a detected intent is received, the client should
        # close the stream and start a new request with a new stream as needed. Note:
        # This setting is relevant only for streaming methods. Note: When specified,
        # InputAudioConfig.single_utterance takes precedence over
        # StreamingDetectIntentRequest.single_utterance.
        # Corresponds to the JSON property `singleUtterance`
        # @return [Boolean]
        attr_accessor :single_utterance
        alias_method :single_utterance?, :single_utterance
      
        # Context information to assist speech recognition. See [the Cloud Speech
        # documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-
        # hints) for more details.
        # Corresponds to the JSON property `speechContexts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SpeechContext>]
        attr_accessor :speech_contexts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_encoding = args[:audio_encoding] if args.key?(:audio_encoding)
          @barge_in_config = args[:barge_in_config] if args.key?(:barge_in_config)
          @default_no_speech_timeout = args[:default_no_speech_timeout] if args.key?(:default_no_speech_timeout)
          @disable_no_speech_recognized_event = args[:disable_no_speech_recognized_event] if args.key?(:disable_no_speech_recognized_event)
          @enable_automatic_punctuation = args[:enable_automatic_punctuation] if args.key?(:enable_automatic_punctuation)
          @enable_word_info = args[:enable_word_info] if args.key?(:enable_word_info)
          @language_code = args[:language_code] if args.key?(:language_code)
          @model = args[:model] if args.key?(:model)
          @model_variant = args[:model_variant] if args.key?(:model_variant)
          @opt_out_conformer_model_migration = args[:opt_out_conformer_model_migration] if args.key?(:opt_out_conformer_model_migration)
          @phrase_hints = args[:phrase_hints] if args.key?(:phrase_hints)
          @phrase_sets = args[:phrase_sets] if args.key?(:phrase_sets)
          @sample_rate_hertz = args[:sample_rate_hertz] if args.key?(:sample_rate_hertz)
          @single_utterance = args[:single_utterance] if args.key?(:single_utterance)
          @speech_contexts = args[:speech_contexts] if args.key?(:speech_contexts)
        end
      end
      
      # An intent categorizes an end-user's intention for one conversation turn. For
      # each agent, you define many intents, where your combined intents can handle a
      # complete conversation. When an end-user writes or says something, referred to
      # as an end-user expression or end-user input, Dialogflow matches the end-user
      # input to the best intent in your agent. Matching an intent is also known as
      # intent classification. For more information, see the [intent guide](https://
      # cloud.google.com/dialogflow/docs/intents-overview).
      class GoogleCloudDialogflowV2beta1Intent
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the action associated with the intent. Note: The action
        # name must not contain whitespaces.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # Optional. The list of platforms for which the first responses will be copied
        # from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
        # Corresponds to the JSON property `defaultResponsePlatforms`
        # @return [Array<String>]
        attr_accessor :default_response_platforms
      
        # Required. The name of this intent.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. Indicates that this intent ends an interaction. Some integrations (e.
        # g., Actions on Google or Dialogflow phone gateway) use this information to
        # close interaction with an end user. Default is false.
        # Corresponds to the JSON property `endInteraction`
        # @return [Boolean]
        attr_accessor :end_interaction
        alias_method :end_interaction?, :end_interaction
      
        # Optional. The collection of event names that trigger the intent. If the
        # collection of input contexts is not empty, all of the contexts must be present
        # in the active user session for an event to trigger this intent. Event names
        # are limited to 150 characters.
        # Corresponds to the JSON property `events`
        # @return [Array<String>]
        attr_accessor :events
      
        # Output only. Information about all followup intents that have this intent as a
        # direct or indirect parent. We populate this field only in the output.
        # Corresponds to the JSON property `followupIntentInfo`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentFollowupIntentInfo>]
        attr_accessor :followup_intent_info
      
        # Optional. The list of context names required for this intent to be triggered.
        # Formats: - `projects//agent/sessions/-/contexts/` - `projects//locations//
        # agent/sessions/-/contexts/`
        # Corresponds to the JSON property `inputContextNames`
        # @return [Array<String>]
        attr_accessor :input_context_names
      
        # Optional. Indicates whether this is a fallback intent.
        # Corresponds to the JSON property `isFallback`
        # @return [Boolean]
        attr_accessor :is_fallback
        alias_method :is_fallback?, :is_fallback
      
        # Optional. Indicates that a live agent should be brought in to handle the
        # interaction with the user. In most cases, when you set this flag to true, you
        # would also want to set end_interaction to true as well. Default is false.
        # Corresponds to the JSON property `liveAgentHandoff`
        # @return [Boolean]
        attr_accessor :live_agent_handoff
        alias_method :live_agent_handoff?, :live_agent_handoff
      
        # Optional. The collection of rich messages corresponding to the `Response`
        # field in the Dialogflow console.
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessage>]
        attr_accessor :messages
      
        # Optional. Indicates whether Machine Learning is disabled for the intent. Note:
        # If `ml_disabled` setting is set to true, then this intent is not taken into
        # account during inference in `ML ONLY` match mode. Also, auto-markup in the UI
        # is turned off.
        # Corresponds to the JSON property `mlDisabled`
        # @return [Boolean]
        attr_accessor :ml_disabled
        alias_method :ml_disabled?, :ml_disabled
      
        # Optional. Indicates whether Machine Learning is enabled for the intent. Note:
        # If `ml_enabled` setting is set to false, then this intent is not taken into
        # account during inference in `ML ONLY` match mode. Also, auto-markup in the UI
        # is turned off. DEPRECATED! Please use `ml_disabled` field instead. NOTE: If
        # both `ml_enabled` and `ml_disabled` are either not set or false, then the
        # default value is determined as follows: - Before April 15th, 2018 the default
        # is: ml_enabled = false / ml_disabled = true. - After April 15th, 2018 the
        # default is: ml_enabled = true / ml_disabled = false.
        # Corresponds to the JSON property `mlEnabled`
        # @return [Boolean]
        attr_accessor :ml_enabled
        alias_method :ml_enabled?, :ml_enabled
      
        # Optional. The unique identifier of this intent. Required for Intents.
        # UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `
        # projects//agent/intents/` - `projects//locations//agent/intents/`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The collection of contexts that are activated when the intent is
        # matched. Context messages in this collection should not set the parameters
        # field. Setting the `lifespan_count` to 0 will reset the context when the
        # intent is matched. Format: `projects//agent/sessions/-/contexts/`.
        # Corresponds to the JSON property `outputContexts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Context>]
        attr_accessor :output_contexts
      
        # Optional. The collection of parameters associated with the intent.
        # Corresponds to the JSON property `parameters`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentParameter>]
        attr_accessor :parameters
      
        # Optional. The unique identifier of the parent intent in the chain of followup
        # intents. You can set this field when creating an intent, for example with
        # CreateIntent or BatchUpdateIntents, in order to make this intent a followup
        # intent. It identifies the parent followup intent. Format: `projects//agent/
        # intents/`.
        # Corresponds to the JSON property `parentFollowupIntentName`
        # @return [String]
        attr_accessor :parent_followup_intent_name
      
        # Optional. The priority of this intent. Higher numbers represent higher
        # priorities. - If the supplied value is unspecified or 0, the service
        # translates the value to 500,000, which corresponds to the `Normal` priority in
        # the console. - If the supplied value is negative, the intent is ignored in
        # runtime detect intent requests.
        # Corresponds to the JSON property `priority`
        # @return [Fixnum]
        attr_accessor :priority
      
        # Optional. Indicates whether to delete all contexts in the current session when
        # this intent is matched.
        # Corresponds to the JSON property `resetContexts`
        # @return [Boolean]
        attr_accessor :reset_contexts
        alias_method :reset_contexts?, :reset_contexts
      
        # Output only. The unique identifier of the root intent in the chain of followup
        # intents. It identifies the correct followup intents chain for this intent.
        # Format: `projects//agent/intents/`.
        # Corresponds to the JSON property `rootFollowupIntentName`
        # @return [String]
        attr_accessor :root_followup_intent_name
      
        # Optional. The collection of examples that the agent is trained on.
        # Corresponds to the JSON property `trainingPhrases`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentTrainingPhrase>]
        attr_accessor :training_phrases
      
        # Optional. Indicates whether webhooks are enabled for the intent.
        # Corresponds to the JSON property `webhookState`
        # @return [String]
        attr_accessor :webhook_state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @default_response_platforms = args[:default_response_platforms] if args.key?(:default_response_platforms)
          @display_name = args[:display_name] if args.key?(:display_name)
          @end_interaction = args[:end_interaction] if args.key?(:end_interaction)
          @events = args[:events] if args.key?(:events)
          @followup_intent_info = args[:followup_intent_info] if args.key?(:followup_intent_info)
          @input_context_names = args[:input_context_names] if args.key?(:input_context_names)
          @is_fallback = args[:is_fallback] if args.key?(:is_fallback)
          @live_agent_handoff = args[:live_agent_handoff] if args.key?(:live_agent_handoff)
          @messages = args[:messages] if args.key?(:messages)
          @ml_disabled = args[:ml_disabled] if args.key?(:ml_disabled)
          @ml_enabled = args[:ml_enabled] if args.key?(:ml_enabled)
          @name = args[:name] if args.key?(:name)
          @output_contexts = args[:output_contexts] if args.key?(:output_contexts)
          @parameters = args[:parameters] if args.key?(:parameters)
          @parent_followup_intent_name = args[:parent_followup_intent_name] if args.key?(:parent_followup_intent_name)
          @priority = args[:priority] if args.key?(:priority)
          @reset_contexts = args[:reset_contexts] if args.key?(:reset_contexts)
          @root_followup_intent_name = args[:root_followup_intent_name] if args.key?(:root_followup_intent_name)
          @training_phrases = args[:training_phrases] if args.key?(:training_phrases)
          @webhook_state = args[:webhook_state] if args.key?(:webhook_state)
        end
      end
      
      # This message is a wrapper around a collection of intents.
      class GoogleCloudDialogflowV2beta1IntentBatch
        include Google::Apis::Core::Hashable
      
        # A collection of intents.
        # Corresponds to the JSON property `intents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Intent>]
        attr_accessor :intents
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intents = args[:intents] if args.key?(:intents)
        end
      end
      
      # Represents a single followup intent in the chain.
      class GoogleCloudDialogflowV2beta1IntentFollowupIntentInfo
        include Google::Apis::Core::Hashable
      
        # The unique identifier of the followup intent. Format: `projects//agent/intents/
        # `.
        # Corresponds to the JSON property `followupIntentName`
        # @return [String]
        attr_accessor :followup_intent_name
      
        # The unique identifier of the followup intent's parent. Format: `projects//
        # agent/intents/`.
        # Corresponds to the JSON property `parentFollowupIntentName`
        # @return [String]
        attr_accessor :parent_followup_intent_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @followup_intent_name = args[:followup_intent_name] if args.key?(:followup_intent_name)
          @parent_followup_intent_name = args[:parent_followup_intent_name] if args.key?(:parent_followup_intent_name)
        end
      end
      
      # Represents the intent to trigger programmatically rather than as a result of
      # natural language processing. The intent input is only used for V3 agent.
      class GoogleCloudDialogflowV2beta1IntentInput
        include Google::Apis::Core::Hashable
      
        # Required. The unique identifier of the intent in V3 agent. Format: `projects//
        # locations//locations//agents//intents/`.
        # Corresponds to the JSON property `intent`
        # @return [String]
        attr_accessor :intent
      
        # Required. The language of this conversational query. See [Language Support](
        # https://cloud.google.com/dialogflow/docs/reference/language) for a list of the
        # currently supported language codes.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intent = args[:intent] if args.key?(:intent)
          @language_code = args[:language_code] if args.key?(:language_code)
        end
      end
      
      # Corresponds to the `Response` field in the Dialogflow console.
      class GoogleCloudDialogflowV2beta1IntentMessage
        include Google::Apis::Core::Hashable
      
        # The basic card message. Useful for displaying information.
        # Corresponds to the JSON property `basicCard`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageBasicCard]
        attr_accessor :basic_card
      
        # Browse Carousel Card for Actions on Google. https://developers.google.com/
        # actions/assistant/responses#browsing_carousel
        # Corresponds to the JSON property `browseCarouselCard`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCard]
        attr_accessor :browse_carousel_card
      
        # The card response message.
        # Corresponds to the JSON property `card`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageCard]
        attr_accessor :card
      
        # The card for presenting a carousel of options to select from.
        # Corresponds to the JSON property `carouselSelect`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageCarouselSelect]
        attr_accessor :carousel_select
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageImage]
        attr_accessor :image
      
        # The suggestion chip message that allows the user to jump out to the app or
        # website associated with this agent.
        # Corresponds to the JSON property `linkOutSuggestion`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageLinkOutSuggestion]
        attr_accessor :link_out_suggestion
      
        # The card for presenting a list of options to select from.
        # Corresponds to the JSON property `listSelect`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageListSelect]
        attr_accessor :list_select
      
        # The media content card for Actions on Google.
        # Corresponds to the JSON property `mediaContent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageMediaContent]
        attr_accessor :media_content
      
        # A custom platform-specific response.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Optional. The platform that this message is intended for.
        # Corresponds to the JSON property `platform`
        # @return [String]
        attr_accessor :platform
      
        # The quick replies response message.
        # Corresponds to the JSON property `quickReplies`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageQuickReplies]
        attr_accessor :quick_replies
      
        # Carousel Rich Business Messaging (RBM) rich card. Rich cards allow you to
        # respond to users with more vivid content, e.g. with media and suggestions. If
        # you want to show a single card with more control over the layout, please use
        # RbmStandaloneCard instead.
        # Corresponds to the JSON property `rbmCarouselRichCard`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCard]
        attr_accessor :rbm_carousel_rich_card
      
        # Standalone Rich Business Messaging (RBM) rich card. Rich cards allow you to
        # respond to users with more vivid content, e.g. with media and suggestions. You
        # can group multiple rich cards into one using RbmCarouselCard but carousel
        # cards will give you less control over the card layout.
        # Corresponds to the JSON property `rbmStandaloneRichCard`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCard]
        attr_accessor :rbm_standalone_rich_card
      
        # Rich Business Messaging (RBM) text response with suggestions.
        # Corresponds to the JSON property `rbmText`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmText]
        attr_accessor :rbm_text
      
        # The collection of simple response candidates. This message in `QueryResult.
        # fulfillment_messages` and `WebhookResponse.fulfillment_messages` should
        # contain only one `SimpleResponse`.
        # Corresponds to the JSON property `simpleResponses`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageSimpleResponses]
        attr_accessor :simple_responses
      
        # The collection of suggestions.
        # Corresponds to the JSON property `suggestions`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageSuggestions]
        attr_accessor :suggestions
      
        # Table card for Actions on Google.
        # Corresponds to the JSON property `tableCard`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageTableCard]
        attr_accessor :table_card
      
        # Plays audio from a file in Telephony Gateway.
        # Corresponds to the JSON property `telephonyPlayAudio`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageTelephonyPlayAudio]
        attr_accessor :telephony_play_audio
      
        # Synthesizes speech and plays back the synthesized audio to the caller in
        # Telephony Gateway. Telephony Gateway takes the synthesizer settings from `
        # DetectIntentResponse.output_audio_config` which can either be set at request-
        # level or can come from the agent-level synthesizer config.
        # Corresponds to the JSON property `telephonySynthesizeSpeech`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageTelephonySynthesizeSpeech]
        attr_accessor :telephony_synthesize_speech
      
        # Transfers the call in Telephony Gateway.
        # Corresponds to the JSON property `telephonyTransferCall`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageTelephonyTransferCall]
        attr_accessor :telephony_transfer_call
      
        # The text response message.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageText]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @basic_card = args[:basic_card] if args.key?(:basic_card)
          @browse_carousel_card = args[:browse_carousel_card] if args.key?(:browse_carousel_card)
          @card = args[:card] if args.key?(:card)
          @carousel_select = args[:carousel_select] if args.key?(:carousel_select)
          @image = args[:image] if args.key?(:image)
          @link_out_suggestion = args[:link_out_suggestion] if args.key?(:link_out_suggestion)
          @list_select = args[:list_select] if args.key?(:list_select)
          @media_content = args[:media_content] if args.key?(:media_content)
          @payload = args[:payload] if args.key?(:payload)
          @platform = args[:platform] if args.key?(:platform)
          @quick_replies = args[:quick_replies] if args.key?(:quick_replies)
          @rbm_carousel_rich_card = args[:rbm_carousel_rich_card] if args.key?(:rbm_carousel_rich_card)
          @rbm_standalone_rich_card = args[:rbm_standalone_rich_card] if args.key?(:rbm_standalone_rich_card)
          @rbm_text = args[:rbm_text] if args.key?(:rbm_text)
          @simple_responses = args[:simple_responses] if args.key?(:simple_responses)
          @suggestions = args[:suggestions] if args.key?(:suggestions)
          @table_card = args[:table_card] if args.key?(:table_card)
          @telephony_play_audio = args[:telephony_play_audio] if args.key?(:telephony_play_audio)
          @telephony_synthesize_speech = args[:telephony_synthesize_speech] if args.key?(:telephony_synthesize_speech)
          @telephony_transfer_call = args[:telephony_transfer_call] if args.key?(:telephony_transfer_call)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # The basic card message. Useful for displaying information.
      class GoogleCloudDialogflowV2beta1IntentMessageBasicCard
        include Google::Apis::Core::Hashable
      
        # Optional. The collection of card buttons.
        # Corresponds to the JSON property `buttons`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageBasicCardButton>]
        attr_accessor :buttons
      
        # Required, unless image is present. The body text of the card.
        # Corresponds to the JSON property `formattedText`
        # @return [String]
        attr_accessor :formatted_text
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageImage]
        attr_accessor :image
      
        # Optional. The subtitle of the card.
        # Corresponds to the JSON property `subtitle`
        # @return [String]
        attr_accessor :subtitle
      
        # Optional. The title of the card.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @buttons = args[:buttons] if args.key?(:buttons)
          @formatted_text = args[:formatted_text] if args.key?(:formatted_text)
          @image = args[:image] if args.key?(:image)
          @subtitle = args[:subtitle] if args.key?(:subtitle)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # The button object that appears at the bottom of a card.
      class GoogleCloudDialogflowV2beta1IntentMessageBasicCardButton
        include Google::Apis::Core::Hashable
      
        # Opens the given URI.
        # Corresponds to the JSON property `openUriAction`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonOpenUriAction]
        attr_accessor :open_uri_action
      
        # Required. The title of the button.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @open_uri_action = args[:open_uri_action] if args.key?(:open_uri_action)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Opens the given URI.
      class GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonOpenUriAction
        include Google::Apis::Core::Hashable
      
        # Required. The HTTP or HTTPS scheme URI.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Browse Carousel Card for Actions on Google. https://developers.google.com/
      # actions/assistant/responses#browsing_carousel
      class GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCard
        include Google::Apis::Core::Hashable
      
        # Optional. Settings for displaying the image. Applies to every image in items.
        # Corresponds to the JSON property `imageDisplayOptions`
        # @return [String]
        attr_accessor :image_display_options
      
        # Required. List of items in the Browse Carousel Card. Minimum of two items,
        # maximum of ten.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItem>]
        attr_accessor :items
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @image_display_options = args[:image_display_options] if args.key?(:image_display_options)
          @items = args[:items] if args.key?(:items)
        end
      end
      
      # Browsing carousel tile
      class GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItem
        include Google::Apis::Core::Hashable
      
        # Optional. Description of the carousel item. Maximum of four lines of text.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum
        # of one line of text.
        # Corresponds to the JSON property `footer`
        # @return [String]
        attr_accessor :footer
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageImage]
        attr_accessor :image
      
        # Actions on Google action to open a given url.
        # Corresponds to the JSON property `openUriAction`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction]
        attr_accessor :open_uri_action
      
        # Required. Title of the carousel item. Maximum of two lines of text.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @footer = args[:footer] if args.key?(:footer)
          @image = args[:image] if args.key?(:image)
          @open_uri_action = args[:open_uri_action] if args.key?(:open_uri_action)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Actions on Google action to open a given url.
      class GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction
        include Google::Apis::Core::Hashable
      
        # Required. URL
        # Corresponds to the JSON property `url`
        # @return [String]
        attr_accessor :url
      
        # Optional. Specifies the type of viewer that is used when opening the URL.
        # Defaults to opening via web browser.
        # Corresponds to the JSON property `urlTypeHint`
        # @return [String]
        attr_accessor :url_type_hint
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @url = args[:url] if args.key?(:url)
          @url_type_hint = args[:url_type_hint] if args.key?(:url_type_hint)
        end
      end
      
      # The card response message.
      class GoogleCloudDialogflowV2beta1IntentMessageCard
        include Google::Apis::Core::Hashable
      
        # Optional. The collection of card buttons.
        # Corresponds to the JSON property `buttons`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageCardButton>]
        attr_accessor :buttons
      
        # Optional. The public URI to an image file for the card.
        # Corresponds to the JSON property `imageUri`
        # @return [String]
        attr_accessor :image_uri
      
        # Optional. The subtitle of the card.
        # Corresponds to the JSON property `subtitle`
        # @return [String]
        attr_accessor :subtitle
      
        # Optional. The title of the card.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @buttons = args[:buttons] if args.key?(:buttons)
          @image_uri = args[:image_uri] if args.key?(:image_uri)
          @subtitle = args[:subtitle] if args.key?(:subtitle)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Optional. Contains information about a button.
      class GoogleCloudDialogflowV2beta1IntentMessageCardButton
        include Google::Apis::Core::Hashable
      
        # Optional. The text to send back to the Dialogflow API or a URI to open.
        # Corresponds to the JSON property `postback`
        # @return [String]
        attr_accessor :postback
      
        # Optional. The text to show on the button.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @postback = args[:postback] if args.key?(:postback)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # The card for presenting a carousel of options to select from.
      class GoogleCloudDialogflowV2beta1IntentMessageCarouselSelect
        include Google::Apis::Core::Hashable
      
        # Required. Carousel items.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectItem>]
        attr_accessor :items
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
        end
      end
      
      # An item in the carousel.
      class GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectItem
        include Google::Apis::Core::Hashable
      
        # Optional. The body text of the card.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageImage]
        attr_accessor :image
      
        # Additional info about the select item for when it is triggered in a dialog.
        # Corresponds to the JSON property `info`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfo]
        attr_accessor :info
      
        # Required. Title of the carousel item.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @image = args[:image] if args.key?(:image)
          @info = args[:info] if args.key?(:info)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Column properties for TableCard.
      class GoogleCloudDialogflowV2beta1IntentMessageColumnProperties
        include Google::Apis::Core::Hashable
      
        # Required. Column heading.
        # Corresponds to the JSON property `header`
        # @return [String]
        attr_accessor :header
      
        # Optional. Defines text alignment for all cells in this column.
        # Corresponds to the JSON property `horizontalAlignment`
        # @return [String]
        attr_accessor :horizontal_alignment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @header = args[:header] if args.key?(:header)
          @horizontal_alignment = args[:horizontal_alignment] if args.key?(:horizontal_alignment)
        end
      end
      
      # The image response message.
      class GoogleCloudDialogflowV2beta1IntentMessageImage
        include Google::Apis::Core::Hashable
      
        # A text description of the image to be used for accessibility, e.g., screen
        # readers. Required if image_uri is set for CarouselSelect.
        # Corresponds to the JSON property `accessibilityText`
        # @return [String]
        attr_accessor :accessibility_text
      
        # Optional. The public URI to an image file.
        # Corresponds to the JSON property `imageUri`
        # @return [String]
        attr_accessor :image_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @accessibility_text = args[:accessibility_text] if args.key?(:accessibility_text)
          @image_uri = args[:image_uri] if args.key?(:image_uri)
        end
      end
      
      # The suggestion chip message that allows the user to jump out to the app or
      # website associated with this agent.
      class GoogleCloudDialogflowV2beta1IntentMessageLinkOutSuggestion
        include Google::Apis::Core::Hashable
      
        # Required. The name of the app or site this chip is linking to.
        # Corresponds to the JSON property `destinationName`
        # @return [String]
        attr_accessor :destination_name
      
        # Required. The URI of the app or site to open when the user taps the suggestion
        # chip.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @destination_name = args[:destination_name] if args.key?(:destination_name)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # The card for presenting a list of options to select from.
      class GoogleCloudDialogflowV2beta1IntentMessageListSelect
        include Google::Apis::Core::Hashable
      
        # Required. List items.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageListSelectItem>]
        attr_accessor :items
      
        # Optional. Subtitle of the list.
        # Corresponds to the JSON property `subtitle`
        # @return [String]
        attr_accessor :subtitle
      
        # Optional. The overall title of the list.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @subtitle = args[:subtitle] if args.key?(:subtitle)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # An item in the list.
      class GoogleCloudDialogflowV2beta1IntentMessageListSelectItem
        include Google::Apis::Core::Hashable
      
        # Optional. The main text describing the item.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageImage]
        attr_accessor :image
      
        # Additional info about the select item for when it is triggered in a dialog.
        # Corresponds to the JSON property `info`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfo]
        attr_accessor :info
      
        # Required. The title of the list item.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @image = args[:image] if args.key?(:image)
          @info = args[:info] if args.key?(:info)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # The media content card for Actions on Google.
      class GoogleCloudDialogflowV2beta1IntentMessageMediaContent
        include Google::Apis::Core::Hashable
      
        # Required. List of media objects.
        # Corresponds to the JSON property `mediaObjects`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponseMediaObject>]
        attr_accessor :media_objects
      
        # Optional. What type of media is the content (ie "audio").
        # Corresponds to the JSON property `mediaType`
        # @return [String]
        attr_accessor :media_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @media_objects = args[:media_objects] if args.key?(:media_objects)
          @media_type = args[:media_type] if args.key?(:media_type)
        end
      end
      
      # Response media object for media content card.
      class GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponseMediaObject
        include Google::Apis::Core::Hashable
      
        # Required. Url where the media is stored.
        # Corresponds to the JSON property `contentUrl`
        # @return [String]
        attr_accessor :content_url
      
        # Optional. Description of media card.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The image response message.
        # Corresponds to the JSON property `icon`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageImage]
        attr_accessor :icon
      
        # The image response message.
        # Corresponds to the JSON property `largeImage`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageImage]
        attr_accessor :large_image
      
        # Required. Name of media card.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content_url = args[:content_url] if args.key?(:content_url)
          @description = args[:description] if args.key?(:description)
          @icon = args[:icon] if args.key?(:icon)
          @large_image = args[:large_image] if args.key?(:large_image)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # The quick replies response message.
      class GoogleCloudDialogflowV2beta1IntentMessageQuickReplies
        include Google::Apis::Core::Hashable
      
        # Optional. The collection of quick replies.
        # Corresponds to the JSON property `quickReplies`
        # @return [Array<String>]
        attr_accessor :quick_replies
      
        # Optional. The title of the collection of quick replies.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @quick_replies = args[:quick_replies] if args.key?(:quick_replies)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Rich Business Messaging (RBM) Card content
      class GoogleCloudDialogflowV2beta1IntentMessageRbmCardContent
        include Google::Apis::Core::Hashable
      
        # Optional. Description of the card (at most 2000 bytes). At least one of the
        # title, description or media must be set.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Rich Business Messaging (RBM) Media displayed in Cards The following media-
        # types are currently supported: Image Types * image/jpeg * image/jpg' * image/
        # gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg *
        # video/mpeg4 * video/webm
        # Corresponds to the JSON property `media`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMedia]
        attr_accessor :media
      
        # Optional. List of suggestions to include in the card.
        # Corresponds to the JSON property `suggestions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestion>]
        attr_accessor :suggestions
      
        # Optional. Title of the card (at most 200 bytes). At least one of the title,
        # description or media must be set.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @media = args[:media] if args.key?(:media)
          @suggestions = args[:suggestions] if args.key?(:suggestions)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Rich Business Messaging (RBM) Media displayed in Cards The following media-
      # types are currently supported: Image Types * image/jpeg * image/jpg' * image/
      # gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg *
      # video/mpeg4 * video/webm
      class GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMedia
        include Google::Apis::Core::Hashable
      
        # Required. Publicly reachable URI of the file. The RBM platform determines the
        # MIME type of the file from the content-type field in the HTTP headers when the
        # platform fetches the file. The content-type field must be present and accurate
        # in the HTTP response from the URL.
        # Corresponds to the JSON property `fileUri`
        # @return [String]
        attr_accessor :file_uri
      
        # Required for cards with vertical orientation. The height of the media within a
        # rich card with a vertical layout. For a standalone card with horizontal layout,
        # height is not customizable, and this field is ignored.
        # Corresponds to the JSON property `height`
        # @return [String]
        attr_accessor :height
      
        # Optional. Publicly reachable URI of the thumbnail.If you don't provide a
        # thumbnail URI, the RBM platform displays a blank placeholder thumbnail until
        # the user's device downloads the file. Depending on the user's setting, the
        # file may not download automatically and may require the user to tap a download
        # button.
        # Corresponds to the JSON property `thumbnailUri`
        # @return [String]
        attr_accessor :thumbnail_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @file_uri = args[:file_uri] if args.key?(:file_uri)
          @height = args[:height] if args.key?(:height)
          @thumbnail_uri = args[:thumbnail_uri] if args.key?(:thumbnail_uri)
        end
      end
      
      # Carousel Rich Business Messaging (RBM) rich card. Rich cards allow you to
      # respond to users with more vivid content, e.g. with media and suggestions. If
      # you want to show a single card with more control over the layout, please use
      # RbmStandaloneCard instead.
      class GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCard
        include Google::Apis::Core::Hashable
      
        # Required. The cards in the carousel. A carousel must have at least 2 cards and
        # at most 10.
        # Corresponds to the JSON property `cardContents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmCardContent>]
        attr_accessor :card_contents
      
        # Required. The width of the cards in the carousel.
        # Corresponds to the JSON property `cardWidth`
        # @return [String]
        attr_accessor :card_width
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @card_contents = args[:card_contents] if args.key?(:card_contents)
          @card_width = args[:card_width] if args.key?(:card_width)
        end
      end
      
      # Standalone Rich Business Messaging (RBM) rich card. Rich cards allow you to
      # respond to users with more vivid content, e.g. with media and suggestions. You
      # can group multiple rich cards into one using RbmCarouselCard but carousel
      # cards will give you less control over the card layout.
      class GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCard
        include Google::Apis::Core::Hashable
      
        # Rich Business Messaging (RBM) Card content
        # Corresponds to the JSON property `cardContent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmCardContent]
        attr_accessor :card_content
      
        # Required. Orientation of the card.
        # Corresponds to the JSON property `cardOrientation`
        # @return [String]
        attr_accessor :card_orientation
      
        # Required if orientation is horizontal. Image preview alignment for standalone
        # cards with horizontal layout.
        # Corresponds to the JSON property `thumbnailImageAlignment`
        # @return [String]
        attr_accessor :thumbnail_image_alignment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @card_content = args[:card_content] if args.key?(:card_content)
          @card_orientation = args[:card_orientation] if args.key?(:card_orientation)
          @thumbnail_image_alignment = args[:thumbnail_image_alignment] if args.key?(:thumbnail_image_alignment)
        end
      end
      
      # Rich Business Messaging (RBM) suggested client-side action that the user can
      # choose from the card.
      class GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedAction
        include Google::Apis::Core::Hashable
      
        # Opens the user's default dialer app with the specified phone number but does
        # not dial automatically.
        # Corresponds to the JSON property `dial`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionDial]
        attr_accessor :dial
      
        # Opens the user's default web browser app to the specified uri If the user has
        # an app installed that is registered as the default handler for the URL, then
        # this app will be opened instead, and its icon will be used in the suggested
        # action UI.
        # Corresponds to the JSON property `openUrl`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionOpenUri]
        attr_accessor :open_url
      
        # Opaque payload that the Dialogflow receives in a user event when the user taps
        # the suggested action. This data will be also forwarded to webhook to allow
        # performing custom business logic.
        # Corresponds to the JSON property `postbackData`
        # @return [String]
        attr_accessor :postback_data
      
        # Opens the device's location chooser so the user can pick a location to send
        # back to the agent.
        # Corresponds to the JSON property `shareLocation`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionShareLocation]
        attr_accessor :share_location
      
        # Text to display alongside the action.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dial = args[:dial] if args.key?(:dial)
          @open_url = args[:open_url] if args.key?(:open_url)
          @postback_data = args[:postback_data] if args.key?(:postback_data)
          @share_location = args[:share_location] if args.key?(:share_location)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Opens the user's default dialer app with the specified phone number but does
      # not dial automatically.
      class GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionDial
        include Google::Apis::Core::Hashable
      
        # Required. The phone number to fill in the default dialer app. This field
        # should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example
        # of a correctly formatted phone number: +15556767888.
        # Corresponds to the JSON property `phoneNumber`
        # @return [String]
        attr_accessor :phone_number
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @phone_number = args[:phone_number] if args.key?(:phone_number)
        end
      end
      
      # Opens the user's default web browser app to the specified uri If the user has
      # an app installed that is registered as the default handler for the URL, then
      # this app will be opened instead, and its icon will be used in the suggested
      # action UI.
      class GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionOpenUri
        include Google::Apis::Core::Hashable
      
        # Required. The uri to open on the user device
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Opens the device's location chooser so the user can pick a location to send
      # back to the agent.
      class GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionShareLocation
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Rich Business Messaging (RBM) suggested reply that the user can click instead
      # of typing in their own response.
      class GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedReply
        include Google::Apis::Core::Hashable
      
        # Opaque payload that the Dialogflow receives in a user event when the user taps
        # the suggested reply. This data will be also forwarded to webhook to allow
        # performing custom business logic.
        # Corresponds to the JSON property `postbackData`
        # @return [String]
        attr_accessor :postback_data
      
        # Suggested reply text.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @postback_data = args[:postback_data] if args.key?(:postback_data)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily
      # select/click a predefined response or perform an action (like opening a web
      # uri).
      class GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestion
        include Google::Apis::Core::Hashable
      
        # Rich Business Messaging (RBM) suggested client-side action that the user can
        # choose from the card.
        # Corresponds to the JSON property `action`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedAction]
        attr_accessor :action
      
        # Rich Business Messaging (RBM) suggested reply that the user can click instead
        # of typing in their own response.
        # Corresponds to the JSON property `reply`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedReply]
        attr_accessor :reply
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @reply = args[:reply] if args.key?(:reply)
        end
      end
      
      # Rich Business Messaging (RBM) text response with suggestions.
      class GoogleCloudDialogflowV2beta1IntentMessageRbmText
        include Google::Apis::Core::Hashable
      
        # Optional. One or more suggestions to show to the user.
        # Corresponds to the JSON property `rbmSuggestion`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestion>]
        attr_accessor :rbm_suggestion
      
        # Required. Text sent and displayed to the user.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rbm_suggestion = args[:rbm_suggestion] if args.key?(:rbm_suggestion)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Additional info about the select item for when it is triggered in a dialog.
      class GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfo
        include Google::Apis::Core::Hashable
      
        # Required. A unique key that will be sent back to the agent if this response is
        # given.
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        # Optional. A list of synonyms that can also be used to trigger this item in
        # dialog.
        # Corresponds to the JSON property `synonyms`
        # @return [Array<String>]
        attr_accessor :synonyms
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @key = args[:key] if args.key?(:key)
          @synonyms = args[:synonyms] if args.key?(:synonyms)
        end
      end
      
      # The simple response message containing speech or text.
      class GoogleCloudDialogflowV2beta1IntentMessageSimpleResponse
        include Google::Apis::Core::Hashable
      
        # Optional. The text to display.
        # Corresponds to the JSON property `displayText`
        # @return [String]
        attr_accessor :display_text
      
        # One of text_to_speech or ssml must be provided. Structured spoken response to
        # the user in the SSML format. Mutually exclusive with text_to_speech.
        # Corresponds to the JSON property `ssml`
        # @return [String]
        attr_accessor :ssml
      
        # One of text_to_speech or ssml must be provided. The plain text of the speech
        # output. Mutually exclusive with ssml.
        # Corresponds to the JSON property `textToSpeech`
        # @return [String]
        attr_accessor :text_to_speech
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_text = args[:display_text] if args.key?(:display_text)
          @ssml = args[:ssml] if args.key?(:ssml)
          @text_to_speech = args[:text_to_speech] if args.key?(:text_to_speech)
        end
      end
      
      # The collection of simple response candidates. This message in `QueryResult.
      # fulfillment_messages` and `WebhookResponse.fulfillment_messages` should
      # contain only one `SimpleResponse`.
      class GoogleCloudDialogflowV2beta1IntentMessageSimpleResponses
        include Google::Apis::Core::Hashable
      
        # Required. The list of simple responses.
        # Corresponds to the JSON property `simpleResponses`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageSimpleResponse>]
        attr_accessor :simple_responses
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @simple_responses = args[:simple_responses] if args.key?(:simple_responses)
        end
      end
      
      # The suggestion chip message that the user can tap to quickly post a reply to
      # the conversation.
      class GoogleCloudDialogflowV2beta1IntentMessageSuggestion
        include Google::Apis::Core::Hashable
      
        # Required. The text shown the in the suggestion chip.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # The collection of suggestions.
      class GoogleCloudDialogflowV2beta1IntentMessageSuggestions
        include Google::Apis::Core::Hashable
      
        # Required. The list of suggested replies.
        # Corresponds to the JSON property `suggestions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageSuggestion>]
        attr_accessor :suggestions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @suggestions = args[:suggestions] if args.key?(:suggestions)
        end
      end
      
      # Table card for Actions on Google.
      class GoogleCloudDialogflowV2beta1IntentMessageTableCard
        include Google::Apis::Core::Hashable
      
        # Optional. List of buttons for the card.
        # Corresponds to the JSON property `buttons`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageBasicCardButton>]
        attr_accessor :buttons
      
        # Optional. Display properties for the columns in this table.
        # Corresponds to the JSON property `columnProperties`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageColumnProperties>]
        attr_accessor :column_properties
      
        # The image response message.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageImage]
        attr_accessor :image
      
        # Optional. Rows in this table of data.
        # Corresponds to the JSON property `rows`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageTableCardRow>]
        attr_accessor :rows
      
        # Optional. Subtitle to the title.
        # Corresponds to the JSON property `subtitle`
        # @return [String]
        attr_accessor :subtitle
      
        # Required. Title of the card.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @buttons = args[:buttons] if args.key?(:buttons)
          @column_properties = args[:column_properties] if args.key?(:column_properties)
          @image = args[:image] if args.key?(:image)
          @rows = args[:rows] if args.key?(:rows)
          @subtitle = args[:subtitle] if args.key?(:subtitle)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Cell of TableCardRow.
      class GoogleCloudDialogflowV2beta1IntentMessageTableCardCell
        include Google::Apis::Core::Hashable
      
        # Required. Text in this cell.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Row of TableCard.
      class GoogleCloudDialogflowV2beta1IntentMessageTableCardRow
        include Google::Apis::Core::Hashable
      
        # Optional. List of cells that make up this row.
        # Corresponds to the JSON property `cells`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessageTableCardCell>]
        attr_accessor :cells
      
        # Optional. Whether to add a visual divider after this row.
        # Corresponds to the JSON property `dividerAfter`
        # @return [Boolean]
        attr_accessor :divider_after
        alias_method :divider_after?, :divider_after
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cells = args[:cells] if args.key?(:cells)
          @divider_after = args[:divider_after] if args.key?(:divider_after)
        end
      end
      
      # Plays audio from a file in Telephony Gateway.
      class GoogleCloudDialogflowV2beta1IntentMessageTelephonyPlayAudio
        include Google::Apis::Core::Hashable
      
        # Required. URI to a Google Cloud Storage object containing the audio to play, e.
        # g., "gs://bucket/object". The object must contain a single channel (mono) of
        # linear PCM audio (2 bytes / sample) at 8kHz. This object must be readable by
        # the `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` service account where
        # is the number of the Telephony Gateway project (usually the same as the
        # Dialogflow agent project). If the Google Cloud Storage bucket is in the
        # Telephony Gateway project, this permission is added by default when enabling
        # the Dialogflow V2 API. For audio from other sources, consider using the `
        # TelephonySynthesizeSpeech` message with SSML.
        # Corresponds to the JSON property `audioUri`
        # @return [String]
        attr_accessor :audio_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_uri = args[:audio_uri] if args.key?(:audio_uri)
        end
      end
      
      # Synthesizes speech and plays back the synthesized audio to the caller in
      # Telephony Gateway. Telephony Gateway takes the synthesizer settings from `
      # DetectIntentResponse.output_audio_config` which can either be set at request-
      # level or can come from the agent-level synthesizer config.
      class GoogleCloudDialogflowV2beta1IntentMessageTelephonySynthesizeSpeech
        include Google::Apis::Core::Hashable
      
        # The SSML to be synthesized. For more information, see [SSML](https://
        # developers.google.com/actions/reference/ssml).
        # Corresponds to the JSON property `ssml`
        # @return [String]
        attr_accessor :ssml
      
        # The raw text to be synthesized.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @ssml = args[:ssml] if args.key?(:ssml)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Transfers the call in Telephony Gateway.
      class GoogleCloudDialogflowV2beta1IntentMessageTelephonyTransferCall
        include Google::Apis::Core::Hashable
      
        # Required. The phone number to transfer the call to in [E.164 format](https://
        # en.wikipedia.org/wiki/E.164). We currently only allow transferring to US
        # numbers (+1xxxyyyzzzz).
        # Corresponds to the JSON property `phoneNumber`
        # @return [String]
        attr_accessor :phone_number
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @phone_number = args[:phone_number] if args.key?(:phone_number)
        end
      end
      
      # The text response message.
      class GoogleCloudDialogflowV2beta1IntentMessageText
        include Google::Apis::Core::Hashable
      
        # Optional. The collection of the agent's responses.
        # Corresponds to the JSON property `text`
        # @return [Array<String>]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Represents intent parameters.
      class GoogleCloudDialogflowV2beta1IntentParameter
        include Google::Apis::Core::Hashable
      
        # Optional. The default value to use when the `value` yields an empty result.
        # Default values can be extracted from contexts by using the following syntax: `#
        # context_name.parameter_name`.
        # Corresponds to the JSON property `defaultValue`
        # @return [String]
        attr_accessor :default_value
      
        # Required. The name of the parameter.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. The name of the entity type, prefixed with `@`, that describes
        # values of the parameter. If the parameter is required, this must be provided.
        # Corresponds to the JSON property `entityTypeDisplayName`
        # @return [String]
        attr_accessor :entity_type_display_name
      
        # Optional. Indicates whether the parameter represents a list of values.
        # Corresponds to the JSON property `isList`
        # @return [Boolean]
        attr_accessor :is_list
        alias_method :is_list?, :is_list
      
        # Optional. Indicates whether the parameter is required. That is, whether the
        # intent cannot be completed without collecting the parameter value.
        # Corresponds to the JSON property `mandatory`
        # @return [Boolean]
        attr_accessor :mandatory
        alias_method :mandatory?, :mandatory
      
        # The unique identifier of this parameter.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The collection of prompts that the agent can present to the user in
        # order to collect a value for the parameter.
        # Corresponds to the JSON property `prompts`
        # @return [Array<String>]
        attr_accessor :prompts
      
        # Optional. The definition of the parameter value. It can be: - a constant
        # string, - a parameter value defined as `$parameter_name`, - an original
        # parameter value defined as `$parameter_name.original`, - a parameter value
        # from some context defined as `#context_name.parameter_name`.
        # Corresponds to the JSON property `value`
        # @return [String]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @default_value = args[:default_value] if args.key?(:default_value)
          @display_name = args[:display_name] if args.key?(:display_name)
          @entity_type_display_name = args[:entity_type_display_name] if args.key?(:entity_type_display_name)
          @is_list = args[:is_list] if args.key?(:is_list)
          @mandatory = args[:mandatory] if args.key?(:mandatory)
          @name = args[:name] if args.key?(:name)
          @prompts = args[:prompts] if args.key?(:prompts)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Represents an intent suggestion.
      class GoogleCloudDialogflowV2beta1IntentSuggestion
        include Google::Apis::Core::Hashable
      
        # Human readable description for better understanding an intent like its scope,
        # content, result etc. Maximum character limit: 140 characters.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The display name of the intent.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The unique identifier of this intent. Format: `projects//locations//agent/
        # intents/`.
        # Corresponds to the JSON property `intentV2`
        # @return [String]
        attr_accessor :intent_v2
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @intent_v2 = args[:intent_v2] if args.key?(:intent_v2)
        end
      end
      
      # Represents an example that the agent is trained on.
      class GoogleCloudDialogflowV2beta1IntentTrainingPhrase
        include Google::Apis::Core::Hashable
      
        # Output only. The unique identifier of this training phrase.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Required. The ordered list of training phrase parts. The parts are
        # concatenated in order to form the training phrase. Note: The API does not
        # automatically annotate training phrases like the Dialogflow Console does. Note:
        # Do not forget to include whitespace at part boundaries, so the training
        # phrase is well formatted when the parts are concatenated. If the training
        # phrase does not need to be annotated with parameters, you just need a single
        # part with only the Part.text field set. If you want to annotate the training
        # phrase, you must create multiple parts, where the fields of each part are
        # populated in one of two ways: - `Part.text` is set to a part of the phrase
        # that has no parameters. - `Part.text` is set to a part of the phrase that you
        # want to annotate, and the `entity_type`, `alias`, and `user_defined` fields
        # are all set.
        # Corresponds to the JSON property `parts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart>]
        attr_accessor :parts
      
        # Optional. Indicates how many times this example was added to the intent. Each
        # time a developer adds an existing sample by editing an intent or training,
        # this counter is increased.
        # Corresponds to the JSON property `timesAddedCount`
        # @return [Fixnum]
        attr_accessor :times_added_count
      
        # Required. The type of the training phrase.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @parts = args[:parts] if args.key?(:parts)
          @times_added_count = args[:times_added_count] if args.key?(:times_added_count)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Represents a part of a training phrase.
      class GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart
        include Google::Apis::Core::Hashable
      
        # Optional. The parameter name for the value extracted from the annotated part
        # of the example. This field is required for annotated parts of the training
        # phrase.
        # Corresponds to the JSON property `alias`
        # @return [String]
        attr_accessor :alias
      
        # Optional. The entity type name prefixed with `@`. This field is required for
        # annotated parts of the training phrase.
        # Corresponds to the JSON property `entityType`
        # @return [String]
        attr_accessor :entity_type
      
        # Required. The text for this part.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Optional. Indicates whether the text was manually annotated. This field is set
        # to true when the Dialogflow Console is used to manually annotate the part.
        # When creating an annotated part with the API, you must set this to true.
        # Corresponds to the JSON property `userDefined`
        # @return [Boolean]
        attr_accessor :user_defined
        alias_method :user_defined?, :user_defined
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @alias = args[:alias] if args.key?(:alias)
          @entity_type = args[:entity_type] if args.key?(:entity_type)
          @text = args[:text] if args.key?(:text)
          @user_defined = args[:user_defined] if args.key?(:user_defined)
        end
      end
      
      # Represents the result of querying a Knowledge base.
      class GoogleCloudDialogflowV2beta1KnowledgeAnswers
        include Google::Apis::Core::Hashable
      
        # A list of answers from Knowledge Connector.
        # Corresponds to the JSON property `answers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1KnowledgeAnswersAnswer>]
        attr_accessor :answers
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answers = args[:answers] if args.key?(:answers)
        end
      end
      
      # An answer from Knowledge Connector.
      class GoogleCloudDialogflowV2beta1KnowledgeAnswersAnswer
        include Google::Apis::Core::Hashable
      
        # The piece of text from the `source` knowledge base document that answers this
        # conversational query.
        # Corresponds to the JSON property `answer`
        # @return [String]
        attr_accessor :answer
      
        # The corresponding FAQ question if the answer was extracted from a FAQ Document,
        # empty otherwise.
        # Corresponds to the JSON property `faqQuestion`
        # @return [String]
        attr_accessor :faq_question
      
        # The system's confidence score that this Knowledge answer is a good match for
        # this conversational query. The range is from 0.0 (completely uncertain) to 1.0
        # (completely certain). Note: The confidence score is likely to vary somewhat (
        # possibly even for identical requests), as the underlying model is under
        # constant improvement. It may be deprecated in the future. We recommend using `
        # match_confidence_level` which should be generally more stable.
        # Corresponds to the JSON property `matchConfidence`
        # @return [Float]
        attr_accessor :match_confidence
      
        # The system's confidence level that this knowledge answer is a good match for
        # this conversational query. NOTE: The confidence level for a given `` pair may
        # change without notice, as it depends on models that are constantly being
        # improved. However, it will change less frequently than the confidence score
        # below, and should be preferred for referencing the quality of an answer.
        # Corresponds to the JSON property `matchConfidenceLevel`
        # @return [String]
        attr_accessor :match_confidence_level
      
        # Indicates which Knowledge Document this answer was extracted from. Format: `
        # projects//knowledgeBases//documents/`.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer = args[:answer] if args.key?(:answer)
          @faq_question = args[:faq_question] if args.key?(:faq_question)
          @match_confidence = args[:match_confidence] if args.key?(:match_confidence)
          @match_confidence_level = args[:match_confidence_level] if args.key?(:match_confidence_level)
          @source = args[:source] if args.key?(:source)
        end
      end
      
      # Represents a Knowledge Assist answer.
      class GoogleCloudDialogflowV2beta1KnowledgeAssistAnswer
        include Google::Apis::Core::Hashable
      
        # The name of the answer record. Format: `projects//locations//answer Records/`.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Represents a suggested query.
        # Corresponds to the JSON property `suggestedQuery`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerSuggestedQuery]
        attr_accessor :suggested_query
      
        # Represents an answer from Knowledge. Currently supports FAQ and Generative
        # answers.
        # Corresponds to the JSON property `suggestedQueryAnswer`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswer]
        attr_accessor :suggested_query_answer
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @suggested_query = args[:suggested_query] if args.key?(:suggested_query)
          @suggested_query_answer = args[:suggested_query_answer] if args.key?(:suggested_query_answer)
        end
      end
      
      # Represents an answer from Knowledge. Currently supports FAQ and Generative
      # answers.
      class GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswer
        include Google::Apis::Core::Hashable
      
        # The piece of text from the `source` that answers this suggested query.
        # Corresponds to the JSON property `answerText`
        # @return [String]
        attr_accessor :answer_text
      
        # Details about source of FAQ answer.
        # Corresponds to the JSON property `faqSource`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerFaqSource]
        attr_accessor :faq_source
      
        # Details about source of Generative answer.
        # Corresponds to the JSON property `generativeSource`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerGenerativeSource]
        attr_accessor :generative_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_text = args[:answer_text] if args.key?(:answer_text)
          @faq_source = args[:faq_source] if args.key?(:faq_source)
          @generative_source = args[:generative_source] if args.key?(:generative_source)
        end
      end
      
      # Details about source of FAQ answer.
      class GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerFaqSource
        include Google::Apis::Core::Hashable
      
        # The corresponding FAQ question.
        # Corresponds to the JSON property `question`
        # @return [String]
        attr_accessor :question
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @question = args[:question] if args.key?(:question)
        end
      end
      
      # Details about source of Generative answer.
      class GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerGenerativeSource
        include Google::Apis::Core::Hashable
      
        # All snippets used for this Generative Prediction, with their source URI and
        # data.
        # Corresponds to the JSON property `snippets`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerGenerativeSourceSnippet>]
        attr_accessor :snippets
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @snippets = args[:snippets] if args.key?(:snippets)
        end
      end
      
      # Snippet Source for a Generative Prediction.
      class GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerGenerativeSourceSnippet
        include Google::Apis::Core::Hashable
      
        # Metadata of the document.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        # Text taken from that URI.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Title of the document.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # URI the data is sourced from.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata = args[:metadata] if args.key?(:metadata)
          @text = args[:text] if args.key?(:text)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Represents a suggested query.
      class GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerSuggestedQuery
        include Google::Apis::Core::Hashable
      
        # Suggested query text.
        # Corresponds to the JSON property `queryText`
        # @return [String]
        attr_accessor :query_text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @query_text = args[:query_text] if args.key?(:query_text)
        end
      end
      
      # A knowledge base represents a collection of knowledge documents that you
      # provide to Dialogflow. Your knowledge documents contain information that may
      # be useful during conversations with end-users. Some Dialogflow features use
      # knowledge bases when looking for a response to an end-user input. For more
      # information, see the [knowledge base guide](https://cloud.google.com/
      # dialogflow/docs/how/knowledge-bases). Note: The `projects.agent.knowledgeBases`
      # resource is deprecated; only use `projects.knowledgeBases`.
      class GoogleCloudDialogflowV2beta1KnowledgeBase
        include Google::Apis::Core::Hashable
      
        # Required. The display name of the knowledge base. The name must be 1024 bytes
        # or less; otherwise, the creation request fails.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Language which represents the KnowledgeBase. When the KnowledgeBase is created/
        # updated, this is populated for all non en-us languages. If not populated, the
        # default language en-us applies.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # The knowledge base resource name. The name must be empty when creating a
        # knowledge base. Format: `projects//locations//knowledgeBases/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
          @language_code = args[:language_code] if args.key?(:language_code)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Metadata in google::longrunning::Operation for Knowledge operations.
      class GoogleCloudDialogflowV2beta1KnowledgeOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The time when the operation finished.
        # Corresponds to the JSON property `doneTime`
        # @return [String]
        attr_accessor :done_time
      
        # Metadata related to the Export Data Operations (e.g. ExportDocument).
        # Corresponds to the JSON property `exportOperationMetadata`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ExportOperationMetadata]
        attr_accessor :export_operation_metadata
      
        # The name of the knowledge base interacted with during the operation.
        # Corresponds to the JSON property `knowledgeBase`
        # @return [String]
        attr_accessor :knowledge_base
      
        # Required. Output only. The current state of this operation.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @done_time = args[:done_time] if args.key?(:done_time)
          @export_operation_metadata = args[:export_operation_metadata] if args.key?(:export_operation_metadata)
          @knowledge_base = args[:knowledge_base] if args.key?(:knowledge_base)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # Response message for AnswerRecords.ListAnswerRecords.
      class GoogleCloudDialogflowV2beta1ListAnswerRecordsResponse
        include Google::Apis::Core::Hashable
      
        # The list of answer records.
        # Corresponds to the JSON property `answerRecords`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AnswerRecord>]
        attr_accessor :answer_records
      
        # A token to retrieve next page of results. Or empty if there are no more
        # results. Pass this value in the ListAnswerRecordsRequest.page_token field in
        # the subsequent call to `ListAnswerRecords` method to retrieve the next page of
        # results.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_records = args[:answer_records] if args.key?(:answer_records)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # The response message for Contexts.ListContexts.
      class GoogleCloudDialogflowV2beta1ListContextsResponse
        include Google::Apis::Core::Hashable
      
        # The list of contexts. There will be a maximum number of items returned based
        # on the page_size field in the request.
        # Corresponds to the JSON property `contexts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Context>]
        attr_accessor :contexts
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contexts = args[:contexts] if args.key?(:contexts)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # The response message for ConversationProfiles.ListConversationProfiles.
      class GoogleCloudDialogflowV2beta1ListConversationProfilesResponse
        include Google::Apis::Core::Hashable
      
        # The list of project conversation profiles. There is a maximum number of items
        # returned based on the page_size field in the request.
        # Corresponds to the JSON property `conversationProfiles`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ConversationProfile>]
        attr_accessor :conversation_profiles
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_profiles = args[:conversation_profiles] if args.key?(:conversation_profiles)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # The response message for Conversations.ListConversations.
      class GoogleCloudDialogflowV2beta1ListConversationsResponse
        include Google::Apis::Core::Hashable
      
        # The list of conversations. There will be a maximum number of items returned
        # based on the page_size field in the request.
        # Corresponds to the JSON property `conversations`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Conversation>]
        attr_accessor :conversations
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversations = args[:conversations] if args.key?(:conversations)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for Documents.ListDocuments.
      class GoogleCloudDialogflowV2beta1ListDocumentsResponse
        include Google::Apis::Core::Hashable
      
        # The list of documents.
        # Corresponds to the JSON property `documents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Document>]
        attr_accessor :documents
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @documents = args[:documents] if args.key?(:documents)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # The response message for EntityTypes.ListEntityTypes.
      class GoogleCloudDialogflowV2beta1ListEntityTypesResponse
        include Google::Apis::Core::Hashable
      
        # The list of agent entity types. There will be a maximum number of items
        # returned based on the page_size field in the request.
        # Corresponds to the JSON property `entityTypes`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EntityType>]
        attr_accessor :entity_types
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_types = args[:entity_types] if args.key?(:entity_types)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # The response message for Environments.ListEnvironments.
      class GoogleCloudDialogflowV2beta1ListEnvironmentsResponse
        include Google::Apis::Core::Hashable
      
        # The list of agent environments. There will be a maximum number of items
        # returned based on the page_size field in the request.
        # Corresponds to the JSON property `environments`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Environment>]
        attr_accessor :environments
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @environments = args[:environments] if args.key?(:environments)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response of ListGeneratorEvaluations.
      class GoogleCloudDialogflowV2beta1ListGeneratorEvaluationsResponse
        include Google::Apis::Core::Hashable
      
        # The list of evaluations to return.
        # Corresponds to the JSON property `generatorEvaluations`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GeneratorEvaluation>]
        attr_accessor :generator_evaluations
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generator_evaluations = args[:generator_evaluations] if args.key?(:generator_evaluations)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response of ListGenerators.
      class GoogleCloudDialogflowV2beta1ListGeneratorsResponse
        include Google::Apis::Core::Hashable
      
        # List of generators retrieved.
        # Corresponds to the JSON property `generators`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Generator>]
        attr_accessor :generators
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generators = args[:generators] if args.key?(:generators)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # The response message for Intents.ListIntents.
      class GoogleCloudDialogflowV2beta1ListIntentsResponse
        include Google::Apis::Core::Hashable
      
        # The list of agent intents. There will be a maximum number of items returned
        # based on the page_size field in the request.
        # Corresponds to the JSON property `intents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Intent>]
        attr_accessor :intents
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @intents = args[:intents] if args.key?(:intents)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for KnowledgeBases.ListKnowledgeBases.
      class GoogleCloudDialogflowV2beta1ListKnowledgeBasesResponse
        include Google::Apis::Core::Hashable
      
        # The list of knowledge bases.
        # Corresponds to the JSON property `knowledgeBases`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1KnowledgeBase>]
        attr_accessor :knowledge_bases
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @knowledge_bases = args[:knowledge_bases] if args.key?(:knowledge_bases)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # The response message for Conversations.ListMessages.
      class GoogleCloudDialogflowV2beta1ListMessagesResponse
        include Google::Apis::Core::Hashable
      
        # Required. The list of messages. There will be a maximum number of items
        # returned based on the page_size field in the request. `messages` is sorted by `
        # create_time` in descending order.
        # Corresponds to the JSON property `messages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Message>]
        attr_accessor :messages
      
        # Optional. Token to retrieve the next page of results, or empty if there are no
        # more results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @messages = args[:messages] if args.key?(:messages)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # The response message for Participants.ListParticipants.
      class GoogleCloudDialogflowV2beta1ListParticipantsResponse
        include Google::Apis::Core::Hashable
      
        # Token to retrieve the next page of results or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The list of participants. There is a maximum number of items returned based on
        # the page_size field in the request.
        # Corresponds to the JSON property `participants`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Participant>]
        attr_accessor :participants
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @participants = args[:participants] if args.key?(:participants)
        end
      end
      
      # The response message for PhoneNumbers.ListPhoneNumbers.
      class GoogleCloudDialogflowV2beta1ListPhoneNumbersResponse
        include Google::Apis::Core::Hashable
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The list of `PhoneNumber` resources. There is a maximum number of items
        # returned based on the page_size field in the request.
        # Corresponds to the JSON property `phoneNumbers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1PhoneNumber>]
        attr_accessor :phone_numbers
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @phone_numbers = args[:phone_numbers] if args.key?(:phone_numbers)
        end
      end
      
      # The response message for SessionEntityTypes.ListSessionEntityTypes.
      class GoogleCloudDialogflowV2beta1ListSessionEntityTypesResponse
        include Google::Apis::Core::Hashable
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The list of session entity types. There will be a maximum number of items
        # returned based on the page_size field in the request.
        # Corresponds to the JSON property `sessionEntityTypes`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SessionEntityType>]
        attr_accessor :session_entity_types
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @session_entity_types = args[:session_entity_types] if args.key?(:session_entity_types)
        end
      end
      
      # The response message for SipTrunks.ListSipTrunks.
      class GoogleCloudDialogflowV2beta1ListSipTrunksResponse
        include Google::Apis::Core::Hashable
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The list of SIP trunks.
        # Corresponds to the JSON property `sipTrunks`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SipTrunk>]
        attr_accessor :sip_trunks
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @sip_trunks = args[:sip_trunks] if args.key?(:sip_trunks)
        end
      end
      
      # The response message for Participants.ListSuggestions.
      class GoogleCloudDialogflowV2beta1ListSuggestionsResponse
        include Google::Apis::Core::Hashable
      
        # Optional. Token to retrieve the next page of results or empty if there are no
        # more results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # Required. The list of suggestions. There will be a maximum number of items
        # returned based on the page_size field in the request. `suggestions` is sorted
        # by `create_time` in descending order.
        # Corresponds to the JSON property `suggestions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Suggestion>]
        attr_accessor :suggestions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @suggestions = args[:suggestions] if args.key?(:suggestions)
        end
      end
      
      # The response message for Versions.ListVersions.
      class GoogleCloudDialogflowV2beta1ListVersionsResponse
        include Google::Apis::Core::Hashable
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The list of agent versions. There will be a maximum number of items returned
        # based on the page_size field in the request.
        # Corresponds to the JSON property `versions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Version>]
        attr_accessor :versions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @versions = args[:versions] if args.key?(:versions)
        end
      end
      
      # Defines logging behavior for conversation lifecycle events.
      class GoogleCloudDialogflowV2beta1LoggingConfig
        include Google::Apis::Core::Hashable
      
        # Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in
        # the conversation project as JSON format ConversationEvent protos.
        # Corresponds to the JSON property `enableStackdriverLogging`
        # @return [Boolean]
        attr_accessor :enable_stackdriver_logging
        alias_method :enable_stackdriver_logging?, :enable_stackdriver_logging
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_stackdriver_logging = args[:enable_stackdriver_logging] if args.key?(:enable_stackdriver_logging)
        end
      end
      
      # Represents a message posted into a conversation.
      class GoogleCloudDialogflowV2beta1Message
        include Google::Apis::Core::Hashable
      
        # Required. The message content.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # Output only. The time when the message was created in Contact Center AI.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The message language. This should be a [BCP-47](https://www.rfc-
        # editor.org/rfc/bcp/bcp47.txt) language tag. Example: "en-US".
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Represents the result of annotation for the message.
        # Corresponds to the JSON property `messageAnnotation`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1MessageAnnotation]
        attr_accessor :message_annotation
      
        # Optional. The unique identifier of the message. Format: `projects//locations//
        # conversations//messages/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. The participant that sends this message.
        # Corresponds to the JSON property `participant`
        # @return [String]
        attr_accessor :participant
      
        # Output only. The role of the participant.
        # Corresponds to the JSON property `participantRole`
        # @return [String]
        attr_accessor :participant_role
      
        # Optional. Automated agent responses.
        # Corresponds to the JSON property `responseMessages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ResponseMessage>]
        attr_accessor :response_messages
      
        # Optional. The time when the message was sent. For voice messages, this is the
        # time when an utterance started.
        # Corresponds to the JSON property `sendTime`
        # @return [String]
        attr_accessor :send_time
      
        # The result of sentiment analysis. Sentiment analysis inspects user input and
        # identifies the prevailing subjective opinion, especially to determine a user's
        # attitude as positive, negative, or neutral. For Participants.DetectIntent, it
        # needs to be configured in DetectIntentRequest.query_params. For Participants.
        # StreamingDetectIntent, it needs to be configured in
        # StreamingDetectIntentRequest.query_params. And for Participants.AnalyzeContent
        # and Participants.StreamingAnalyzeContent, it needs to be configured in
        # ConversationProfile.human_agent_assistant_config
        # Corresponds to the JSON property `sentimentAnalysis`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SentimentAnalysisResult]
        attr_accessor :sentiment_analysis
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @create_time = args[:create_time] if args.key?(:create_time)
          @language_code = args[:language_code] if args.key?(:language_code)
          @message_annotation = args[:message_annotation] if args.key?(:message_annotation)
          @name = args[:name] if args.key?(:name)
          @participant = args[:participant] if args.key?(:participant)
          @participant_role = args[:participant_role] if args.key?(:participant_role)
          @response_messages = args[:response_messages] if args.key?(:response_messages)
          @send_time = args[:send_time] if args.key?(:send_time)
          @sentiment_analysis = args[:sentiment_analysis] if args.key?(:sentiment_analysis)
        end
      end
      
      # Represents the result of annotation for the message.
      class GoogleCloudDialogflowV2beta1MessageAnnotation
        include Google::Apis::Core::Hashable
      
        # Required. Indicates whether the text message contains entities.
        # Corresponds to the JSON property `containEntities`
        # @return [Boolean]
        attr_accessor :contain_entities
        alias_method :contain_entities?, :contain_entities
      
        # Optional. The collection of annotated message parts ordered by their position
        # in the message. You can recover the annotated message by concatenating [
        # AnnotatedMessagePart.text].
        # Corresponds to the JSON property `parts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AnnotatedMessagePart>]
        attr_accessor :parts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contain_entities = args[:contain_entities] if args.key?(:contain_entities)
          @parts = args[:parts] if args.key?(:parts)
        end
      end
      
      # Represents a message entry of a conversation.
      class GoogleCloudDialogflowV2beta1MessageEntry
        include Google::Apis::Core::Hashable
      
        # Optional. Create time of the message entry.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The language of the text. See [Language Support](https://cloud.
        # google.com/dialogflow/docs/reference/language) for a list of the currently
        # supported language codes.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Optional. Participant role of the message.
        # Corresponds to the JSON property `role`
        # @return [String]
        attr_accessor :role
      
        # Optional. Transcript content of the message.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @language_code = args[:language_code] if args.key?(:language_code)
          @role = args[:role] if args.key?(:role)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Defines notification behavior.
      class GoogleCloudDialogflowV2beta1NotificationConfig
        include Google::Apis::Core::Hashable
      
        # Format of message.
        # Corresponds to the JSON property `messageFormat`
        # @return [String]
        attr_accessor :message_format
      
        # Name of the Pub/Sub topic to publish conversation events like
        # CONVERSATION_STARTED as serialized ConversationEvent protos. For telephony
        # integration to receive notification, make sure either this topic is in the
        # same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.
        # gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project.
        # For chat integration to receive notification, make sure API caller has been
        # granted the `Dialogflow Service Agent` role for the topic. Format: `projects//
        # locations//topics/`.
        # Corresponds to the JSON property `topic`
        # @return [String]
        attr_accessor :topic
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @message_format = args[:message_format] if args.key?(:message_format)
          @topic = args[:topic] if args.key?(:topic)
        end
      end
      
      # Represents the contents of the original request that was passed to the `[
      # Streaming]DetectIntent` call.
      class GoogleCloudDialogflowV2beta1OriginalDetectIntentRequest
        include Google::Apis::Core::Hashable
      
        # Optional. This field is set to the value of the `QueryParameters.payload`
        # field passed in the request. Some integrations that query a Dialogflow agent
        # may provide additional information in the payload. In particular, for the
        # Dialogflow Phone Gateway integration, this field has the form: ` "telephony": `
        # "caller_id": "+18558363987" ` ` Note: The caller ID field (`caller_id`) will
        # be redacted for Trial Edition agents and populated with the caller ID in [E.
        # 164 format](https://en.wikipedia.org/wiki/E.164) for Essentials Edition agents.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # The source of this request, e.g., `google`, `facebook`, `slack`. It is set by
        # Dialogflow-owned servers.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        # Optional. The version of the protocol used for this request. This field is AoG-
        # specific.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @payload = args[:payload] if args.key?(:payload)
          @source = args[:source] if args.key?(:source)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Represents the natural language speech audio to be played to the end user.
      class GoogleCloudDialogflowV2beta1OutputAudio
        include Google::Apis::Core::Hashable
      
        # Required. The natural language speech audio.
        # Corresponds to the JSON property `audio`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :audio
      
        # Instructs the speech synthesizer how to generate the output audio content. If
        # this audio config is supplied in a request, it overrides all existing text-to-
        # speech settings applied to the agent.
        # Corresponds to the JSON property `config`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1OutputAudioConfig]
        attr_accessor :config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio = args[:audio] if args.key?(:audio)
          @config = args[:config] if args.key?(:config)
        end
      end
      
      # Instructs the speech synthesizer how to generate the output audio content. If
      # this audio config is supplied in a request, it overrides all existing text-to-
      # speech settings applied to the agent.
      class GoogleCloudDialogflowV2beta1OutputAudioConfig
        include Google::Apis::Core::Hashable
      
        # Required. Audio encoding of the synthesized audio content.
        # Corresponds to the JSON property `audioEncoding`
        # @return [String]
        attr_accessor :audio_encoding
      
        # The synthesis sample rate (in hertz) for this audio. If not provided, then the
        # synthesizer will use the default sample rate based on the audio encoding. If
        # this is different from the voice's natural sample rate, then the synthesizer
        # will honor this request by converting to the desired sample rate (which might
        # result in worse audio quality).
        # Corresponds to the JSON property `sampleRateHertz`
        # @return [Fixnum]
        attr_accessor :sample_rate_hertz
      
        # Configuration of how speech should be synthesized.
        # Corresponds to the JSON property `synthesizeSpeechConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig]
        attr_accessor :synthesize_speech_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_encoding = args[:audio_encoding] if args.key?(:audio_encoding)
          @sample_rate_hertz = args[:sample_rate_hertz] if args.key?(:sample_rate_hertz)
          @synthesize_speech_config = args[:synthesize_speech_config] if args.key?(:synthesize_speech_config)
        end
      end
      
      # Represents a conversation participant (human agent, virtual agent, end-user).
      class GoogleCloudDialogflowV2beta1Participant
        include Google::Apis::Core::Hashable
      
        # Optional. Key-value filters on the metadata of documents returned by article
        # suggestion. If specified, article suggestion only returns suggested documents
        # that match all filters in their Document.metadata. Multiple values for a
        # metadata key should be concatenated by comma. For example, filters to match
        # all documents that have 'US' or 'CA' in their market metadata values and '
        # agent' in their user metadata values will be ``` documents_metadata_filters `
        # key: "market" value: "US,CA" ` documents_metadata_filters ` key: "user" value:
        # "agent" ` ```
        # Corresponds to the JSON property `documentsMetadataFilters`
        # @return [Hash<String,String>]
        attr_accessor :documents_metadata_filters
      
        # Optional. The unique identifier of this participant. Format: `projects//
        # locations//conversations//participants/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. Obfuscated user id that should be associated with the created
        # participant. You can specify a user id as follows: 1. If you set this field in
        # CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the
        # obfuscated user id with the participant. 2. If you set this field in
        # AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.
        # obfuscated_external_user_id. Dialogflow uses this user id for billing and
        # measurement. If a user with the same obfuscated_external_user_id is created in
        # a later conversation, Dialogflow will know it's the same user. Dialogflow also
        # uses this user id for Agent Assist suggestion personalization. For example,
        # Dialogflow can use it to provide personalized smart reply suggestions for this
        # user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate
        # your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a
        # hex digest of a hash function like SHA-512. * The length of the user id must
        # be <= 256 characters.
        # Corresponds to the JSON property `obfuscatedExternalUserId`
        # @return [String]
        attr_accessor :obfuscated_external_user_id
      
        # Immutable. The role this participant plays in the conversation. This field
        # must be set during participant creation and is then immutable.
        # Corresponds to the JSON property `role`
        # @return [String]
        attr_accessor :role
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @documents_metadata_filters = args[:documents_metadata_filters] if args.key?(:documents_metadata_filters)
          @name = args[:name] if args.key?(:name)
          @obfuscated_external_user_id = args[:obfuscated_external_user_id] if args.key?(:obfuscated_external_user_id)
          @role = args[:role] if args.key?(:role)
        end
      end
      
      # Represents a phone number. `PhoneNumber` resources enable phone calls to be
      # answered by Dialogflow services and are added to a project through a
      # PhoneNumberOrder.
      class GoogleCloudDialogflowV2beta1PhoneNumber
        include Google::Apis::Core::Hashable
      
        # Optional. The conversation profile calls to this `PhoneNumber` should use. The
        # project ID here should be the same as the one in name. Format: `projects//
        # conversationProfiles/`. Format: `projects//locations//conversationProfiles/`.
        # Corresponds to the JSON property `conversationProfile`
        # @return [String]
        attr_accessor :conversation_profile
      
        # Output only. The state of the `PhoneNumber`. Defaults to `ACTIVE`. `
        # PhoneNumber` objects set to `DELETE_REQUESTED` always decline incoming calls
        # and can be removed completely within 30 days.
        # Corresponds to the JSON property `lifecycleState`
        # @return [String]
        attr_accessor :lifecycle_state
      
        # Optional. The unique identifier of this phone number. Required for
        # PhoneNumbers.UpdatePhoneNumber method. Format: `projects//phoneNumbers/`.
        # Format: `projects//locations//phoneNumbers/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Phone number in [E.164](https://en.wikipedia.org/wiki/E.164)
        # format. An example of a correctly formatted phone number: +15556767888.
        # Corresponds to the JSON property `phoneNumber`
        # @return [String]
        attr_accessor :phone_number
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_profile = args[:conversation_profile] if args.key?(:conversation_profile)
          @lifecycle_state = args[:lifecycle_state] if args.key?(:lifecycle_state)
          @name = args[:name] if args.key?(:name)
          @phone_number = args[:phone_number] if args.key?(:phone_number)
        end
      end
      
      # Represents the query input. It can contain either: 1. An audio config which
      # instructs the speech recognizer how to process the speech audio. 2. A
      # conversational query in the form of text. 3. An event that specifies which
      # intent to trigger.
      class GoogleCloudDialogflowV2beta1QueryInput
        include Google::Apis::Core::Hashable
      
        # Instructs the speech recognizer on how to process the audio content.
        # Corresponds to the JSON property `audioConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1InputAudioConfig]
        attr_accessor :audio_config
      
        # A wrapper of repeated TelephonyDtmf digits.
        # Corresponds to the JSON property `dtmf`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1TelephonyDtmfEvents]
        attr_accessor :dtmf
      
        # Events allow for matching intents by event name instead of the natural
        # language input. For instance, input `` can trigger a personalized welcome
        # response. The parameter `name` may be used by the agent in the response: `"
        # Hello #welcome_event.name! What can I do for you today?"`.
        # Corresponds to the JSON property `event`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EventInput]
        attr_accessor :event
      
        # Represents the natural language text to be processed.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1TextInput]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_config = args[:audio_config] if args.key?(:audio_config)
          @dtmf = args[:dtmf] if args.key?(:dtmf)
          @event = args[:event] if args.key?(:event)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Represents the parameters of the conversational query.
      class GoogleCloudDialogflowV2beta1QueryParameters
        include Google::Apis::Core::Hashable
      
        # The collection of contexts to be activated before this query is executed.
        # Corresponds to the JSON property `contexts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Context>]
        attr_accessor :contexts
      
        # An object that represents a latitude/longitude pair. This is expressed as a
        # pair of doubles to represent degrees latitude and degrees longitude. Unless
        # specified otherwise, this object must conform to the WGS84 standard. Values
        # must be within normalized ranges.
        # Corresponds to the JSON property `geoLocation`
        # @return [Google::Apis::DialogflowV2beta1::GoogleTypeLatLng]
        attr_accessor :geo_location
      
        # KnowledgeBases to get alternative results from. If not set, the KnowledgeBases
        # enabled in the agent (through UI) will be used. Format: `projects//
        # knowledgeBases/`.
        # Corresponds to the JSON property `knowledgeBaseNames`
        # @return [Array<String>]
        attr_accessor :knowledge_base_names
      
        # This field can be used to pass custom data to your webhook. Arbitrary JSON
        # objects are supported. If supplied, the value is used to populate the `
        # WebhookRequest.original_detect_intent_request.payload` field sent to your
        # webhook.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # The platform of the virtual agent response messages. If not empty, only emits
        # messages from this platform in the response. Valid values are the enum names
        # of platform.
        # Corresponds to the JSON property `platform`
        # @return [String]
        attr_accessor :platform
      
        # Specifies whether to delete all contexts in the current session before the new
        # ones are activated.
        # Corresponds to the JSON property `resetContexts`
        # @return [Boolean]
        attr_accessor :reset_contexts
        alias_method :reset_contexts?, :reset_contexts
      
        # Configures the types of sentiment analysis to perform.
        # Corresponds to the JSON property `sentimentAnalysisRequestConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SentimentAnalysisRequestConfig]
        attr_accessor :sentiment_analysis_request_config
      
        # Additional session entity types to replace or extend developer entity types
        # with. The entity synonyms apply to all languages and persist for the session
        # of this query.
        # Corresponds to the JSON property `sessionEntityTypes`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SessionEntityType>]
        attr_accessor :session_entity_types
      
        # For mega agent query, directly specify which sub agents to query. If any
        # specified sub agent is not linked to the mega agent, an error will be returned.
        # If empty, Dialogflow will decide which sub agents to query. If specified for
        # a non-mega-agent query, will be silently ignored.
        # Corresponds to the JSON property `subAgents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SubAgent>]
        attr_accessor :sub_agents
      
        # The time zone of this conversational query from the [time zone database](https:
        # //www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. If not
        # provided, the time zone specified in agent settings is used.
        # Corresponds to the JSON property `timeZone`
        # @return [String]
        attr_accessor :time_zone
      
        # This field can be used to pass HTTP headers for a webhook call. These headers
        # will be sent to webhook along with the headers that have been configured
        # through Dialogflow web console. The headers defined within this field will
        # overwrite the headers configured through Dialogflow console if there is a
        # conflict. Header names are case-insensitive. Google's specified headers are
        # not allowed. Including: "Host", "Content-Length", "Connection", "From", "User-
        # Agent", "Accept-Encoding", "If-Modified-Since", "If-None-Match", "X-Forwarded-
        # For", etc.
        # Corresponds to the JSON property `webhookHeaders`
        # @return [Hash<String,String>]
        attr_accessor :webhook_headers
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contexts = args[:contexts] if args.key?(:contexts)
          @geo_location = args[:geo_location] if args.key?(:geo_location)
          @knowledge_base_names = args[:knowledge_base_names] if args.key?(:knowledge_base_names)
          @payload = args[:payload] if args.key?(:payload)
          @platform = args[:platform] if args.key?(:platform)
          @reset_contexts = args[:reset_contexts] if args.key?(:reset_contexts)
          @sentiment_analysis_request_config = args[:sentiment_analysis_request_config] if args.key?(:sentiment_analysis_request_config)
          @session_entity_types = args[:session_entity_types] if args.key?(:session_entity_types)
          @sub_agents = args[:sub_agents] if args.key?(:sub_agents)
          @time_zone = args[:time_zone] if args.key?(:time_zone)
          @webhook_headers = args[:webhook_headers] if args.key?(:webhook_headers)
        end
      end
      
      # Represents the result of conversational query or event processing.
      class GoogleCloudDialogflowV2beta1QueryResult
        include Google::Apis::Core::Hashable
      
        # The action name from the matched intent.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # This field is set to: - `false` if the matched intent has required parameters
        # and not all of the required parameter values have been collected. - `true` if
        # all required parameter values have been collected, or if the matched intent
        # doesn't contain any required parameters.
        # Corresponds to the JSON property `allRequiredParamsPresent`
        # @return [Boolean]
        attr_accessor :all_required_params_present
        alias_method :all_required_params_present?, :all_required_params_present
      
        # Indicates whether the conversational query triggers a cancellation for slot
        # filling. For more information, see the [cancel slot filling documentation](
        # https://cloud.google.com/dialogflow/es/docs/intents-actions-parameters#cancel).
        # Corresponds to the JSON property `cancelsSlotFilling`
        # @return [Boolean]
        attr_accessor :cancels_slot_filling
        alias_method :cancels_slot_filling?, :cancels_slot_filling
      
        # Free-form diagnostic information for the associated detect intent request. The
        # fields of this data can change without notice, so you should not write code
        # that depends on its structure. The data may contain: - webhook call latency -
        # webhook errors
        # Corresponds to the JSON property `diagnosticInfo`
        # @return [Hash<String,Object>]
        attr_accessor :diagnostic_info
      
        # The collection of rich messages to present to the user.
        # Corresponds to the JSON property `fulfillmentMessages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessage>]
        attr_accessor :fulfillment_messages
      
        # The text to be pronounced to the user or shown on the screen. Note: This is a
        # legacy field, `fulfillment_messages` should be preferred.
        # Corresponds to the JSON property `fulfillmentText`
        # @return [String]
        attr_accessor :fulfillment_text
      
        # An intent categorizes an end-user's intention for one conversation turn. For
        # each agent, you define many intents, where your combined intents can handle a
        # complete conversation. When an end-user writes or says something, referred to
        # as an end-user expression or end-user input, Dialogflow matches the end-user
        # input to the best intent in your agent. Matching an intent is also known as
        # intent classification. For more information, see the [intent guide](https://
        # cloud.google.com/dialogflow/docs/intents-overview).
        # Corresponds to the JSON property `intent`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Intent]
        attr_accessor :intent
      
        # The intent detection confidence. Values range from 0.0 (completely uncertain)
        # to 1.0 (completely certain). This value is for informational purpose only and
        # is only used to help match the best intent within the classification threshold.
        # This value may change for the same end-user expression at any time due to a
        # model retraining or change in implementation. If there are `multiple
        # knowledge_answers` messages, this value is set to the greatest `
        # knowledgeAnswers.match_confidence` value in the list.
        # Corresponds to the JSON property `intentDetectionConfidence`
        # @return [Float]
        attr_accessor :intent_detection_confidence
      
        # Represents the result of querying a Knowledge base.
        # Corresponds to the JSON property `knowledgeAnswers`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1KnowledgeAnswers]
        attr_accessor :knowledge_answers
      
        # The language that was triggered during intent detection. See [Language Support]
        # (https://cloud.google.com/dialogflow/docs/reference/language) for a list of
        # the currently supported language codes.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # The collection of output contexts. If applicable, `output_contexts.parameters`
        # contains entries with name `.original` containing the original parameter
        # values before the query.
        # Corresponds to the JSON property `outputContexts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Context>]
        attr_accessor :output_contexts
      
        # The collection of extracted parameters. Depending on your protocol or client
        # library language, this is a map, associative array, symbol table, dictionary,
        # or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey
        # type: string * MapKey value: parameter name * MapValue type: If parameter's
        # entity type is a composite entity then use map, otherwise, depending on the
        # parameter value type, it could be one of string, number, boolean, null, list
        # or map. * MapValue value: If parameter's entity type is a composite entity
        # then use map from composite entity property names to property values,
        # otherwise, use parameter value.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        # The original conversational query text: - If natural language text was
        # provided as input, `query_text` contains a copy of the input. - If natural
        # language speech audio was provided as input, `query_text` contains the speech
        # recognition result. If speech recognizer produced multiple alternatives, a
        # particular one is picked. - If automatic spell correction is enabled, `
        # query_text` will contain the corrected user input.
        # Corresponds to the JSON property `queryText`
        # @return [String]
        attr_accessor :query_text
      
        # The result of sentiment analysis. Sentiment analysis inspects user input and
        # identifies the prevailing subjective opinion, especially to determine a user's
        # attitude as positive, negative, or neutral. For Participants.DetectIntent, it
        # needs to be configured in DetectIntentRequest.query_params. For Participants.
        # StreamingDetectIntent, it needs to be configured in
        # StreamingDetectIntentRequest.query_params. And for Participants.AnalyzeContent
        # and Participants.StreamingAnalyzeContent, it needs to be configured in
        # ConversationProfile.human_agent_assistant_config
        # Corresponds to the JSON property `sentimentAnalysisResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SentimentAnalysisResult]
        attr_accessor :sentiment_analysis_result
      
        # The Speech recognition confidence between 0.0 and 1.0. A higher number
        # indicates an estimated greater likelihood that the recognized words are
        # correct. The default of 0.0 is a sentinel value indicating that confidence was
        # not set. This field is not guaranteed to be accurate or set. In particular
        # this field isn't set for StreamingDetectIntent since the streaming endpoint
        # has separate confidence estimates per portion of the audio in
        # StreamingRecognitionResult.
        # Corresponds to the JSON property `speechRecognitionConfidence`
        # @return [Float]
        attr_accessor :speech_recognition_confidence
      
        # If the query was fulfilled by a webhook call, this field is set to the value
        # of the `payload` field returned in the webhook response.
        # Corresponds to the JSON property `webhookPayload`
        # @return [Hash<String,Object>]
        attr_accessor :webhook_payload
      
        # If the query was fulfilled by a webhook call, this field is set to the value
        # of the `source` field returned in the webhook response.
        # Corresponds to the JSON property `webhookSource`
        # @return [String]
        attr_accessor :webhook_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @all_required_params_present = args[:all_required_params_present] if args.key?(:all_required_params_present)
          @cancels_slot_filling = args[:cancels_slot_filling] if args.key?(:cancels_slot_filling)
          @diagnostic_info = args[:diagnostic_info] if args.key?(:diagnostic_info)
          @fulfillment_messages = args[:fulfillment_messages] if args.key?(:fulfillment_messages)
          @fulfillment_text = args[:fulfillment_text] if args.key?(:fulfillment_text)
          @intent = args[:intent] if args.key?(:intent)
          @intent_detection_confidence = args[:intent_detection_confidence] if args.key?(:intent_detection_confidence)
          @knowledge_answers = args[:knowledge_answers] if args.key?(:knowledge_answers)
          @language_code = args[:language_code] if args.key?(:language_code)
          @output_contexts = args[:output_contexts] if args.key?(:output_contexts)
          @parameters = args[:parameters] if args.key?(:parameters)
          @query_text = args[:query_text] if args.key?(:query_text)
          @sentiment_analysis_result = args[:sentiment_analysis_result] if args.key?(:sentiment_analysis_result)
          @speech_recognition_confidence = args[:speech_recognition_confidence] if args.key?(:speech_recognition_confidence)
          @webhook_payload = args[:webhook_payload] if args.key?(:webhook_payload)
          @webhook_source = args[:webhook_source] if args.key?(:webhook_source)
        end
      end
      
      # Settings for Responsible AI checks.
      class GoogleCloudDialogflowV2beta1RaiSettings
        include Google::Apis::Core::Hashable
      
        # Configuration for a set of RAI categories.
        # Corresponds to the JSON property `raiCategoryConfigs`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1RaiSettingsRaiCategoryConfig>]
        attr_accessor :rai_category_configs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rai_category_configs = args[:rai_category_configs] if args.key?(:rai_category_configs)
        end
      end
      
      # Configuration for a specific RAI category.
      class GoogleCloudDialogflowV2beta1RaiSettingsRaiCategoryConfig
        include Google::Apis::Core::Hashable
      
        # Optional. The RAI category.
        # Corresponds to the JSON property `category`
        # @return [String]
        attr_accessor :category
      
        # Optional. The sensitivity level for this category.
        # Corresponds to the JSON property `sensitivityLevel`
        # @return [String]
        attr_accessor :sensitivity_level
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @category = args[:category] if args.key?(:category)
          @sensitivity_level = args[:sensitivity_level] if args.key?(:sensitivity_level)
        end
      end
      
      # Request message for Documents.ReloadDocument.
      class GoogleCloudDialogflowV2beta1ReloadDocumentRequest
        include Google::Apis::Core::Hashable
      
        # Google Cloud Storage location for single input.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GcsSource]
        attr_accessor :gcs_source
      
        # Whether to import custom metadata from Google Cloud Storage. Only valid when
        # the document source is Google Cloud Storage URI.
        # Corresponds to the JSON property `importGcsCustomMetadata`
        # @return [Boolean]
        attr_accessor :import_gcs_custom_metadata
        alias_method :import_gcs_custom_metadata?, :import_gcs_custom_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
          @import_gcs_custom_metadata = args[:import_gcs_custom_metadata] if args.key?(:import_gcs_custom_metadata)
        end
      end
      
      # Response messages from an automated agent.
      class GoogleCloudDialogflowV2beta1ResponseMessage
        include Google::Apis::Core::Hashable
      
        # Indicates that interaction with the Dialogflow agent has ended.
        # Corresponds to the JSON property `endInteraction`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ResponseMessageEndInteraction]
        attr_accessor :end_interaction
      
        # Indicates that the conversation should be handed off to a human agent.
        # Dialogflow only uses this to determine which conversations were handed off to
        # a human agent for measurement purposes. What else to do with this signal is up
        # to you and your handoff procedures. You may set this, for example: * In the
        # entry fulfillment of a Dialogflow CX Page if entering the page indicates
        # something went extremely wrong in the conversation. * In a webhook response
        # when you determine that the customer issue can only be handled by a human.
        # Corresponds to the JSON property `liveAgentHandoff`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ResponseMessageLiveAgentHandoff]
        attr_accessor :live_agent_handoff
      
        # Represents an audio message that is composed of both segments synthesized from
        # the Dialogflow agent prompts and ones hosted externally at the specified URIs.
        # Corresponds to the JSON property `mixedAudio`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ResponseMessageMixedAudio]
        attr_accessor :mixed_audio
      
        # Returns a response containing a custom, platform-specific payload.
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Represents the signal that telles the client to transfer the phone call
        # connected to the agent to a third-party endpoint.
        # Corresponds to the JSON property `telephonyTransferCall`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ResponseMessageTelephonyTransferCall]
        attr_accessor :telephony_transfer_call
      
        # The text response message.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ResponseMessageText]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_interaction = args[:end_interaction] if args.key?(:end_interaction)
          @live_agent_handoff = args[:live_agent_handoff] if args.key?(:live_agent_handoff)
          @mixed_audio = args[:mixed_audio] if args.key?(:mixed_audio)
          @payload = args[:payload] if args.key?(:payload)
          @telephony_transfer_call = args[:telephony_transfer_call] if args.key?(:telephony_transfer_call)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Indicates that interaction with the Dialogflow agent has ended.
      class GoogleCloudDialogflowV2beta1ResponseMessageEndInteraction
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Indicates that the conversation should be handed off to a human agent.
      # Dialogflow only uses this to determine which conversations were handed off to
      # a human agent for measurement purposes. What else to do with this signal is up
      # to you and your handoff procedures. You may set this, for example: * In the
      # entry fulfillment of a Dialogflow CX Page if entering the page indicates
      # something went extremely wrong in the conversation. * In a webhook response
      # when you determine that the customer issue can only be handled by a human.
      class GoogleCloudDialogflowV2beta1ResponseMessageLiveAgentHandoff
        include Google::Apis::Core::Hashable
      
        # Custom metadata for your handoff procedure. Dialogflow doesn't impose any
        # structure on this.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # Represents an audio message that is composed of both segments synthesized from
      # the Dialogflow agent prompts and ones hosted externally at the specified URIs.
      class GoogleCloudDialogflowV2beta1ResponseMessageMixedAudio
        include Google::Apis::Core::Hashable
      
        # Segments this audio response is composed of.
        # Corresponds to the JSON property `segments`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ResponseMessageMixedAudioSegment>]
        attr_accessor :segments
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @segments = args[:segments] if args.key?(:segments)
        end
      end
      
      # Represents one segment of audio.
      class GoogleCloudDialogflowV2beta1ResponseMessageMixedAudioSegment
        include Google::Apis::Core::Hashable
      
        # Whether the playback of this segment can be interrupted by the end user's
        # speech and the client should then start the next Dialogflow request.
        # Corresponds to the JSON property `allowPlaybackInterruption`
        # @return [Boolean]
        attr_accessor :allow_playback_interruption
        alias_method :allow_playback_interruption?, :allow_playback_interruption
      
        # Raw audio synthesized from the Dialogflow agent's response using the output
        # config specified in the request.
        # Corresponds to the JSON property `audio`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :audio
      
        # Client-specific URI that points to an audio clip accessible to the client.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_playback_interruption = args[:allow_playback_interruption] if args.key?(:allow_playback_interruption)
          @audio = args[:audio] if args.key?(:audio)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Represents the signal that telles the client to transfer the phone call
      # connected to the agent to a third-party endpoint.
      class GoogleCloudDialogflowV2beta1ResponseMessageTelephonyTransferCall
        include Google::Apis::Core::Hashable
      
        # Transfer the call to a phone number in [E.164 format](https://en.wikipedia.org/
        # wiki/E.164).
        # Corresponds to the JSON property `phoneNumber`
        # @return [String]
        attr_accessor :phone_number
      
        # Transfer the call to a SIP endpoint.
        # Corresponds to the JSON property `sipUri`
        # @return [String]
        attr_accessor :sip_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @phone_number = args[:phone_number] if args.key?(:phone_number)
          @sip_uri = args[:sip_uri] if args.key?(:sip_uri)
        end
      end
      
      # The text response message.
      class GoogleCloudDialogflowV2beta1ResponseMessageText
        include Google::Apis::Core::Hashable
      
        # A collection of text response variants. If multiple variants are defined, only
        # one text response variant is returned at runtime.
        # Corresponds to the JSON property `text`
        # @return [Array<String>]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # The request message for Agents.RestoreAgent.
      class GoogleCloudDialogflowV2beta1RestoreAgentRequest
        include Google::Apis::Core::Hashable
      
        # Zip compressed raw byte content for agent.
        # Corresponds to the JSON property `agentContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :agent_content
      
        # The URI to a Google Cloud Storage file containing the agent to restore. Note:
        # The URI must start with "gs://". Dialogflow performs a read operation for the
        # Cloud Storage object on the caller's behalf, so your request authentication
        # must have read permissions for the object. For more information, see [
        # Dialogflow access control](https://cloud.google.com/dialogflow/cx/docs/concept/
        # access-control#storage).
        # Corresponds to the JSON property `agentUri`
        # @return [String]
        attr_accessor :agent_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_content = args[:agent_content] if args.key?(:agent_content)
          @agent_uri = args[:agent_uri] if args.key?(:agent_uri)
        end
      end
      
      # The response message for Agents.SearchAgents.
      class GoogleCloudDialogflowV2beta1SearchAgentsResponse
        include Google::Apis::Core::Hashable
      
        # The list of agents. There will be a maximum number of items returned based on
        # the page_size field in the request.
        # Corresponds to the JSON property `agents`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Agent>]
        attr_accessor :agents
      
        # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agents = args[:agents] if args.key?(:agents)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Represents a SearchKnowledge answer.
      class GoogleCloudDialogflowV2beta1SearchKnowledgeAnswer
        include Google::Apis::Core::Hashable
      
        # The piece of text from the knowledge base documents that answers the search
        # query
        # Corresponds to the JSON property `answer`
        # @return [String]
        attr_accessor :answer
      
        # The name of the answer record. Format: `projects//locations//answer Records/`
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # All sources used to generate the answer.
        # Corresponds to the JSON property `answerSources`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SearchKnowledgeAnswerAnswerSource>]
        attr_accessor :answer_sources
      
        # The type of the answer.
        # Corresponds to the JSON property `answerType`
        # @return [String]
        attr_accessor :answer_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer = args[:answer] if args.key?(:answer)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @answer_sources = args[:answer_sources] if args.key?(:answer_sources)
          @answer_type = args[:answer_type] if args.key?(:answer_type)
        end
      end
      
      # The sources of the answers.
      class GoogleCloudDialogflowV2beta1SearchKnowledgeAnswerAnswerSource
        include Google::Apis::Core::Hashable
      
        # Metadata associated with the article.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        # The relevant snippet of the article.
        # Corresponds to the JSON property `snippet`
        # @return [String]
        attr_accessor :snippet
      
        # The title of the article.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # The URI of the article.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata = args[:metadata] if args.key?(:metadata)
          @snippet = args[:snippet] if args.key?(:snippet)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # The request message for Conversations.SearchKnowledge.
      class GoogleCloudDialogflowV2beta1SearchKnowledgeRequest
        include Google::Apis::Core::Hashable
      
        # Optional. The conversation (between human agent and end user) where the search
        # request is triggered. Format: `projects//locations//conversations/`.
        # Corresponds to the JSON property `conversation`
        # @return [String]
        attr_accessor :conversation
      
        # Required. The conversation profile used to configure the search. Format: `
        # projects//locations//conversationProfiles/`.
        # Corresponds to the JSON property `conversationProfile`
        # @return [String]
        attr_accessor :conversation_profile
      
        # Optional. Information about the end-user to improve the relevance and accuracy
        # of generative answers. This will be interpreted and used by a language model,
        # so, for good results, the data should be self-descriptive, and in a simple
        # structure. Example: ```json ` "subscription plan": "Business Premium Plus", "
        # devices owned": [ `"model": "Google Pixel 7"`, `"model": "Google Pixel Tablet"`
        # ] ` ```
        # Corresponds to the JSON property `endUserMetadata`
        # @return [Hash<String,Object>]
        attr_accessor :end_user_metadata
      
        # Optional. Whether to search the query exactly without query rewrite.
        # Corresponds to the JSON property `exactSearch`
        # @return [Boolean]
        attr_accessor :exact_search
        alias_method :exact_search?, :exact_search
      
        # Optional. The name of the latest conversation message when the request is
        # triggered. Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        # Required. The parent resource contains the conversation profile Format: '
        # projects/' or `projects//locations/`.
        # Corresponds to the JSON property `parent`
        # @return [String]
        attr_accessor :parent
      
        # Represents the natural language text to be processed.
        # Corresponds to the JSON property `query`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1TextInput]
        attr_accessor :query
      
        # Optional. The source of the query in the request.
        # Corresponds to the JSON property `querySource`
        # @return [String]
        attr_accessor :query_source
      
        # Configuration specific to search queries with data stores.
        # Corresponds to the JSON property `searchConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfig]
        attr_accessor :search_config
      
        # Required. The ID of the search session. The session_id can be combined with
        # Dialogflow V3 Agent ID retrieved from conversation profile or on its own to
        # identify a search session. The search history of the same session will impact
        # the search result. It's up to the API caller to choose an appropriate `Session
        # ID`. It can be a random number or some type of session identifiers (preferably
        # hashed). The length must not exceed 36 characters.
        # Corresponds to the JSON property `sessionId`
        # @return [String]
        attr_accessor :session_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation = args[:conversation] if args.key?(:conversation)
          @conversation_profile = args[:conversation_profile] if args.key?(:conversation_profile)
          @end_user_metadata = args[:end_user_metadata] if args.key?(:end_user_metadata)
          @exact_search = args[:exact_search] if args.key?(:exact_search)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
          @parent = args[:parent] if args.key?(:parent)
          @query = args[:query] if args.key?(:query)
          @query_source = args[:query_source] if args.key?(:query_source)
          @search_config = args[:search_config] if args.key?(:search_config)
          @session_id = args[:session_id] if args.key?(:session_id)
        end
      end
      
      # Configuration specific to search queries with data stores.
      class GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Boost specifications for data stores.
        # Corresponds to the JSON property `boostSpecs`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecs>]
        attr_accessor :boost_specs
      
        # Optional. Filter specification for data store queries. Maps from datastore
        # name to the filter expression for that datastore. Do not specify more than one
        # FilterSpecs for each datastore name. If multiple FilterSpecs are provided for
        # the same datastore name, the behavior is undefined.
        # Corresponds to the JSON property `filterSpecs`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigFilterSpecs>]
        attr_accessor :filter_specs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @boost_specs = args[:boost_specs] if args.key?(:boost_specs)
          @filter_specs = args[:filter_specs] if args.key?(:filter_specs)
        end
      end
      
      # Boost specifications for data stores. Maps from datastore name to their boost
      # configuration. Do not specify more than one BoostSpecs for each datastore name.
      # If multiple BoostSpecs are provided for the same datastore name, the behavior
      # is undefined.
      class GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecs
        include Google::Apis::Core::Hashable
      
        # Optional. Data Stores where the boosting configuration is applied. The full
        # names of the referenced data stores. Formats: `projects/`project`/locations/`
        # location`/collections/`collection`/dataStores/`data_store`` `projects/`project`
        # /locations/`location`/dataStores/`data_store``
        # Corresponds to the JSON property `dataStores`
        # @return [Array<String>]
        attr_accessor :data_stores
      
        # Optional. A list of boosting specifications.
        # Corresponds to the JSON property `spec`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpec>]
        attr_accessor :spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_stores = args[:data_stores] if args.key?(:data_stores)
          @spec = args[:spec] if args.key?(:spec)
        end
      end
      
      # Boost specification to boost certain documents. A copy of google.cloud.
      # discoveryengine.v1main.BoostSpec, field documentation is available at https://
      # cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1alpha/
      # BoostSpec
      class GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Condition boost specifications. If a document matches multiple
        # conditions in the specifications, boost scores from these specifications are
        # all applied and combined in a non-linear way. Maximum number of specifications
        # is 20.
        # Corresponds to the JSON property `conditionBoostSpecs`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpec>]
        attr_accessor :condition_boost_specs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @condition_boost_specs = args[:condition_boost_specs] if args.key?(:condition_boost_specs)
        end
      end
      
      # Boost applies to documents which match a condition.
      class GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Strength of the condition boost, which should be in [-1, 1].
        # Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the
        # document a big promotion. However, it does not necessarily mean that the
        # boosted document will be the top result at all times, nor that other documents
        # will be excluded. Results could still be shown even when none of them matches
        # the condition. And results that are significantly more relevant to the search
        # query can still trump your heavily favored but irrelevant documents. Setting
        # to -1.0 gives the document a big demotion. However, results that are deeply
        # relevant might still be shown. The document will have an upstream battle to
        # get a fairly high ranking, but it is not blocked out completely. Setting to 0.
        # 0 means no boost applied. The boosting condition is ignored.
        # Corresponds to the JSON property `boost`
        # @return [Float]
        attr_accessor :boost
      
        # Specification for custom ranking based on customer specified attribute value.
        # It provides more controls for customized ranking than the simple (condition,
        # boost) combination above.
        # Corresponds to the JSON property `boostControlSpec`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpecBoostControlSpec]
        attr_accessor :boost_control_spec
      
        # Optional. An expression which specifies a boost condition. The syntax and
        # supported fields are the same as a filter expression. Examples: * To boost
        # documents with document ID "doc_1" or "doc_2", and color "Red" or "Blue": * (
        # id: ANY("doc_1", "doc_2")) AND (color: ANY("Red","Blue"))
        # Corresponds to the JSON property `condition`
        # @return [String]
        attr_accessor :condition
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @boost = args[:boost] if args.key?(:boost)
          @boost_control_spec = args[:boost_control_spec] if args.key?(:boost_control_spec)
          @condition = args[:condition] if args.key?(:condition)
        end
      end
      
      # Specification for custom ranking based on customer specified attribute value.
      # It provides more controls for customized ranking than the simple (condition,
      # boost) combination above.
      class GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpecBoostControlSpec
        include Google::Apis::Core::Hashable
      
        # Optional. The attribute type to be used to determine the boost amount. The
        # attribute value can be derived from the field value of the specified
        # field_name. In the case of numerical it is straightforward i.e.
        # attribute_value = numerical_field_value. In the case of freshness however,
        # attribute_value = (time.now() - datetime_field_value).
        # Corresponds to the JSON property `attributeType`
        # @return [String]
        attr_accessor :attribute_type
      
        # Optional. The control points used to define the curve. The monotonic function (
        # defined through the interpolation_type above) passes through the control
        # points listed here.
        # Corresponds to the JSON property `controlPoints`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpecBoostControlSpecControlPoint>]
        attr_accessor :control_points
      
        # Optional. The name of the field whose value will be used to determine the
        # boost amount.
        # Corresponds to the JSON property `fieldName`
        # @return [String]
        attr_accessor :field_name
      
        # Optional. The interpolation type to be applied to connect the control points
        # listed below.
        # Corresponds to the JSON property `interpolationType`
        # @return [String]
        attr_accessor :interpolation_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @attribute_type = args[:attribute_type] if args.key?(:attribute_type)
          @control_points = args[:control_points] if args.key?(:control_points)
          @field_name = args[:field_name] if args.key?(:field_name)
          @interpolation_type = args[:interpolation_type] if args.key?(:interpolation_type)
        end
      end
      
      # The control points used to define the curve. The curve defined through these
      # control points can only be monotonically increasing or decreasing(constant
      # values are acceptable).
      class GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpecBoostControlSpecControlPoint
        include Google::Apis::Core::Hashable
      
        # Optional. Can be one of: 1. The numerical field value. 2. The duration spec
        # for freshness: The value must be formatted as an XSD `dayTimeDuration` value (
        # a restricted subset of an ISO 8601 duration value). The pattern for this is: `
        # nDnM]`.
        # Corresponds to the JSON property `attributeValue`
        # @return [String]
        attr_accessor :attribute_value
      
        # Optional. The value between -1 to 1 by which to boost the score if the
        # attribute_value evaluates to the value specified above.
        # Corresponds to the JSON property `boostAmount`
        # @return [Float]
        attr_accessor :boost_amount
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @attribute_value = args[:attribute_value] if args.key?(:attribute_value)
          @boost_amount = args[:boost_amount] if args.key?(:boost_amount)
        end
      end
      
      # Filter specification for data store queries.
      class GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigFilterSpecs
        include Google::Apis::Core::Hashable
      
        # Optional. The data store where the filter configuration is applied. Full
        # resource name of data store, such as projects/`project`/locations/`location`/
        # collections/`collectionId`/ dataStores/`dataStoreId`.
        # Corresponds to the JSON property `dataStores`
        # @return [Array<String>]
        attr_accessor :data_stores
      
        # Optional. The filter expression to be applied. Expression syntax is documented
        # at https://cloud.google.com/generative-ai-app-builder/docs/filter-search-
        # metadata#filter-expression-syntax
        # Corresponds to the JSON property `filter`
        # @return [String]
        attr_accessor :filter
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_stores = args[:data_stores] if args.key?(:data_stores)
          @filter = args[:filter] if args.key?(:filter)
        end
      end
      
      # The response message for Conversations.SearchKnowledge.
      class GoogleCloudDialogflowV2beta1SearchKnowledgeResponse
        include Google::Apis::Core::Hashable
      
        # Most relevant snippets extracted from articles in the given knowledge base,
        # ordered by confidence.
        # Corresponds to the JSON property `answers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SearchKnowledgeAnswer>]
        attr_accessor :answers
      
        # The rewritten query used to search knowledge.
        # Corresponds to the JSON property `rewrittenQuery`
        # @return [String]
        attr_accessor :rewritten_query
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answers = args[:answers] if args.key?(:answers)
          @rewritten_query = args[:rewritten_query] if args.key?(:rewritten_query)
        end
      end
      
      # The sentiment, such as positive/negative feeling or association, for a unit of
      # analysis, such as the query text. See: https://cloud.google.com/natural-
      # language/docs/basics#interpreting_sentiment_analysis_values for how to
      # interpret the result.
      class GoogleCloudDialogflowV2beta1Sentiment
        include Google::Apis::Core::Hashable
      
        # A non-negative number in the [0, +inf) range, which represents the absolute
        # magnitude of sentiment, regardless of score (positive or negative).
        # Corresponds to the JSON property `magnitude`
        # @return [Float]
        attr_accessor :magnitude
      
        # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @magnitude = args[:magnitude] if args.key?(:magnitude)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Configures the types of sentiment analysis to perform.
      class GoogleCloudDialogflowV2beta1SentimentAnalysisRequestConfig
        include Google::Apis::Core::Hashable
      
        # Instructs the service to perform sentiment analysis on `query_text`. If not
        # provided, sentiment analysis is not performed on `query_text`.
        # Corresponds to the JSON property `analyzeQueryTextSentiment`
        # @return [Boolean]
        attr_accessor :analyze_query_text_sentiment
        alias_method :analyze_query_text_sentiment?, :analyze_query_text_sentiment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @analyze_query_text_sentiment = args[:analyze_query_text_sentiment] if args.key?(:analyze_query_text_sentiment)
        end
      end
      
      # The result of sentiment analysis. Sentiment analysis inspects user input and
      # identifies the prevailing subjective opinion, especially to determine a user's
      # attitude as positive, negative, or neutral. For Participants.DetectIntent, it
      # needs to be configured in DetectIntentRequest.query_params. For Participants.
      # StreamingDetectIntent, it needs to be configured in
      # StreamingDetectIntentRequest.query_params. And for Participants.AnalyzeContent
      # and Participants.StreamingAnalyzeContent, it needs to be configured in
      # ConversationProfile.human_agent_assistant_config
      class GoogleCloudDialogflowV2beta1SentimentAnalysisResult
        include Google::Apis::Core::Hashable
      
        # The sentiment, such as positive/negative feeling or association, for a unit of
        # analysis, such as the query text. See: https://cloud.google.com/natural-
        # language/docs/basics#interpreting_sentiment_analysis_values for how to
        # interpret the result.
        # Corresponds to the JSON property `queryTextSentiment`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Sentiment]
        attr_accessor :query_text_sentiment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @query_text_sentiment = args[:query_text_sentiment] if args.key?(:query_text_sentiment)
        end
      end
      
      # A session represents a conversation between a Dialogflow agent and an end-user.
      # You can create special entities, called session entities, during a session.
      # Session entities can extend or replace custom entity types and only exist
      # during the session that they were created for. All session data, including
      # session entities, is stored by Dialogflow for 20 minutes. For more information,
      # see the [session entity guide](https://cloud.google.com/dialogflow/docs/
      # entities-session).
      class GoogleCloudDialogflowV2beta1SessionEntityType
        include Google::Apis::Core::Hashable
      
        # Required. The collection of entities associated with this session entity type.
        # Corresponds to the JSON property `entities`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EntityTypeEntity>]
        attr_accessor :entities
      
        # Required. Indicates whether the additional data should override or supplement
        # the custom entity type definition.
        # Corresponds to the JSON property `entityOverrideMode`
        # @return [String]
        attr_accessor :entity_override_mode
      
        # Required. The unique identifier of this session entity type. Supported formats:
        # - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/
        # sessions//entityTypes/` - `projects//agent/environments//users//sessions//
        # entityTypes/` - `projects//locations//agent/environments/ /users//sessions//
        # entityTypes/` If `Location ID` is not specified we assume default 'us'
        # location. If `Environment ID` is not specified, we assume default 'draft'
        # environment. If `User ID` is not specified, we assume default '-' user. ``
        # must be the display name of an existing entity type in the same agent that
        # will be overridden or supplemented.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entities = args[:entities] if args.key?(:entities)
          @entity_override_mode = args[:entity_override_mode] if args.key?(:entity_override_mode)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Metadata for a ConversationProfile.SetSuggestionFeatureConfig operation.
      class GoogleCloudDialogflowV2beta1SetSuggestionFeatureConfigOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the conversation profile. Format: `projects//locations//
        # conversationProfiles/`
        # Corresponds to the JSON property `conversationProfile`
        # @return [String]
        attr_accessor :conversation_profile
      
        # Timestamp whe the request was created. The time is measured on server side.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The participant role to add or update the suggestion feature config.
        # Only HUMAN_AGENT or END_USER can be used.
        # Corresponds to the JSON property `participantRole`
        # @return [String]
        attr_accessor :participant_role
      
        # Required. The type of the suggestion feature to add or update.
        # Corresponds to the JSON property `suggestionFeatureType`
        # @return [String]
        attr_accessor :suggestion_feature_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_profile = args[:conversation_profile] if args.key?(:conversation_profile)
          @create_time = args[:create_time] if args.key?(:create_time)
          @participant_role = args[:participant_role] if args.key?(:participant_role)
          @suggestion_feature_type = args[:suggestion_feature_type] if args.key?(:suggestion_feature_type)
        end
      end
      
      # The request message for ConversationProfiles.SetSuggestionFeature.
      class GoogleCloudDialogflowV2beta1SetSuggestionFeatureConfigRequest
        include Google::Apis::Core::Hashable
      
        # Required. The participant role to add or update the suggestion feature config.
        # Only HUMAN_AGENT or END_USER can be used.
        # Corresponds to the JSON property `participantRole`
        # @return [String]
        attr_accessor :participant_role
      
        # Config for suggestion features.
        # Corresponds to the JSON property `suggestionFeatureConfig`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfig]
        attr_accessor :suggestion_feature_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @participant_role = args[:participant_role] if args.key?(:participant_role)
          @suggestion_feature_config = args[:suggestion_feature_config] if args.key?(:suggestion_feature_config)
        end
      end
      
      # SipTrunk is the resource that represents a SIP trunk to connect to Google
      # Telephony platform SIP trunking service.
      class GoogleCloudDialogflowV2beta1SipTrunk
        include Google::Apis::Core::Hashable
      
        # Output only. Connections of the SIP trunk.
        # Corresponds to the JSON property `connections`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Connection>]
        attr_accessor :connections
      
        # Optional. Human readable alias for this trunk.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Required. The expected hostnames in the peer certificate from partner that is
        # used for TLS authentication.
        # Corresponds to the JSON property `expectedHostname`
        # @return [Array<String>]
        attr_accessor :expected_hostname
      
        # Identifier. The unique identifier of the SIP trunk. Format: `projects//
        # locations//sipTrunks/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @connections = args[:connections] if args.key?(:connections)
          @display_name = args[:display_name] if args.key?(:display_name)
          @expected_hostname = args[:expected_hostname] if args.key?(:expected_hostname)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Represents a smart reply answer.
      class GoogleCloudDialogflowV2beta1SmartReplyAnswer
        include Google::Apis::Core::Hashable
      
        # The name of answer record, in the format of "projects//locations//
        # answerRecords/"
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Smart reply confidence. The system's confidence score that this reply is a
        # good match for this conversation, as a value from 0.0 (completely uncertain)
        # to 1.0 (completely certain).
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # The content of the reply.
        # Corresponds to the JSON property `reply`
        # @return [String]
        attr_accessor :reply
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @confidence = args[:confidence] if args.key?(:confidence)
          @reply = args[:reply] if args.key?(:reply)
        end
      end
      
      # Hints for the speech recognizer to help with recognition in a specific
      # conversation state.
      class GoogleCloudDialogflowV2beta1SpeechContext
        include Google::Apis::Core::Hashable
      
        # Optional. Boost for this context compared to other contexts: * If the boost is
        # positive, Dialogflow will increase the probability that the phrases in this
        # context are recognized over similar sounding phrases. * If the boost is
        # unspecified or non-positive, Dialogflow will not apply any boost. Dialogflow
        # recommends that you use boosts in the range (0, 20] and that you find a value
        # that fits your use case with binary search.
        # Corresponds to the JSON property `boost`
        # @return [Float]
        attr_accessor :boost
      
        # Optional. A list of strings containing words and phrases that the speech
        # recognizer should recognize with higher likelihood. This list can be used to: *
        # improve accuracy for words and phrases you expect the user to say, e.g.
        # typical commands for your Dialogflow agent * add additional words to the
        # speech recognizer vocabulary * ... See the [Cloud Speech documentation](https:/
        # /cloud.google.com/speech-to-text/quotas) for usage limits.
        # Corresponds to the JSON property `phrases`
        # @return [Array<String>]
        attr_accessor :phrases
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @boost = args[:boost] if args.key?(:boost)
          @phrases = args[:phrases] if args.key?(:phrases)
        end
      end
      
      # Configures speech transcription for ConversationProfile.
      class GoogleCloudDialogflowV2beta1SpeechToTextConfig
        include Google::Apis::Core::Hashable
      
        # Audio encoding of the audio content to process.
        # Corresponds to the JSON property `audioEncoding`
        # @return [String]
        attr_accessor :audio_encoding
      
        # If `true`, Dialogflow returns SpeechWordInfo in StreamingRecognitionResult
        # with information about the recognized speech words, e.g. start and end time
        # offsets. If false or unspecified, Speech doesn't return any word-level
        # information.
        # Corresponds to the JSON property `enableWordInfo`
        # @return [Boolean]
        attr_accessor :enable_word_info
        alias_method :enable_word_info?, :enable_word_info
      
        # The language of the supplied audio. Dialogflow does not do translations. See [
        # Language Support](https://cloud.google.com/dialogflow/docs/reference/language)
        # for a list of the currently supported language codes. Note that queries in the
        # same session do not necessarily need to specify the same language. If not
        # specified, the default language configured at ConversationProfile is used.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Which Speech model to select. Select the model best suited to your domain to
        # get best results. If a model is not explicitly specified, then Dialogflow auto-
        # selects a model based on other parameters in the SpeechToTextConfig and Agent
        # settings. If enhanced speech model is enabled for the agent and an enhanced
        # version of the specified model for the language does not exist, then the
        # speech is recognized using the standard version of the specified model. Refer
        # to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/
        # docs/basics#select-model) for more details. If you specify a model, the
        # following models typically have the best performance: - phone_call (best for
        # Agent Assist and telephony) - latest_short (best for Dialogflow non-telephony)
        # - command_and_search Leave this field unspecified to use [Agent Speech
        # settings](https://cloud.google.com/dialogflow/cx/docs/concept/agent#settings-
        # speech) for model selection.
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # List of names of Cloud Speech phrase sets that are used for transcription. For
        # phrase set limitations, please refer to [Cloud Speech API quotas and limits](
        # https://cloud.google.com/speech-to-text/quotas#content).
        # Corresponds to the JSON property `phraseSets`
        # @return [Array<String>]
        attr_accessor :phrase_sets
      
        # Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud
        # Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics)
        # for more details.
        # Corresponds to the JSON property `sampleRateHertz`
        # @return [Fixnum]
        attr_accessor :sample_rate_hertz
      
        # The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `
        # USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in
        # AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced
        # model variant is specified and an enhanced version of the specified model for
        # the language does not exist, then it would emit an error.
        # Corresponds to the JSON property `speechModelVariant`
        # @return [String]
        attr_accessor :speech_model_variant
      
        # Use timeout based endpointing, interpreting endpointer sensitivity as seconds
        # of timeout value.
        # Corresponds to the JSON property `useTimeoutBasedEndpointing`
        # @return [Boolean]
        attr_accessor :use_timeout_based_endpointing
        alias_method :use_timeout_based_endpointing?, :use_timeout_based_endpointing
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_encoding = args[:audio_encoding] if args.key?(:audio_encoding)
          @enable_word_info = args[:enable_word_info] if args.key?(:enable_word_info)
          @language_code = args[:language_code] if args.key?(:language_code)
          @model = args[:model] if args.key?(:model)
          @phrase_sets = args[:phrase_sets] if args.key?(:phrase_sets)
          @sample_rate_hertz = args[:sample_rate_hertz] if args.key?(:sample_rate_hertz)
          @speech_model_variant = args[:speech_model_variant] if args.key?(:speech_model_variant)
          @use_timeout_based_endpointing = args[:use_timeout_based_endpointing] if args.key?(:use_timeout_based_endpointing)
        end
      end
      
      # Information for a word recognized by the speech recognizer.
      class GoogleCloudDialogflowV2beta1SpeechWordInfo
        include Google::Apis::Core::Hashable
      
        # The Speech confidence between 0.0 and 1.0 for this word. A higher number
        # indicates an estimated greater likelihood that the recognized word is correct.
        # The default of 0.0 is a sentinel value indicating that confidence was not set.
        # This field is not guaranteed to be fully stable over time for the same audio
        # input. Users should also not rely on it to always be provided.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Time offset relative to the beginning of the audio that corresponds to the end
        # of the spoken word. This is an experimental feature and the accuracy of the
        # time offset can vary.
        # Corresponds to the JSON property `endOffset`
        # @return [String]
        attr_accessor :end_offset
      
        # Time offset relative to the beginning of the audio that corresponds to the
        # start of the spoken word. This is an experimental feature and the accuracy of
        # the time offset can vary.
        # Corresponds to the JSON property `startOffset`
        # @return [String]
        attr_accessor :start_offset
      
        # The word this info is for.
        # Corresponds to the JSON property `word`
        # @return [String]
        attr_accessor :word
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @end_offset = args[:end_offset] if args.key?(:end_offset)
          @start_offset = args[:start_offset] if args.key?(:start_offset)
          @word = args[:word] if args.key?(:word)
        end
      end
      
      # Contains a speech recognition result corresponding to a portion of the audio
      # that is currently being processed or an indication that this is the end of the
      # single requested utterance. While end-user audio is being processed,
      # Dialogflow sends a series of results. Each result may contain a `transcript`
      # value. A transcript represents a portion of the utterance. While the
      # recognizer is processing audio, transcript values may be interim values or
      # finalized values. Once a transcript is finalized, the `is_final` value is set
      # to true and processing continues for the next transcript. If `
      # StreamingDetectIntentRequest.query_input.audio_config.single_utterance` was
      # true, and the recognizer has completed processing audio, the `message_type`
      # value is set to `END_OF_SINGLE_UTTERANCE and the following (last) result
      # contains the last finalized transcript. The complete end-user utterance is
      # determined by concatenating the finalized transcript values received for the
      # series of results. In the following example, single utterance is enabled. In
      # the case where single utterance is not enabled, result 7 would not occur. ```
      # Num | transcript | message_type | is_final --- | ----------------------- | ----
      # ------------------- | -------- 1 | "tube" | TRANSCRIPT | false 2 | "to be a" |
      # TRANSCRIPT | false 3 | "to be" | TRANSCRIPT | false 4 | "to be or not to be" |
      # TRANSCRIPT | true 5 | "that's" | TRANSCRIPT | false 6 | "that is | TRANSCRIPT |
      # false 7 | unset | END_OF_SINGLE_UTTERANCE | unset 8 | " that is the question"
      # | TRANSCRIPT | true ``` Concatenating the finalized transcripts with `is_final`
      # set to true, the complete utterance becomes "to be or not to be that is the
      # question".
      class GoogleCloudDialogflowV2beta1StreamingRecognitionResult
        include Google::Apis::Core::Hashable
      
        # The Speech confidence between 0.0 and 1.0 for the current portion of audio. A
        # higher number indicates an estimated greater likelihood that the recognized
        # words are correct. The default of 0.0 is a sentinel value indicating that
        # confidence was not set. This field is typically only provided if `is_final` is
        # true and you should not rely on it being accurate or even set.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # A wrapper of repeated TelephonyDtmf digits.
        # Corresponds to the JSON property `dtmfDigits`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1TelephonyDtmfEvents]
        attr_accessor :dtmf_digits
      
        # If `false`, the `StreamingRecognitionResult` represents an interim result that
        # may change. If `true`, the recognizer will not return any further hypotheses
        # about this piece of the audio. May only be populated for `message_type` = `
        # TRANSCRIPT`.
        # Corresponds to the JSON property `isFinal`
        # @return [Boolean]
        attr_accessor :is_final
        alias_method :is_final?, :is_final
      
        # Detected language code for the transcript.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Type of the result message.
        # Corresponds to the JSON property `messageType`
        # @return [String]
        attr_accessor :message_type
      
        # Time offset of the end of this Speech recognition result relative to the
        # beginning of the audio. Only populated for `message_type` = `TRANSCRIPT`.
        # Corresponds to the JSON property `speechEndOffset`
        # @return [String]
        attr_accessor :speech_end_offset
      
        # Word-specific information for the words recognized by Speech in transcript.
        # Populated if and only if `message_type` = `TRANSCRIPT` and [InputAudioConfig.
        # enable_word_info] is set.
        # Corresponds to the JSON property `speechWordInfo`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SpeechWordInfo>]
        attr_accessor :speech_word_info
      
        # An estimate of the likelihood that the speech recognizer will not change its
        # guess about this interim recognition result: * If the value is unspecified or
        # 0.0, Dialogflow didn't compute the stability. In particular, Dialogflow will
        # only provide stability for `TRANSCRIPT` results with `is_final = false`. *
        # Otherwise, the value is in (0.0, 1.0] where 0.0 means completely unstable and
        # 1.0 means completely stable.
        # Corresponds to the JSON property `stability`
        # @return [Float]
        attr_accessor :stability
      
        # Transcript text representing the words that the user spoke. Populated if and
        # only if `message_type` = `TRANSCRIPT`.
        # Corresponds to the JSON property `transcript`
        # @return [String]
        attr_accessor :transcript
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @dtmf_digits = args[:dtmf_digits] if args.key?(:dtmf_digits)
          @is_final = args[:is_final] if args.key?(:is_final)
          @language_code = args[:language_code] if args.key?(:language_code)
          @message_type = args[:message_type] if args.key?(:message_type)
          @speech_end_offset = args[:speech_end_offset] if args.key?(:speech_end_offset)
          @speech_word_info = args[:speech_word_info] if args.key?(:speech_word_info)
          @stability = args[:stability] if args.key?(:stability)
          @transcript = args[:transcript] if args.key?(:transcript)
        end
      end
      
      # Contains basic configuration for a sub-agent.
      class GoogleCloudDialogflowV2beta1SubAgent
        include Google::Apis::Core::Hashable
      
        # Optional. The unique identifier (`environment name` in dialogflow console) of
        # this sub-agent environment. Assumes draft environment if `environment` is not
        # set.
        # Corresponds to the JSON property `environment`
        # @return [String]
        attr_accessor :environment
      
        # Required. The project of this agent. Format: `projects/` or `projects//
        # locations/`.
        # Corresponds to the JSON property `project`
        # @return [String]
        attr_accessor :project
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @environment = args[:environment] if args.key?(:environment)
          @project = args[:project] if args.key?(:project)
        end
      end
      
      # The request message for Participants.SuggestArticles.
      class GoogleCloudDialogflowV2beta1SuggestArticlesRequest
        include Google::Apis::Core::Hashable
      
        # Represents the parameters of human assist query.
        # Corresponds to the JSON property `assistQueryParams`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AssistQueryParameters]
        attr_accessor :assist_query_params
      
        # Optional. Max number of messages prior to and including latest_message to use
        # as context when compiling the suggestion. By default 20 and at most 50.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Optional. The name of the latest conversation message to compile suggestion
        # for. If empty, it will be the latest message of the conversation. Format: `
        # projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @assist_query_params = args[:assist_query_params] if args.key?(:assist_query_params)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The response message for Participants.SuggestArticles.
      class GoogleCloudDialogflowV2beta1SuggestArticlesResponse
        include Google::Apis::Core::Hashable
      
        # Output only. Articles ordered by score in descending order.
        # Corresponds to the JSON property `articleAnswers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ArticleAnswer>]
        attr_accessor :article_answers
      
        # Number of messages prior to and including latest_message to compile the
        # suggestion. It may be smaller than the SuggestArticlesResponse.context_size
        # field in the request if there aren't that many messages in the conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # The name of the latest conversation message used to compile suggestion for.
        # Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @article_answers = args[:article_answers] if args.key?(:article_answers)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The request message for Conversations.SuggestConversationSummary.
      class GoogleCloudDialogflowV2beta1SuggestConversationSummaryRequest
        include Google::Apis::Core::Hashable
      
        # Represents the parameters of human assist query.
        # Corresponds to the JSON property `assistQueryParams`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AssistQueryParameters]
        attr_accessor :assist_query_params
      
        # Optional. Max number of messages prior to and including [latest_message] to
        # use as context when compiling the suggestion. By default 500 and at most 1000.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Optional. The name of the latest conversation message used as context for
        # compiling suggestion. If empty, the latest message of the conversation will be
        # used. Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @assist_query_params = args[:assist_query_params] if args.key?(:assist_query_params)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The response message for Conversations.SuggestConversationSummary.
      class GoogleCloudDialogflowV2beta1SuggestConversationSummaryResponse
        include Google::Apis::Core::Hashable
      
        # Number of messages prior to and including last_conversation_message used to
        # compile the suggestion. It may be smaller than the SuggestSummaryRequest.
        # context_size field in the request if there weren't that many messages in the
        # conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # The name of the latest conversation message used as context for compiling
        # suggestion. Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        # Generated summary for a conversation.
        # Corresponds to the JSON property `summary`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestConversationSummaryResponseSummary]
        attr_accessor :summary
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
          @summary = args[:summary] if args.key?(:summary)
        end
      end
      
      # Generated summary for a conversation.
      class GoogleCloudDialogflowV2beta1SuggestConversationSummaryResponseSummary
        include Google::Apis::Core::Hashable
      
        # The name of the answer record. Format: "projects//answerRecords/"
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # The baseline model version used to generate this summary. It is empty if a
        # baseline model was not used to generate this summary.
        # Corresponds to the JSON property `baselineModelVersion`
        # @return [String]
        attr_accessor :baseline_model_version
      
        # The summary content that is concatenated into one string.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # The summary content that is divided into sections. The key is the section's
        # name and the value is the section's content. There is no specific format for
        # the key or value.
        # Corresponds to the JSON property `textSections`
        # @return [Hash<String,String>]
        attr_accessor :text_sections
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @baseline_model_version = args[:baseline_model_version] if args.key?(:baseline_model_version)
          @text = args[:text] if args.key?(:text)
          @text_sections = args[:text_sections] if args.key?(:text_sections)
        end
      end
      
      # The response message for Participants.SuggestDialogflowAssists.
      class GoogleCloudDialogflowV2beta1SuggestDialogflowAssistsResponse
        include Google::Apis::Core::Hashable
      
        # Number of messages prior to and including latest_message to compile the
        # suggestion. It may be smaller than the SuggestDialogflowAssistsRequest.
        # context_size field in the request if there aren't that many messages in the
        # conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Output only. Multiple reply options provided by Dialogflow assist service. The
        # order is based on the rank of the model prediction.
        # Corresponds to the JSON property `dialogflowAssistAnswers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1DialogflowAssistAnswer>]
        attr_accessor :dialogflow_assist_answers
      
        # The name of the latest conversation message used to suggest answer. Format: `
        # projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @dialogflow_assist_answers = args[:dialogflow_assist_answers] if args.key?(:dialogflow_assist_answers)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The request message for Participants.SuggestFaqAnswers.
      class GoogleCloudDialogflowV2beta1SuggestFaqAnswersRequest
        include Google::Apis::Core::Hashable
      
        # Represents the parameters of human assist query.
        # Corresponds to the JSON property `assistQueryParams`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1AssistQueryParameters]
        attr_accessor :assist_query_params
      
        # Optional. Max number of messages prior to and including [latest_message] to
        # use as context when compiling the suggestion. By default 20 and at most 50.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Optional. The name of the latest conversation message to compile suggestion
        # for. If empty, it will be the latest message of the conversation. Format: `
        # projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @assist_query_params = args[:assist_query_params] if args.key?(:assist_query_params)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The request message for Participants.SuggestFaqAnswers.
      class GoogleCloudDialogflowV2beta1SuggestFaqAnswersResponse
        include Google::Apis::Core::Hashable
      
        # Number of messages prior to and including latest_message to compile the
        # suggestion. It may be smaller than the SuggestFaqAnswersRequest.context_size
        # field in the request if there aren't that many messages in the conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Output only. Answers extracted from FAQ documents.
        # Corresponds to the JSON property `faqAnswers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1FaqAnswer>]
        attr_accessor :faq_answers
      
        # The name of the latest conversation message used to compile suggestion for.
        # Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @faq_answers = args[:faq_answers] if args.key?(:faq_answers)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The request message for Participants.SuggestKnowledgeAssist.
      class GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Max number of messages prior to and including latest_message to use
        # as context when compiling the suggestion. The context size is by default 100
        # and at most 100.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Optional. The name of the latest conversation message to compile suggestions
        # for. If empty, it will be the latest message of the conversation. Format: `
        # projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        # Optional. The previously suggested query for the given conversation. This
        # helps identify whether the next suggestion we generate is reasonably different
        # from the previous one. This is useful to avoid similar suggestions within the
        # conversation.
        # Corresponds to the JSON property `previousSuggestedQuery`
        # @return [String]
        attr_accessor :previous_suggested_query
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
          @previous_suggested_query = args[:previous_suggested_query] if args.key?(:previous_suggested_query)
        end
      end
      
      # The response message for Participants.SuggestKnowledgeAssist.
      class GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistResponse
        include Google::Apis::Core::Hashable
      
        # Number of messages prior to and including latest_message to compile the
        # suggestion. It may be smaller than the SuggestKnowledgeAssistRequest.
        # context_size field in the request if there are fewer messages in the
        # conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Represents a Knowledge Assist answer.
        # Corresponds to the JSON property `knowledgeAssistAnswer`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1KnowledgeAssistAnswer]
        attr_accessor :knowledge_assist_answer
      
        # The name of the latest conversation message used to compile suggestion for.
        # Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @knowledge_assist_answer = args[:knowledge_assist_answer] if args.key?(:knowledge_assist_answer)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The request message for Participants.SuggestSmartReplies.
      class GoogleCloudDialogflowV2beta1SuggestSmartRepliesRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Max number of messages prior to and including [latest_message] to
        # use as context when compiling the suggestion. By default 20 and at most 50.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # Represents the natural language text to be processed.
        # Corresponds to the JSON property `currentTextInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1TextInput]
        attr_accessor :current_text_input
      
        # The name of the latest conversation message to compile suggestion for. If
        # empty, it will be the latest message of the conversation. Format: `projects//
        # locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @current_text_input = args[:current_text_input] if args.key?(:current_text_input)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
        end
      end
      
      # The response message for Participants.SuggestSmartReplies.
      class GoogleCloudDialogflowV2beta1SuggestSmartRepliesResponse
        include Google::Apis::Core::Hashable
      
        # Number of messages prior to and including latest_message to compile the
        # suggestion. It may be smaller than the SuggestSmartRepliesRequest.context_size
        # field in the request if there aren't that many messages in the conversation.
        # Corresponds to the JSON property `contextSize`
        # @return [Fixnum]
        attr_accessor :context_size
      
        # The name of the latest conversation message used to compile suggestion for.
        # Format: `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        # Output only. Multiple reply options provided by smart reply service. The order
        # is based on the rank of the model prediction. The maximum number of the
        # returned replies is set in SmartReplyConfig.
        # Corresponds to the JSON property `smartReplyAnswers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SmartReplyAnswer>]
        attr_accessor :smart_reply_answers
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context_size = args[:context_size] if args.key?(:context_size)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
          @smart_reply_answers = args[:smart_reply_answers] if args.key?(:smart_reply_answers)
        end
      end
      
      # Represents a suggestion for a human agent.
      class GoogleCloudDialogflowV2beta1Suggestion
        include Google::Apis::Core::Hashable
      
        # Output only. Articles ordered by score in descending order.
        # Corresponds to the JSON property `articles`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestionArticle>]
        attr_accessor :articles
      
        # Output only. The time the suggestion was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Output only. Answers extracted from FAQ documents.
        # Corresponds to the JSON property `faqAnswers`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestionFaqAnswer>]
        attr_accessor :faq_answers
      
        # Output only. Latest message used as context to compile this suggestion. Format:
        # `projects//locations//conversations//messages/`.
        # Corresponds to the JSON property `latestMessage`
        # @return [String]
        attr_accessor :latest_message
      
        # Output only. The name of this suggestion. Format: `projects//locations//
        # conversations//participants/*/suggestions/`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @articles = args[:articles] if args.key?(:articles)
          @create_time = args[:create_time] if args.key?(:create_time)
          @faq_answers = args[:faq_answers] if args.key?(:faq_answers)
          @latest_message = args[:latest_message] if args.key?(:latest_message)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Represents suggested article.
      class GoogleCloudDialogflowV2beta1SuggestionArticle
        include Google::Apis::Core::Hashable
      
        # Output only. The name of answer record, in the format of "projects//locations//
        # answerRecords/"
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Output only. A map that contains metadata about the answer and the document
        # from which it originates.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,String>]
        attr_accessor :metadata
      
        # Output only. Article snippets.
        # Corresponds to the JSON property `snippets`
        # @return [Array<String>]
        attr_accessor :snippets
      
        # Output only. The article title.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # Output only. The article URI.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @metadata = args[:metadata] if args.key?(:metadata)
          @snippets = args[:snippets] if args.key?(:snippets)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Config for suggestion deduping. NEXT_ID: 3
      class GoogleCloudDialogflowV2beta1SuggestionDedupingConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to enable suggestion deduping.
        # Corresponds to the JSON property `enableDeduping`
        # @return [Boolean]
        attr_accessor :enable_deduping
        alias_method :enable_deduping?, :enable_deduping
      
        # Optional. The threshold for similarity between two suggestions. Acceptable
        # value is [0.0, 1.0], default to 0.8
        # Corresponds to the JSON property `similarityThreshold`
        # @return [Float]
        attr_accessor :similarity_threshold
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_deduping = args[:enable_deduping] if args.key?(:enable_deduping)
          @similarity_threshold = args[:similarity_threshold] if args.key?(:similarity_threshold)
        end
      end
      
      # Represents suggested answer from "frequently asked questions".
      class GoogleCloudDialogflowV2beta1SuggestionFaqAnswer
        include Google::Apis::Core::Hashable
      
        # Output only. The piece of text from the `source` knowledge base document.
        # Corresponds to the JSON property `answer`
        # @return [String]
        attr_accessor :answer
      
        # Output only. The name of answer record, in the format of "projects//locations//
        # answerRecords/"
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # The system's confidence score that this Knowledge answer is a good match for
        # this conversational query, range from 0.0 (completely uncertain) to 1.0 (
        # completely certain).
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. A map that contains metadata about the answer and the document
        # from which it originates.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,String>]
        attr_accessor :metadata
      
        # Output only. The corresponding FAQ question.
        # Corresponds to the JSON property `question`
        # @return [String]
        attr_accessor :question
      
        # Output only. Indicates which Knowledge Document this answer was extracted from.
        # Format: `projects//locations//agent/knowledgeBases//documents/`.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @answer = args[:answer] if args.key?(:answer)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @confidence = args[:confidence] if args.key?(:confidence)
          @metadata = args[:metadata] if args.key?(:metadata)
          @question = args[:question] if args.key?(:question)
          @source = args[:source] if args.key?(:source)
        end
      end
      
      # The type of Human Agent Assistant API suggestion to perform, and the maximum
      # number of results to return for that type. Multiple `Feature` objects can be
      # specified in the `features` list.
      class GoogleCloudDialogflowV2beta1SuggestionFeature
        include Google::Apis::Core::Hashable
      
        # Type of Human Agent Assistant API feature to request.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Represents the action to take for a tool call that requires confirmation.
      class GoogleCloudDialogflowV2beta1SuggestionInput
        include Google::Apis::Core::Hashable
      
        # Optional. The type of action to take with the tool.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # Required. Format: `projects//locations//answerRecords/` The answer record
        # associated with the tool call.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Represents the intent to trigger programmatically rather than as a result of
        # natural language processing. The intent input is only used for V3 agent.
        # Corresponds to the JSON property `intentInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentInput]
        attr_accessor :intent_input
      
        # Parameters to be used for the tool call. If not provided, the tool will be
        # called without any parameters.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        # Optional. Time when the current suggest input is sent. For tool calls, this
        # timestamp (along with the answer record) will be included in the corresponding
        # tool call result so that it can be identified.
        # Corresponds to the JSON property `sendTime`
        # @return [String]
        attr_accessor :send_time
      
        # Represents the natural language text to be processed.
        # Corresponds to the JSON property `textOverride`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1TextInput]
        attr_accessor :text_override
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @intent_input = args[:intent_input] if args.key?(:intent_input)
          @parameters = args[:parameters] if args.key?(:parameters)
          @send_time = args[:send_time] if args.key?(:send_time)
          @text_override = args[:text_override] if args.key?(:text_override)
        end
      end
      
      # One response of different type of suggestion response which is used in the
      # response of Participants.AnalyzeContent and Participants.AnalyzeContent, as
      # well as HumanAgentAssistantEvent.
      class GoogleCloudDialogflowV2beta1SuggestionResult
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :error
      
        # The response message for Conversations.GenerateSuggestions.
        # Corresponds to the JSON property `generateSuggestionsResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1GenerateSuggestionsResponse]
        attr_accessor :generate_suggestions_response
      
        # The response message for Participants.SuggestArticles.
        # Corresponds to the JSON property `suggestArticlesResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestArticlesResponse]
        attr_accessor :suggest_articles_response
      
        # The response message for Participants.SuggestDialogflowAssists.
        # Corresponds to the JSON property `suggestDialogflowAssistsResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestDialogflowAssistsResponse]
        attr_accessor :suggest_dialogflow_assists_response
      
        # The response message for Participants.SuggestDialogflowAssists.
        # Corresponds to the JSON property `suggestEntityExtractionResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestDialogflowAssistsResponse]
        attr_accessor :suggest_entity_extraction_response
      
        # The request message for Participants.SuggestFaqAnswers.
        # Corresponds to the JSON property `suggestFaqAnswersResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestFaqAnswersResponse]
        attr_accessor :suggest_faq_answers_response
      
        # The response message for Participants.SuggestKnowledgeAssist.
        # Corresponds to the JSON property `suggestKnowledgeAssistResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistResponse]
        attr_accessor :suggest_knowledge_assist_response
      
        # The response message for Participants.SuggestSmartReplies.
        # Corresponds to the JSON property `suggestSmartRepliesResponse`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SuggestSmartRepliesResponse]
        attr_accessor :suggest_smart_replies_response
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @error = args[:error] if args.key?(:error)
          @generate_suggestions_response = args[:generate_suggestions_response] if args.key?(:generate_suggestions_response)
          @suggest_articles_response = args[:suggest_articles_response] if args.key?(:suggest_articles_response)
          @suggest_dialogflow_assists_response = args[:suggest_dialogflow_assists_response] if args.key?(:suggest_dialogflow_assists_response)
          @suggest_entity_extraction_response = args[:suggest_entity_extraction_response] if args.key?(:suggest_entity_extraction_response)
          @suggest_faq_answers_response = args[:suggest_faq_answers_response] if args.key?(:suggest_faq_answers_response)
          @suggest_knowledge_assist_response = args[:suggest_knowledge_assist_response] if args.key?(:suggest_knowledge_assist_response)
          @suggest_smart_replies_response = args[:suggest_smart_replies_response] if args.key?(:suggest_smart_replies_response)
        end
      end
      
      # Summarization context that customer can configure.
      class GoogleCloudDialogflowV2beta1SummarizationContext
        include Google::Apis::Core::Hashable
      
        # Optional. List of few shot examples.
        # Corresponds to the JSON property `fewShotExamples`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1FewShotExample>]
        attr_accessor :few_shot_examples
      
        # Optional. The target language of the generated summary. The language code for
        # conversation will be used if this field is empty. Supported 2.0 and later
        # versions.
        # Corresponds to the JSON property `outputLanguageCode`
        # @return [String]
        attr_accessor :output_language_code
      
        # Optional. List of sections. Note it contains both predefined section sand
        # customer defined sections.
        # Corresponds to the JSON property `summarizationSections`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationSection>]
        attr_accessor :summarization_sections
      
        # Optional. Version of the feature. If not set, default to latest version.
        # Current candidates are ["1.0"].
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @few_shot_examples = args[:few_shot_examples] if args.key?(:few_shot_examples)
          @output_language_code = args[:output_language_code] if args.key?(:output_language_code)
          @summarization_sections = args[:summarization_sections] if args.key?(:summarization_sections)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Evaluation metrics for summarization generator.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # Output only. List of conversation details.
        # Corresponds to the JSON property `conversationDetails`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsConversationDetail>]
        attr_accessor :conversation_details
      
        # Output only. A list of aggregated(average) scores per metric section.
        # Corresponds to the JSON property `overallMetrics`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsOverallScoresByMetric>]
        attr_accessor :overall_metrics
      
        # Output only. Overall token per section. This is an aggregated(sum) result of
        # input token of summary acorss all conversations that are selected for
        # summarization evaluation.
        # Corresponds to the JSON property `overallSectionTokens`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsSectionToken>]
        attr_accessor :overall_section_tokens
      
        # Output only. User bucket uri for merged evaluation score and aggregation score
        # csv.
        # Corresponds to the JSON property `summarizationEvaluationMergedResultsUri`
        # @return [String]
        attr_accessor :summarization_evaluation_merged_results_uri
      
        # Output only. A list of evaluation results per conversation(&summary), metric
        # and section.
        # Corresponds to the JSON property `summarizationEvaluationResults`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsSummarizationEvaluationResult>]
        attr_accessor :summarization_evaluation_results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conversation_details = args[:conversation_details] if args.key?(:conversation_details)
          @overall_metrics = args[:overall_metrics] if args.key?(:overall_metrics)
          @overall_section_tokens = args[:overall_section_tokens] if args.key?(:overall_section_tokens)
          @summarization_evaluation_merged_results_uri = args[:summarization_evaluation_merged_results_uri] if args.key?(:summarization_evaluation_merged_results_uri)
          @summarization_evaluation_results = args[:summarization_evaluation_results] if args.key?(:summarization_evaluation_results)
        end
      end
      
      # Decomposition details for accuracy.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsAccuracyDecomposition
        include Google::Apis::Core::Hashable
      
        # Output only. The accuracy reasoning of the breakdown point.
        # Corresponds to the JSON property `accuracyReasoning`
        # @return [String]
        attr_accessor :accuracy_reasoning
      
        # Output only. Whether the breakdown point is accurate or not.
        # Corresponds to the JSON property `isAccurate`
        # @return [Boolean]
        attr_accessor :is_accurate
        alias_method :is_accurate?, :is_accurate
      
        # Output only. The breakdown point of the summary.
        # Corresponds to the JSON property `point`
        # @return [String]
        attr_accessor :point
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @accuracy_reasoning = args[:accuracy_reasoning] if args.key?(:accuracy_reasoning)
          @is_accurate = args[:is_accurate] if args.key?(:is_accurate)
          @point = args[:point] if args.key?(:point)
        end
      end
      
      # Decomposition details for adherence.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsAdherenceDecomposition
        include Google::Apis::Core::Hashable
      
        # Output only. The adherence reasoning of the breakdown point.
        # Corresponds to the JSON property `adherenceReasoning`
        # @return [String]
        attr_accessor :adherence_reasoning
      
        # Output only. Whether the breakdown point is adherent or not.
        # Corresponds to the JSON property `isAdherent`
        # @return [Boolean]
        attr_accessor :is_adherent
        alias_method :is_adherent?, :is_adherent
      
        # Output only. The breakdown point of the given instructions.
        # Corresponds to the JSON property `point`
        # @return [String]
        attr_accessor :point
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @adherence_reasoning = args[:adherence_reasoning] if args.key?(:adherence_reasoning)
          @is_adherent = args[:is_adherent] if args.key?(:is_adherent)
          @point = args[:point] if args.key?(:point)
        end
      end
      
      # Rubric result of the adherence evaluation. A rubric is ued to determine if the
      # summary adheres to all aspects of the given instructions.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsAdherenceRubric
        include Google::Apis::Core::Hashable
      
        # Output only. A boolean that indicates whether the rubric question is addressed
        # or not.
        # Corresponds to the JSON property `isAddressed`
        # @return [Boolean]
        attr_accessor :is_addressed
        alias_method :is_addressed?, :is_addressed
      
        # Output only. The question generated from instruction that used to evaluate
        # summary.
        # Corresponds to the JSON property `question`
        # @return [String]
        attr_accessor :question
      
        # Output only. The reasoning of the rubric question is addressed or not.
        # Corresponds to the JSON property `reasoning`
        # @return [String]
        attr_accessor :reasoning
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @is_addressed = args[:is_addressed] if args.key?(:is_addressed)
          @question = args[:question] if args.key?(:question)
          @reasoning = args[:reasoning] if args.key?(:reasoning)
        end
      end
      
      # Rubric details of the completeness evaluation result.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsCompletenessRubric
        include Google::Apis::Core::Hashable
      
        # Output only. A boolean that indicates whether the rubric question is addressed
        # or not.
        # Corresponds to the JSON property `isAddressed`
        # @return [Boolean]
        attr_accessor :is_addressed
        alias_method :is_addressed?, :is_addressed
      
        # Output only. The question generated from instruction that used to evaluate
        # summary.
        # Corresponds to the JSON property `question`
        # @return [String]
        attr_accessor :question
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @is_addressed = args[:is_addressed] if args.key?(:is_addressed)
          @question = args[:question] if args.key?(:question)
        end
      end
      
      # Aggregated evaluation result on conversation level. This contains evaluation
      # results of all the metrics and sections.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsConversationDetail
        include Google::Apis::Core::Hashable
      
        # Output only. Conversation transcript that used for summarization evaluation as
        # a reference.
        # Corresponds to the JSON property `messageEntries`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1MessageEntry>]
        attr_accessor :message_entries
      
        # Output only. List of metric details.
        # Corresponds to the JSON property `metricDetails`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsConversationDetailMetricDetail>]
        attr_accessor :metric_details
      
        # Output only. Conversation level token count per section. This is an aggregated(
        # sum) result of input token of summary acorss all metrics for a single
        # conversation.
        # Corresponds to the JSON property `sectionTokens`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsSectionToken>]
        attr_accessor :section_tokens
      
        # Output only. Summary sections that used for summarization evaluation as a
        # reference.
        # Corresponds to the JSON property `summarySections`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarySuggestionSummarySection>]
        attr_accessor :summary_sections
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @message_entries = args[:message_entries] if args.key?(:message_entries)
          @metric_details = args[:metric_details] if args.key?(:metric_details)
          @section_tokens = args[:section_tokens] if args.key?(:section_tokens)
          @summary_sections = args[:summary_sections] if args.key?(:summary_sections)
        end
      end
      
      # Aggregated result on metric level. This contains the evaluation results of all
      # the sections.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsConversationDetailMetricDetail
        include Google::Apis::Core::Hashable
      
        # Output only. Metrics name. e.g. accuracy, adherence, completeness.
        # Corresponds to the JSON property `metric`
        # @return [String]
        attr_accessor :metric
      
        # Output only. Aggregated(average) score on this metric across all sections.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        # Output only. List of section details.
        # Corresponds to the JSON property `sectionDetails`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsConversationDetailMetricDetailSectionDetail>]
        attr_accessor :section_details
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metric = args[:metric] if args.key?(:metric)
          @score = args[:score] if args.key?(:score)
          @section_details = args[:section_details] if args.key?(:section_details)
        end
      end
      
      # Section level result.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsConversationDetailMetricDetailSectionDetail
        include Google::Apis::Core::Hashable
      
        # Output only. List of evaluation result. The list only contains one kind of the
        # evaluation result.
        # Corresponds to the JSON property `evaluationResults`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsEvaluationResult>]
        attr_accessor :evaluation_results
      
        # Output only. Aggregated(average) score on this section across all evaluation
        # results. Either decompositions or rubrics.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        # Output only. The name of the summary instruction.
        # Corresponds to the JSON property `section`
        # @return [String]
        attr_accessor :section
      
        # Output only. Summary for this section
        # Corresponds to the JSON property `sectionSummary`
        # @return [String]
        attr_accessor :section_summary
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluation_results = args[:evaluation_results] if args.key?(:evaluation_results)
          @score = args[:score] if args.key?(:score)
          @section = args[:section] if args.key?(:section)
          @section_summary = args[:section_summary] if args.key?(:section_summary)
        end
      end
      
      # Decomposition details
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsDecomposition
        include Google::Apis::Core::Hashable
      
        # Decomposition details for accuracy.
        # Corresponds to the JSON property `accuracyDecomposition`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsAccuracyDecomposition]
        attr_accessor :accuracy_decomposition
      
        # Decomposition details for adherence.
        # Corresponds to the JSON property `adherenceDecomposition`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsAdherenceDecomposition]
        attr_accessor :adherence_decomposition
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @accuracy_decomposition = args[:accuracy_decomposition] if args.key?(:accuracy_decomposition)
          @adherence_decomposition = args[:adherence_decomposition] if args.key?(:adherence_decomposition)
        end
      end
      
      # Evaluation result that contains one of accuracy, adherence or completeness
      # evaluation result.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsEvaluationResult
        include Google::Apis::Core::Hashable
      
        # Decomposition details for accuracy.
        # Corresponds to the JSON property `accuracyDecomposition`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsAccuracyDecomposition]
        attr_accessor :accuracy_decomposition
      
        # Rubric result of the adherence evaluation. A rubric is ued to determine if the
        # summary adheres to all aspects of the given instructions.
        # Corresponds to the JSON property `adherenceRubric`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsAdherenceRubric]
        attr_accessor :adherence_rubric
      
        # Rubric details of the completeness evaluation result.
        # Corresponds to the JSON property `completenessRubric`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsCompletenessRubric]
        attr_accessor :completeness_rubric
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @accuracy_decomposition = args[:accuracy_decomposition] if args.key?(:accuracy_decomposition)
          @adherence_rubric = args[:adherence_rubric] if args.key?(:adherence_rubric)
          @completeness_rubric = args[:completeness_rubric] if args.key?(:completeness_rubric)
        end
      end
      
      # Overall performance per metric. This is the aggregated score for each metric
      # across all conversations that are selected for summarization evaluation.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsOverallScoresByMetric
        include Google::Apis::Core::Hashable
      
        # Output only. Metric name. e.g. accuracy, adherence, completeness.
        # Corresponds to the JSON property `metric`
        # @return [String]
        attr_accessor :metric
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metric = args[:metric] if args.key?(:metric)
        end
      end
      
      # A pair of section name and input token count of the input summary section.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsSectionToken
        include Google::Apis::Core::Hashable
      
        # Output only. The name of the summary instruction.
        # Corresponds to the JSON property `section`
        # @return [String]
        attr_accessor :section
      
        # Output only. Token count.
        # Corresponds to the JSON property `tokenCount`
        # @return [Fixnum]
        attr_accessor :token_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @section = args[:section] if args.key?(:section)
          @token_count = args[:token_count] if args.key?(:token_count)
        end
      end
      
      # Evaluation result per conversation(&summary), metric and section.
      class GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsSummarizationEvaluationResult
        include Google::Apis::Core::Hashable
      
        # Output only. List of decompostion details
        # Corresponds to the JSON property `decompositions`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsDecomposition>]
        attr_accessor :decompositions
      
        # Output only. List of evaluation results.
        # Corresponds to the JSON property `evaluationResults`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationEvaluationMetricsEvaluationResult>]
        attr_accessor :evaluation_results
      
        # Output only. metric name, e.g. accuracy, completeness, adherence, etc.
        # Corresponds to the JSON property `metric`
        # @return [String]
        attr_accessor :metric
      
        # Output only. score calculated from decompositions
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        # Output only. section/task name, e.g. action, situation, etc
        # Corresponds to the JSON property `section`
        # @return [String]
        attr_accessor :section
      
        # Output only. Summary of this section
        # Corresponds to the JSON property `sectionSummary`
        # @return [String]
        attr_accessor :section_summary
      
        # Output only. conversation session id
        # Corresponds to the JSON property `sessionId`
        # @return [String]
        attr_accessor :session_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @decompositions = args[:decompositions] if args.key?(:decompositions)
          @evaluation_results = args[:evaluation_results] if args.key?(:evaluation_results)
          @metric = args[:metric] if args.key?(:metric)
          @score = args[:score] if args.key?(:score)
          @section = args[:section] if args.key?(:section)
          @section_summary = args[:section_summary] if args.key?(:section_summary)
          @session_id = args[:session_id] if args.key?(:session_id)
        end
      end
      
      # Represents the section of summarization.
      class GoogleCloudDialogflowV2beta1SummarizationSection
        include Google::Apis::Core::Hashable
      
        # Optional. Definition of the section, for example, "what the customer needs
        # help with or has question about."
        # Corresponds to the JSON property `definition`
        # @return [String]
        attr_accessor :definition
      
        # Optional. Name of the section, for example, "situation".
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        # Optional. Type of the summarization section.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @definition = args[:definition] if args.key?(:definition)
          @key = args[:key] if args.key?(:key)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # List of summarization sections.
      class GoogleCloudDialogflowV2beta1SummarizationSectionList
        include Google::Apis::Core::Hashable
      
        # Optional. Summarization sections.
        # Corresponds to the JSON property `summarizationSections`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarizationSection>]
        attr_accessor :summarization_sections
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @summarization_sections = args[:summarization_sections] if args.key?(:summarization_sections)
        end
      end
      
      # Suggested summary of the conversation.
      class GoogleCloudDialogflowV2beta1SummarySuggestion
        include Google::Apis::Core::Hashable
      
        # Required. All the parts of generated summary.
        # Corresponds to the JSON property `summarySections`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SummarySuggestionSummarySection>]
        attr_accessor :summary_sections
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @summary_sections = args[:summary_sections] if args.key?(:summary_sections)
        end
      end
      
      # A component of the generated summary.
      class GoogleCloudDialogflowV2beta1SummarySuggestionSummarySection
        include Google::Apis::Core::Hashable
      
        # Required. Name of the section.
        # Corresponds to the JSON property `section`
        # @return [String]
        attr_accessor :section
      
        # Required. Summary text for the section.
        # Corresponds to the JSON property `summary`
        # @return [String]
        attr_accessor :summary
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @section = args[:section] if args.key?(:section)
          @summary = args[:summary] if args.key?(:summary)
        end
      end
      
      # Configuration of how speech should be synthesized.
      class GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig
        include Google::Apis::Core::Hashable
      
        # Optional. An identifier which selects 'audio effects' profiles that are
        # applied on (post synthesized) text to speech. Effects are applied on top of
        # each other in the order they are given.
        # Corresponds to the JSON property `effectsProfileId`
        # @return [Array<String>]
        attr_accessor :effects_profile_id
      
        # Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20
        # semitones from the original pitch. -20 means decrease 20 semitones from the
        # original pitch.
        # Corresponds to the JSON property `pitch`
        # @return [Float]
        attr_accessor :pitch
      
        # Optional. The custom pronunciations for the synthesized audio.
        # Corresponds to the JSON property `pronunciations`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1CustomPronunciationParams>]
        attr_accessor :pronunciations
      
        # Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal
        # native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is
        # half as fast. If unset(0.0), defaults to the native 1.0 speed. Any other
        # values < 0.25 or > 4.0 will return an error.
        # Corresponds to the JSON property `speakingRate`
        # @return [Float]
        attr_accessor :speaking_rate
      
        # Description of which voice to use for speech synthesis.
        # Corresponds to the JSON property `voice`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1VoiceSelectionParams]
        attr_accessor :voice
      
        # Optional. Volume gain (in dB) of the normal native volume supported by the
        # specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0
        # (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will
        # play at approximately half the amplitude of the normal native signal amplitude.
        # A value of +6.0 (dB) will play at approximately twice the amplitude of the
        # normal native signal amplitude. We strongly recommend not to exceed +10 (dB)
        # as there's usually no effective increase in loudness for any value greater
        # than that.
        # Corresponds to the JSON property `volumeGainDb`
        # @return [Float]
        attr_accessor :volume_gain_db
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @effects_profile_id = args[:effects_profile_id] if args.key?(:effects_profile_id)
          @pitch = args[:pitch] if args.key?(:pitch)
          @pronunciations = args[:pronunciations] if args.key?(:pronunciations)
          @speaking_rate = args[:speaking_rate] if args.key?(:speaking_rate)
          @voice = args[:voice] if args.key?(:voice)
          @volume_gain_db = args[:volume_gain_db] if args.key?(:volume_gain_db)
        end
      end
      
      # A wrapper of repeated TelephonyDtmf digits.
      class GoogleCloudDialogflowV2beta1TelephonyDtmfEvents
        include Google::Apis::Core::Hashable
      
        # A sequence of TelephonyDtmf digits.
        # Corresponds to the JSON property `dtmfEvents`
        # @return [Array<String>]
        attr_accessor :dtmf_events
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dtmf_events = args[:dtmf_events] if args.key?(:dtmf_events)
        end
      end
      
      # Represents the natural language text to be processed.
      class GoogleCloudDialogflowV2beta1TextInput
        include Google::Apis::Core::Hashable
      
        # Required. The language of this conversational query. See [Language Support](
        # https://cloud.google.com/dialogflow/docs/reference/language) for a list of the
        # currently supported language codes. Note that queries in the same session do
        # not necessarily need to specify the same language.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # Required. The UTF-8 encoded natural language text to be processed. Text length
        # must not exceed 256 characters for virtual agent interactions.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @language_code = args[:language_code] if args.key?(:language_code)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Instructs the speech synthesizer on how to generate the output audio content.
      class GoogleCloudDialogflowV2beta1TextToSpeechSettings
        include Google::Apis::Core::Hashable
      
        # Optional. Indicates whether text to speech is enabled. Even when this field is
        # false, other settings in this proto are still retained.
        # Corresponds to the JSON property `enableTextToSpeech`
        # @return [Boolean]
        attr_accessor :enable_text_to_speech
        alias_method :enable_text_to_speech?, :enable_text_to_speech
      
        # Required. Audio encoding of the synthesized audio content.
        # Corresponds to the JSON property `outputAudioEncoding`
        # @return [String]
        attr_accessor :output_audio_encoding
      
        # Optional. The synthesis sample rate (in hertz) for this audio. If not provided,
        # then the synthesizer will use the default sample rate based on the audio
        # encoding. If this is different from the voice's natural sample rate, then the
        # synthesizer will honor this request by converting to the desired sample rate (
        # which might result in worse audio quality).
        # Corresponds to the JSON property `sampleRateHertz`
        # @return [Fixnum]
        attr_accessor :sample_rate_hertz
      
        # Optional. Configuration of how speech should be synthesized, mapping from
        # language (https://cloud.google.com/dialogflow/docs/reference/language) to
        # SynthesizeSpeechConfig.
        # Corresponds to the JSON property `synthesizeSpeechConfigs`
        # @return [Hash<String,Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig>]
        attr_accessor :synthesize_speech_configs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_text_to_speech = args[:enable_text_to_speech] if args.key?(:enable_text_to_speech)
          @output_audio_encoding = args[:output_audio_encoding] if args.key?(:output_audio_encoding)
          @sample_rate_hertz = args[:sample_rate_hertz] if args.key?(:sample_rate_hertz)
          @synthesize_speech_configs = args[:synthesize_speech_configs] if args.key?(:synthesize_speech_configs)
        end
      end
      
      # Represents a call of a specific tool's action with the specified inputs.
      class GoogleCloudDialogflowV2beta1ToolCall
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the tool's action associated with this call.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # Optional. The answer record associated with this tool call.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Output only. Create time of the tool call.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The action's input parameters.
        # Corresponds to the JSON property `inputParameters`
        # @return [Hash<String,Object>]
        attr_accessor :input_parameters
      
        # Output only. State of the tool call
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Optional. The tool associated with this call. Format: `projects//locations//
        # tools/`.
        # Corresponds to the JSON property `tool`
        # @return [String]
        attr_accessor :tool
      
        # Optional. A human readable description of the tool.
        # Corresponds to the JSON property `toolDisplayDetails`
        # @return [String]
        attr_accessor :tool_display_details
      
        # Optional. A human readable short name of the tool, to be shown on the UI.
        # Corresponds to the JSON property `toolDisplayName`
        # @return [String]
        attr_accessor :tool_display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @create_time = args[:create_time] if args.key?(:create_time)
          @input_parameters = args[:input_parameters] if args.key?(:input_parameters)
          @state = args[:state] if args.key?(:state)
          @tool = args[:tool] if args.key?(:tool)
          @tool_display_details = args[:tool_display_details] if args.key?(:tool_display_details)
          @tool_display_name = args[:tool_display_name] if args.key?(:tool_display_name)
        end
      end
      
      # The result of calling a tool's action.
      class GoogleCloudDialogflowV2beta1ToolCallResult
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the tool's action associated with this call.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # Optional. The answer record associated with this tool call result.
        # Corresponds to the JSON property `answerRecord`
        # @return [String]
        attr_accessor :answer_record
      
        # Only populated if the response content is utf-8 encoded.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # Output only. Create time of the tool call result.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # An error produced by the tool call.
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ToolCallResultError]
        attr_accessor :error
      
        # Only populated if the response content is not utf-8 encoded. (by definition
        # byte fields are base64 encoded).
        # Corresponds to the JSON property `rawContent`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :raw_content
      
        # Optional. The tool associated with this call. Format: `projects//locations//
        # tools/`.
        # Corresponds to the JSON property `tool`
        # @return [String]
        attr_accessor :tool
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @answer_record = args[:answer_record] if args.key?(:answer_record)
          @content = args[:content] if args.key?(:content)
          @create_time = args[:create_time] if args.key?(:create_time)
          @error = args[:error] if args.key?(:error)
          @raw_content = args[:raw_content] if args.key?(:raw_content)
          @tool = args[:tool] if args.key?(:tool)
        end
      end
      
      # An error produced by the tool call.
      class GoogleCloudDialogflowV2beta1ToolCallResultError
        include Google::Apis::Core::Hashable
      
        # Optional. The error message of the function.
        # Corresponds to the JSON property `message`
        # @return [String]
        attr_accessor :message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @message = args[:message] if args.key?(:message)
        end
      end
      
      # The request message for Agents.TrainAgent.
      class GoogleCloudDialogflowV2beta1TrainAgentRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The request message for PhoneNumbers.UndeletePhoneNumber.
      class GoogleCloudDialogflowV2beta1UndeletePhoneNumberRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Represents a single validation error.
      class GoogleCloudDialogflowV2beta1ValidationError
        include Google::Apis::Core::Hashable
      
        # The names of the entries that the error is associated with. Format: - `
        # projects//agent`, if the error is associated with the entire agent. - `
        # projects//agent/intents/`, if the error is associated with certain intents. - `
        # projects//agent/intents//trainingPhrases/`, if the error is associated with
        # certain intent training phrases. - `projects//agent/intents//parameters/`, if
        # the error is associated with certain intent parameters. - `projects//agent/
        # entities/`, if the error is associated with certain entities.
        # Corresponds to the JSON property `entries`
        # @return [Array<String>]
        attr_accessor :entries
      
        # The detailed error message.
        # Corresponds to the JSON property `errorMessage`
        # @return [String]
        attr_accessor :error_message
      
        # The severity of the error.
        # Corresponds to the JSON property `severity`
        # @return [String]
        attr_accessor :severity
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entries = args[:entries] if args.key?(:entries)
          @error_message = args[:error_message] if args.key?(:error_message)
          @severity = args[:severity] if args.key?(:severity)
        end
      end
      
      # Represents the output of agent validation.
      class GoogleCloudDialogflowV2beta1ValidationResult
        include Google::Apis::Core::Hashable
      
        # Contains all validation errors.
        # Corresponds to the JSON property `validationErrors`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1ValidationError>]
        attr_accessor :validation_errors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @validation_errors = args[:validation_errors] if args.key?(:validation_errors)
        end
      end
      
      # You can create multiple versions of your agent and publish them to separate
      # environments. When you edit an agent, you are editing the draft agent. At any
      # point, you can save the draft agent as an agent version, which is an immutable
      # snapshot of your agent. When you save the draft agent, it is published to the
      # default environment. When you create agent versions, you can publish them to
      # custom environments. You can create a variety of custom environments for: -
      # testing - development - production - etc. For more information, see the [
      # versions and environments guide](https://cloud.google.com/dialogflow/docs/
      # agents-versions).
      class GoogleCloudDialogflowV2beta1Version
        include Google::Apis::Core::Hashable
      
        # Output only. The creation time of this version. This field is read-only, i.e.,
        # it cannot be set by create and update methods.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The developer-provided description of this version.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Output only. The unique identifier of this agent version. Supported formats: -
        # `projects//agent/versions/` - `projects//locations//agent/versions/`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. The status of this version. This field is read-only and cannot be
        # set by create and update methods.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        # Output only. The sequential number of this version. This field is read-only
        # which means it cannot be set by create and update methods.
        # Corresponds to the JSON property `versionNumber`
        # @return [Fixnum]
        attr_accessor :version_number
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @name = args[:name] if args.key?(:name)
          @status = args[:status] if args.key?(:status)
          @version_number = args[:version_number] if args.key?(:version_number)
        end
      end
      
      # Description of which voice to use for speech synthesis.
      class GoogleCloudDialogflowV2beta1VoiceSelectionParams
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the voice. If not set, the service will choose a voice
        # based on the other parameters such as language_code and ssml_gender. For the
        # list of available voices, please refer to [Supported voices and languages](
        # https://cloud.google.com/text-to-speech/docs/voices).
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The preferred gender of the voice. If not set, the service will
        # choose a voice based on the other parameters such as language_code and name.
        # Note that this is only a preference, not requirement. If a voice of the
        # appropriate gender is not available, the synthesizer should substitute a voice
        # with a different gender rather than failing the request.
        # Corresponds to the JSON property `ssmlGender`
        # @return [String]
        attr_accessor :ssml_gender
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @ssml_gender = args[:ssml_gender] if args.key?(:ssml_gender)
        end
      end
      
      # The request message for a webhook call.
      class GoogleCloudDialogflowV2beta1WebhookRequest
        include Google::Apis::Core::Hashable
      
        # Alternative query results from KnowledgeService.
        # Corresponds to the JSON property `alternativeQueryResults`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1QueryResult>]
        attr_accessor :alternative_query_results
      
        # Represents the contents of the original request that was passed to the `[
        # Streaming]DetectIntent` call.
        # Corresponds to the JSON property `originalDetectIntentRequest`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1OriginalDetectIntentRequest]
        attr_accessor :original_detect_intent_request
      
        # Represents the result of conversational query or event processing.
        # Corresponds to the JSON property `queryResult`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1QueryResult]
        attr_accessor :query_result
      
        # The unique identifier of the response. Contains the same value as `[Streaming]
        # DetectIntentResponse.response_id`.
        # Corresponds to the JSON property `responseId`
        # @return [String]
        attr_accessor :response_id
      
        # The unique identifier of detectIntent request session. Can be used to identify
        # end-user inside webhook implementation. Supported formats: - `projects//agent/
        # sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/
        # environments//users//sessions/`, - `projects//locations//agent/environments//
        # users//sessions/`,
        # Corresponds to the JSON property `session`
        # @return [String]
        attr_accessor :session
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @alternative_query_results = args[:alternative_query_results] if args.key?(:alternative_query_results)
          @original_detect_intent_request = args[:original_detect_intent_request] if args.key?(:original_detect_intent_request)
          @query_result = args[:query_result] if args.key?(:query_result)
          @response_id = args[:response_id] if args.key?(:response_id)
          @session = args[:session] if args.key?(:session)
        end
      end
      
      # The response message for a webhook call. This response is validated by the
      # Dialogflow server. If validation fails, an error will be returned in the
      # QueryResult.diagnostic_info field. Setting JSON fields to an empty value with
      # the wrong type is a common error. To avoid this error: - Use `""` for empty
      # strings - Use ```` or `null` for empty objects - Use `[]` or `null` for empty
      # arrays For more information, see the [Protocol Buffers Language Guide](https://
      # developers.google.com/protocol-buffers/docs/proto3#json).
      class GoogleCloudDialogflowV2beta1WebhookResponse
        include Google::Apis::Core::Hashable
      
        # Optional. Indicates that this intent ends an interaction. Some integrations (e.
        # g., Actions on Google or Dialogflow phone gateway) use this information to
        # close interaction with an end user. Default is false.
        # Corresponds to the JSON property `endInteraction`
        # @return [Boolean]
        attr_accessor :end_interaction
        alias_method :end_interaction?, :end_interaction
      
        # Events allow for matching intents by event name instead of the natural
        # language input. For instance, input `` can trigger a personalized welcome
        # response. The parameter `name` may be used by the agent in the response: `"
        # Hello #welcome_event.name! What can I do for you today?"`.
        # Corresponds to the JSON property `followupEventInput`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1EventInput]
        attr_accessor :followup_event_input
      
        # Optional. The rich response messages intended for the end-user. When provided,
        # Dialogflow uses this field to populate QueryResult.fulfillment_messages sent
        # to the integration or API caller.
        # Corresponds to the JSON property `fulfillmentMessages`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1IntentMessage>]
        attr_accessor :fulfillment_messages
      
        # Optional. The text response message intended for the end-user. It is
        # recommended to use `fulfillment_messages.text.text[0]` instead. When provided,
        # Dialogflow uses this field to populate QueryResult.fulfillment_text sent to
        # the integration or API caller.
        # Corresponds to the JSON property `fulfillmentText`
        # @return [String]
        attr_accessor :fulfillment_text
      
        # Indicates that a live agent should be brought in to handle the interaction
        # with the user. In most cases, when you set this flag to true, you would also
        # want to set end_interaction to true as well. Default is false.
        # Corresponds to the JSON property `liveAgentHandoff`
        # @return [Boolean]
        attr_accessor :live_agent_handoff
        alias_method :live_agent_handoff?, :live_agent_handoff
      
        # Optional. The collection of output contexts that will overwrite currently
        # active contexts for the session and reset their lifespans. When provided,
        # Dialogflow uses this field to populate QueryResult.output_contexts sent to the
        # integration or API caller.
        # Corresponds to the JSON property `outputContexts`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1Context>]
        attr_accessor :output_contexts
      
        # Optional. This field can be used to pass custom data from your webhook to the
        # integration or API caller. Arbitrary JSON objects are supported. When provided,
        # Dialogflow uses this field to populate QueryResult.webhook_payload sent to
        # the integration or API caller. This field is also used by the [Google
        # Assistant integration](https://cloud.google.com/dialogflow/docs/integrations/
        # aog) for rich response messages. See the format definition at [Google
        # Assistant Dialogflow webhook format](https://developers.google.com/assistant/
        # actions/build/json/dialogflow-webhook-json)
        # Corresponds to the JSON property `payload`
        # @return [Hash<String,Object>]
        attr_accessor :payload
      
        # Optional. Additional session entity types to replace or extend developer
        # entity types with. The entity synonyms apply to all languages and persist for
        # the session. Setting this data from a webhook overwrites the session entity
        # types that have been set using `detectIntent`, `streamingDetectIntent` or
        # SessionEntityType management methods.
        # Corresponds to the JSON property `sessionEntityTypes`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV2beta1SessionEntityType>]
        attr_accessor :session_entity_types
      
        # Optional. A custom field used to identify the webhook source. Arbitrary
        # strings are supported. When provided, Dialogflow uses this field to populate
        # QueryResult.webhook_source sent to the integration or API caller.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_interaction = args[:end_interaction] if args.key?(:end_interaction)
          @followup_event_input = args[:followup_event_input] if args.key?(:followup_event_input)
          @fulfillment_messages = args[:fulfillment_messages] if args.key?(:fulfillment_messages)
          @fulfillment_text = args[:fulfillment_text] if args.key?(:fulfillment_text)
          @live_agent_handoff = args[:live_agent_handoff] if args.key?(:live_agent_handoff)
          @output_contexts = args[:output_contexts] if args.key?(:output_contexts)
          @payload = args[:payload] if args.key?(:payload)
          @session_entity_types = args[:session_entity_types] if args.key?(:session_entity_types)
          @source = args[:source] if args.key?(:source)
        end
      end
      
      # This message is used to hold all the Conversation Signals data, which will be
      # converted to JSON and exported to BigQuery.
      class GoogleCloudDialogflowV3alpha1ConversationSignals
        include Google::Apis::Core::Hashable
      
        # Collection of all signals that were extracted for a single turn of the
        # conversation.
        # Corresponds to the JSON property `turnSignals`
        # @return [Google::Apis::DialogflowV2beta1::GoogleCloudDialogflowV3alpha1TurnSignals]
        attr_accessor :turn_signals
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @turn_signals = args[:turn_signals] if args.key?(:turn_signals)
        end
      end
      
      # Collection of all signals that were extracted for a single turn of the
      # conversation.
      class GoogleCloudDialogflowV3alpha1TurnSignals
        include Google::Apis::Core::Hashable
      
        # Whether agent responded with LiveAgentHandoff fulfillment.
        # Corresponds to the JSON property `agentEscalated`
        # @return [Boolean]
        attr_accessor :agent_escalated
        alias_method :agent_escalated?, :agent_escalated
      
        # Whether user was using DTMF input.
        # Corresponds to the JSON property `dtmfUsed`
        # @return [Boolean]
        attr_accessor :dtmf_used
        alias_method :dtmf_used?, :dtmf_used
      
        # Failure reasons of the turn.
        # Corresponds to the JSON property `failureReasons`
        # @return [Array<String>]
        attr_accessor :failure_reasons
      
        # Whether NLU predicted NO_MATCH.
        # Corresponds to the JSON property `noMatch`
        # @return [Boolean]
        attr_accessor :no_match
        alias_method :no_match?, :no_match
      
        # Whether user provided no input.
        # Corresponds to the JSON property `noUserInput`
        # @return [Boolean]
        attr_accessor :no_user_input
        alias_method :no_user_input?, :no_user_input
      
        # Whether turn resulted in End Session page.
        # Corresponds to the JSON property `reachedEndPage`
        # @return [Boolean]
        attr_accessor :reached_end_page
        alias_method :reached_end_page?, :reached_end_page
      
        # Sentiment magnitude of the user utterance if [sentiment](https://cloud.google.
        # com/dialogflow/cx/docs/concept/sentiment) was enabled.
        # Corresponds to the JSON property `sentimentMagnitude`
        # @return [Float]
        attr_accessor :sentiment_magnitude
      
        # Sentiment score of the user utterance if [sentiment](https://cloud.google.com/
        # dialogflow/cx/docs/concept/sentiment) was enabled.
        # Corresponds to the JSON property `sentimentScore`
        # @return [Float]
        attr_accessor :sentiment_score
      
        # Whether agent has triggered the event corresponding to user abandoning the
        # conversation.
        # Corresponds to the JSON property `triggeredAbandonmentEvent`
        # @return [Boolean]
        attr_accessor :triggered_abandonment_event
        alias_method :triggered_abandonment_event?, :triggered_abandonment_event
      
        # Whether user was specifically asking for a live agent.
        # Corresponds to the JSON property `userEscalated`
        # @return [Boolean]
        attr_accessor :user_escalated
        alias_method :user_escalated?, :user_escalated
      
        # Human-readable statuses of the webhooks triggered during this turn.
        # Corresponds to the JSON property `webhookStatuses`
        # @return [Array<String>]
        attr_accessor :webhook_statuses
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_escalated = args[:agent_escalated] if args.key?(:agent_escalated)
          @dtmf_used = args[:dtmf_used] if args.key?(:dtmf_used)
          @failure_reasons = args[:failure_reasons] if args.key?(:failure_reasons)
          @no_match = args[:no_match] if args.key?(:no_match)
          @no_user_input = args[:no_user_input] if args.key?(:no_user_input)
          @reached_end_page = args[:reached_end_page] if args.key?(:reached_end_page)
          @sentiment_magnitude = args[:sentiment_magnitude] if args.key?(:sentiment_magnitude)
          @sentiment_score = args[:sentiment_score] if args.key?(:sentiment_score)
          @triggered_abandonment_event = args[:triggered_abandonment_event] if args.key?(:triggered_abandonment_event)
          @user_escalated = args[:user_escalated] if args.key?(:user_escalated)
          @webhook_statuses = args[:webhook_statuses] if args.key?(:webhook_statuses)
        end
      end
      
      # The response message for Locations.ListLocations.
      class GoogleCloudLocationListLocationsResponse
        include Google::Apis::Core::Hashable
      
        # A list of locations that matches the specified filter in the request.
        # Corresponds to the JSON property `locations`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleCloudLocationLocation>]
        attr_accessor :locations
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @locations = args[:locations] if args.key?(:locations)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # A resource that represents a Google Cloud location.
      class GoogleCloudLocationLocation
        include Google::Apis::Core::Hashable
      
        # The friendly name for this location, typically a nearby city name. For example,
        # "Tokyo".
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Cross-service attributes for the location. For example `"cloud.googleapis.com/
        # region": "us-east1"`
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # The canonical id for this location. For example: `"us-east1"`.
        # Corresponds to the JSON property `locationId`
        # @return [String]
        attr_accessor :location_id
      
        # Service-specific metadata. For example the available capacity at the given
        # location.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        # Resource name for the location, which may vary between implementations. For
        # example: `"projects/example-project/locations/us-east1"`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
          @labels = args[:labels] if args.key?(:labels)
          @location_id = args[:location_id] if args.key?(:location_id)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # The response message for Operations.ListOperations.
      class GoogleLongrunningListOperationsResponse
        include Google::Apis::Core::Hashable
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # A list of operations that matches the specified filter in the request.
        # Corresponds to the JSON property `operations`
        # @return [Array<Google::Apis::DialogflowV2beta1::GoogleLongrunningOperation>]
        attr_accessor :operations
      
        # Unordered list. Unreachable resources. Populated when the request sets `
        # ListOperationsRequest.return_partial_success` and reads across collections e.g.
        # when attempting to list all resources across all supported locations.
        # Corresponds to the JSON property `unreachable`
        # @return [Array<String>]
        attr_accessor :unreachable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @operations = args[:operations] if args.key?(:operations)
          @unreachable = args[:unreachable] if args.key?(:unreachable)
        end
      end
      
      # This resource represents a long-running operation that is the result of a
      # network API call.
      class GoogleLongrunningOperation
        include Google::Apis::Core::Hashable
      
        # If the value is `false`, it means the operation is still in progress. If `true`
        # , the operation is completed, and either `error` or `response` is available.
        # Corresponds to the JSON property `done`
        # @return [Boolean]
        attr_accessor :done
        alias_method :done?, :done
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::DialogflowV2beta1::GoogleRpcStatus]
        attr_accessor :error
      
        # Service-specific metadata associated with the operation. It typically contains
        # progress information and common metadata such as create time. Some services
        # might not provide such metadata. Any method that returns a long-running
        # operation should document the metadata type, if any.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        # The server-assigned name, which is only unique within the same service that
        # originally returns it. If you use the default HTTP mapping, the `name` should
        # be a resource name ending with `operations/`unique_id``.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The normal, successful response of the operation. If the original method
        # returns no data on success, such as `Delete`, the response is `google.protobuf.
        # Empty`. If the original method is standard `Get`/`Create`/`Update`, the
        # response should be the resource. For other methods, the response should have
        # the type `XxxResponse`, where `Xxx` is the original method name. For example,
        # if the original method name is `TakeSnapshot()`, the inferred response type is
        # `TakeSnapshotResponse`.
        # Corresponds to the JSON property `response`
        # @return [Hash<String,Object>]
        attr_accessor :response
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @done = args[:done] if args.key?(:done)
          @error = args[:error] if args.key?(:error)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
          @response = args[:response] if args.key?(:response)
        end
      end
      
      # A generic empty message that you can re-use to avoid defining duplicated empty
      # messages in your APIs. A typical example is to use it as the request or the
      # response type of an API method. For instance: service Foo ` rpc Bar(google.
      # protobuf.Empty) returns (google.protobuf.Empty); `
      class GoogleProtobufEmpty
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The `Status` type defines a logical error model that is suitable for different
      # programming environments, including REST APIs and RPC APIs. It is used by [
      # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
      # data: error code, error message, and error details. You can find out more
      # about this error model and how to work with it in the [API Design Guide](https:
      # //cloud.google.com/apis/design/errors).
      class GoogleRpcStatus
        include Google::Apis::Core::Hashable
      
        # The status code, which should be an enum value of google.rpc.Code.
        # Corresponds to the JSON property `code`
        # @return [Fixnum]
        attr_accessor :code
      
        # A list of messages that carry the error details. There is a common set of
        # message types for APIs to use.
        # Corresponds to the JSON property `details`
        # @return [Array<Hash<String,Object>>]
        attr_accessor :details
      
        # A developer-facing error message, which should be in English. Any user-facing
        # error message should be localized and sent in the google.rpc.Status.details
        # field, or localized by the client.
        # Corresponds to the JSON property `message`
        # @return [String]
        attr_accessor :message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @code = args[:code] if args.key?(:code)
          @details = args[:details] if args.key?(:details)
          @message = args[:message] if args.key?(:message)
        end
      end
      
      # An object that represents a latitude/longitude pair. This is expressed as a
      # pair of doubles to represent degrees latitude and degrees longitude. Unless
      # specified otherwise, this object must conform to the WGS84 standard. Values
      # must be within normalized ranges.
      class GoogleTypeLatLng
        include Google::Apis::Core::Hashable
      
        # The latitude in degrees. It must be in the range [-90.0, +90.0].
        # Corresponds to the JSON property `latitude`
        # @return [Float]
        attr_accessor :latitude
      
        # The longitude in degrees. It must be in the range [-180.0, +180.0].
        # Corresponds to the JSON property `longitude`
        # @return [Float]
        attr_accessor :longitude
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @latitude = args[:latitude] if args.key?(:latitude)
          @longitude = args[:longitude] if args.key?(:longitude)
        end
      end
    end
  end
end
