<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.agent.html">agent</a> . <a href="dialogflow_v2beta1.projects.agent.environments.html">environments</a> . <a href="dialogflow_v2beta1.projects.agent.environments.users.html">users</a> . <a href="dialogflow_v2beta1.projects.agent.environments.users.sessions.html">sessions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="dialogflow_v2beta1.projects.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.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.</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.

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. 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;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;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;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;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;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;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;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;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;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;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;modelVariant&quot;: &quot;A String&quot;, # Which variant of the Speech model to use.
        &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;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;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;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;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;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;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;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: 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;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;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;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;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;queryParams&quot;: { # Represents the parameters of the conversational query. # The parameters of this query.
      &quot;resetContexts&quot;: True or False, # Specifies whether to delete all contexts in the current session before the new ones are activated.
      &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;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;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. 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;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;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;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;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;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;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;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;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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
      },
      &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;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;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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &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.
    },
    &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;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;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;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. 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;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;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;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;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;faqQuestion&quot;: &quot;A String&quot;, # The corresponding FAQ question if the answer was extracted from a FAQ Document, empty otherwise.
              &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document that answers this conversational query.
              &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//knowledgeBases//documents/`.
              &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;action&quot;: &quot;A String&quot;, # The action name from the matched 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;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;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;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;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.
          { # Corresponds to the `Response` field in the Dialogflow console.
            &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;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;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                  &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  },
                  &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;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;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;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;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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  },
                  &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                    &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                      &quot;A String&quot;,
                    ],
                    &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;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;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;image&quot;: { # The image response message. # Displays an image.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              &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;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;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;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                &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;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle 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;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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
                  &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;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                      &quot;A String&quot;,
                    ],
                    &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;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
                },
              ],
            },
            &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;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
              &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
              &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
              },
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
              &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                        &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                      },
                    },
                  ],
                  &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;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;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;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;card&quot;: { # The card response message. # Displays a card.
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
              &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
              &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                { # Optional. 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;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;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                  &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Name 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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  },
                  &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  },
                },
              ],
              &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
            },
            &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
            &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;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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                      &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                    },
                  },
                ],
                &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;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;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;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;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
              &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
            },
            &quot;payload&quot;: { # A custom platform-specific response.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &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;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;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                  &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;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;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
              &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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                    &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                  },
                },
              ],
            },
            &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;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
              &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;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;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;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;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;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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The name of this intent.
          &quot;resetContexts&quot;: True or False, # Optional. Indicates whether to delete all contexts in the current session when this intent is matched.
          &quot;parameters&quot;: [ # Optional. The collection of parameters associated with the intent.
            { # Represents intent parameters.
              &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this parameter.
              &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;isList&quot;: True or False, # Optional. Indicates whether the parameter represents a list of values.
              &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;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;displayName&quot;: &quot;A String&quot;, # Required. The name of the 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;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;trainingPhrases&quot;: [ # Optional. The collection of examples that the agent is trained on.
            { # Represents an example that the agent is trained on.
              &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;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;text&quot;: &quot;A String&quot;, # Required. The text for this part.
                  &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;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;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;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;webhookState&quot;: &quot;A String&quot;, # Optional. Indicates whether webhooks are enabled for the 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;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. 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;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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                    &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    },
                    &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;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;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;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;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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    },
                    &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                      &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                        &quot;A String&quot;,
                      ],
                      &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;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;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;image&quot;: { # The image response message. # Displays an image.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                &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;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;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;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  &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;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle 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;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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
                    &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;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                        &quot;A String&quot;,
                      ],
                      &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;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
                  },
                ],
              },
              &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;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
                &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
                &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                },
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
                &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                          &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                        },
                      },
                    ],
                    &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;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;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;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;card&quot;: { # The card response message. # Displays a card.
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
                &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
                &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                  { # Optional. 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;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;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                    &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                    &quot;name&quot;: &quot;A String&quot;, # Required. Name 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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    },
                    &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    },
                  },
                ],
                &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
              },
              &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
              &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;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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                        &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                      },
                    },
                  ],
                  &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;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;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;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;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
                &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
              },
              &quot;payload&quot;: { # A custom platform-specific response.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &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;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;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                    &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;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;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
                &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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                      &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                    },
                  },
                ],
              },
              &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;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
                &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;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;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;isFallback&quot;: True or False, # Optional. Indicates whether this is a fallback intent.
          &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;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;parentFollowupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent&#x27;s parent. Format: `projects//agent/intents/`.
              &quot;followupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent. Format: `projects//agent/intents/`.
            },
          ],
        },
        &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;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;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;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;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;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;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;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;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;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;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;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;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;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. 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;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;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;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;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;faqQuestion&quot;: &quot;A String&quot;, # The corresponding FAQ question if the answer was extracted from a FAQ Document, empty otherwise.
            &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document that answers this conversational query.
            &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//knowledgeBases//documents/`.
            &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;action&quot;: &quot;A String&quot;, # The action name from the matched 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;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;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;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;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.
        { # Corresponds to the `Response` field in the Dialogflow console.
          &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;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;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                },
                &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;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;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;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;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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                },
                &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                  &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                    &quot;A String&quot;,
                  ],
                  &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;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;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;image&quot;: { # The image response message. # Displays an image.
            &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
            &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;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;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;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              &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;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle 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;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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                },
                &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
                &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;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                    &quot;A String&quot;,
                  ],
                  &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;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
              },
            ],
          },
          &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;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
            &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
            &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
            },
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
            &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                      &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                    },
                  },
                ],
                &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;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;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;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;card&quot;: { # The card response message. # Displays a card.
            &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
            &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
            &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
            &quot;buttons&quot;: [ # Optional. The collection of card buttons.
              { # Optional. 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;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;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                &quot;name&quot;: &quot;A String&quot;, # Required. Name 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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                },
                &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                },
              },
            ],
            &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
          },
          &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
          &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;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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                    &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                  },
                },
              ],
              &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;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;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;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;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
            &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
          },
          &quot;payload&quot;: { # A custom platform-specific response.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &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;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;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                &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;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;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
            &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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                  &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                },
              },
            ],
          },
          &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;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
            &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;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;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;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;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;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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The name of this intent.
        &quot;resetContexts&quot;: True or False, # Optional. Indicates whether to delete all contexts in the current session when this intent is matched.
        &quot;parameters&quot;: [ # Optional. The collection of parameters associated with the intent.
          { # Represents intent parameters.
            &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this parameter.
            &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;isList&quot;: True or False, # Optional. Indicates whether the parameter represents a list of values.
            &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;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;displayName&quot;: &quot;A String&quot;, # Required. The name of the 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;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;trainingPhrases&quot;: [ # Optional. The collection of examples that the agent is trained on.
          { # Represents an example that the agent is trained on.
            &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;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;text&quot;: &quot;A String&quot;, # Required. The text for this part.
                &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;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;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;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;webhookState&quot;: &quot;A String&quot;, # Optional. Indicates whether webhooks are enabled for the 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;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. 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;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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                  &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  },
                  &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;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;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;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;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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  },
                  &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                    &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                      &quot;A String&quot;,
                    ],
                    &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;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;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;image&quot;: { # The image response message. # Displays an image.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              &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;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;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;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                &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;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle 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;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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
                  &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;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                      &quot;A String&quot;,
                    ],
                    &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;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
                },
              ],
            },
            &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;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
              &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
              &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
              },
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
              &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                        &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                      },
                    },
                  ],
                  &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;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;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;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;card&quot;: { # The card response message. # Displays a card.
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
              &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
              &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                { # Optional. 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;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;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                  &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Name 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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  },
                  &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;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  },
                },
              ],
              &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
            },
            &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
            &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;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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                      &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                    },
                  },
                ],
                &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;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;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;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;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
              &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
            },
            &quot;payload&quot;: { # A custom platform-specific response.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &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;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;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                  &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;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;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
              &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;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;text&quot;: &quot;A String&quot;, # Suggested reply text.
                    &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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                  },
                },
              ],
            },
            &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;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
              &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;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;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;isFallback&quot;: True or False, # Optional. Indicates whether this is a fallback intent.
        &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;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;parentFollowupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent&#x27;s parent. Format: `projects//agent/intents/`.
            &quot;followupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent. Format: `projects//agent/intents/`.
          },
        ],
      },
      &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.
  }</pre>
</div>

</body></html>