<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="dialogflow_v2beta1.html">Dialogflow API</a> . <a href="dialogflow_v2beta1.projects.html">projects</a> . <a href="dialogflow_v2beta1.projects.locations.html">locations</a> . <a href="dialogflow_v2beta1.projects.locations.agent.html">agent</a> . <a href="dialogflow_v2beta1.projects.locations.agent.environments.html">environments</a> . <a href="dialogflow_v2beta1.projects.locations.agent.environments.users.html">users</a> . <a href="dialogflow_v2beta1.projects.locations.agent.environments.users.sessions.html">sessions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="dialogflow_v2beta1.projects.locations.agent.environments.users.sessions.contexts.html">contexts()</a></code>
</p>
<p class="firstline">Returns the contexts Resource.</p>

<p class="toc_element">
  <code><a href="dialogflow_v2beta1.projects.locations.agent.environments.users.sessions.entityTypes.html">entityTypes()</a></code>
</p>
<p class="firstline">Returns the entityTypes Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#deleteContexts">deleteContexts(parent, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes all active contexts in the specified session.</p>
<p class="toc_element">
  <code><a href="#detectIntent">detectIntent(session, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Processes a natural language query and returns structured, actionable data as a result. This method is not idempotent, because it may cause contexts and session entity types to be updated, which in turn might affect results of future queries. Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="deleteContexts">deleteContexts(parent, x__xgafv=None)</code>
  <pre>Deletes all active contexts in the specified session.

Args:
  parent: string, Required. The name of the session to delete all contexts from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default &#x27;us&#x27; location. If `Environment ID` is not specified we assume default &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; user. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="detectIntent">detectIntent(session, body=None, x__xgafv=None)</code>
  <pre>Processes a natural language query and returns structured, actionable data as a result. This method is not idempotent, because it may cause contexts and session entity types to be updated, which in turn might affect results of future queries. Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).

Args:
  session: string, Required. The name of the session this query is sent to. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default &#x27;us&#x27; location. If `Environment ID` is not specified, we assume default &#x27;draft&#x27; environment (`Environment ID` might be referred to as environment name at some places). If `User ID` is not specified, we are using &quot;-&quot;. It&#x27;s up to the API caller to choose an appropriate `Session ID` and `User Id`. They can be a random number or some type of user and session identifiers (preferably hashed). The length of the `Session ID` and `User ID` must not exceed 36 characters. For more information, see the [API interactions guide](https://cloud.google.com/dialogflow/docs/api-overview). Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions). (required)
  body: object, The request body.
    The object takes the form of:

{ # The request to detect user&#x27;s intent.
  &quot;inputAudio&quot;: &quot;A String&quot;, # 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.
  &quot;outputAudioConfig&quot;: { # 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. # Instructs the speech synthesizer how to generate the output audio. If this field is not set and agent-level speech synthesizer is not configured, no output audio is generated.
    &quot;audioEncoding&quot;: &quot;A String&quot;, # Required. Audio encoding of the synthesized audio content.
    &quot;sampleRateHertz&quot;: 42, # 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&#x27;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).
    &quot;synthesizeSpeechConfig&quot;: { # Configuration of how speech should be synthesized. # Configuration of how speech should be synthesized.
      &quot;effectsProfileId&quot;: [ # Optional. An identifier which selects &#x27;audio effects&#x27; profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given.
        &quot;A String&quot;,
      ],
      &quot;pitch&quot;: 3.14, # 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.
      &quot;speakingRate&quot;: 3.14, # 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 &lt; 0.25 or &gt; 4.0 will return an error.
      &quot;voice&quot;: { # Description of which voice to use for speech synthesis. # Optional. The desired voice of the synthesized audio.
        &quot;name&quot;: &quot;A String&quot;, # 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).
        &quot;ssmlGender&quot;: &quot;A String&quot;, # 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.
      },
      &quot;volumeGainDb&quot;: 3.14, # 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&#x27;s usually no effective increase in loudness for any value greater than that.
    },
  },
  &quot;outputAudioConfigMask&quot;: &quot;A String&quot;, # 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.
  &quot;queryInput&quot;: { # 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. # Required. The input specification. It can be set to: 1. an audio config which instructs the speech recognizer how to process the speech audio, 2. a conversational query in the form of text, or 3. an event that specifies which intent to trigger.
    &quot;audioConfig&quot;: { # Instructs the speech recognizer on how to process the audio content. # Instructs the speech recognizer how to process the speech audio.
      &quot;audioEncoding&quot;: &quot;A String&quot;, # Required. Audio encoding of the audio content to process.
      &quot;disableNoSpeechRecognizedEvent&quot;: True or False, # Only used in Participants.AnalyzeContent and Participants.StreamingAnalyzeContent. If `false` and recognition doesn&#x27;t return any result, trigger `NO_SPEECH_RECOGNIZED` event to Dialogflow agent.
      &quot;enableWordInfo&quot;: True or False, # 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&#x27;t return any word-level information.
      &quot;languageCode&quot;: &quot;A String&quot;, # 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.
      &quot;model&quot;: &quot;A String&quot;, # Which Speech model to select for the given request. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then we auto-select a model based on the parameters in the InputAudioConfig. 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.
      &quot;modelVariant&quot;: &quot;A String&quot;, # Which variant of the Speech model to use.
      &quot;phraseHints&quot;: [ # 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]().
        &quot;A String&quot;,
      ],
      &quot;sampleRateHertz&quot;: 42, # 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.
      &quot;singleUtterance&quot;: True or False, # 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&#x27;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.
      &quot;speechContexts&quot;: [ # 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.
        { # Hints for the speech recognizer to help with recognition in a specific conversation state.
          &quot;boost&quot;: 3.14, # 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.
          &quot;phrases&quot;: [ # 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.
            &quot;A String&quot;,
          ],
        },
      ],
    },
    &quot;dtmf&quot;: { # A wrapper of repeated TelephonyDtmf digits. # The DTMF digits used to invoke intent and fill in parameter value.
      &quot;dtmfEvents&quot;: [ # A sequence of TelephonyDtmf digits.
        &quot;A String&quot;,
      ],
    },
    &quot;event&quot;: { # 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: `&quot;Hello #welcome_event.name! What can I do for you today?&quot;`. # The event to be processed.
      &quot;languageCode&quot;: &quot;A String&quot;, # 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.
      &quot;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the event.
      &quot;parameters&quot;: { # 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&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
    &quot;text&quot;: { # Represents the natural language text to be processed. # The natural language text to be processed.
      &quot;languageCode&quot;: &quot;A String&quot;, # 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.
      &quot;text&quot;: &quot;A String&quot;, # Required. The UTF-8 encoded natural language text to be processed. Text length must not exceed 256 characters.
    },
  },
  &quot;queryParams&quot;: { # Represents the parameters of the conversational query. # The parameters of this query.
    &quot;contexts&quot;: [ # The collection of contexts to be activated before this query is executed.
      { # Dialogflow contexts are similar to natural language context. If a person says to you &quot;they are orange&quot;, you need context in order to understand what &quot;they&quot; 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).
        &quot;lifespanCount&quot;: 42, # 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.
        &quot;name&quot;: &quot;A String&quot;, # 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 &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; 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`
        &quot;parameters&quot;: { # 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&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
      },
    ],
    &quot;geoLocation&quot;: { # 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 must conform to the WGS84 standard. Values must be within normalized ranges. # The geo location of this conversational query.
      &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
      &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
    },
    &quot;knowledgeBaseNames&quot;: [ # KnowledgeBases to get alternative results from. If not set, the KnowledgeBases enabled in the agent (through UI) will be used. Format: `projects//knowledgeBases/`.
      &quot;A String&quot;,
    ],
    &quot;payload&quot;: { # 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.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;resetContexts&quot;: True or False, # Specifies whether to delete all contexts in the current session before the new ones are activated.
    &quot;sentimentAnalysisRequestConfig&quot;: { # Configures the types of sentiment analysis to perform. # Configures the type of sentiment analysis to perform. If not provided, sentiment analysis is not performed. Note: Sentiment Analysis is only currently available for Essentials Edition agents.
      &quot;analyzeQueryTextSentiment&quot;: True or False, # Instructs the service to perform sentiment analysis on `query_text`. If not provided, sentiment analysis is not performed on `query_text`.
    },
    &quot;sessionEntityTypes&quot;: [ # 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.
      { # 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).
        &quot;entities&quot;: [ # Required. The collection of entities associated with this session entity type.
          { # An **entity entry** for an associated entity type.
            &quot;synonyms&quot;: [ # 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`.
              &quot;A String&quot;,
            ],
            &quot;value&quot;: &quot;A String&quot;, # 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).
          },
        ],
        &quot;entityOverrideMode&quot;: &quot;A String&quot;, # Required. Indicates whether the additional data should override or supplement the custom entity type definition.
        &quot;name&quot;: &quot;A String&quot;, # 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 &#x27;us&#x27; location. If `Environment ID` is not specified, we assume default &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented.
      },
    ],
    &quot;subAgents&quot;: [ # 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.
      { # Contains basic configuration for a sub-agent.
        &quot;environment&quot;: &quot;A String&quot;, # Optional. The unique identifier (`environment name` in dialogflow console) of this sub-agent environment. Assumes draft environment if `environment` is not set.
        &quot;project&quot;: &quot;A String&quot;, # Required. The project of this agent. Format: `projects/` or `projects//locations/`.
      },
    ],
    &quot;timeZone&quot;: &quot;A String&quot;, # 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.
    &quot;webhookHeaders&quot;: { # 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&#x27;s specified headers are not allowed. Including: &quot;Host&quot;, &quot;Content-Length&quot;, &quot;Connection&quot;, &quot;From&quot;, &quot;User-Agent&quot;, &quot;Accept-Encoding&quot;, &quot;If-Modified-Since&quot;, &quot;If-None-Match&quot;, &quot;X-Forwarded-For&quot;, etc.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The message returned from the DetectIntent method.
  &quot;alternativeQueryResults&quot;: [ # 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.
    { # Represents the result of conversational query or event processing.
      &quot;action&quot;: &quot;A String&quot;, # The action name from the matched intent.
      &quot;allRequiredParamsPresent&quot;: True or False, # 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&#x27;t contain any required parameters.
      &quot;diagnosticInfo&quot;: { # 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
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;fulfillmentMessages&quot;: [ # The collection of rich messages to present to the user.
        { # Corresponds to the `Response` field in the Dialogflow console.
          &quot;basicCard&quot;: { # The basic card message. Useful for displaying information. # Displays a basic card for Actions on Google.
            &quot;buttons&quot;: [ # Optional. The collection of card buttons.
              { # The button object that appears at the bottom of a card.
                &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                  &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
              },
            ],
            &quot;formattedText&quot;: &quot;A String&quot;, # Required, unless image is present. The body text of the card.
            &quot;image&quot;: { # The image response message. # Optional. The image for the card.
              &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
            },
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
            &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
          },
          &quot;browseCarouselCard&quot;: { # Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel # Browse carousel card for Actions on Google.
            &quot;imageDisplayOptions&quot;: &quot;A String&quot;, # Optional. Settings for displaying the image. Applies to every image in items.
            &quot;items&quot;: [ # Required. List of items in the Browse Carousel Card. Minimum of two items, maximum of ten.
              { # Browsing carousel tile
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                &quot;footer&quot;: &quot;A String&quot;, # Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text.
                &quot;image&quot;: { # The image response message. # Optional. Hero image for the carousel item.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;openUriAction&quot;: { # Actions on Google action to open a given url. # Required. Action to present to the user.
                  &quot;url&quot;: &quot;A String&quot;, # Required. URL
                  &quot;urlTypeHint&quot;: &quot;A String&quot;, # Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item. Maximum of two lines of text.
              },
            ],
          },
          &quot;card&quot;: { # The card response message. # Displays a card.
            &quot;buttons&quot;: [ # Optional. The collection of card buttons.
              { # Optional. Contains information about a button.
                &quot;postback&quot;: &quot;A String&quot;, # Optional. The text to send back to the Dialogflow API or a URI to open.
                &quot;text&quot;: &quot;A String&quot;, # Optional. The text to show on the button.
              },
            ],
            &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
            &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
          },
          &quot;carouselSelect&quot;: { # The card for presenting a carousel of options to select from. # Displays a carousel card for Actions on Google.
            &quot;items&quot;: [ # Required. Carousel items.
              { # An item in the carousel.
                &quot;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
                &quot;image&quot;: { # The image response message. # Optional. The image to display.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional info about the option item.
                  &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                  &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                    &quot;A String&quot;,
                  ],
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
              },
            ],
          },
          &quot;image&quot;: { # The image response message. # Displays an image.
            &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
            &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
          },
          &quot;linkOutSuggestion&quot;: { # The suggestion chip message that allows the user to jump out to the app or website associated with this agent. # Displays a link out suggestion chip for Actions on Google.
            &quot;destinationName&quot;: &quot;A String&quot;, # Required. The name of the app or site this chip is linking to.
            &quot;uri&quot;: &quot;A String&quot;, # Required. The URI of the app or site to open when the user taps the suggestion chip.
          },
          &quot;listSelect&quot;: { # The card for presenting a list of options to select from. # Displays a list card for Actions on Google.
            &quot;items&quot;: [ # Required. List items.
              { # An item in the list.
                &quot;description&quot;: &quot;A String&quot;, # Optional. The main text describing the item.
                &quot;image&quot;: { # The image response message. # Optional. The image to display.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                  &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                  &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                    &quot;A String&quot;,
                  ],
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. The title of the list item.
              },
            ],
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle of the list.
            &quot;title&quot;: &quot;A String&quot;, # Optional. The overall title of the list.
          },
          &quot;mediaContent&quot;: { # The media content card for Actions on Google. # The media content card for Actions on Google.
            &quot;mediaObjects&quot;: [ # Required. List of media objects.
              { # Response media object for media content card.
                &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                &quot;icon&quot;: { # The image response message. # Optional. Icon to display above media content.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;largeImage&quot;: { # The image response message. # Optional. Image to display above media content.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;name&quot;: &quot;A String&quot;, # Required. Name of media card.
              },
            ],
            &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
          },
          &quot;payload&quot;: { # A custom platform-specific response.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
          &quot;quickReplies&quot;: { # The quick replies response message. # Displays quick replies.
            &quot;quickReplies&quot;: [ # Optional. The collection of quick replies.
              &quot;A String&quot;,
            ],
            &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the collection of quick replies.
          },
          &quot;rbmCarouselRichCard&quot;: { # 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. # Rich Business Messaging (RBM) carousel rich card response.
            &quot;cardContents&quot;: [ # Required. The cards in the carousel. A carousel must have at least 2 cards and at most 10.
              { # Rich Business Messaging (RBM) Card content
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                  &quot;fileUri&quot;: &quot;A String&quot;, # 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.
                  &quot;height&quot;: &quot;A String&quot;, # 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.
                  &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                },
                &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                  { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                    &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                      &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                        &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                      },
                      &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                        &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                      },
                      &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                      &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                      },
                      &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                    },
                    &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                      &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                      &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                    },
                  },
                ],
                &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
              },
            ],
            &quot;cardWidth&quot;: &quot;A String&quot;, # Required. The width of the cards in the carousel.
          },
          &quot;rbmStandaloneRichCard&quot;: { # 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. # Standalone Rich Business Messaging (RBM) rich card response.
            &quot;cardContent&quot;: { # Rich Business Messaging (RBM) Card content # Required. Card content.
              &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
              &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                &quot;fileUri&quot;: &quot;A String&quot;, # 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.
                &quot;height&quot;: &quot;A String&quot;, # 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.
                &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
              },
              &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                  &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                    &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                      &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                    },
                    &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                      &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                    },
                    &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                    &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                    },
                    &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                  },
                  &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                    &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                    &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                  },
                },
              ],
              &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
            },
            &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
            &quot;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
          },
          &quot;rbmText&quot;: { # Rich Business Messaging (RBM) text response with suggestions. # Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging.
            &quot;rbmSuggestion&quot;: [ # Optional. One or more suggestions to show to the user.
              { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                  &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                    &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                  },
                  &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                    &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                  },
                  &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                  &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                  },
                  &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                },
                &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                  &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                  &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                },
              },
            ],
            &quot;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
          },
          &quot;simpleResponses&quot;: { # The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`. # Returns a voice or text-only response for Actions on Google.
            &quot;simpleResponses&quot;: [ # Required. The list of simple responses.
              { # The simple response message containing speech or text.
                &quot;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                &quot;ssml&quot;: &quot;A String&quot;, # 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.
                &quot;textToSpeech&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml.
              },
            ],
          },
          &quot;suggestions&quot;: { # The collection of suggestions. # Displays suggestion chips for Actions on Google.
            &quot;suggestions&quot;: [ # Required. The list of suggested replies.
              { # The suggestion chip message that the user can tap to quickly post a reply to the conversation.
                &quot;title&quot;: &quot;A String&quot;, # Required. The text shown the in the suggestion chip.
              },
            ],
          },
          &quot;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
            &quot;buttons&quot;: [ # Optional. List of buttons for the card.
              { # The button object that appears at the bottom of a card.
                &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                  &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
              },
            ],
            &quot;columnProperties&quot;: [ # Optional. Display properties for the columns in this table.
              { # Column properties for TableCard.
                &quot;header&quot;: &quot;A String&quot;, # Required. Column heading.
                &quot;horizontalAlignment&quot;: &quot;A String&quot;, # Optional. Defines text alignment for all cells in this column.
              },
            ],
            &quot;image&quot;: { # The image response message. # Optional. Image which should be displayed on the card.
              &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
            },
            &quot;rows&quot;: [ # Optional. Rows in this table of data.
              { # Row of TableCard.
                &quot;cells&quot;: [ # Optional. List of cells that make up this row.
                  { # Cell of TableCardRow.
                    &quot;text&quot;: &quot;A String&quot;, # Required. Text in this cell.
                  },
                ],
                &quot;dividerAfter&quot;: True or False, # Optional. Whether to add a visual divider after this row.
              },
            ],
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
            &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
          },
          &quot;telephonyPlayAudio&quot;: { # Plays audio from a file in Telephony Gateway. # Plays audio from a file in Telephony Gateway.
            &quot;audioUri&quot;: &quot;A String&quot;, # Required. URI to a Google Cloud Storage object containing the audio to play, e.g., &quot;gs://bucket/object&quot;. 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.
          },
          &quot;telephonySynthesizeSpeech&quot;: { # 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. # Synthesizes speech in Telephony Gateway.
            &quot;ssml&quot;: &quot;A String&quot;, # The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml).
            &quot;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
          },
          &quot;telephonyTransferCall&quot;: { # Transfers the call in Telephony Gateway. # Transfers the call in Telephony Gateway.
            &quot;phoneNumber&quot;: &quot;A String&quot;, # 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).
          },
          &quot;text&quot;: { # The text response message. # Returns a text response.
            &quot;text&quot;: [ # Optional. The collection of the agent&#x27;s responses.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;fulfillmentText&quot;: &quot;A String&quot;, # The text to be pronounced to the user or shown on the screen. Note: This is a legacy field, `fulfillment_messages` should be preferred.
      &quot;intent&quot;: { # An intent categorizes an end-user&#x27;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). # The intent that matched the conversational query. Some, not all fields are filled in this message, including but not limited to: `name`, `display_name`, `end_interaction` and `is_fallback`.
        &quot;action&quot;: &quot;A String&quot;, # Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces.
        &quot;defaultResponsePlatforms&quot;: [ # Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
          &quot;A String&quot;,
        ],
        &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of this intent.
        &quot;endInteraction&quot;: True or False, # 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.
        &quot;events&quot;: [ # 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.
          &quot;A String&quot;,
        ],
        &quot;followupIntentInfo&quot;: [ # 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.
          { # Represents a single followup intent in the chain.
            &quot;followupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent. Format: `projects//agent/intents/`.
            &quot;parentFollowupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent&#x27;s parent. Format: `projects//agent/intents/`.
          },
        ],
        &quot;inputContextNames&quot;: [ # Optional. The list of context names required for this intent to be triggered. Formats: - `projects//agent/sessions/-/contexts/` - `projects//locations//agent/sessions/-/contexts/`
          &quot;A String&quot;,
        ],
        &quot;isFallback&quot;: True or False, # Optional. Indicates whether this is a fallback intent.
        &quot;liveAgentHandoff&quot;: True or False, # 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.
        &quot;messages&quot;: [ # Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console.
          { # Corresponds to the `Response` field in the Dialogflow console.
            &quot;basicCard&quot;: { # The basic card message. Useful for displaying information. # Displays a basic card for Actions on Google.
              &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                { # The button object that appears at the bottom of a card.
                  &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                    &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
                },
              ],
              &quot;formattedText&quot;: &quot;A String&quot;, # Required, unless image is present. The body text of the card.
              &quot;image&quot;: { # The image response message. # Optional. The image for the card.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
              &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
            },
            &quot;browseCarouselCard&quot;: { # Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel # Browse carousel card for Actions on Google.
              &quot;imageDisplayOptions&quot;: &quot;A String&quot;, # Optional. Settings for displaying the image. Applies to every image in items.
              &quot;items&quot;: [ # Required. List of items in the Browse Carousel Card. Minimum of two items, maximum of ten.
                { # Browsing carousel tile
                  &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                  &quot;footer&quot;: &quot;A String&quot;, # Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text.
                  &quot;image&quot;: { # The image response message. # Optional. Hero image for the carousel item.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;openUriAction&quot;: { # Actions on Google action to open a given url. # Required. Action to present to the user.
                    &quot;url&quot;: &quot;A String&quot;, # Required. URL
                    &quot;urlTypeHint&quot;: &quot;A String&quot;, # Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item. Maximum of two lines of text.
                },
              ],
            },
            &quot;card&quot;: { # The card response message. # Displays a card.
              &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                { # Optional. Contains information about a button.
                  &quot;postback&quot;: &quot;A String&quot;, # Optional. The text to send back to the Dialogflow API or a URI to open.
                  &quot;text&quot;: &quot;A String&quot;, # Optional. The text to show on the button.
                },
              ],
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
              &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
            },
            &quot;carouselSelect&quot;: { # The card for presenting a carousel of options to select from. # Displays a carousel card for Actions on Google.
              &quot;items&quot;: [ # Required. Carousel items.
                { # An item in the carousel.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
                  &quot;image&quot;: { # The image response message. # Optional. The image to display.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional info about the option item.
                    &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                    &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
                },
              ],
            },
            &quot;image&quot;: { # The image response message. # Displays an image.
              &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
            },
            &quot;linkOutSuggestion&quot;: { # The suggestion chip message that allows the user to jump out to the app or website associated with this agent. # Displays a link out suggestion chip for Actions on Google.
              &quot;destinationName&quot;: &quot;A String&quot;, # Required. The name of the app or site this chip is linking to.
              &quot;uri&quot;: &quot;A String&quot;, # Required. The URI of the app or site to open when the user taps the suggestion chip.
            },
            &quot;listSelect&quot;: { # The card for presenting a list of options to select from. # Displays a list card for Actions on Google.
              &quot;items&quot;: [ # Required. List items.
                { # An item in the list.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. The main text describing the item.
                  &quot;image&quot;: { # The image response message. # Optional. The image to display.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                    &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                    &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the list item.
                },
              ],
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle of the list.
              &quot;title&quot;: &quot;A String&quot;, # Optional. The overall title of the list.
            },
            &quot;mediaContent&quot;: { # The media content card for Actions on Google. # The media content card for Actions on Google.
              &quot;mediaObjects&quot;: [ # Required. List of media objects.
                { # Response media object for media content card.
                  &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                  &quot;icon&quot;: { # The image response message. # Optional. Icon to display above media content.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;largeImage&quot;: { # The image response message. # Optional. Image to display above media content.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # Required. Name of media card.
                },
              ],
              &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
            },
            &quot;payload&quot;: { # A custom platform-specific response.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
            &quot;quickReplies&quot;: { # The quick replies response message. # Displays quick replies.
              &quot;quickReplies&quot;: [ # Optional. The collection of quick replies.
                &quot;A String&quot;,
              ],
              &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the collection of quick replies.
            },
            &quot;rbmCarouselRichCard&quot;: { # 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. # Rich Business Messaging (RBM) carousel rich card response.
              &quot;cardContents&quot;: [ # Required. The cards in the carousel. A carousel must have at least 2 cards and at most 10.
                { # Rich Business Messaging (RBM) Card content
                  &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                  &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                    &quot;fileUri&quot;: &quot;A String&quot;, # 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.
                    &quot;height&quot;: &quot;A String&quot;, # 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.
                    &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                  },
                  &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                    { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                      &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                        &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                          &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                        },
                        &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                          &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                        },
                        &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                        &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                        },
                        &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                      },
                      &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                        &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                        &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                      },
                    },
                  ],
                  &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
                },
              ],
              &quot;cardWidth&quot;: &quot;A String&quot;, # Required. The width of the cards in the carousel.
            },
            &quot;rbmStandaloneRichCard&quot;: { # 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. # Standalone Rich Business Messaging (RBM) rich card response.
              &quot;cardContent&quot;: { # Rich Business Messaging (RBM) Card content # Required. Card content.
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                  &quot;fileUri&quot;: &quot;A String&quot;, # 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.
                  &quot;height&quot;: &quot;A String&quot;, # 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.
                  &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                },
                &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                  { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                    &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                      &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                        &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                      },
                      &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                        &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                      },
                      &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                      &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                      },
                      &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                    },
                    &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                      &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                      &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                    },
                  },
                ],
                &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
              },
              &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
              &quot;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
            },
            &quot;rbmText&quot;: { # Rich Business Messaging (RBM) text response with suggestions. # Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging.
              &quot;rbmSuggestion&quot;: [ # Optional. One or more suggestions to show to the user.
                { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                  &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                    &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                      &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                    },
                    &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                      &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                    },
                    &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                    &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                    },
                    &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                  },
                  &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                    &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                    &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                  },
                },
              ],
              &quot;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
            },
            &quot;simpleResponses&quot;: { # The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`. # Returns a voice or text-only response for Actions on Google.
              &quot;simpleResponses&quot;: [ # Required. The list of simple responses.
                { # The simple response message containing speech or text.
                  &quot;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                  &quot;ssml&quot;: &quot;A String&quot;, # 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.
                  &quot;textToSpeech&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml.
                },
              ],
            },
            &quot;suggestions&quot;: { # The collection of suggestions. # Displays suggestion chips for Actions on Google.
              &quot;suggestions&quot;: [ # Required. The list of suggested replies.
                { # The suggestion chip message that the user can tap to quickly post a reply to the conversation.
                  &quot;title&quot;: &quot;A String&quot;, # Required. The text shown the in the suggestion chip.
                },
              ],
            },
            &quot;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
              &quot;buttons&quot;: [ # Optional. List of buttons for the card.
                { # The button object that appears at the bottom of a card.
                  &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                    &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
                },
              ],
              &quot;columnProperties&quot;: [ # Optional. Display properties for the columns in this table.
                { # Column properties for TableCard.
                  &quot;header&quot;: &quot;A String&quot;, # Required. Column heading.
                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # Optional. Defines text alignment for all cells in this column.
                },
              ],
              &quot;image&quot;: { # The image response message. # Optional. Image which should be displayed on the card.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;rows&quot;: [ # Optional. Rows in this table of data.
                { # Row of TableCard.
                  &quot;cells&quot;: [ # Optional. List of cells that make up this row.
                    { # Cell of TableCardRow.
                      &quot;text&quot;: &quot;A String&quot;, # Required. Text in this cell.
                    },
                  ],
                  &quot;dividerAfter&quot;: True or False, # Optional. Whether to add a visual divider after this row.
                },
              ],
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
              &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
            },
            &quot;telephonyPlayAudio&quot;: { # Plays audio from a file in Telephony Gateway. # Plays audio from a file in Telephony Gateway.
              &quot;audioUri&quot;: &quot;A String&quot;, # Required. URI to a Google Cloud Storage object containing the audio to play, e.g., &quot;gs://bucket/object&quot;. 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.
            },
            &quot;telephonySynthesizeSpeech&quot;: { # 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. # Synthesizes speech in Telephony Gateway.
              &quot;ssml&quot;: &quot;A String&quot;, # The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml).
              &quot;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
            },
            &quot;telephonyTransferCall&quot;: { # Transfers the call in Telephony Gateway. # Transfers the call in Telephony Gateway.
              &quot;phoneNumber&quot;: &quot;A String&quot;, # 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).
            },
            &quot;text&quot;: { # The text response message. # Returns a text response.
              &quot;text&quot;: [ # Optional. The collection of the agent&#x27;s responses.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;mlDisabled&quot;: True or False, # 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.
        &quot;mlEnabled&quot;: True or False, # 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.
        &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`
        &quot;outputContexts&quot;: [ # 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/`.
          { # Dialogflow contexts are similar to natural language context. If a person says to you &quot;they are orange&quot;, you need context in order to understand what &quot;they&quot; 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).
            &quot;lifespanCount&quot;: 42, # 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.
            &quot;name&quot;: &quot;A String&quot;, # 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 &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; 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`
            &quot;parameters&quot;: { # 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&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
          },
        ],
        &quot;parameters&quot;: [ # Optional. The collection of parameters associated with the intent.
          { # Represents intent parameters.
            &quot;defaultValue&quot;: &quot;A String&quot;, # 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`.
            &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of the parameter.
            &quot;entityTypeDisplayName&quot;: &quot;A String&quot;, # Optional. The name of the entity type, prefixed with `@`, that describes values of the parameter. If the parameter is required, this must be provided.
            &quot;isList&quot;: True or False, # Optional. Indicates whether the parameter represents a list of values.
            &quot;mandatory&quot;: True or False, # Optional. Indicates whether the parameter is required. That is, whether the intent cannot be completed without collecting the parameter value.
            &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this parameter.
            &quot;prompts&quot;: [ # Optional. The collection of prompts that the agent can present to the user in order to collect a value for the parameter.
              &quot;A String&quot;,
            ],
            &quot;value&quot;: &quot;A String&quot;, # 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`.
          },
        ],
        &quot;parentFollowupIntentName&quot;: &quot;A String&quot;, # 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/`.
        &quot;priority&quot;: 42, # 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.
        &quot;resetContexts&quot;: True or False, # Optional. Indicates whether to delete all contexts in the current session when this intent is matched.
        &quot;rootFollowupIntentName&quot;: &quot;A String&quot;, # 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/`.
        &quot;trainingPhrases&quot;: [ # Optional. The collection of examples that the agent is trained on.
          { # Represents an example that the agent is trained on.
            &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier of this training phrase.
            &quot;parts&quot;: [ # 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.
              { # Represents a part of a training phrase.
                &quot;alias&quot;: &quot;A String&quot;, # 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.
                &quot;entityType&quot;: &quot;A String&quot;, # Optional. The entity type name prefixed with `@`. This field is required for annotated parts of the training phrase.
                &quot;text&quot;: &quot;A String&quot;, # Required. The text for this part.
                &quot;userDefined&quot;: True or False, # 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.
              },
            ],
            &quot;timesAddedCount&quot;: 42, # 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.
            &quot;type&quot;: &quot;A String&quot;, # Required. The type of the training phrase.
          },
        ],
        &quot;webhookState&quot;: &quot;A String&quot;, # Optional. Indicates whether webhooks are enabled for the intent.
      },
      &quot;intentDetectionConfidence&quot;: 3.14, # 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.
      &quot;knowledgeAnswers&quot;: { # Represents the result of querying a Knowledge base. # The result from Knowledge Connector (if any), ordered by decreasing `KnowledgeAnswers.match_confidence`.
        &quot;answers&quot;: [ # A list of answers from Knowledge Connector.
          { # An answer from Knowledge Connector.
            &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document that answers this conversational query.
            &quot;faqQuestion&quot;: &quot;A String&quot;, # The corresponding FAQ question if the answer was extracted from a FAQ Document, empty otherwise.
            &quot;matchConfidence&quot;: 3.14, # The system&#x27;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.
            &quot;matchConfidenceLevel&quot;: &quot;A String&quot;, # The system&#x27;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.
            &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//knowledgeBases//documents/`.
          },
        ],
      },
      &quot;languageCode&quot;: &quot;A String&quot;, # 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.
      &quot;outputContexts&quot;: [ # The collection of output contexts. If applicable, `output_contexts.parameters` contains entries with name `.original` containing the original parameter values before the query.
        { # Dialogflow contexts are similar to natural language context. If a person says to you &quot;they are orange&quot;, you need context in order to understand what &quot;they&quot; 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).
          &quot;lifespanCount&quot;: 42, # 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.
          &quot;name&quot;: &quot;A String&quot;, # 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 &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; 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`
          &quot;parameters&quot;: { # 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&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
      ],
      &quot;parameters&quot;: { # 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&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;queryText&quot;: &quot;A String&quot;, # 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.
      &quot;sentimentAnalysisResult&quot;: { # The result of sentiment analysis. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user&#x27;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 # The sentiment analysis result, which depends on the `sentiment_analysis_request_config` specified in the request.
        &quot;queryTextSentiment&quot;: { # The sentiment, such as positive/negative feeling or association, for a unit of analysis, such as the query text. # The sentiment analysis result for `query_text`.
          &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment, regardless of score (positive or negative).
          &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
        },
      },
      &quot;speechRecognitionConfidence&quot;: 3.14, # 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&#x27;t set for StreamingDetectIntent since the streaming endpoint has separate confidence estimates per portion of the audio in StreamingRecognitionResult.
      &quot;webhookPayload&quot;: { # 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.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;webhookSource&quot;: &quot;A String&quot;, # 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.
    },
  ],
  &quot;outputAudio&quot;: &quot;A String&quot;, # 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.
  &quot;outputAudioConfig&quot;: { # 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. # The config used by the speech synthesizer to generate the output audio.
    &quot;audioEncoding&quot;: &quot;A String&quot;, # Required. Audio encoding of the synthesized audio content.
    &quot;sampleRateHertz&quot;: 42, # 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&#x27;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).
    &quot;synthesizeSpeechConfig&quot;: { # Configuration of how speech should be synthesized. # Configuration of how speech should be synthesized.
      &quot;effectsProfileId&quot;: [ # Optional. An identifier which selects &#x27;audio effects&#x27; profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given.
        &quot;A String&quot;,
      ],
      &quot;pitch&quot;: 3.14, # 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.
      &quot;speakingRate&quot;: 3.14, # 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 &lt; 0.25 or &gt; 4.0 will return an error.
      &quot;voice&quot;: { # Description of which voice to use for speech synthesis. # Optional. The desired voice of the synthesized audio.
        &quot;name&quot;: &quot;A String&quot;, # 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).
        &quot;ssmlGender&quot;: &quot;A String&quot;, # 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.
      },
      &quot;volumeGainDb&quot;: 3.14, # 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&#x27;s usually no effective increase in loudness for any value greater than that.
    },
  },
  &quot;queryResult&quot;: { # Represents the result of conversational query or event processing. # The selected results of the conversational query or event processing. See `alternative_query_results` for additional potential results.
    &quot;action&quot;: &quot;A String&quot;, # The action name from the matched intent.
    &quot;allRequiredParamsPresent&quot;: True or False, # 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&#x27;t contain any required parameters.
    &quot;diagnosticInfo&quot;: { # 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
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;fulfillmentMessages&quot;: [ # The collection of rich messages to present to the user.
      { # Corresponds to the `Response` field in the Dialogflow console.
        &quot;basicCard&quot;: { # The basic card message. Useful for displaying information. # Displays a basic card for Actions on Google.
          &quot;buttons&quot;: [ # Optional. The collection of card buttons.
            { # The button object that appears at the bottom of a card.
              &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
              },
              &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
            },
          ],
          &quot;formattedText&quot;: &quot;A String&quot;, # Required, unless image is present. The body text of the card.
          &quot;image&quot;: { # The image response message. # Optional. The image for the card.
            &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
            &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
          },
          &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
          &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
        },
        &quot;browseCarouselCard&quot;: { # Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel # Browse carousel card for Actions on Google.
          &quot;imageDisplayOptions&quot;: &quot;A String&quot;, # Optional. Settings for displaying the image. Applies to every image in items.
          &quot;items&quot;: [ # Required. List of items in the Browse Carousel Card. Minimum of two items, maximum of ten.
            { # Browsing carousel tile
              &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
              &quot;footer&quot;: &quot;A String&quot;, # Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text.
              &quot;image&quot;: { # The image response message. # Optional. Hero image for the carousel item.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;openUriAction&quot;: { # Actions on Google action to open a given url. # Required. Action to present to the user.
                &quot;url&quot;: &quot;A String&quot;, # Required. URL
                &quot;urlTypeHint&quot;: &quot;A String&quot;, # Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.
              },
              &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item. Maximum of two lines of text.
            },
          ],
        },
        &quot;card&quot;: { # The card response message. # Displays a card.
          &quot;buttons&quot;: [ # Optional. The collection of card buttons.
            { # Optional. Contains information about a button.
              &quot;postback&quot;: &quot;A String&quot;, # Optional. The text to send back to the Dialogflow API or a URI to open.
              &quot;text&quot;: &quot;A String&quot;, # Optional. The text to show on the button.
            },
          ],
          &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
          &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
          &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
        },
        &quot;carouselSelect&quot;: { # The card for presenting a carousel of options to select from. # Displays a carousel card for Actions on Google.
          &quot;items&quot;: [ # Required. Carousel items.
            { # An item in the carousel.
              &quot;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
              &quot;image&quot;: { # The image response message. # Optional. The image to display.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional info about the option item.
                &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                  &quot;A String&quot;,
                ],
              },
              &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
            },
          ],
        },
        &quot;image&quot;: { # The image response message. # Displays an image.
          &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
          &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
        },
        &quot;linkOutSuggestion&quot;: { # The suggestion chip message that allows the user to jump out to the app or website associated with this agent. # Displays a link out suggestion chip for Actions on Google.
          &quot;destinationName&quot;: &quot;A String&quot;, # Required. The name of the app or site this chip is linking to.
          &quot;uri&quot;: &quot;A String&quot;, # Required. The URI of the app or site to open when the user taps the suggestion chip.
        },
        &quot;listSelect&quot;: { # The card for presenting a list of options to select from. # Displays a list card for Actions on Google.
          &quot;items&quot;: [ # Required. List items.
            { # An item in the list.
              &quot;description&quot;: &quot;A String&quot;, # Optional. The main text describing the item.
              &quot;image&quot;: { # The image response message. # Optional. The image to display.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                  &quot;A String&quot;,
                ],
              },
              &quot;title&quot;: &quot;A String&quot;, # Required. The title of the list item.
            },
          ],
          &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle of the list.
          &quot;title&quot;: &quot;A String&quot;, # Optional. The overall title of the list.
        },
        &quot;mediaContent&quot;: { # The media content card for Actions on Google. # The media content card for Actions on Google.
          &quot;mediaObjects&quot;: [ # Required. List of media objects.
            { # Response media object for media content card.
              &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
              &quot;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
              &quot;icon&quot;: { # The image response message. # Optional. Icon to display above media content.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;largeImage&quot;: { # The image response message. # Optional. Image to display above media content.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;name&quot;: &quot;A String&quot;, # Required. Name of media card.
            },
          ],
          &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
        },
        &quot;payload&quot;: { # A custom platform-specific response.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
        &quot;quickReplies&quot;: { # The quick replies response message. # Displays quick replies.
          &quot;quickReplies&quot;: [ # Optional. The collection of quick replies.
            &quot;A String&quot;,
          ],
          &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the collection of quick replies.
        },
        &quot;rbmCarouselRichCard&quot;: { # 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. # Rich Business Messaging (RBM) carousel rich card response.
          &quot;cardContents&quot;: [ # Required. The cards in the carousel. A carousel must have at least 2 cards and at most 10.
            { # Rich Business Messaging (RBM) Card content
              &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
              &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                &quot;fileUri&quot;: &quot;A String&quot;, # 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.
                &quot;height&quot;: &quot;A String&quot;, # 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.
                &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
              },
              &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                  &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                    &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                      &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                    },
                    &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                      &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                    },
                    &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                    &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                    },
                    &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                  },
                  &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                    &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                    &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                  },
                },
              ],
              &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
            },
          ],
          &quot;cardWidth&quot;: &quot;A String&quot;, # Required. The width of the cards in the carousel.
        },
        &quot;rbmStandaloneRichCard&quot;: { # 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. # Standalone Rich Business Messaging (RBM) rich card response.
          &quot;cardContent&quot;: { # Rich Business Messaging (RBM) Card content # Required. Card content.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
            &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
              &quot;fileUri&quot;: &quot;A String&quot;, # 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.
              &quot;height&quot;: &quot;A String&quot;, # 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.
              &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
            },
            &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
              { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                  &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                    &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                  },
                  &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                    &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                  },
                  &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                  &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                  },
                  &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                },
                &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                  &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                  &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                },
              },
            ],
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
          },
          &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
          &quot;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
        },
        &quot;rbmText&quot;: { # Rich Business Messaging (RBM) text response with suggestions. # Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging.
          &quot;rbmSuggestion&quot;: [ # Optional. One or more suggestions to show to the user.
            { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
              &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                  &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                },
                &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                  &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                },
                &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                },
                &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
              },
              &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
              },
            },
          ],
          &quot;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
        },
        &quot;simpleResponses&quot;: { # The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`. # Returns a voice or text-only response for Actions on Google.
          &quot;simpleResponses&quot;: [ # Required. The list of simple responses.
            { # The simple response message containing speech or text.
              &quot;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
              &quot;ssml&quot;: &quot;A String&quot;, # 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.
              &quot;textToSpeech&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml.
            },
          ],
        },
        &quot;suggestions&quot;: { # The collection of suggestions. # Displays suggestion chips for Actions on Google.
          &quot;suggestions&quot;: [ # Required. The list of suggested replies.
            { # The suggestion chip message that the user can tap to quickly post a reply to the conversation.
              &quot;title&quot;: &quot;A String&quot;, # Required. The text shown the in the suggestion chip.
            },
          ],
        },
        &quot;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
          &quot;buttons&quot;: [ # Optional. List of buttons for the card.
            { # The button object that appears at the bottom of a card.
              &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
              },
              &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
            },
          ],
          &quot;columnProperties&quot;: [ # Optional. Display properties for the columns in this table.
            { # Column properties for TableCard.
              &quot;header&quot;: &quot;A String&quot;, # Required. Column heading.
              &quot;horizontalAlignment&quot;: &quot;A String&quot;, # Optional. Defines text alignment for all cells in this column.
            },
          ],
          &quot;image&quot;: { # The image response message. # Optional. Image which should be displayed on the card.
            &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
            &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
          },
          &quot;rows&quot;: [ # Optional. Rows in this table of data.
            { # Row of TableCard.
              &quot;cells&quot;: [ # Optional. List of cells that make up this row.
                { # Cell of TableCardRow.
                  &quot;text&quot;: &quot;A String&quot;, # Required. Text in this cell.
                },
              ],
              &quot;dividerAfter&quot;: True or False, # Optional. Whether to add a visual divider after this row.
            },
          ],
          &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
          &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
        },
        &quot;telephonyPlayAudio&quot;: { # Plays audio from a file in Telephony Gateway. # Plays audio from a file in Telephony Gateway.
          &quot;audioUri&quot;: &quot;A String&quot;, # Required. URI to a Google Cloud Storage object containing the audio to play, e.g., &quot;gs://bucket/object&quot;. 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.
        },
        &quot;telephonySynthesizeSpeech&quot;: { # 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. # Synthesizes speech in Telephony Gateway.
          &quot;ssml&quot;: &quot;A String&quot;, # The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml).
          &quot;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
        },
        &quot;telephonyTransferCall&quot;: { # Transfers the call in Telephony Gateway. # Transfers the call in Telephony Gateway.
          &quot;phoneNumber&quot;: &quot;A String&quot;, # 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).
        },
        &quot;text&quot;: { # The text response message. # Returns a text response.
          &quot;text&quot;: [ # Optional. The collection of the agent&#x27;s responses.
            &quot;A String&quot;,
          ],
        },
      },
    ],
    &quot;fulfillmentText&quot;: &quot;A String&quot;, # The text to be pronounced to the user or shown on the screen. Note: This is a legacy field, `fulfillment_messages` should be preferred.
    &quot;intent&quot;: { # An intent categorizes an end-user&#x27;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). # The intent that matched the conversational query. Some, not all fields are filled in this message, including but not limited to: `name`, `display_name`, `end_interaction` and `is_fallback`.
      &quot;action&quot;: &quot;A String&quot;, # Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces.
      &quot;defaultResponsePlatforms&quot;: [ # Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
        &quot;A String&quot;,
      ],
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of this intent.
      &quot;endInteraction&quot;: True or False, # 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.
      &quot;events&quot;: [ # 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.
        &quot;A String&quot;,
      ],
      &quot;followupIntentInfo&quot;: [ # 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.
        { # Represents a single followup intent in the chain.
          &quot;followupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent. Format: `projects//agent/intents/`.
          &quot;parentFollowupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent&#x27;s parent. Format: `projects//agent/intents/`.
        },
      ],
      &quot;inputContextNames&quot;: [ # Optional. The list of context names required for this intent to be triggered. Formats: - `projects//agent/sessions/-/contexts/` - `projects//locations//agent/sessions/-/contexts/`
        &quot;A String&quot;,
      ],
      &quot;isFallback&quot;: True or False, # Optional. Indicates whether this is a fallback intent.
      &quot;liveAgentHandoff&quot;: True or False, # 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.
      &quot;messages&quot;: [ # Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console.
        { # Corresponds to the `Response` field in the Dialogflow console.
          &quot;basicCard&quot;: { # The basic card message. Useful for displaying information. # Displays a basic card for Actions on Google.
            &quot;buttons&quot;: [ # Optional. The collection of card buttons.
              { # The button object that appears at the bottom of a card.
                &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                  &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
              },
            ],
            &quot;formattedText&quot;: &quot;A String&quot;, # Required, unless image is present. The body text of the card.
            &quot;image&quot;: { # The image response message. # Optional. The image for the card.
              &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
            },
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
            &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
          },
          &quot;browseCarouselCard&quot;: { # Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel # Browse carousel card for Actions on Google.
            &quot;imageDisplayOptions&quot;: &quot;A String&quot;, # Optional. Settings for displaying the image. Applies to every image in items.
            &quot;items&quot;: [ # Required. List of items in the Browse Carousel Card. Minimum of two items, maximum of ten.
              { # Browsing carousel tile
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                &quot;footer&quot;: &quot;A String&quot;, # Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text.
                &quot;image&quot;: { # The image response message. # Optional. Hero image for the carousel item.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;openUriAction&quot;: { # Actions on Google action to open a given url. # Required. Action to present to the user.
                  &quot;url&quot;: &quot;A String&quot;, # Required. URL
                  &quot;urlTypeHint&quot;: &quot;A String&quot;, # Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item. Maximum of two lines of text.
              },
            ],
          },
          &quot;card&quot;: { # The card response message. # Displays a card.
            &quot;buttons&quot;: [ # Optional. The collection of card buttons.
              { # Optional. Contains information about a button.
                &quot;postback&quot;: &quot;A String&quot;, # Optional. The text to send back to the Dialogflow API or a URI to open.
                &quot;text&quot;: &quot;A String&quot;, # Optional. The text to show on the button.
              },
            ],
            &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
            &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
          },
          &quot;carouselSelect&quot;: { # The card for presenting a carousel of options to select from. # Displays a carousel card for Actions on Google.
            &quot;items&quot;: [ # Required. Carousel items.
              { # An item in the carousel.
                &quot;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
                &quot;image&quot;: { # The image response message. # Optional. The image to display.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional info about the option item.
                  &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                  &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                    &quot;A String&quot;,
                  ],
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
              },
            ],
          },
          &quot;image&quot;: { # The image response message. # Displays an image.
            &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
            &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
          },
          &quot;linkOutSuggestion&quot;: { # The suggestion chip message that allows the user to jump out to the app or website associated with this agent. # Displays a link out suggestion chip for Actions on Google.
            &quot;destinationName&quot;: &quot;A String&quot;, # Required. The name of the app or site this chip is linking to.
            &quot;uri&quot;: &quot;A String&quot;, # Required. The URI of the app or site to open when the user taps the suggestion chip.
          },
          &quot;listSelect&quot;: { # The card for presenting a list of options to select from. # Displays a list card for Actions on Google.
            &quot;items&quot;: [ # Required. List items.
              { # An item in the list.
                &quot;description&quot;: &quot;A String&quot;, # Optional. The main text describing the item.
                &quot;image&quot;: { # The image response message. # Optional. The image to display.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                  &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                  &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                    &quot;A String&quot;,
                  ],
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. The title of the list item.
              },
            ],
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle of the list.
            &quot;title&quot;: &quot;A String&quot;, # Optional. The overall title of the list.
          },
          &quot;mediaContent&quot;: { # The media content card for Actions on Google. # The media content card for Actions on Google.
            &quot;mediaObjects&quot;: [ # Required. List of media objects.
              { # Response media object for media content card.
                &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                &quot;icon&quot;: { # The image response message. # Optional. Icon to display above media content.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;largeImage&quot;: { # The image response message. # Optional. Image to display above media content.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;name&quot;: &quot;A String&quot;, # Required. Name of media card.
              },
            ],
            &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
          },
          &quot;payload&quot;: { # A custom platform-specific response.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
          &quot;quickReplies&quot;: { # The quick replies response message. # Displays quick replies.
            &quot;quickReplies&quot;: [ # Optional. The collection of quick replies.
              &quot;A String&quot;,
            ],
            &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the collection of quick replies.
          },
          &quot;rbmCarouselRichCard&quot;: { # 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. # Rich Business Messaging (RBM) carousel rich card response.
            &quot;cardContents&quot;: [ # Required. The cards in the carousel. A carousel must have at least 2 cards and at most 10.
              { # Rich Business Messaging (RBM) Card content
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                  &quot;fileUri&quot;: &quot;A String&quot;, # 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.
                  &quot;height&quot;: &quot;A String&quot;, # 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.
                  &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                },
                &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                  { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                    &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                      &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                        &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                      },
                      &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                        &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                      },
                      &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                      &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                      },
                      &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                    },
                    &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                      &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                      &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                    },
                  },
                ],
                &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
              },
            ],
            &quot;cardWidth&quot;: &quot;A String&quot;, # Required. The width of the cards in the carousel.
          },
          &quot;rbmStandaloneRichCard&quot;: { # 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. # Standalone Rich Business Messaging (RBM) rich card response.
            &quot;cardContent&quot;: { # Rich Business Messaging (RBM) Card content # Required. Card content.
              &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
              &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                &quot;fileUri&quot;: &quot;A String&quot;, # 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.
                &quot;height&quot;: &quot;A String&quot;, # 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.
                &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
              },
              &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                  &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                    &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                      &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                    },
                    &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                      &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                    },
                    &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                    &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                    },
                    &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                  },
                  &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                    &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                    &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                  },
                },
              ],
              &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
            },
            &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
            &quot;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
          },
          &quot;rbmText&quot;: { # Rich Business Messaging (RBM) text response with suggestions. # Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging.
            &quot;rbmSuggestion&quot;: [ # Optional. One or more suggestions to show to the user.
              { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                  &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                    &quot;phoneNumber&quot;: &quot;A String&quot;, # 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.
                  },
                  &quot;openUrl&quot;: { # Opens the user&#x27;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. # Suggested client side action: Open a URI on device
                    &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                  },
                  &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                  &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                  },
                  &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                },
                &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                  &quot;postbackData&quot;: &quot;A String&quot;, # 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.
                  &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                },
              },
            ],
            &quot;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
          },
          &quot;simpleResponses&quot;: { # The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`. # Returns a voice or text-only response for Actions on Google.
            &quot;simpleResponses&quot;: [ # Required. The list of simple responses.
              { # The simple response message containing speech or text.
                &quot;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                &quot;ssml&quot;: &quot;A String&quot;, # 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.
                &quot;textToSpeech&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml.
              },
            ],
          },
          &quot;suggestions&quot;: { # The collection of suggestions. # Displays suggestion chips for Actions on Google.
            &quot;suggestions&quot;: [ # Required. The list of suggested replies.
              { # The suggestion chip message that the user can tap to quickly post a reply to the conversation.
                &quot;title&quot;: &quot;A String&quot;, # Required. The text shown the in the suggestion chip.
              },
            ],
          },
          &quot;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
            &quot;buttons&quot;: [ # Optional. List of buttons for the card.
              { # The button object that appears at the bottom of a card.
                &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                  &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
              },
            ],
            &quot;columnProperties&quot;: [ # Optional. Display properties for the columns in this table.
              { # Column properties for TableCard.
                &quot;header&quot;: &quot;A String&quot;, # Required. Column heading.
                &quot;horizontalAlignment&quot;: &quot;A String&quot;, # Optional. Defines text alignment for all cells in this column.
              },
            ],
            &quot;image&quot;: { # The image response message. # Optional. Image which should be displayed on the card.
              &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
            },
            &quot;rows&quot;: [ # Optional. Rows in this table of data.
              { # Row of TableCard.
                &quot;cells&quot;: [ # Optional. List of cells that make up this row.
                  { # Cell of TableCardRow.
                    &quot;text&quot;: &quot;A String&quot;, # Required. Text in this cell.
                  },
                ],
                &quot;dividerAfter&quot;: True or False, # Optional. Whether to add a visual divider after this row.
              },
            ],
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
            &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
          },
          &quot;telephonyPlayAudio&quot;: { # Plays audio from a file in Telephony Gateway. # Plays audio from a file in Telephony Gateway.
            &quot;audioUri&quot;: &quot;A String&quot;, # Required. URI to a Google Cloud Storage object containing the audio to play, e.g., &quot;gs://bucket/object&quot;. 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.
          },
          &quot;telephonySynthesizeSpeech&quot;: { # 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. # Synthesizes speech in Telephony Gateway.
            &quot;ssml&quot;: &quot;A String&quot;, # The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml).
            &quot;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
          },
          &quot;telephonyTransferCall&quot;: { # Transfers the call in Telephony Gateway. # Transfers the call in Telephony Gateway.
            &quot;phoneNumber&quot;: &quot;A String&quot;, # 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).
          },
          &quot;text&quot;: { # The text response message. # Returns a text response.
            &quot;text&quot;: [ # Optional. The collection of the agent&#x27;s responses.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;mlDisabled&quot;: True or False, # 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.
      &quot;mlEnabled&quot;: True or False, # 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.
      &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`
      &quot;outputContexts&quot;: [ # 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/`.
        { # Dialogflow contexts are similar to natural language context. If a person says to you &quot;they are orange&quot;, you need context in order to understand what &quot;they&quot; 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).
          &quot;lifespanCount&quot;: 42, # 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.
          &quot;name&quot;: &quot;A String&quot;, # 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 &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; 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`
          &quot;parameters&quot;: { # 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&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
      ],
      &quot;parameters&quot;: [ # Optional. The collection of parameters associated with the intent.
        { # Represents intent parameters.
          &quot;defaultValue&quot;: &quot;A String&quot;, # 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`.
          &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of the parameter.
          &quot;entityTypeDisplayName&quot;: &quot;A String&quot;, # Optional. The name of the entity type, prefixed with `@`, that describes values of the parameter. If the parameter is required, this must be provided.
          &quot;isList&quot;: True or False, # Optional. Indicates whether the parameter represents a list of values.
          &quot;mandatory&quot;: True or False, # Optional. Indicates whether the parameter is required. That is, whether the intent cannot be completed without collecting the parameter value.
          &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this parameter.
          &quot;prompts&quot;: [ # Optional. The collection of prompts that the agent can present to the user in order to collect a value for the parameter.
            &quot;A String&quot;,
          ],
          &quot;value&quot;: &quot;A String&quot;, # 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`.
        },
      ],
      &quot;parentFollowupIntentName&quot;: &quot;A String&quot;, # 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/`.
      &quot;priority&quot;: 42, # 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.
      &quot;resetContexts&quot;: True or False, # Optional. Indicates whether to delete all contexts in the current session when this intent is matched.
      &quot;rootFollowupIntentName&quot;: &quot;A String&quot;, # 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/`.
      &quot;trainingPhrases&quot;: [ # Optional. The collection of examples that the agent is trained on.
        { # Represents an example that the agent is trained on.
          &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier of this training phrase.
          &quot;parts&quot;: [ # 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.
            { # Represents a part of a training phrase.
              &quot;alias&quot;: &quot;A String&quot;, # 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.
              &quot;entityType&quot;: &quot;A String&quot;, # Optional. The entity type name prefixed with `@`. This field is required for annotated parts of the training phrase.
              &quot;text&quot;: &quot;A String&quot;, # Required. The text for this part.
              &quot;userDefined&quot;: True or False, # 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.
            },
          ],
          &quot;timesAddedCount&quot;: 42, # 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.
          &quot;type&quot;: &quot;A String&quot;, # Required. The type of the training phrase.
        },
      ],
      &quot;webhookState&quot;: &quot;A String&quot;, # Optional. Indicates whether webhooks are enabled for the intent.
    },
    &quot;intentDetectionConfidence&quot;: 3.14, # 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.
    &quot;knowledgeAnswers&quot;: { # Represents the result of querying a Knowledge base. # The result from Knowledge Connector (if any), ordered by decreasing `KnowledgeAnswers.match_confidence`.
      &quot;answers&quot;: [ # A list of answers from Knowledge Connector.
        { # An answer from Knowledge Connector.
          &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document that answers this conversational query.
          &quot;faqQuestion&quot;: &quot;A String&quot;, # The corresponding FAQ question if the answer was extracted from a FAQ Document, empty otherwise.
          &quot;matchConfidence&quot;: 3.14, # The system&#x27;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.
          &quot;matchConfidenceLevel&quot;: &quot;A String&quot;, # The system&#x27;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.
          &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//knowledgeBases//documents/`.
        },
      ],
    },
    &quot;languageCode&quot;: &quot;A String&quot;, # 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.
    &quot;outputContexts&quot;: [ # The collection of output contexts. If applicable, `output_contexts.parameters` contains entries with name `.original` containing the original parameter values before the query.
      { # Dialogflow contexts are similar to natural language context. If a person says to you &quot;they are orange&quot;, you need context in order to understand what &quot;they&quot; 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).
        &quot;lifespanCount&quot;: 42, # 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.
        &quot;name&quot;: &quot;A String&quot;, # 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 &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; 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`
        &quot;parameters&quot;: { # 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&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
      },
    ],
    &quot;parameters&quot;: { # 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&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;queryText&quot;: &quot;A String&quot;, # 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.
    &quot;sentimentAnalysisResult&quot;: { # The result of sentiment analysis. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user&#x27;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 # The sentiment analysis result, which depends on the `sentiment_analysis_request_config` specified in the request.
      &quot;queryTextSentiment&quot;: { # The sentiment, such as positive/negative feeling or association, for a unit of analysis, such as the query text. # The sentiment analysis result for `query_text`.
        &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment, regardless of score (positive or negative).
        &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
      },
    },
    &quot;speechRecognitionConfidence&quot;: 3.14, # 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&#x27;t set for StreamingDetectIntent since the streaming endpoint has separate confidence estimates per portion of the audio in StreamingRecognitionResult.
    &quot;webhookPayload&quot;: { # 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.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;webhookSource&quot;: &quot;A String&quot;, # 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.
  },
  &quot;responseId&quot;: &quot;A String&quot;, # The unique identifier of the response. It can be used to locate a response in the training example set or for reporting issues.
  &quot;webhookStatus&quot;: { # 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). # Specifies the status of the webhook request.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # 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.
  },
}</pre>
</div>

</body></html>