<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="dialogflow_v2beta1.html">Dialogflow API</a> . <a href="dialogflow_v2beta1.projects.html">projects</a> . <a href="dialogflow_v2beta1.projects.locations.html">locations</a> . <a href="dialogflow_v2beta1.projects.locations.conversations.html">conversations</a> . <a href="dialogflow_v2beta1.projects.locations.conversations.participants.html">participants</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="dialogflow_v2beta1.projects.locations.conversations.participants.suggestions.html">suggestions()</a></code>
</p>
<p class="firstline">Returns the suggestions Resource.</p>

<p class="toc_element">
  <code><a href="#analyzeContent">analyzeContent(participant, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Adds a text (chat, for example), or audio (phone recording, for example) message from a participant into the conversation. Note: Always use agent versions for production traffic sent to virtual agents. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).</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="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new participant in a conversation.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a conversation participant.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the list of all participants in the specified conversation.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified participant.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="analyzeContent">analyzeContent(participant, body=None, x__xgafv=None)</code>
  <pre>Adds a text (chat, for example), or audio (phone recording, for example) message from a participant into the conversation. Note: Always use agent versions for production traffic sent to virtual agents. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).

Args:
  participant: string, Required. The name of the participant this text comes from. Format: `projects//locations//conversations//participants/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request message for Participants.AnalyzeContent.
  &quot;eventInput&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;`. # An input event to send to Dialogflow.
    &quot;languageCode&quot;: &quot;A String&quot;, # Required. The language of this query. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language.
    &quot;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the event.
    &quot;parameters&quot;: { # The collection of parameters associated with the event. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: - MapKey type: string - MapKey value: parameter name - MapValue type: - If parameter&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
  },
  &quot;messageSendTime&quot;: &quot;A String&quot;, # Optional. The send time of the message from end user or human agent&#x27;s perspective. It is used for identifying the same message under one participant. Given two messages under the same participant: - If send time are different regardless of whether the content of the messages are exactly the same, the conversation will regard them as two distinct messages sent by the participant. - If send time is the same regardless of whether the content of the messages are exactly the same, the conversation will regard them as same message, and ignore the message received later. If the value is not provided, a new request will always be regarded as a new message without any de-duplication.
  &quot;queryParams&quot;: { # Represents the parameters of the conversational query. # Parameters for a Dialogflow virtual-agent query.
    &quot;contexts&quot;: [ # The collection of contexts to be activated before this query is executed.
      { # Dialogflow contexts are similar to natural language context. If a person says to you &quot;they are orange&quot;, you need context in order to understand what &quot;they&quot; is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).
        &quot;lifespanCount&quot;: 42, # Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries.
        &quot;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in a-zA-Z0-9_-% and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`
        &quot;parameters&quot;: { # Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: - MapKey type: string - MapKey value: parameter name - MapValue type: - If parameter&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
      },
    ],
    &quot;geoLocation&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # The geo location of this conversational query.
      &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
      &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
    },
    &quot;knowledgeBaseNames&quot;: [ # KnowledgeBases to get alternative results from. If not set, the KnowledgeBases enabled in the agent (through UI) will be used. Format: `projects//knowledgeBases/`.
      &quot;A String&quot;,
    ],
    &quot;payload&quot;: { # This field can be used to pass custom data to your webhook. Arbitrary JSON objects are supported. If supplied, the value is used to populate the `WebhookRequest.original_detect_intent_request.payload` field sent to your webhook.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;resetContexts&quot;: True or False, # Specifies whether to delete all contexts in the current session before the new ones are activated.
    &quot;sentimentAnalysisRequestConfig&quot;: { # Configures the types of sentiment analysis to perform. # Configures the type of sentiment analysis to perform. If not provided, sentiment analysis is not performed. Note: Sentiment Analysis is only currently available for Essentials Edition agents.
      &quot;analyzeQueryTextSentiment&quot;: True or False, # Instructs the service to perform sentiment analysis on `query_text`. If not provided, sentiment analysis is not performed on `query_text`.
    },
    &quot;sessionEntityTypes&quot;: [ # Additional session entity types to replace or extend developer entity types with. The entity synonyms apply to all languages and persist for the session of this query.
      { # A session represents a conversation between a Dialogflow agent and an end-user. You can create special entities, called session entities, during a session. Session entities can extend or replace custom entity types and only exist during the session that they were created for. All session data, including session entities, is stored by Dialogflow for 20 minutes. For more information, see the [session entity guide](https://cloud.google.com/dialogflow/docs/entities-session).
        &quot;entities&quot;: [ # Required. The collection of entities associated with this session entity type.
          { # An **entity entry** for an associated entity type.
            &quot;synonyms&quot;: [ # Required. A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`.
              &quot;A String&quot;,
            ],
            &quot;value&quot;: &quot;A String&quot;, # Required. The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A reference value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases).
          },
        ],
        &quot;entityOverrideMode&quot;: &quot;A String&quot;, # Required. Indicates whether the additional data should override or supplement the custom entity type definition.
        &quot;name&quot;: &quot;A String&quot;, # Required. The unique identifier of this session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default &#x27;us&#x27; location. If `Environment ID` is not specified, we assume default &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented.
      },
    ],
    &quot;subAgents&quot;: [ # For mega agent query, directly specify which sub agents to query. If any specified sub agent is not linked to the mega agent, an error will be returned. If empty, Dialogflow will decide which sub agents to query. If specified for a non-mega-agent query, will be silently ignored.
      { # Contains basic configuration for a sub-agent.
        &quot;environment&quot;: &quot;A String&quot;, # Optional. The unique identifier (`environment name` in dialogflow console) of this sub-agent environment. Assumes draft environment if `environment` is not set.
        &quot;project&quot;: &quot;A String&quot;, # Required. The project of this agent. Format: `projects/` or `projects//locations/`.
      },
    ],
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of this conversational query from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. If not provided, the time zone specified in agent settings is used.
    &quot;webhookHeaders&quot;: { # This field can be used to pass HTTP headers for a webhook call. These headers will be sent to webhook along with the headers that have been configured through Dialogflow web console. The headers defined within this field will overwrite the headers configured through Dialogflow console if there is a conflict. Header names are case-insensitive. Google&#x27;s specified headers are not allowed. Including: &quot;Host&quot;, &quot;Content-Length&quot;, &quot;Connection&quot;, &quot;From&quot;, &quot;User-Agent&quot;, &quot;Accept-Encoding&quot;, &quot;If-Modified-Since&quot;, &quot;If-None-Match&quot;, &quot;X-Forwarded-For&quot;, etc.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;replyAudioConfig&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. # Speech synthesis configuration. The speech synthesis settings for a virtual agent that may be configured for the associated conversation profile are not used when calling AnalyzeContent. If this configuration is not supplied, speech synthesis is disabled.
    &quot;audioEncoding&quot;: &quot;A String&quot;, # Required. Audio encoding of the synthesized audio content.
    &quot;sampleRateHertz&quot;: 42, # The synthesis sample rate (in hertz) for this audio. If not provided, then the synthesizer will use the default sample rate based on the audio encoding. If this is different from the voice&#x27;s natural sample rate, then the synthesizer will honor this request by converting to the desired sample rate (which might result in worse audio quality).
    &quot;synthesizeSpeechConfig&quot;: { # Configuration of how speech should be synthesized. # Configuration of how speech should be synthesized.
      &quot;effectsProfileId&quot;: [ # Optional. An identifier which selects &#x27;audio effects&#x27; profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given.
        &quot;A String&quot;,
      ],
      &quot;pitch&quot;: 3.14, # Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20 semitones from the original pitch. -20 means decrease 20 semitones from the original pitch.
      &quot;speakingRate&quot;: 3.14, # Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any other values &lt; 0.25 or &gt; 4.0 will return an error.
      &quot;voice&quot;: { # Description of which voice to use for speech synthesis. # Optional. The desired voice of the synthesized audio.
        &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and ssml_gender. For the list of available voices, please refer to [Supported voices and languages](https://cloud.google.com/text-to-speech/docs/voices).
        &quot;ssmlGender&quot;: &quot;A String&quot;, # Optional. The preferred gender of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request.
      },
      &quot;volumeGainDb&quot;: 3.14, # Optional. Volume gain (in dB) of the normal native volume supported by the specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there&#x27;s usually no effective increase in loudness for any value greater than that.
    },
  },
  &quot;requestId&quot;: &quot;A String&quot;, # A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is only idempotent if a `request_id` is provided.
  &quot;textInput&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.
  },
}

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

Returns:
  An object of the form:

    { # The response message for Participants.AnalyzeContent.
  &quot;automatedAgentReply&quot;: { # Represents a response from an automated agent. # Optional. Only set if a Dialogflow automated agent has responded. Note that: AutomatedAgentReply.detect_intent_response.output_audio and AutomatedAgentReply.detect_intent_response.output_audio_config are always empty, use reply_audio instead.
    &quot;cxSessionParameters&quot;: { # The collection of current Dialogflow CX agent session parameters at the time of this response. Deprecated: Use `parameters` instead.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;detectIntentResponse&quot;: { # The message returned from the DetectIntent method. # Response of the Dialogflow Sessions.DetectIntent call.
      &quot;alternativeQueryResults&quot;: [ # If Knowledge Connectors are enabled, there could be more than one result returned for a given query or event, and this field will contain all results except for the top one, which is captured in query_result. The alternative results are ordered by decreasing `QueryResult.intent_detection_confidence`. If Knowledge Connectors are disabled, this field will be empty until multiple responses for regular intents are supported, at which point those additional results will be surfaced here.
        { # Represents the result of conversational query or event processing.
          &quot;action&quot;: &quot;A String&quot;, # The action name from the matched intent.
          &quot;allRequiredParamsPresent&quot;: True or False, # This field is set to: - `false` if the matched intent has required parameters and not all of the required parameter values have been collected. - `true` if all required parameter values have been collected, or if the matched intent doesn&#x27;t contain any required parameters.
          &quot;diagnosticInfo&quot;: { # Free-form diagnostic information for the associated detect intent request. The fields of this data can change without notice, so you should not write code that depends on its structure. The data may contain: - webhook call latency - webhook errors
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;fulfillmentMessages&quot;: [ # The collection of rich messages to present to the user.
            { # Corresponds to the `Response` field in the Dialogflow console.
              &quot;basicCard&quot;: { # The basic card message. Useful for displaying information. # Displays a basic card for Actions on Google.
                &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                  { # The button object that appears at the bottom of a card.
                    &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
                  },
                ],
                &quot;formattedText&quot;: &quot;A String&quot;, # Required, unless image is present. The body text of the card.
                &quot;image&quot;: { # The image response message. # Optional. The image for the card.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
                &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
              },
              &quot;browseCarouselCard&quot;: { # Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel # Browse carousel card for Actions on Google.
                &quot;imageDisplayOptions&quot;: &quot;A String&quot;, # Optional. Settings for displaying the image. Applies to every image in items.
                &quot;items&quot;: [ # Required. List of items in the Browse Carousel Card. Minimum of two items, maximum of ten.
                  { # Browsing carousel tile
                    &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                    &quot;footer&quot;: &quot;A String&quot;, # Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text.
                    &quot;image&quot;: { # The image response message. # Optional. Hero image for the carousel item.
                      &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                      &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    },
                    &quot;openUriAction&quot;: { # Actions on Google action to open a given url. # Required. Action to present to the user.
                      &quot;url&quot;: &quot;A String&quot;, # Required. URL
                      &quot;urlTypeHint&quot;: &quot;A String&quot;, # Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item. Maximum of two lines of text.
                  },
                ],
              },
              &quot;card&quot;: { # The card response message. # Displays a card.
                &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                  { # Optional. Contains information about a button.
                    &quot;postback&quot;: &quot;A String&quot;, # Optional. The text to send back to the Dialogflow API or a URI to open.
                    &quot;text&quot;: &quot;A String&quot;, # Optional. The text to show on the button.
                  },
                ],
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
                &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
              },
              &quot;carouselSelect&quot;: { # The card for presenting a carousel of options to select from. # Displays a carousel card for Actions on Google.
                &quot;items&quot;: [ # Required. Carousel items.
                  { # An item in the carousel.
                    &quot;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
                    &quot;image&quot;: { # The image response message. # Optional. The image to display.
                      &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                      &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    },
                    &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional info about the option item.
                      &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                      &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
                  },
                ],
              },
              &quot;image&quot;: { # The image response message. # Displays an image.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;linkOutSuggestion&quot;: { # The suggestion chip message that allows the user to jump out to the app or website associated with this agent. # Displays a link out suggestion chip for Actions on Google.
                &quot;destinationName&quot;: &quot;A String&quot;, # Required. The name of the app or site this chip is linking to.
                &quot;uri&quot;: &quot;A String&quot;, # Required. The URI of the app or site to open when the user taps the suggestion chip.
              },
              &quot;listSelect&quot;: { # The card for presenting a list of options to select from. # Displays a list card for Actions on Google.
                &quot;items&quot;: [ # Required. List items.
                  { # An item in the list.
                    &quot;description&quot;: &quot;A String&quot;, # Optional. The main text describing the item.
                    &quot;image&quot;: { # The image response message. # Optional. The image to display.
                      &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                      &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    },
                    &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                      &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                      &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. The title of the list item.
                  },
                ],
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle of the list.
                &quot;title&quot;: &quot;A String&quot;, # Optional. The overall title of the list.
              },
              &quot;mediaContent&quot;: { # The media content card for Actions on Google. # The media content card for Actions on Google.
                &quot;mediaObjects&quot;: [ # Required. List of media objects.
                  { # Response media object for media content card.
                    &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                    &quot;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                    &quot;icon&quot;: { # The image response message. # Optional. Icon to display above media content.
                      &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                      &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    },
                    &quot;largeImage&quot;: { # The image response message. # Optional. Image to display above media content.
                      &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                      &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    },
                    &quot;name&quot;: &quot;A String&quot;, # Required. Name of media card.
                  },
                ],
                &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
              },
              &quot;payload&quot;: { # A custom platform-specific response.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
              &quot;quickReplies&quot;: { # The quick replies response message. # Displays quick replies.
                &quot;quickReplies&quot;: [ # Optional. The collection of quick replies.
                  &quot;A String&quot;,
                ],
                &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the collection of quick replies.
              },
              &quot;rbmCarouselRichCard&quot;: { # Carousel Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. If you want to show a single card with more control over the layout, please use RbmStandaloneCard instead. # Rich Business Messaging (RBM) carousel rich card response.
                &quot;cardContents&quot;: [ # Required. The cards in the carousel. A carousel must have at least 2 cards and at most 10.
                  { # Rich Business Messaging (RBM) Card content
                    &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                    &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                      &quot;fileUri&quot;: &quot;A String&quot;, # Required. Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL.
                      &quot;height&quot;: &quot;A String&quot;, # Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored.
                      &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                    },
                    &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                      { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                        &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                          &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                            &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                          },
                          &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                            &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                          },
                          &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                          &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                          },
                          &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                        },
                        &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                          &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                          &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                        },
                      },
                    ],
                    &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
                  },
                ],
                &quot;cardWidth&quot;: &quot;A String&quot;, # Required. The width of the cards in the carousel.
              },
              &quot;rbmStandaloneRichCard&quot;: { # Standalone Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. You can group multiple rich cards into one using RbmCarouselCard but carousel cards will give you less control over the card layout. # Standalone Rich Business Messaging (RBM) rich card response.
                &quot;cardContent&quot;: { # Rich Business Messaging (RBM) Card content # Required. Card content.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                  &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                    &quot;fileUri&quot;: &quot;A String&quot;, # Required. Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL.
                    &quot;height&quot;: &quot;A String&quot;, # Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored.
                    &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                  },
                  &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                    { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                      &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                        &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                          &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                        },
                        &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                          &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                        },
                        &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                        &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                        },
                        &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                      },
                      &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                        &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                        &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                      },
                    },
                  ],
                  &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
                },
                &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
                &quot;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
              },
              &quot;rbmText&quot;: { # Rich Business Messaging (RBM) text response with suggestions. # Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging.
                &quot;rbmSuggestion&quot;: [ # Optional. One or more suggestions to show to the user.
                  { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                    &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                      &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                        &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                      },
                      &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                        &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                      },
                      &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                      &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                      },
                      &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                    },
                    &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                      &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                      &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                    },
                  },
                ],
                &quot;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
              },
              &quot;simpleResponses&quot;: { # The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`. # Returns a voice or text-only response for Actions on Google.
                &quot;simpleResponses&quot;: [ # Required. The list of simple responses.
                  { # The simple response message containing speech or text.
                    &quot;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                    &quot;ssml&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. Structured spoken response to the user in the SSML format. Mutually exclusive with text_to_speech.
                    &quot;textToSpeech&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml.
                  },
                ],
              },
              &quot;suggestions&quot;: { # The collection of suggestions. # Displays suggestion chips for Actions on Google.
                &quot;suggestions&quot;: [ # Required. The list of suggested replies.
                  { # The suggestion chip message that the user can tap to quickly post a reply to the conversation.
                    &quot;title&quot;: &quot;A String&quot;, # Required. The text shown the in the suggestion chip.
                  },
                ],
              },
              &quot;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
                &quot;buttons&quot;: [ # Optional. List of buttons for the card.
                  { # The button object that appears at the bottom of a card.
                    &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
                  },
                ],
                &quot;columnProperties&quot;: [ # Optional. Display properties for the columns in this table.
                  { # Column properties for TableCard.
                    &quot;header&quot;: &quot;A String&quot;, # Required. Column heading.
                    &quot;horizontalAlignment&quot;: &quot;A String&quot;, # Optional. Defines text alignment for all cells in this column.
                  },
                ],
                &quot;image&quot;: { # The image response message. # Optional. Image which should be displayed on the card.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;rows&quot;: [ # Optional. Rows in this table of data.
                  { # Row of TableCard.
                    &quot;cells&quot;: [ # Optional. List of cells that make up this row.
                      { # Cell of TableCardRow.
                        &quot;text&quot;: &quot;A String&quot;, # Required. Text in this cell.
                      },
                    ],
                    &quot;dividerAfter&quot;: True or False, # Optional. Whether to add a visual divider after this row.
                  },
                ],
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
                &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
              },
              &quot;telephonyPlayAudio&quot;: { # Plays audio from a file in Telephony Gateway. # Plays audio from a file in Telephony Gateway.
                &quot;audioUri&quot;: &quot;A String&quot;, # Required. URI to a Google Cloud Storage object containing the audio to play, e.g., &quot;gs://bucket/object&quot;. The object must contain a single channel (mono) of linear PCM audio (2 bytes / sample) at 8kHz. This object must be readable by the `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` service account where is the number of the Telephony Gateway project (usually the same as the Dialogflow agent project). If the Google Cloud Storage bucket is in the Telephony Gateway project, this permission is added by default when enabling the Dialogflow V2 API. For audio from other sources, consider using the `TelephonySynthesizeSpeech` message with SSML.
              },
              &quot;telephonySynthesizeSpeech&quot;: { # Synthesizes speech and plays back the synthesized audio to the caller in Telephony Gateway. Telephony Gateway takes the synthesizer settings from `DetectIntentResponse.output_audio_config` which can either be set at request-level or can come from the agent-level synthesizer config. # Synthesizes speech in Telephony Gateway.
                &quot;ssml&quot;: &quot;A String&quot;, # The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml).
                &quot;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
              },
              &quot;telephonyTransferCall&quot;: { # Transfers the call in Telephony Gateway. # Transfers the call in Telephony Gateway.
                &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to transfer the call to in [E.164 format](https://en.wikipedia.org/wiki/E.164). We currently only allow transferring to US numbers (+1xxxyyyzzzz).
              },
              &quot;text&quot;: { # The text response message. # Returns a text response.
                &quot;text&quot;: [ # Optional. The collection of the agent&#x27;s responses.
                  &quot;A String&quot;,
                ],
              },
            },
          ],
          &quot;fulfillmentText&quot;: &quot;A String&quot;, # The text to be pronounced to the user or shown on the screen. Note: This is a legacy field, `fulfillment_messages` should be preferred.
          &quot;intent&quot;: { # An intent categorizes an end-user&#x27;s intention for one conversation turn. For each agent, you define many intents, where your combined intents can handle a complete conversation. When an end-user writes or says something, referred to as an end-user expression or end-user input, Dialogflow matches the end-user input to the best intent in your agent. Matching an intent is also known as intent classification. For more information, see the [intent guide](https://cloud.google.com/dialogflow/docs/intents-overview). # The intent that matched the conversational query. Some, not all fields are filled in this message, including but not limited to: `name`, `display_name`, `end_interaction` and `is_fallback`.
            &quot;action&quot;: &quot;A String&quot;, # Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces.
            &quot;defaultResponsePlatforms&quot;: [ # Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
              &quot;A String&quot;,
            ],
            &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of this intent.
            &quot;endInteraction&quot;: True or False, # Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false.
            &quot;events&quot;: [ # Optional. The collection of event names that trigger the intent. If the collection of input contexts is not empty, all of the contexts must be present in the active user session for an event to trigger this intent. Event names are limited to 150 characters.
              &quot;A String&quot;,
            ],
            &quot;followupIntentInfo&quot;: [ # Output only. Information about all followup intents that have this intent as a direct or indirect parent. We populate this field only in the output.
              { # Represents a single followup intent in the chain.
                &quot;followupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent. Format: `projects//agent/intents/`.
                &quot;parentFollowupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent&#x27;s parent. Format: `projects//agent/intents/`.
              },
            ],
            &quot;inputContextNames&quot;: [ # Optional. The list of context names required for this intent to be triggered. Formats: - `projects//agent/sessions/-/contexts/` - `projects//locations//agent/sessions/-/contexts/`
              &quot;A String&quot;,
            ],
            &quot;isFallback&quot;: True or False, # Optional. Indicates whether this is a fallback intent.
            &quot;liveAgentHandoff&quot;: True or False, # Optional. Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false.
            &quot;messages&quot;: [ # Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console.
              { # Corresponds to the `Response` field in the Dialogflow console.
                &quot;basicCard&quot;: { # The basic card message. Useful for displaying information. # Displays a basic card for Actions on Google.
                  &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                    { # The button object that appears at the bottom of a card.
                      &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                        &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                      },
                      &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
                    },
                  ],
                  &quot;formattedText&quot;: &quot;A String&quot;, # Required, unless image is present. The body text of the card.
                  &quot;image&quot;: { # The image response message. # Optional. The image for the card.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
                  &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
                },
                &quot;browseCarouselCard&quot;: { # Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel # Browse carousel card for Actions on Google.
                  &quot;imageDisplayOptions&quot;: &quot;A String&quot;, # Optional. Settings for displaying the image. Applies to every image in items.
                  &quot;items&quot;: [ # Required. List of items in the Browse Carousel Card. Minimum of two items, maximum of ten.
                    { # Browsing carousel tile
                      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                      &quot;footer&quot;: &quot;A String&quot;, # Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text.
                      &quot;image&quot;: { # The image response message. # Optional. Hero image for the carousel item.
                        &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                      },
                      &quot;openUriAction&quot;: { # Actions on Google action to open a given url. # Required. Action to present to the user.
                        &quot;url&quot;: &quot;A String&quot;, # Required. URL
                        &quot;urlTypeHint&quot;: &quot;A String&quot;, # Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.
                      },
                      &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item. Maximum of two lines of text.
                    },
                  ],
                },
                &quot;card&quot;: { # The card response message. # Displays a card.
                  &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                    { # Optional. Contains information about a button.
                      &quot;postback&quot;: &quot;A String&quot;, # Optional. The text to send back to the Dialogflow API or a URI to open.
                      &quot;text&quot;: &quot;A String&quot;, # Optional. The text to show on the button.
                    },
                  ],
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
                  &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
                  &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
                },
                &quot;carouselSelect&quot;: { # The card for presenting a carousel of options to select from. # Displays a carousel card for Actions on Google.
                  &quot;items&quot;: [ # Required. Carousel items.
                    { # An item in the carousel.
                      &quot;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
                      &quot;image&quot;: { # The image response message. # Optional. The image to display.
                        &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                      },
                      &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional info about the option item.
                        &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                        &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
                    },
                  ],
                },
                &quot;image&quot;: { # The image response message. # Displays an image.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;linkOutSuggestion&quot;: { # The suggestion chip message that allows the user to jump out to the app or website associated with this agent. # Displays a link out suggestion chip for Actions on Google.
                  &quot;destinationName&quot;: &quot;A String&quot;, # Required. The name of the app or site this chip is linking to.
                  &quot;uri&quot;: &quot;A String&quot;, # Required. The URI of the app or site to open when the user taps the suggestion chip.
                },
                &quot;listSelect&quot;: { # The card for presenting a list of options to select from. # Displays a list card for Actions on Google.
                  &quot;items&quot;: [ # Required. List items.
                    { # An item in the list.
                      &quot;description&quot;: &quot;A String&quot;, # Optional. The main text describing the item.
                      &quot;image&quot;: { # The image response message. # Optional. The image to display.
                        &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                      },
                      &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                        &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                        &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;title&quot;: &quot;A String&quot;, # Required. The title of the list item.
                    },
                  ],
                  &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle of the list.
                  &quot;title&quot;: &quot;A String&quot;, # Optional. The overall title of the list.
                },
                &quot;mediaContent&quot;: { # The media content card for Actions on Google. # The media content card for Actions on Google.
                  &quot;mediaObjects&quot;: [ # Required. List of media objects.
                    { # Response media object for media content card.
                      &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                      &quot;icon&quot;: { # The image response message. # Optional. Icon to display above media content.
                        &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                      },
                      &quot;largeImage&quot;: { # The image response message. # Optional. Image to display above media content.
                        &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                        &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                      },
                      &quot;name&quot;: &quot;A String&quot;, # Required. Name of media card.
                    },
                  ],
                  &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
                },
                &quot;payload&quot;: { # A custom platform-specific response.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
                &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
                &quot;quickReplies&quot;: { # The quick replies response message. # Displays quick replies.
                  &quot;quickReplies&quot;: [ # Optional. The collection of quick replies.
                    &quot;A String&quot;,
                  ],
                  &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the collection of quick replies.
                },
                &quot;rbmCarouselRichCard&quot;: { # Carousel Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. If you want to show a single card with more control over the layout, please use RbmStandaloneCard instead. # Rich Business Messaging (RBM) carousel rich card response.
                  &quot;cardContents&quot;: [ # Required. The cards in the carousel. A carousel must have at least 2 cards and at most 10.
                    { # Rich Business Messaging (RBM) Card content
                      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                      &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                        &quot;fileUri&quot;: &quot;A String&quot;, # Required. Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL.
                        &quot;height&quot;: &quot;A String&quot;, # Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored.
                        &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                      },
                      &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                        { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                          &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                            &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                              &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                            },
                            &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                              &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                            },
                            &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                            &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                            },
                            &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                          },
                          &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                            &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                            &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                          },
                        },
                      ],
                      &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
                    },
                  ],
                  &quot;cardWidth&quot;: &quot;A String&quot;, # Required. The width of the cards in the carousel.
                },
                &quot;rbmStandaloneRichCard&quot;: { # Standalone Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. You can group multiple rich cards into one using RbmCarouselCard but carousel cards will give you less control over the card layout. # Standalone Rich Business Messaging (RBM) rich card response.
                  &quot;cardContent&quot;: { # Rich Business Messaging (RBM) Card content # Required. Card content.
                    &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                    &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                      &quot;fileUri&quot;: &quot;A String&quot;, # Required. Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL.
                      &quot;height&quot;: &quot;A String&quot;, # Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored.
                      &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                    },
                    &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                      { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                        &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                          &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                            &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                          },
                          &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                            &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                          },
                          &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                          &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                          },
                          &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                        },
                        &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                          &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                          &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                        },
                      },
                    ],
                    &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
                  },
                  &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
                  &quot;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
                },
                &quot;rbmText&quot;: { # Rich Business Messaging (RBM) text response with suggestions. # Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging.
                  &quot;rbmSuggestion&quot;: [ # Optional. One or more suggestions to show to the user.
                    { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                      &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                        &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                          &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                        },
                        &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                          &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                        },
                        &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                        &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                        },
                        &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                      },
                      &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                        &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                        &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                      },
                    },
                  ],
                  &quot;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
                },
                &quot;simpleResponses&quot;: { # The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`. # Returns a voice or text-only response for Actions on Google.
                  &quot;simpleResponses&quot;: [ # Required. The list of simple responses.
                    { # The simple response message containing speech or text.
                      &quot;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                      &quot;ssml&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. Structured spoken response to the user in the SSML format. Mutually exclusive with text_to_speech.
                      &quot;textToSpeech&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml.
                    },
                  ],
                },
                &quot;suggestions&quot;: { # The collection of suggestions. # Displays suggestion chips for Actions on Google.
                  &quot;suggestions&quot;: [ # Required. The list of suggested replies.
                    { # The suggestion chip message that the user can tap to quickly post a reply to the conversation.
                      &quot;title&quot;: &quot;A String&quot;, # Required. The text shown the in the suggestion chip.
                    },
                  ],
                },
                &quot;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
                  &quot;buttons&quot;: [ # Optional. List of buttons for the card.
                    { # The button object that appears at the bottom of a card.
                      &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                        &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                      },
                      &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
                    },
                  ],
                  &quot;columnProperties&quot;: [ # Optional. Display properties for the columns in this table.
                    { # Column properties for TableCard.
                      &quot;header&quot;: &quot;A String&quot;, # Required. Column heading.
                      &quot;horizontalAlignment&quot;: &quot;A String&quot;, # Optional. Defines text alignment for all cells in this column.
                    },
                  ],
                  &quot;image&quot;: { # The image response message. # Optional. Image which should be displayed on the card.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;rows&quot;: [ # Optional. Rows in this table of data.
                    { # Row of TableCard.
                      &quot;cells&quot;: [ # Optional. List of cells that make up this row.
                        { # Cell of TableCardRow.
                          &quot;text&quot;: &quot;A String&quot;, # Required. Text in this cell.
                        },
                      ],
                      &quot;dividerAfter&quot;: True or False, # Optional. Whether to add a visual divider after this row.
                    },
                  ],
                  &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
                  &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
                },
                &quot;telephonyPlayAudio&quot;: { # Plays audio from a file in Telephony Gateway. # Plays audio from a file in Telephony Gateway.
                  &quot;audioUri&quot;: &quot;A String&quot;, # Required. URI to a Google Cloud Storage object containing the audio to play, e.g., &quot;gs://bucket/object&quot;. The object must contain a single channel (mono) of linear PCM audio (2 bytes / sample) at 8kHz. This object must be readable by the `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` service account where is the number of the Telephony Gateway project (usually the same as the Dialogflow agent project). If the Google Cloud Storage bucket is in the Telephony Gateway project, this permission is added by default when enabling the Dialogflow V2 API. For audio from other sources, consider using the `TelephonySynthesizeSpeech` message with SSML.
                },
                &quot;telephonySynthesizeSpeech&quot;: { # Synthesizes speech and plays back the synthesized audio to the caller in Telephony Gateway. Telephony Gateway takes the synthesizer settings from `DetectIntentResponse.output_audio_config` which can either be set at request-level or can come from the agent-level synthesizer config. # Synthesizes speech in Telephony Gateway.
                  &quot;ssml&quot;: &quot;A String&quot;, # The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml).
                  &quot;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
                },
                &quot;telephonyTransferCall&quot;: { # Transfers the call in Telephony Gateway. # Transfers the call in Telephony Gateway.
                  &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to transfer the call to in [E.164 format](https://en.wikipedia.org/wiki/E.164). We currently only allow transferring to US numbers (+1xxxyyyzzzz).
                },
                &quot;text&quot;: { # The text response message. # Returns a text response.
                  &quot;text&quot;: [ # Optional. The collection of the agent&#x27;s responses.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;mlDisabled&quot;: True or False, # Optional. Indicates whether Machine Learning is disabled for the intent. Note: If `ml_disabled` setting is set to true, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off.
            &quot;mlEnabled&quot;: True or False, # Optional. Indicates whether Machine Learning is enabled for the intent. Note: If `ml_enabled` setting is set to false, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off. DEPRECATED! Please use `ml_disabled` field instead. NOTE: If both `ml_enabled` and `ml_disabled` are either not set or false, then the default value is determined as follows: - Before April 15th, 2018 the default is: ml_enabled = false / ml_disabled = true. - After April 15th, 2018 the default is: ml_enabled = true / ml_disabled = false.
            &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`
            &quot;outputContexts&quot;: [ # Optional. The collection of contexts that are activated when the intent is matched. Context messages in this collection should not set the parameters field. Setting the `lifespan_count` to 0 will reset the context when the intent is matched. Format: `projects//agent/sessions/-/contexts/`.
              { # Dialogflow contexts are similar to natural language context. If a person says to you &quot;they are orange&quot;, you need context in order to understand what &quot;they&quot; is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).
                &quot;lifespanCount&quot;: 42, # Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries.
                &quot;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in a-zA-Z0-9_-% and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`
                &quot;parameters&quot;: { # Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: - MapKey type: string - MapKey value: parameter name - MapValue type: - If parameter&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
              },
            ],
            &quot;parameters&quot;: [ # Optional. The collection of parameters associated with the intent.
              { # Represents intent parameters.
                &quot;defaultValue&quot;: &quot;A String&quot;, # Optional. The default value to use when the `value` yields an empty result. Default values can be extracted from contexts by using the following syntax: `#context_name.parameter_name`.
                &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of the parameter.
                &quot;entityTypeDisplayName&quot;: &quot;A String&quot;, # Optional. The name of the entity type, prefixed with `@`, that describes values of the parameter. If the parameter is required, this must be provided.
                &quot;isList&quot;: True or False, # Optional. Indicates whether the parameter represents a list of values.
                &quot;mandatory&quot;: True or False, # Optional. Indicates whether the parameter is required. That is, whether the intent cannot be completed without collecting the parameter value.
                &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this parameter.
                &quot;prompts&quot;: [ # Optional. The collection of prompts that the agent can present to the user in order to collect a value for the parameter.
                  &quot;A String&quot;,
                ],
                &quot;value&quot;: &quot;A String&quot;, # Optional. The definition of the parameter value. It can be: - a constant string, - a parameter value defined as `$parameter_name`, - an original parameter value defined as `$parameter_name.original`, - a parameter value from some context defined as `#context_name.parameter_name`.
              },
            ],
            &quot;parentFollowupIntentName&quot;: &quot;A String&quot;, # Optional. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`.
            &quot;priority&quot;: 42, # Optional. The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests.
            &quot;resetContexts&quot;: True or False, # Optional. Indicates whether to delete all contexts in the current session when this intent is matched.
            &quot;rootFollowupIntentName&quot;: &quot;A String&quot;, # Output only. The unique identifier of the root intent in the chain of followup intents. It identifies the correct followup intents chain for this intent. Format: `projects//agent/intents/`.
            &quot;trainingPhrases&quot;: [ # Optional. The collection of examples that the agent is trained on.
              { # Represents an example that the agent is trained on.
                &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier of this training phrase.
                &quot;parts&quot;: [ # Required. The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `entity_type`, `alias`, and `user_defined` fields are all set.
                  { # Represents a part of a training phrase.
                    &quot;alias&quot;: &quot;A String&quot;, # Optional. The parameter name for the value extracted from the annotated part of the example. This field is required for annotated parts of the training phrase.
                    &quot;entityType&quot;: &quot;A String&quot;, # Optional. The entity type name prefixed with `@`. This field is required for annotated parts of the training phrase.
                    &quot;text&quot;: &quot;A String&quot;, # Required. The text for this part.
                    &quot;userDefined&quot;: True or False, # Optional. Indicates whether the text was manually annotated. This field is set to true when the Dialogflow Console is used to manually annotate the part. When creating an annotated part with the API, you must set this to true.
                  },
                ],
                &quot;timesAddedCount&quot;: 42, # Optional. Indicates how many times this example was added to the intent. Each time a developer adds an existing sample by editing an intent or training, this counter is increased.
                &quot;type&quot;: &quot;A String&quot;, # Required. The type of the training phrase.
              },
            ],
            &quot;webhookState&quot;: &quot;A String&quot;, # Optional. Indicates whether webhooks are enabled for the intent.
          },
          &quot;intentDetectionConfidence&quot;: 3.14, # The intent detection confidence. Values range from 0.0 (completely uncertain) to 1.0 (completely certain). This value is for informational purpose only and is only used to help match the best intent within the classification threshold. This value may change for the same end-user expression at any time due to a model retraining or change in implementation. If there are `multiple knowledge_answers` messages, this value is set to the greatest `knowledgeAnswers.match_confidence` value in the list.
          &quot;knowledgeAnswers&quot;: { # Represents the result of querying a Knowledge base. # The result from Knowledge Connector (if any), ordered by decreasing `KnowledgeAnswers.match_confidence`.
            &quot;answers&quot;: [ # A list of answers from Knowledge Connector.
              { # An answer from Knowledge Connector.
                &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document that answers this conversational query.
                &quot;faqQuestion&quot;: &quot;A String&quot;, # The corresponding FAQ question if the answer was extracted from a FAQ Document, empty otherwise.
                &quot;matchConfidence&quot;: 3.14, # The system&#x27;s confidence score that this Knowledge answer is a good match for this conversational query. The range is from 0.0 (completely uncertain) to 1.0 (completely certain). Note: The confidence score is likely to vary somewhat (possibly even for identical requests), as the underlying model is under constant improvement. It may be deprecated in the future. We recommend using `match_confidence_level` which should be generally more stable.
                &quot;matchConfidenceLevel&quot;: &quot;A String&quot;, # The system&#x27;s confidence level that this knowledge answer is a good match for this conversational query. NOTE: The confidence level for a given `` pair may change without notice, as it depends on models that are constantly being improved. However, it will change less frequently than the confidence score below, and should be preferred for referencing the quality of an answer.
                &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//knowledgeBases//documents/`.
              },
            ],
          },
          &quot;languageCode&quot;: &quot;A String&quot;, # The language that was triggered during intent detection. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes.
          &quot;outputContexts&quot;: [ # The collection of output contexts. If applicable, `output_contexts.parameters` contains entries with name `.original` containing the original parameter values before the query.
            { # Dialogflow contexts are similar to natural language context. If a person says to you &quot;they are orange&quot;, you need context in order to understand what &quot;they&quot; is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).
              &quot;lifespanCount&quot;: 42, # Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries.
              &quot;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in a-zA-Z0-9_-% and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`
              &quot;parameters&quot;: { # Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: - MapKey type: string - MapKey value: parameter name - MapValue type: - If parameter&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            },
          ],
          &quot;parameters&quot;: { # The collection of extracted parameters. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: - MapKey type: string - MapKey value: parameter name - MapValue type: - If parameter&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;queryText&quot;: &quot;A String&quot;, # The original conversational query text: - If natural language text was provided as input, `query_text` contains a copy of the input. - If natural language speech audio was provided as input, `query_text` contains the speech recognition result. If speech recognizer produced multiple alternatives, a particular one is picked. - If automatic spell correction is enabled, `query_text` will contain the corrected user input.
          &quot;sentimentAnalysisResult&quot;: { # The result of sentiment analysis. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user&#x27;s attitude as positive, negative, or neutral. For Participants.DetectIntent, it needs to be configured in DetectIntentRequest.query_params. For Participants.StreamingDetectIntent, it needs to be configured in StreamingDetectIntentRequest.query_params. And for Participants.AnalyzeContent and Participants.StreamingAnalyzeContent, it needs to be configured in ConversationProfile.human_agent_assistant_config # The sentiment analysis result, which depends on the `sentiment_analysis_request_config` specified in the request.
            &quot;queryTextSentiment&quot;: { # The sentiment, such as positive/negative feeling or association, for a unit of analysis, such as the query text. # The sentiment analysis result for `query_text`.
              &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment, regardless of score (positive or negative).
              &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
            },
          },
          &quot;speechRecognitionConfidence&quot;: 3.14, # The Speech recognition confidence between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. The default of 0.0 is a sentinel value indicating that confidence was not set. This field is not guaranteed to be accurate or set. In particular this field isn&#x27;t set for StreamingDetectIntent since the streaming endpoint has separate confidence estimates per portion of the audio in StreamingRecognitionResult.
          &quot;webhookPayload&quot;: { # If the query was fulfilled by a webhook call, this field is set to the value of the `payload` field returned in the webhook response.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;webhookSource&quot;: &quot;A String&quot;, # If the query was fulfilled by a webhook call, this field is set to the value of the `source` field returned in the webhook response.
        },
      ],
      &quot;outputAudio&quot;: &quot;A String&quot;, # The audio data bytes encoded as specified in the request. Note: The output audio is generated based on the values of default platform text responses found in the `query_result.fulfillment_messages` field. If multiple default text responses exist, they will be concatenated when generating audio. If no default platform text responses exist, the generated audio content will be empty. In some scenarios, multiple output audio fields may be present in the response structure. In these cases, only the top-most-level audio output has content.
      &quot;outputAudioConfig&quot;: { # Instructs the speech synthesizer how to generate the output audio content. If this audio config is supplied in a request, it overrides all existing text-to-speech settings applied to the agent. # The config used by the speech synthesizer to generate the output audio.
        &quot;audioEncoding&quot;: &quot;A String&quot;, # Required. Audio encoding of the synthesized audio content.
        &quot;sampleRateHertz&quot;: 42, # The synthesis sample rate (in hertz) for this audio. If not provided, then the synthesizer will use the default sample rate based on the audio encoding. If this is different from the voice&#x27;s natural sample rate, then the synthesizer will honor this request by converting to the desired sample rate (which might result in worse audio quality).
        &quot;synthesizeSpeechConfig&quot;: { # Configuration of how speech should be synthesized. # Configuration of how speech should be synthesized.
          &quot;effectsProfileId&quot;: [ # Optional. An identifier which selects &#x27;audio effects&#x27; profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given.
            &quot;A String&quot;,
          ],
          &quot;pitch&quot;: 3.14, # Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20 semitones from the original pitch. -20 means decrease 20 semitones from the original pitch.
          &quot;speakingRate&quot;: 3.14, # Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any other values &lt; 0.25 or &gt; 4.0 will return an error.
          &quot;voice&quot;: { # Description of which voice to use for speech synthesis. # Optional. The desired voice of the synthesized audio.
            &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and ssml_gender. For the list of available voices, please refer to [Supported voices and languages](https://cloud.google.com/text-to-speech/docs/voices).
            &quot;ssmlGender&quot;: &quot;A String&quot;, # Optional. The preferred gender of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request.
          },
          &quot;volumeGainDb&quot;: 3.14, # Optional. Volume gain (in dB) of the normal native volume supported by the specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there&#x27;s usually no effective increase in loudness for any value greater than that.
        },
      },
      &quot;queryResult&quot;: { # Represents the result of conversational query or event processing. # The selected results of the conversational query or event processing. See `alternative_query_results` for additional potential results.
        &quot;action&quot;: &quot;A String&quot;, # The action name from the matched intent.
        &quot;allRequiredParamsPresent&quot;: True or False, # This field is set to: - `false` if the matched intent has required parameters and not all of the required parameter values have been collected. - `true` if all required parameter values have been collected, or if the matched intent doesn&#x27;t contain any required parameters.
        &quot;diagnosticInfo&quot;: { # Free-form diagnostic information for the associated detect intent request. The fields of this data can change without notice, so you should not write code that depends on its structure. The data may contain: - webhook call latency - webhook errors
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;fulfillmentMessages&quot;: [ # The collection of rich messages to present to the user.
          { # Corresponds to the `Response` field in the Dialogflow console.
            &quot;basicCard&quot;: { # The basic card message. Useful for displaying information. # Displays a basic card for Actions on Google.
              &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                { # The button object that appears at the bottom of a card.
                  &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                    &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
                },
              ],
              &quot;formattedText&quot;: &quot;A String&quot;, # Required, unless image is present. The body text of the card.
              &quot;image&quot;: { # The image response message. # Optional. The image for the card.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
              &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
            },
            &quot;browseCarouselCard&quot;: { # Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel # Browse carousel card for Actions on Google.
              &quot;imageDisplayOptions&quot;: &quot;A String&quot;, # Optional. Settings for displaying the image. Applies to every image in items.
              &quot;items&quot;: [ # Required. List of items in the Browse Carousel Card. Minimum of two items, maximum of ten.
                { # Browsing carousel tile
                  &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                  &quot;footer&quot;: &quot;A String&quot;, # Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text.
                  &quot;image&quot;: { # The image response message. # Optional. Hero image for the carousel item.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;openUriAction&quot;: { # Actions on Google action to open a given url. # Required. Action to present to the user.
                    &quot;url&quot;: &quot;A String&quot;, # Required. URL
                    &quot;urlTypeHint&quot;: &quot;A String&quot;, # Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item. Maximum of two lines of text.
                },
              ],
            },
            &quot;card&quot;: { # The card response message. # Displays a card.
              &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                { # Optional. Contains information about a button.
                  &quot;postback&quot;: &quot;A String&quot;, # Optional. The text to send back to the Dialogflow API or a URI to open.
                  &quot;text&quot;: &quot;A String&quot;, # Optional. The text to show on the button.
                },
              ],
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
              &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
            },
            &quot;carouselSelect&quot;: { # The card for presenting a carousel of options to select from. # Displays a carousel card for Actions on Google.
              &quot;items&quot;: [ # Required. Carousel items.
                { # An item in the carousel.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
                  &quot;image&quot;: { # The image response message. # Optional. The image to display.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional info about the option item.
                    &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                    &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
                },
              ],
            },
            &quot;image&quot;: { # The image response message. # Displays an image.
              &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
              &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
            },
            &quot;linkOutSuggestion&quot;: { # The suggestion chip message that allows the user to jump out to the app or website associated with this agent. # Displays a link out suggestion chip for Actions on Google.
              &quot;destinationName&quot;: &quot;A String&quot;, # Required. The name of the app or site this chip is linking to.
              &quot;uri&quot;: &quot;A String&quot;, # Required. The URI of the app or site to open when the user taps the suggestion chip.
            },
            &quot;listSelect&quot;: { # The card for presenting a list of options to select from. # Displays a list card for Actions on Google.
              &quot;items&quot;: [ # Required. List items.
                { # An item in the list.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. The main text describing the item.
                  &quot;image&quot;: { # The image response message. # Optional. The image to display.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                    &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                    &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the list item.
                },
              ],
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle of the list.
              &quot;title&quot;: &quot;A String&quot;, # Optional. The overall title of the list.
            },
            &quot;mediaContent&quot;: { # The media content card for Actions on Google. # The media content card for Actions on Google.
              &quot;mediaObjects&quot;: [ # Required. List of media objects.
                { # Response media object for media content card.
                  &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                  &quot;icon&quot;: { # The image response message. # Optional. Icon to display above media content.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;largeImage&quot;: { # The image response message. # Optional. Image to display above media content.
                    &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                    &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # Required. Name of media card.
                },
              ],
              &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
            },
            &quot;payload&quot;: { # A custom platform-specific response.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
            &quot;quickReplies&quot;: { # The quick replies response message. # Displays quick replies.
              &quot;quickReplies&quot;: [ # Optional. The collection of quick replies.
                &quot;A String&quot;,
              ],
              &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the collection of quick replies.
            },
            &quot;rbmCarouselRichCard&quot;: { # Carousel Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. If you want to show a single card with more control over the layout, please use RbmStandaloneCard instead. # Rich Business Messaging (RBM) carousel rich card response.
              &quot;cardContents&quot;: [ # Required. The cards in the carousel. A carousel must have at least 2 cards and at most 10.
                { # Rich Business Messaging (RBM) Card content
                  &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                  &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                    &quot;fileUri&quot;: &quot;A String&quot;, # Required. Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL.
                    &quot;height&quot;: &quot;A String&quot;, # Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored.
                    &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                  },
                  &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                    { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                      &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                        &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                          &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                        },
                        &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                          &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                        },
                        &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                        &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                        },
                        &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                      },
                      &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                        &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                        &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                      },
                    },
                  ],
                  &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
                },
              ],
              &quot;cardWidth&quot;: &quot;A String&quot;, # Required. The width of the cards in the carousel.
            },
            &quot;rbmStandaloneRichCard&quot;: { # Standalone Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. You can group multiple rich cards into one using RbmCarouselCard but carousel cards will give you less control over the card layout. # Standalone Rich Business Messaging (RBM) rich card response.
              &quot;cardContent&quot;: { # Rich Business Messaging (RBM) Card content # Required. Card content.
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                  &quot;fileUri&quot;: &quot;A String&quot;, # Required. Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL.
                  &quot;height&quot;: &quot;A String&quot;, # Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored.
                  &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                },
                &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                  { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                    &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                      &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                        &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                      },
                      &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                        &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                      },
                      &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                      &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                      },
                      &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                    },
                    &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                      &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                      &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                    },
                  },
                ],
                &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
              },
              &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
              &quot;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
            },
            &quot;rbmText&quot;: { # Rich Business Messaging (RBM) text response with suggestions. # Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging.
              &quot;rbmSuggestion&quot;: [ # Optional. One or more suggestions to show to the user.
                { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                  &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                    &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                      &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                    },
                    &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                      &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                    },
                    &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                    &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                    },
                    &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                  },
                  &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                    &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                    &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                  },
                },
              ],
              &quot;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
            },
            &quot;simpleResponses&quot;: { # The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`. # Returns a voice or text-only response for Actions on Google.
              &quot;simpleResponses&quot;: [ # Required. The list of simple responses.
                { # The simple response message containing speech or text.
                  &quot;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                  &quot;ssml&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. Structured spoken response to the user in the SSML format. Mutually exclusive with text_to_speech.
                  &quot;textToSpeech&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml.
                },
              ],
            },
            &quot;suggestions&quot;: { # The collection of suggestions. # Displays suggestion chips for Actions on Google.
              &quot;suggestions&quot;: [ # Required. The list of suggested replies.
                { # The suggestion chip message that the user can tap to quickly post a reply to the conversation.
                  &quot;title&quot;: &quot;A String&quot;, # Required. The text shown the in the suggestion chip.
                },
              ],
            },
            &quot;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
              &quot;buttons&quot;: [ # Optional. List of buttons for the card.
                { # The button object that appears at the bottom of a card.
                  &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                    &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
                },
              ],
              &quot;columnProperties&quot;: [ # Optional. Display properties for the columns in this table.
                { # Column properties for TableCard.
                  &quot;header&quot;: &quot;A String&quot;, # Required. Column heading.
                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # Optional. Defines text alignment for all cells in this column.
                },
              ],
              &quot;image&quot;: { # The image response message. # Optional. Image which should be displayed on the card.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;rows&quot;: [ # Optional. Rows in this table of data.
                { # Row of TableCard.
                  &quot;cells&quot;: [ # Optional. List of cells that make up this row.
                    { # Cell of TableCardRow.
                      &quot;text&quot;: &quot;A String&quot;, # Required. Text in this cell.
                    },
                  ],
                  &quot;dividerAfter&quot;: True or False, # Optional. Whether to add a visual divider after this row.
                },
              ],
              &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
              &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
            },
            &quot;telephonyPlayAudio&quot;: { # Plays audio from a file in Telephony Gateway. # Plays audio from a file in Telephony Gateway.
              &quot;audioUri&quot;: &quot;A String&quot;, # Required. URI to a Google Cloud Storage object containing the audio to play, e.g., &quot;gs://bucket/object&quot;. The object must contain a single channel (mono) of linear PCM audio (2 bytes / sample) at 8kHz. This object must be readable by the `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` service account where is the number of the Telephony Gateway project (usually the same as the Dialogflow agent project). If the Google Cloud Storage bucket is in the Telephony Gateway project, this permission is added by default when enabling the Dialogflow V2 API. For audio from other sources, consider using the `TelephonySynthesizeSpeech` message with SSML.
            },
            &quot;telephonySynthesizeSpeech&quot;: { # Synthesizes speech and plays back the synthesized audio to the caller in Telephony Gateway. Telephony Gateway takes the synthesizer settings from `DetectIntentResponse.output_audio_config` which can either be set at request-level or can come from the agent-level synthesizer config. # Synthesizes speech in Telephony Gateway.
              &quot;ssml&quot;: &quot;A String&quot;, # The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml).
              &quot;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
            },
            &quot;telephonyTransferCall&quot;: { # Transfers the call in Telephony Gateway. # Transfers the call in Telephony Gateway.
              &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to transfer the call to in [E.164 format](https://en.wikipedia.org/wiki/E.164). We currently only allow transferring to US numbers (+1xxxyyyzzzz).
            },
            &quot;text&quot;: { # The text response message. # Returns a text response.
              &quot;text&quot;: [ # Optional. The collection of the agent&#x27;s responses.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;fulfillmentText&quot;: &quot;A String&quot;, # The text to be pronounced to the user or shown on the screen. Note: This is a legacy field, `fulfillment_messages` should be preferred.
        &quot;intent&quot;: { # An intent categorizes an end-user&#x27;s intention for one conversation turn. For each agent, you define many intents, where your combined intents can handle a complete conversation. When an end-user writes or says something, referred to as an end-user expression or end-user input, Dialogflow matches the end-user input to the best intent in your agent. Matching an intent is also known as intent classification. For more information, see the [intent guide](https://cloud.google.com/dialogflow/docs/intents-overview). # The intent that matched the conversational query. Some, not all fields are filled in this message, including but not limited to: `name`, `display_name`, `end_interaction` and `is_fallback`.
          &quot;action&quot;: &quot;A String&quot;, # Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces.
          &quot;defaultResponsePlatforms&quot;: [ # Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
            &quot;A String&quot;,
          ],
          &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of this intent.
          &quot;endInteraction&quot;: True or False, # Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false.
          &quot;events&quot;: [ # Optional. The collection of event names that trigger the intent. If the collection of input contexts is not empty, all of the contexts must be present in the active user session for an event to trigger this intent. Event names are limited to 150 characters.
            &quot;A String&quot;,
          ],
          &quot;followupIntentInfo&quot;: [ # Output only. Information about all followup intents that have this intent as a direct or indirect parent. We populate this field only in the output.
            { # Represents a single followup intent in the chain.
              &quot;followupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent. Format: `projects//agent/intents/`.
              &quot;parentFollowupIntentName&quot;: &quot;A String&quot;, # The unique identifier of the followup intent&#x27;s parent. Format: `projects//agent/intents/`.
            },
          ],
          &quot;inputContextNames&quot;: [ # Optional. The list of context names required for this intent to be triggered. Formats: - `projects//agent/sessions/-/contexts/` - `projects//locations//agent/sessions/-/contexts/`
            &quot;A String&quot;,
          ],
          &quot;isFallback&quot;: True or False, # Optional. Indicates whether this is a fallback intent.
          &quot;liveAgentHandoff&quot;: True or False, # Optional. Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false.
          &quot;messages&quot;: [ # Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console.
            { # Corresponds to the `Response` field in the Dialogflow console.
              &quot;basicCard&quot;: { # The basic card message. Useful for displaying information. # Displays a basic card for Actions on Google.
                &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                  { # The button object that appears at the bottom of a card.
                    &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
                  },
                ],
                &quot;formattedText&quot;: &quot;A String&quot;, # Required, unless image is present. The body text of the card.
                &quot;image&quot;: { # The image response message. # Optional. The image for the card.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
                &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
              },
              &quot;browseCarouselCard&quot;: { # Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel # Browse carousel card for Actions on Google.
                &quot;imageDisplayOptions&quot;: &quot;A String&quot;, # Optional. Settings for displaying the image. Applies to every image in items.
                &quot;items&quot;: [ # Required. List of items in the Browse Carousel Card. Minimum of two items, maximum of ten.
                  { # Browsing carousel tile
                    &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the carousel item. Maximum of four lines of text.
                    &quot;footer&quot;: &quot;A String&quot;, # Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text.
                    &quot;image&quot;: { # The image response message. # Optional. Hero image for the carousel item.
                      &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                      &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    },
                    &quot;openUriAction&quot;: { # Actions on Google action to open a given url. # Required. Action to present to the user.
                      &quot;url&quot;: &quot;A String&quot;, # Required. URL
                      &quot;urlTypeHint&quot;: &quot;A String&quot;, # Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item. Maximum of two lines of text.
                  },
                ],
              },
              &quot;card&quot;: { # The card response message. # Displays a card.
                &quot;buttons&quot;: [ # Optional. The collection of card buttons.
                  { # Optional. Contains information about a button.
                    &quot;postback&quot;: &quot;A String&quot;, # Optional. The text to send back to the Dialogflow API or a URI to open.
                    &quot;text&quot;: &quot;A String&quot;, # Optional. The text to show on the button.
                  },
                ],
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file for the card.
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. The subtitle of the card.
                &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the card.
              },
              &quot;carouselSelect&quot;: { # The card for presenting a carousel of options to select from. # Displays a carousel card for Actions on Google.
                &quot;items&quot;: [ # Required. Carousel items.
                  { # An item in the carousel.
                    &quot;description&quot;: &quot;A String&quot;, # Optional. The body text of the card.
                    &quot;image&quot;: { # The image response message. # Optional. The image to display.
                      &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                      &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    },
                    &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional info about the option item.
                      &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                      &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. Title of the carousel item.
                  },
                ],
              },
              &quot;image&quot;: { # The image response message. # Displays an image.
                &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
              },
              &quot;linkOutSuggestion&quot;: { # The suggestion chip message that allows the user to jump out to the app or website associated with this agent. # Displays a link out suggestion chip for Actions on Google.
                &quot;destinationName&quot;: &quot;A String&quot;, # Required. The name of the app or site this chip is linking to.
                &quot;uri&quot;: &quot;A String&quot;, # Required. The URI of the app or site to open when the user taps the suggestion chip.
              },
              &quot;listSelect&quot;: { # The card for presenting a list of options to select from. # Displays a list card for Actions on Google.
                &quot;items&quot;: [ # Required. List items.
                  { # An item in the list.
                    &quot;description&quot;: &quot;A String&quot;, # Optional. The main text describing the item.
                    &quot;image&quot;: { # The image response message. # Optional. The image to display.
                      &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                      &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    },
                    &quot;info&quot;: { # Additional info about the select item for when it is triggered in a dialog. # Required. Additional information about this option.
                      &quot;key&quot;: &quot;A String&quot;, # Required. A unique key that will be sent back to the agent if this response is given.
                      &quot;synonyms&quot;: [ # Optional. A list of synonyms that can also be used to trigger this item in dialog.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. The title of the list item.
                  },
                ],
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle of the list.
                &quot;title&quot;: &quot;A String&quot;, # Optional. The overall title of the list.
              },
              &quot;mediaContent&quot;: { # The media content card for Actions on Google. # The media content card for Actions on Google.
                &quot;mediaObjects&quot;: [ # Required. List of media objects.
                  { # Response media object for media content card.
                    &quot;contentUrl&quot;: &quot;A String&quot;, # Required. Url where the media is stored.
                    &quot;description&quot;: &quot;A String&quot;, # Optional. Description of media card.
                    &quot;icon&quot;: { # The image response message. # Optional. Icon to display above media content.
                      &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                      &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    },
                    &quot;largeImage&quot;: { # The image response message. # Optional. Image to display above media content.
                      &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                      &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                    },
                    &quot;name&quot;: &quot;A String&quot;, # Required. Name of media card.
                  },
                ],
                &quot;mediaType&quot;: &quot;A String&quot;, # Optional. What type of media is the content (ie &quot;audio&quot;).
              },
              &quot;payload&quot;: { # A custom platform-specific response.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &quot;platform&quot;: &quot;A String&quot;, # Optional. The platform that this message is intended for.
              &quot;quickReplies&quot;: { # The quick replies response message. # Displays quick replies.
                &quot;quickReplies&quot;: [ # Optional. The collection of quick replies.
                  &quot;A String&quot;,
                ],
                &quot;title&quot;: &quot;A String&quot;, # Optional. The title of the collection of quick replies.
              },
              &quot;rbmCarouselRichCard&quot;: { # Carousel Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. If you want to show a single card with more control over the layout, please use RbmStandaloneCard instead. # Rich Business Messaging (RBM) carousel rich card response.
                &quot;cardContents&quot;: [ # Required. The cards in the carousel. A carousel must have at least 2 cards and at most 10.
                  { # Rich Business Messaging (RBM) Card content
                    &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                    &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                      &quot;fileUri&quot;: &quot;A String&quot;, # Required. Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL.
                      &quot;height&quot;: &quot;A String&quot;, # Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored.
                      &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                    },
                    &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                      { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                        &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                          &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                            &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                          },
                          &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                            &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                          },
                          &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                          &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                          },
                          &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                        },
                        &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                          &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                          &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                        },
                      },
                    ],
                    &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
                  },
                ],
                &quot;cardWidth&quot;: &quot;A String&quot;, # Required. The width of the cards in the carousel.
              },
              &quot;rbmStandaloneRichCard&quot;: { # Standalone Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. You can group multiple rich cards into one using RbmCarouselCard but carousel cards will give you less control over the card layout. # Standalone Rich Business Messaging (RBM) rich card response.
                &quot;cardContent&quot;: { # Rich Business Messaging (RBM) Card content # Required. Card content.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.
                  &quot;media&quot;: { # Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg&#x27; * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm # Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card.
                    &quot;fileUri&quot;: &quot;A String&quot;, # Required. Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL.
                    &quot;height&quot;: &quot;A String&quot;, # Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored.
                    &quot;thumbnailUri&quot;: &quot;A String&quot;, # Optional. Publicly reachable URI of the thumbnail.If you don&#x27;t provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user&#x27;s device downloads the file. Depending on the user&#x27;s setting, the file may not download automatically and may require the user to tap a download button.
                  },
                  &quot;suggestions&quot;: [ # Optional. List of suggestions to include in the card.
                    { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                      &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                        &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                          &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                        },
                        &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                          &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                        },
                        &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                        &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                        },
                        &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                      },
                      &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                        &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                        &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                      },
                    },
                  ],
                  &quot;title&quot;: &quot;A String&quot;, # Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.
                },
                &quot;cardOrientation&quot;: &quot;A String&quot;, # Required. Orientation of the card.
                &quot;thumbnailImageAlignment&quot;: &quot;A String&quot;, # Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.
              },
              &quot;rbmText&quot;: { # Rich Business Messaging (RBM) text response with suggestions. # Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging.
                &quot;rbmSuggestion&quot;: [ # Optional. One or more suggestions to show to the user.
                  { # Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).
                    &quot;action&quot;: { # Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card. # Predefined client side actions that user can choose
                      &quot;dial&quot;: { # Opens the user&#x27;s default dialer app with the specified phone number but does not dial automatically. # Suggested client side action: Dial a phone number
                        &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.
                      },
                      &quot;openUrl&quot;: { # Opens the user&#x27;s default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI. # Suggested client side action: Open a URI on device
                        &quot;uri&quot;: &quot;A String&quot;, # Required. The uri to open on the user device
                      },
                      &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.
                      &quot;shareLocation&quot;: { # Opens the device&#x27;s location chooser so the user can pick a location to send back to the agent. # Suggested client side action: Share user location
                      },
                      &quot;text&quot;: &quot;A String&quot;, # Text to display alongside the action.
                    },
                    &quot;reply&quot;: { # Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response. # Predefined replies for user to select instead of typing
                      &quot;postbackData&quot;: &quot;A String&quot;, # Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.
                      &quot;text&quot;: &quot;A String&quot;, # Suggested reply text.
                    },
                  },
                ],
                &quot;text&quot;: &quot;A String&quot;, # Required. Text sent and displayed to the user.
              },
              &quot;simpleResponses&quot;: { # The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`. # Returns a voice or text-only response for Actions on Google.
                &quot;simpleResponses&quot;: [ # Required. The list of simple responses.
                  { # The simple response message containing speech or text.
                    &quot;displayText&quot;: &quot;A String&quot;, # Optional. The text to display.
                    &quot;ssml&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. Structured spoken response to the user in the SSML format. Mutually exclusive with text_to_speech.
                    &quot;textToSpeech&quot;: &quot;A String&quot;, # One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml.
                  },
                ],
              },
              &quot;suggestions&quot;: { # The collection of suggestions. # Displays suggestion chips for Actions on Google.
                &quot;suggestions&quot;: [ # Required. The list of suggested replies.
                  { # The suggestion chip message that the user can tap to quickly post a reply to the conversation.
                    &quot;title&quot;: &quot;A String&quot;, # Required. The text shown the in the suggestion chip.
                  },
                ],
              },
              &quot;tableCard&quot;: { # Table card for Actions on Google. # Table card for Actions on Google.
                &quot;buttons&quot;: [ # Optional. List of buttons for the card.
                  { # The button object that appears at the bottom of a card.
                    &quot;openUriAction&quot;: { # Opens the given URI. # Required. Action to take when a user taps on the button.
                      &quot;uri&quot;: &quot;A String&quot;, # Required. The HTTP or HTTPS scheme URI.
                    },
                    &quot;title&quot;: &quot;A String&quot;, # Required. The title of the button.
                  },
                ],
                &quot;columnProperties&quot;: [ # Optional. Display properties for the columns in this table.
                  { # Column properties for TableCard.
                    &quot;header&quot;: &quot;A String&quot;, # Required. Column heading.
                    &quot;horizontalAlignment&quot;: &quot;A String&quot;, # Optional. Defines text alignment for all cells in this column.
                  },
                ],
                &quot;image&quot;: { # The image response message. # Optional. Image which should be displayed on the card.
                  &quot;accessibilityText&quot;: &quot;A String&quot;, # A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.
                  &quot;imageUri&quot;: &quot;A String&quot;, # Optional. The public URI to an image file.
                },
                &quot;rows&quot;: [ # Optional. Rows in this table of data.
                  { # Row of TableCard.
                    &quot;cells&quot;: [ # Optional. List of cells that make up this row.
                      { # Cell of TableCardRow.
                        &quot;text&quot;: &quot;A String&quot;, # Required. Text in this cell.
                      },
                    ],
                    &quot;dividerAfter&quot;: True or False, # Optional. Whether to add a visual divider after this row.
                  },
                ],
                &quot;subtitle&quot;: &quot;A String&quot;, # Optional. Subtitle to the title.
                &quot;title&quot;: &quot;A String&quot;, # Required. Title of the card.
              },
              &quot;telephonyPlayAudio&quot;: { # Plays audio from a file in Telephony Gateway. # Plays audio from a file in Telephony Gateway.
                &quot;audioUri&quot;: &quot;A String&quot;, # Required. URI to a Google Cloud Storage object containing the audio to play, e.g., &quot;gs://bucket/object&quot;. The object must contain a single channel (mono) of linear PCM audio (2 bytes / sample) at 8kHz. This object must be readable by the `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` service account where is the number of the Telephony Gateway project (usually the same as the Dialogflow agent project). If the Google Cloud Storage bucket is in the Telephony Gateway project, this permission is added by default when enabling the Dialogflow V2 API. For audio from other sources, consider using the `TelephonySynthesizeSpeech` message with SSML.
              },
              &quot;telephonySynthesizeSpeech&quot;: { # Synthesizes speech and plays back the synthesized audio to the caller in Telephony Gateway. Telephony Gateway takes the synthesizer settings from `DetectIntentResponse.output_audio_config` which can either be set at request-level or can come from the agent-level synthesizer config. # Synthesizes speech in Telephony Gateway.
                &quot;ssml&quot;: &quot;A String&quot;, # The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml).
                &quot;text&quot;: &quot;A String&quot;, # The raw text to be synthesized.
              },
              &quot;telephonyTransferCall&quot;: { # Transfers the call in Telephony Gateway. # Transfers the call in Telephony Gateway.
                &quot;phoneNumber&quot;: &quot;A String&quot;, # Required. The phone number to transfer the call to in [E.164 format](https://en.wikipedia.org/wiki/E.164). We currently only allow transferring to US numbers (+1xxxyyyzzzz).
              },
              &quot;text&quot;: { # The text response message. # Returns a text response.
                &quot;text&quot;: [ # Optional. The collection of the agent&#x27;s responses.
                  &quot;A String&quot;,
                ],
              },
            },
          ],
          &quot;mlDisabled&quot;: True or False, # Optional. Indicates whether Machine Learning is disabled for the intent. Note: If `ml_disabled` setting is set to true, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off.
          &quot;mlEnabled&quot;: True or False, # Optional. Indicates whether Machine Learning is enabled for the intent. Note: If `ml_enabled` setting is set to false, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off. DEPRECATED! Please use `ml_disabled` field instead. NOTE: If both `ml_enabled` and `ml_disabled` are either not set or false, then the default value is determined as follows: - Before April 15th, 2018 the default is: ml_enabled = false / ml_disabled = true. - After April 15th, 2018 the default is: ml_enabled = true / ml_disabled = false.
          &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`
          &quot;outputContexts&quot;: [ # Optional. The collection of contexts that are activated when the intent is matched. Context messages in this collection should not set the parameters field. Setting the `lifespan_count` to 0 will reset the context when the intent is matched. Format: `projects//agent/sessions/-/contexts/`.
            { # Dialogflow contexts are similar to natural language context. If a person says to you &quot;they are orange&quot;, you need context in order to understand what &quot;they&quot; is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).
              &quot;lifespanCount&quot;: 42, # Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries.
              &quot;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in a-zA-Z0-9_-% and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`
              &quot;parameters&quot;: { # Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: - MapKey type: string - MapKey value: parameter name - MapValue type: - If parameter&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            },
          ],
          &quot;parameters&quot;: [ # Optional. The collection of parameters associated with the intent.
            { # Represents intent parameters.
              &quot;defaultValue&quot;: &quot;A String&quot;, # Optional. The default value to use when the `value` yields an empty result. Default values can be extracted from contexts by using the following syntax: `#context_name.parameter_name`.
              &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of the parameter.
              &quot;entityTypeDisplayName&quot;: &quot;A String&quot;, # Optional. The name of the entity type, prefixed with `@`, that describes values of the parameter. If the parameter is required, this must be provided.
              &quot;isList&quot;: True or False, # Optional. Indicates whether the parameter represents a list of values.
              &quot;mandatory&quot;: True or False, # Optional. Indicates whether the parameter is required. That is, whether the intent cannot be completed without collecting the parameter value.
              &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this parameter.
              &quot;prompts&quot;: [ # Optional. The collection of prompts that the agent can present to the user in order to collect a value for the parameter.
                &quot;A String&quot;,
              ],
              &quot;value&quot;: &quot;A String&quot;, # Optional. The definition of the parameter value. It can be: - a constant string, - a parameter value defined as `$parameter_name`, - an original parameter value defined as `$parameter_name.original`, - a parameter value from some context defined as `#context_name.parameter_name`.
            },
          ],
          &quot;parentFollowupIntentName&quot;: &quot;A String&quot;, # Optional. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`.
          &quot;priority&quot;: 42, # Optional. The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests.
          &quot;resetContexts&quot;: True or False, # Optional. Indicates whether to delete all contexts in the current session when this intent is matched.
          &quot;rootFollowupIntentName&quot;: &quot;A String&quot;, # Output only. The unique identifier of the root intent in the chain of followup intents. It identifies the correct followup intents chain for this intent. Format: `projects//agent/intents/`.
          &quot;trainingPhrases&quot;: [ # Optional. The collection of examples that the agent is trained on.
            { # Represents an example that the agent is trained on.
              &quot;name&quot;: &quot;A String&quot;, # Output only. The unique identifier of this training phrase.
              &quot;parts&quot;: [ # Required. The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `entity_type`, `alias`, and `user_defined` fields are all set.
                { # Represents a part of a training phrase.
                  &quot;alias&quot;: &quot;A String&quot;, # Optional. The parameter name for the value extracted from the annotated part of the example. This field is required for annotated parts of the training phrase.
                  &quot;entityType&quot;: &quot;A String&quot;, # Optional. The entity type name prefixed with `@`. This field is required for annotated parts of the training phrase.
                  &quot;text&quot;: &quot;A String&quot;, # Required. The text for this part.
                  &quot;userDefined&quot;: True or False, # Optional. Indicates whether the text was manually annotated. This field is set to true when the Dialogflow Console is used to manually annotate the part. When creating an annotated part with the API, you must set this to true.
                },
              ],
              &quot;timesAddedCount&quot;: 42, # Optional. Indicates how many times this example was added to the intent. Each time a developer adds an existing sample by editing an intent or training, this counter is increased.
              &quot;type&quot;: &quot;A String&quot;, # Required. The type of the training phrase.
            },
          ],
          &quot;webhookState&quot;: &quot;A String&quot;, # Optional. Indicates whether webhooks are enabled for the intent.
        },
        &quot;intentDetectionConfidence&quot;: 3.14, # The intent detection confidence. Values range from 0.0 (completely uncertain) to 1.0 (completely certain). This value is for informational purpose only and is only used to help match the best intent within the classification threshold. This value may change for the same end-user expression at any time due to a model retraining or change in implementation. If there are `multiple knowledge_answers` messages, this value is set to the greatest `knowledgeAnswers.match_confidence` value in the list.
        &quot;knowledgeAnswers&quot;: { # Represents the result of querying a Knowledge base. # The result from Knowledge Connector (if any), ordered by decreasing `KnowledgeAnswers.match_confidence`.
          &quot;answers&quot;: [ # A list of answers from Knowledge Connector.
            { # An answer from Knowledge Connector.
              &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document that answers this conversational query.
              &quot;faqQuestion&quot;: &quot;A String&quot;, # The corresponding FAQ question if the answer was extracted from a FAQ Document, empty otherwise.
              &quot;matchConfidence&quot;: 3.14, # The system&#x27;s confidence score that this Knowledge answer is a good match for this conversational query. The range is from 0.0 (completely uncertain) to 1.0 (completely certain). Note: The confidence score is likely to vary somewhat (possibly even for identical requests), as the underlying model is under constant improvement. It may be deprecated in the future. We recommend using `match_confidence_level` which should be generally more stable.
              &quot;matchConfidenceLevel&quot;: &quot;A String&quot;, # The system&#x27;s confidence level that this knowledge answer is a good match for this conversational query. NOTE: The confidence level for a given `` pair may change without notice, as it depends on models that are constantly being improved. However, it will change less frequently than the confidence score below, and should be preferred for referencing the quality of an answer.
              &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//knowledgeBases//documents/`.
            },
          ],
        },
        &quot;languageCode&quot;: &quot;A String&quot;, # The language that was triggered during intent detection. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes.
        &quot;outputContexts&quot;: [ # The collection of output contexts. If applicable, `output_contexts.parameters` contains entries with name `.original` containing the original parameter values before the query.
          { # Dialogflow contexts are similar to natural language context. If a person says to you &quot;they are orange&quot;, you need context in order to understand what &quot;they&quot; is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).
            &quot;lifespanCount&quot;: 42, # Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries.
            &quot;name&quot;: &quot;A String&quot;, # Required. The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in a-zA-Z0-9_-% and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default &#x27;draft&#x27; environment. If `User ID` is not specified, we assume default &#x27;-&#x27; user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`
            &quot;parameters&quot;: { # Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: - MapKey type: string - MapKey value: parameter name - MapValue type: - If parameter&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
          },
        ],
        &quot;parameters&quot;: { # The collection of extracted parameters. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: - MapKey type: string - MapKey value: parameter name - MapValue type: - If parameter&#x27;s entity type is a composite entity: map - Else: depending on parameter value type, could be one of string, number, boolean, null, list or map - MapValue value: - If parameter&#x27;s entity type is a composite entity: map from composite entity property names to property values - Else: parameter value
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;queryText&quot;: &quot;A String&quot;, # The original conversational query text: - If natural language text was provided as input, `query_text` contains a copy of the input. - If natural language speech audio was provided as input, `query_text` contains the speech recognition result. If speech recognizer produced multiple alternatives, a particular one is picked. - If automatic spell correction is enabled, `query_text` will contain the corrected user input.
        &quot;sentimentAnalysisResult&quot;: { # The result of sentiment analysis. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user&#x27;s attitude as positive, negative, or neutral. For Participants.DetectIntent, it needs to be configured in DetectIntentRequest.query_params. For Participants.StreamingDetectIntent, it needs to be configured in StreamingDetectIntentRequest.query_params. And for Participants.AnalyzeContent and Participants.StreamingAnalyzeContent, it needs to be configured in ConversationProfile.human_agent_assistant_config # The sentiment analysis result, which depends on the `sentiment_analysis_request_config` specified in the request.
          &quot;queryTextSentiment&quot;: { # The sentiment, such as positive/negative feeling or association, for a unit of analysis, such as the query text. # The sentiment analysis result for `query_text`.
            &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment, regardless of score (positive or negative).
            &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
          },
        },
        &quot;speechRecognitionConfidence&quot;: 3.14, # The Speech recognition confidence between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. The default of 0.0 is a sentinel value indicating that confidence was not set. This field is not guaranteed to be accurate or set. In particular this field isn&#x27;t set for StreamingDetectIntent since the streaming endpoint has separate confidence estimates per portion of the audio in StreamingRecognitionResult.
        &quot;webhookPayload&quot;: { # If the query was fulfilled by a webhook call, this field is set to the value of the `payload` field returned in the webhook response.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;webhookSource&quot;: &quot;A String&quot;, # If the query was fulfilled by a webhook call, this field is set to the value of the `source` field returned in the webhook response.
      },
      &quot;responseId&quot;: &quot;A String&quot;, # The unique identifier of the response. It can be used to locate a response in the training example set or for reporting issues.
      &quot;webhookStatus&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Specifies the status of the webhook request.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
    },
    &quot;event&quot;: &quot;A String&quot;, # Event name if an event is triggered for the query.
    &quot;intent&quot;: &quot;A String&quot;, # Name of the intent if an intent is matched for the query. For a V2 query, the value format is `projects//locations/ /agent/intents/`. For a V3 query, the value format is `projects//locations/ /agents//intents/`.
    &quot;matchConfidence&quot;: 3.14, # The confidence of the match. Values range from 0.0 (completely uncertain) to 1.0 (completely certain). This value is for informational purpose only and is only used to help match the best intent within the classification threshold. This value may change for the same end-user expression at any time due to a model retraining or change in implementation.
    &quot;parameters&quot;: { # The collection of current parameters at the time of this response.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;responseMessages&quot;: [ # Response messages from the automated agent.
      { # Response messages from an automated agent.
        &quot;endInteraction&quot;: { # Indicates that interaction with the Dialogflow agent has ended. # A signal that indicates the interaction with the Dialogflow agent has ended.
        },
        &quot;liveAgentHandoff&quot;: { # Indicates that the conversation should be handed off to a human agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example: * In the entry fulfillment of a CX Page if entering the page indicates something went extremely wrong in the conversation. * In a webhook response when you determine that the customer issue can only be handled by a human. # Hands off conversation to a live agent.
          &quot;metadata&quot;: { # Custom metadata for your handoff procedure. Dialogflow doesn&#x27;t impose any structure on this.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;payload&quot;: { # Returns a response containing a custom, platform-specific payload.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;text&quot;: { # The text response message. # Returns a text response.
          &quot;text&quot;: [ # A collection of text responses.
            &quot;A String&quot;,
          ],
        },
      },
    ],
  },
  &quot;dtmfParameters&quot;: { # The message in the response that indicates the parameters of DTMF. # Indicates the parameters of DTMF.
    &quot;acceptsDtmfInput&quot;: True or False, # Indicates whether DTMF input can be handled in the next request.
  },
  &quot;endUserSuggestionResults&quot;: [ # The suggestions for end user. The order is the same as HumanAgentAssistantConfig.SuggestionConfig.feature_configs of HumanAgentAssistantConfig.end_user_suggestion_config.
    { # One response of different type of suggestion response which is used in the response of Participants.AnalyzeContent and Participants.AnalyzeContent, as well as HumanAgentAssistantEvent.
      &quot;error&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). # Error status if the request failed.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
      &quot;suggestArticlesResponse&quot;: { # The response message for Participants.SuggestArticles. # SuggestArticlesResponse if request is for ARTICLE_SUGGESTION.
        &quot;articleAnswers&quot;: [ # Output only. Articles ordered by score in descending order.
          { # Represents article answer.
            &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
            &quot;metadata&quot;: { # A map that contains metadata about the answer and the document from which it originates.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;snippets&quot;: [ # Output only. Article snippets.
              &quot;A String&quot;,
            ],
            &quot;title&quot;: &quot;A String&quot;, # The article title.
            &quot;uri&quot;: &quot;A String&quot;, # The article URI.
          },
        ],
        &quot;contextSize&quot;: 42, # Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestArticlesResponse.context_size field in the request if there aren&#x27;t that many messages in the conversation.
        &quot;latestMessage&quot;: &quot;A String&quot;, # The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.
      },
      &quot;suggestFaqAnswersResponse&quot;: { # The request message for Participants.SuggestFaqAnswers. # SuggestFaqAnswersResponse if request is for FAQ_ANSWER.
        &quot;contextSize&quot;: 42, # Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestFaqAnswersRequest.context_size field in the request if there aren&#x27;t that many messages in the conversation.
        &quot;faqAnswers&quot;: [ # Output only. Answers extracted from FAQ documents.
          { # Represents answer from &quot;frequently asked questions&quot;.
            &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document.
            &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
            &quot;confidence&quot;: 3.14, # The system&#x27;s confidence score that this Knowledge answer is a good match for this conversational query, range from 0.0 (completely uncertain) to 1.0 (completely certain).
            &quot;metadata&quot;: { # A map that contains metadata about the answer and the document from which it originates.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;question&quot;: &quot;A String&quot;, # The corresponding FAQ question.
            &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//locations//agent/knowledgeBases//documents/`.
          },
        ],
        &quot;latestMessage&quot;: &quot;A String&quot;, # The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.
      },
      &quot;suggestSmartRepliesResponse&quot;: { # The response message for Participants.SuggestSmartReplies. # SuggestSmartRepliesResponse if request is for SMART_REPLY.
        &quot;contextSize&quot;: 42, # Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestSmartRepliesRequest.context_size field in the request if there aren&#x27;t that many messages in the conversation.
        &quot;latestMessage&quot;: &quot;A String&quot;, # The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.
        &quot;smartReplyAnswers&quot;: [ # Output only. Multiple reply options provided by smart reply service. The order is based on the rank of the model prediction. The maximum number of the returned replies is set in SmartReplyConfig.
          { # Represents a smart reply answer.
            &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
            &quot;confidence&quot;: 3.14, # Smart reply confidence. The system&#x27;s confidence score that this reply is a good match for this conversation, as a value from 0.0 (completely uncertain) to 1.0 (completely certain).
            &quot;reply&quot;: &quot;A String&quot;, # The content of the reply.
          },
        ],
      },
    },
  ],
  &quot;humanAgentSuggestionResults&quot;: [ # The suggestions for most recent human agent. The order is the same as HumanAgentAssistantConfig.SuggestionConfig.feature_configs of HumanAgentAssistantConfig.human_agent_suggestion_config.
    { # One response of different type of suggestion response which is used in the response of Participants.AnalyzeContent and Participants.AnalyzeContent, as well as HumanAgentAssistantEvent.
      &quot;error&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). # Error status if the request failed.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
      &quot;suggestArticlesResponse&quot;: { # The response message for Participants.SuggestArticles. # SuggestArticlesResponse if request is for ARTICLE_SUGGESTION.
        &quot;articleAnswers&quot;: [ # Output only. Articles ordered by score in descending order.
          { # Represents article answer.
            &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
            &quot;metadata&quot;: { # A map that contains metadata about the answer and the document from which it originates.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;snippets&quot;: [ # Output only. Article snippets.
              &quot;A String&quot;,
            ],
            &quot;title&quot;: &quot;A String&quot;, # The article title.
            &quot;uri&quot;: &quot;A String&quot;, # The article URI.
          },
        ],
        &quot;contextSize&quot;: 42, # Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestArticlesResponse.context_size field in the request if there aren&#x27;t that many messages in the conversation.
        &quot;latestMessage&quot;: &quot;A String&quot;, # The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.
      },
      &quot;suggestFaqAnswersResponse&quot;: { # The request message for Participants.SuggestFaqAnswers. # SuggestFaqAnswersResponse if request is for FAQ_ANSWER.
        &quot;contextSize&quot;: 42, # Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestFaqAnswersRequest.context_size field in the request if there aren&#x27;t that many messages in the conversation.
        &quot;faqAnswers&quot;: [ # Output only. Answers extracted from FAQ documents.
          { # Represents answer from &quot;frequently asked questions&quot;.
            &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document.
            &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
            &quot;confidence&quot;: 3.14, # The system&#x27;s confidence score that this Knowledge answer is a good match for this conversational query, range from 0.0 (completely uncertain) to 1.0 (completely certain).
            &quot;metadata&quot;: { # A map that contains metadata about the answer and the document from which it originates.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;question&quot;: &quot;A String&quot;, # The corresponding FAQ question.
            &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//locations//agent/knowledgeBases//documents/`.
          },
        ],
        &quot;latestMessage&quot;: &quot;A String&quot;, # The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.
      },
      &quot;suggestSmartRepliesResponse&quot;: { # The response message for Participants.SuggestSmartReplies. # SuggestSmartRepliesResponse if request is for SMART_REPLY.
        &quot;contextSize&quot;: 42, # Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestSmartRepliesRequest.context_size field in the request if there aren&#x27;t that many messages in the conversation.
        &quot;latestMessage&quot;: &quot;A String&quot;, # The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.
        &quot;smartReplyAnswers&quot;: [ # Output only. Multiple reply options provided by smart reply service. The order is based on the rank of the model prediction. The maximum number of the returned replies is set in SmartReplyConfig.
          { # Represents a smart reply answer.
            &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
            &quot;confidence&quot;: 3.14, # Smart reply confidence. The system&#x27;s confidence score that this reply is a good match for this conversation, as a value from 0.0 (completely uncertain) to 1.0 (completely certain).
            &quot;reply&quot;: &quot;A String&quot;, # The content of the reply.
          },
        ],
      },
    },
  ],
  &quot;message&quot;: { # Represents a message posted into a conversation. # Output only. Message analyzed by CCAI.
    &quot;content&quot;: &quot;A String&quot;, # Required. The message content.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the message was created in Contact Center AI.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The message language. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: &quot;en-US&quot;.
    &quot;messageAnnotation&quot;: { # Represents the result of annotation for the message. # Output only. The annotation for the message.
      &quot;containEntities&quot;: True or False, # Required. Indicates whether the text message contains entities.
      &quot;parts&quot;: [ # Optional. The collection of annotated message parts ordered by their position in the message. You can recover the annotated message by concatenating [AnnotatedMessagePart.text].
        { # Represents a part of a message possibly annotated with an entity. The part can be an entity or purely a part of the message between two entities or message start/end.
          &quot;entityType&quot;: &quot;A String&quot;, # Optional. The [Dialogflow system entity type](https://cloud.google.com/dialogflow/docs/reference/system-entities) of this message part. If this is empty, Dialogflow could not annotate the phrase part with a system entity.
          &quot;formattedValue&quot;: &quot;&quot;, # Optional. The [Dialogflow system entity formatted value ](https://cloud.google.com/dialogflow/docs/reference/system-entities) of this message part. For example for a system entity of type `@sys.unit-currency`, this may contain: { &quot;amount&quot;: 5, &quot;currency&quot;: &quot;USD&quot; }
          &quot;text&quot;: &quot;A String&quot;, # Required. A part of a message possibly annotated with an entity.
        },
      ],
    },
    &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of the message. Format: `projects//locations//conversations//messages/`.
    &quot;participant&quot;: &quot;A String&quot;, # Output only. The participant that sends this message.
    &quot;participantRole&quot;: &quot;A String&quot;, # Output only. The role of the participant.
    &quot;sendTime&quot;: &quot;A String&quot;, # Optional. The time when the message was sent.
    &quot;sentimentAnalysis&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 # Output only. The sentiment analysis result for the message.
      &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;replyAudio&quot;: { # Represents the natural language speech audio to be played to the end user. # Optional. The audio data bytes encoded as specified in the request. This field is set if: - `reply_audio_config` was specified in the request, or - The automated agent responded with audio to play to the user. In such case, `reply_audio.config` contains settings used to synthesize the speech. In some scenarios, multiple output audio fields may be present in the response structure. In these cases, only the top-most-level audio output has content.
    &quot;audio&quot;: &quot;A String&quot;, # Required. The natural language speech audio.
    &quot;config&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. # Required. Instructs the speech synthesizer how to generate the speech audio.
      &quot;audioEncoding&quot;: &quot;A String&quot;, # Required. Audio encoding of the synthesized audio content.
      &quot;sampleRateHertz&quot;: 42, # The synthesis sample rate (in hertz) for this audio. If not provided, then the synthesizer will use the default sample rate based on the audio encoding. If this is different from the voice&#x27;s natural sample rate, then the synthesizer will honor this request by converting to the desired sample rate (which might result in worse audio quality).
      &quot;synthesizeSpeechConfig&quot;: { # Configuration of how speech should be synthesized. # Configuration of how speech should be synthesized.
        &quot;effectsProfileId&quot;: [ # Optional. An identifier which selects &#x27;audio effects&#x27; profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given.
          &quot;A String&quot;,
        ],
        &quot;pitch&quot;: 3.14, # Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20 semitones from the original pitch. -20 means decrease 20 semitones from the original pitch.
        &quot;speakingRate&quot;: 3.14, # Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any other values &lt; 0.25 or &gt; 4.0 will return an error.
        &quot;voice&quot;: { # Description of which voice to use for speech synthesis. # Optional. The desired voice of the synthesized audio.
          &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and ssml_gender. For the list of available voices, please refer to [Supported voices and languages](https://cloud.google.com/text-to-speech/docs/voices).
          &quot;ssmlGender&quot;: &quot;A String&quot;, # Optional. The preferred gender of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request.
        },
        &quot;volumeGainDb&quot;: 3.14, # Optional. Volume gain (in dB) of the normal native volume supported by the specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there&#x27;s usually no effective increase in loudness for any value greater than that.
      },
    },
  },
  &quot;replyText&quot;: &quot;A String&quot;, # Output only. The output text content. This field is set if the automated agent responded with text to show to the user.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a new participant in a conversation.

Args:
  parent: string, Required. Resource identifier of the conversation adding the participant. Format: `projects//locations//conversations/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a conversation participant (human agent, virtual agent, end-user).
  &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.
  &quot;obfuscatedExternalUserId&quot;: &quot;A String&quot;, # Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow uses this user id for following purposes: 1) Billing and measurement. If user with the same obfuscated_external_user_id is created in a later conversation, dialogflow will know it&#x27;s the same user. 2) Agent assist suggestion personalization. For example, Dialogflow can use it to provide personalized smart reply suggestions for this user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be &lt;= 256 characters.
  &quot;role&quot;: &quot;A String&quot;, # Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.
}

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

Returns:
  An object of the form:

    { # Represents a conversation participant (human agent, virtual agent, end-user).
  &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.
  &quot;obfuscatedExternalUserId&quot;: &quot;A String&quot;, # Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow uses this user id for following purposes: 1) Billing and measurement. If user with the same obfuscated_external_user_id is created in a later conversation, dialogflow will know it&#x27;s the same user. 2) Agent assist suggestion personalization. For example, Dialogflow can use it to provide personalized smart reply suggestions for this user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be &lt;= 256 characters.
  &quot;role&quot;: &quot;A String&quot;, # Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Retrieves a conversation participant.

Args:
  name: string, Required. The name of the participant. Format: `projects//locations//conversations//participants/`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a conversation participant (human agent, virtual agent, end-user).
  &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.
  &quot;obfuscatedExternalUserId&quot;: &quot;A String&quot;, # Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow uses this user id for following purposes: 1) Billing and measurement. If user with the same obfuscated_external_user_id is created in a later conversation, dialogflow will know it&#x27;s the same user. 2) Agent assist suggestion personalization. For example, Dialogflow can use it to provide personalized smart reply suggestions for this user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be &lt;= 256 characters.
  &quot;role&quot;: &quot;A String&quot;, # Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns the list of all participants in the specified conversation.

Args:
  parent: string, Required. The conversation to list all participants from. Format: `projects//locations//conversations/`. (required)
  pageSize: integer, Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.
  pageToken: string, Optional. The next_page_token value returned from a previous list request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response message for Participants.ListParticipants.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results or empty if there are no more results in the list.
  &quot;participants&quot;: [ # The list of participants. There is a maximum number of items returned based on the page_size field in the request.
    { # Represents a conversation participant (human agent, virtual agent, end-user).
      &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.
      &quot;obfuscatedExternalUserId&quot;: &quot;A String&quot;, # Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow uses this user id for following purposes: 1) Billing and measurement. If user with the same obfuscated_external_user_id is created in a later conversation, dialogflow will know it&#x27;s the same user. 2) Agent assist suggestion personalization. For example, Dialogflow can use it to provide personalized smart reply suggestions for this user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be &lt;= 256 characters.
      &quot;role&quot;: &quot;A String&quot;, # Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the specified participant.

Args:
  name: string, Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a conversation participant (human agent, virtual agent, end-user).
  &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.
  &quot;obfuscatedExternalUserId&quot;: &quot;A String&quot;, # Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow uses this user id for following purposes: 1) Billing and measurement. If user with the same obfuscated_external_user_id is created in a later conversation, dialogflow will know it&#x27;s the same user. 2) Agent assist suggestion personalization. For example, Dialogflow can use it to provide personalized smart reply suggestions for this user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be &lt;= 256 characters.
  &quot;role&quot;: &quot;A String&quot;, # Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.
}

  updateMask: string, Required. The mask to specify which fields to update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a conversation participant (human agent, virtual agent, end-user).
  &quot;name&quot;: &quot;A String&quot;, # Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.
  &quot;obfuscatedExternalUserId&quot;: &quot;A String&quot;, # Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow uses this user id for following purposes: 1) Billing and measurement. If user with the same obfuscated_external_user_id is created in a later conversation, dialogflow will know it&#x27;s the same user. 2) Agent assist suggestion personalization. For example, Dialogflow can use it to provide personalized smart reply suggestions for this user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be &lt;= 256 characters.
  &quot;role&quot;: &quot;A String&quot;, # Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.
}</pre>
</div>

</body></html>