<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_v2.html">Dialogflow API</a> . <a href="dialogflow_v2.projects.html">projects</a> . <a href="dialogflow_v2.projects.agent.html">agent</a> . <a href="dialogflow_v2.projects.agent.sessions.html">sessions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="dialogflow_v2.projects.agent.sessions.contexts.html">contexts()</a></code>
</p>
<p class="firstline">Returns the contexts Resource.</p>

<p class="toc_element">
  <code><a href="dialogflow_v2.projects.agent.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.</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. Format: `projects//agent/sessions/` or `projects//agent/environments//users//sessions/`. 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.

Args:
  session: string, Required. The name of the session this query is sent to. Format: `projects//agent/sessions/`, or `projects//agent/environments//users//sessions/`. If `Environment ID` is not specified, we assume default &#x27;draft&#x27; environment. 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). (required)
  body: object, The request body.
    The object takes the form of:

{ # The request to detect user&#x27;s intent.
    &quot;queryParams&quot;: { # Represents the parameters of the conversational query. # The parameters of this query.
      &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;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.
        &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;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;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;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: string or number, depending on parameter value type - 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;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the context. Format: `projects//agent/sessions//contexts/`, or `projects//agent/environments//users//sessions//contexts/`. The `Context ID` is always converted to lowercase, may only contain characters in a-zA-Z0-9_-% and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default &#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;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;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;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;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;name&quot;: &quot;A String&quot;, # Required. The unique identifier of this session entity type. Format: `projects//agent/sessions//entityTypes/`, or `projects//agent/environments//users//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default &#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;entityOverrideMode&quot;: &quot;A String&quot;, # Required. Indicates whether the additional data should override or supplement the custom entity type definition.
        },
      ],
    },
    &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 how to process the audio content. # Instructs the speech recognizer how to process the speech audio.
        &quot;modelVariant&quot;: &quot;A String&quot;, # Which variant of the Speech model to use.
        &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;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;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;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;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;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;audioEncoding&quot;: &quot;A String&quot;, # Required. Audio encoding of the audio content to process.
      },
      &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;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: string or number, depending on parameter value type - 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;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the event.
      },
      &quot;text&quot;: { # Represents the natural language text to be processed. # The natural language text to be processed.
        &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;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;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 on 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;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;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;voice&quot;: { # Description of which voice to use for speech synthesis. # Optional. The desired voice of the synthesized audio.
          &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;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.
        },
      },
      &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;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.
  }

  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;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;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 on 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;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;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;voice&quot;: { # Description of which voice to use for speech synthesis. # Optional. The desired voice of the synthesized audio.
          &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;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.
        },
      },
      &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;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;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;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: string or number, depending on parameter value type - 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;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the context. Format: `projects//agent/sessions//contexts/`, or `projects//agent/environments//users//sessions//contexts/`. The `Context ID` is always converted to lowercase, may only contain characters in a-zA-Z0-9_-% and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default &#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;action&quot;: &quot;A String&quot;, # The action name from the matched intent.
      &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;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;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;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;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
          &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;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;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: string or number, depending on parameter value type - 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;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;trainingPhrases&quot;: [ # Optional. The collection of examples that the agent is trained on.
          { # Represents an example that the agent is trained on.
            &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;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;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;type&quot;: &quot;A String&quot;, # Required. The type of the training phrase.
            &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier of this training phrase.
            &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;resetContexts&quot;: True or False, # Optional. Indicates whether to delete all contexts in the current session when this intent is matched.
        &quot;inputContextNames&quot;: [ # Optional. The list of context names required for this intent to be triggered. Format: `projects//agent/sessions/-/contexts/`.
          &quot;A String&quot;,
        ],
        &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;messages&quot;: [ # Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console.
          { # A rich response message. Corresponds to the intent `Response` field in the Dialogflow console. For more information, see [Rich response messages](https://cloud.google.com/dialogflow/docs/intents-rich-messages).
            &quot;simpleResponses&quot;: { # The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`. # The voice and text-only responses for Actions on Google.
              &quot;simpleResponses&quot;: [ # Required. The list of simple responses.
                { # The simple response message containing speech or text.
                  &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;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;mediaContent&quot;: { # The media content card for Actions on Google. # The media content card for Actions on Google.
              &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
              &quot;mediaObjects&quot;: [ # Required. List of media objects.
                { # Response media object for media content card.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                  &quot;largeImage&quot;: { # The image response message. # Optional. Image to display above media content.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
                  },
                  &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                  &quot;icon&quot;: { # The image response message. # Optional. Icon to display above media content.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # Required. Name of media card.
                },
              ],
            },
            &quot;linkOutSuggestion&quot;: { # The suggestion chip message that allows the user to jump out to the app or website associated with this agent. # The link out suggestion chip for Actions on Google.
              &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;destinationName&quot;: &quot;A String&quot;, # Required. The name of the app or site this chip is linking to.
            },
            &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
            &quot;carouselSelect&quot;: { # The card for presenting a carousel of options to select from. # The carousel card response for Actions on Google.
              &quot;items&quot;: [ # Required. Carousel items.
                { # An item in the carousel.
                  &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;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;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
                },
              ],
            },
            &quot;payload&quot;: { # A custom platform-specific response.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;card&quot;: { # The card response message. # The card response.
              &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;buttons&quot;: [ # Optional. The collection of card buttons.
                { # Contains information about a button.
                  &quot;text&quot;: &quot;A String&quot;, # Optional. The text to show on the button.
                  &quot;postback&quot;: &quot;A String&quot;, # Optional. The text to send back to the Dialogflow API or a URI to open.
                },
              ],
            },
            &quot;basicCard&quot;: { # The basic card message. Useful for displaying information. # The basic card response for Actions on Google.
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
              &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;image&quot;: { # The image response message. # Optional. The image for the card.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
              },
              &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
              &quot;formattedText&quot;: &quot;A String&quot;, # Required, unless image is present. The body text 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;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;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item. Maximum of two lines of text.
                  &quot;openUriAction&quot;: { # Actions on Google action to open a given url. # Required. Action to present to the user.
                    &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;url&quot;: &quot;A String&quot;, # Required. URL
                  },
                  &quot;image&quot;: { # The image response message. # Optional. Hero image for the carousel item.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
                  },
                  &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                },
              ],
            },
            &quot;suggestions&quot;: { # The collection of suggestions. # The 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;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
              &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;horizontalAlignment&quot;: &quot;A String&quot;, # Optional. Defines text alignment for all cells in this column.
                  &quot;header&quot;: &quot;A String&quot;, # Required. Column heading.
                },
              ],
              &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
              &quot;rows&quot;: [ # Optional. Rows in this table of data.
                { # Row of TableCard.
                  &quot;dividerAfter&quot;: True or False, # Optional. Whether to add a visual divider after this row.
                  &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;image&quot;: { # The image response message. # Optional. Image which should be displayed on the card.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
              },
            },
            &quot;image&quot;: { # The image response message. # The image response.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
            },
            &quot;listSelect&quot;: { # The card for presenting a list of options to select from. # The list card response for Actions on Google.
              &quot;title&quot;: &quot;A String&quot;, # Optional. The overall title of the list.
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle of the list.
              &quot;items&quot;: [ # Required. List items.
                { # An item in the list.
                  &quot;image&quot;: { # The image response message. # Optional. The image to display.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
                  },
                  &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;description&quot;: &quot;A String&quot;, # Optional. The main text describing the item.
                },
              ],
            },
            &quot;quickReplies&quot;: { # The quick replies response message. # The quick replies response.
              &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;text&quot;: { # The text response message. # The text response.
              &quot;text&quot;: [ # Optional. The collection of the agent&#x27;s responses.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &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;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;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;parentFollowupIntentName&quot;: &quot;A String&quot;, # Read-only after creation. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`.
        &quot;followupIntentInfo&quot;: [ # Read-only. Information about all followup intents that have this intent as a direct or indirect parent. We populate this field only in the output.
          { # 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;isFallback&quot;: True or False, # Optional. Indicates whether this is a fallback intent.
        &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of this intent.
        &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;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: string or number, depending on parameter value type - 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;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the context. Format: `projects//agent/sessions//contexts/`, or `projects//agent/environments//users//sessions//contexts/`. The `Context ID` is always converted to lowercase, may only contain characters in a-zA-Z0-9_-% and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default &#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 the intent.
          { # Represents intent parameters.
            &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;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;displayName&quot;: &quot;A String&quot;, # Required. The name of the parameter.
            &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this parameter.
            &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;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;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;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;webhookState&quot;: &quot;A String&quot;, # Optional. Indicates whether webhooks are enabled for the intent.
        &quot;rootFollowupIntentName&quot;: &quot;A String&quot;, # Read-only. The unique identifier of the root intent in the chain of followup intents. It identifies the correct followup intents chain for this intent. We populate this field only in the output. Format: `projects//agent/intents/`.
        &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Format: `projects//agent/intents/`.
      },
      &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;fulfillmentMessages&quot;: [ # The collection of rich messages to present to the user.
        { # A rich response message. Corresponds to the intent `Response` field in the Dialogflow console. For more information, see [Rich response messages](https://cloud.google.com/dialogflow/docs/intents-rich-messages).
          &quot;simpleResponses&quot;: { # The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`. # The voice and text-only responses for Actions on Google.
            &quot;simpleResponses&quot;: [ # Required. The list of simple responses.
              { # The simple response message containing speech or text.
                &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;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;mediaContent&quot;: { # The media content card for Actions on Google. # The media content card for Actions on Google.
            &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
            &quot;mediaObjects&quot;: [ # Required. List of media objects.
              { # Response media object for media content card.
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                &quot;largeImage&quot;: { # The image response message. # Optional. Image to display above media content.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
                },
                &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                &quot;icon&quot;: { # The image response message. # Optional. Icon to display above media content.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
                },
                &quot;name&quot;: &quot;A String&quot;, # Required. Name of media card.
              },
            ],
          },
          &quot;linkOutSuggestion&quot;: { # The suggestion chip message that allows the user to jump out to the app or website associated with this agent. # The link out suggestion chip for Actions on Google.
            &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;destinationName&quot;: &quot;A String&quot;, # Required. The name of the app or site this chip is linking to.
          },
          &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
          &quot;carouselSelect&quot;: { # The card for presenting a carousel of options to select from. # The carousel card response for Actions on Google.
            &quot;items&quot;: [ # Required. Carousel items.
              { # An item in the carousel.
                &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;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;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
              },
            ],
          },
          &quot;payload&quot;: { # A custom platform-specific response.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;card&quot;: { # The card response message. # The card response.
            &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;buttons&quot;: [ # Optional. The collection of card buttons.
              { # Contains information about a button.
                &quot;text&quot;: &quot;A String&quot;, # Optional. The text to show on the button.
                &quot;postback&quot;: &quot;A String&quot;, # Optional. The text to send back to the Dialogflow API or a URI to open.
              },
            ],
          },
          &quot;basicCard&quot;: { # The basic card message. Useful for displaying information. # The basic card response for Actions on Google.
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
            &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;image&quot;: { # The image response message. # Optional. The image for the card.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
            },
            &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
            &quot;formattedText&quot;: &quot;A String&quot;, # Required, unless image is present. The body text 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;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;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item. Maximum of two lines of text.
                &quot;openUriAction&quot;: { # Actions on Google action to open a given url. # Required. Action to present to the user.
                  &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;url&quot;: &quot;A String&quot;, # Required. URL
                },
                &quot;image&quot;: { # The image response message. # Optional. Hero image for the carousel item.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
                },
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
              },
            ],
          },
          &quot;suggestions&quot;: { # The collection of suggestions. # The 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;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
            &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;horizontalAlignment&quot;: &quot;A String&quot;, # Optional. Defines text alignment for all cells in this column.
                &quot;header&quot;: &quot;A String&quot;, # Required. Column heading.
              },
            ],
            &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
            &quot;rows&quot;: [ # Optional. Rows in this table of data.
              { # Row of TableCard.
                &quot;dividerAfter&quot;: True or False, # Optional. Whether to add a visual divider after this row.
                &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;image&quot;: { # The image response message. # Optional. Image which should be displayed on the card.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
            },
          },
          &quot;image&quot;: { # The image response message. # The image response.
            &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
            &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
          },
          &quot;listSelect&quot;: { # The card for presenting a list of options to select from. # The list card response for Actions on Google.
            &quot;title&quot;: &quot;A String&quot;, # Optional. The overall title of the list.
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle of the list.
            &quot;items&quot;: [ # Required. List items.
              { # An item in the list.
                &quot;image&quot;: { # The image response message. # Optional. The image to display.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # Optional. A text description of the image to be used for accessibility, e.g., screen readers.
                },
                &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;description&quot;: &quot;A String&quot;, # Optional. The main text describing the item.
              },
            ],
          },
          &quot;quickReplies&quot;: { # The quick replies response message. # The quick replies response.
            &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;text&quot;: { # The text response message. # The text response.
            &quot;text&quot;: [ # Optional. The collection of the agent&#x27;s responses.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &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;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;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>