<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="dialogflow_v2.html">Dialogflow API</a> . <a href="dialogflow_v2.projects.html">projects</a> . <a href="dialogflow_v2.projects.agent.html">agent</a> . <a href="dialogflow_v2.projects.agent.intents.html">intents</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#batchDelete">batchDelete(parent, body, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes intents in the specified agent.</p>
<p class="toc_element">
  <code><a href="#batchUpdate">batchUpdate(parent, body, x__xgafv=None)</a></code></p>
<p class="firstline">Updates/Creates multiple intents in the specified agent.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body, languageCode=None, intentView=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates an intent in the specified agent.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified intent and its direct or indirect followup intents.</p>
<p class="toc_element">
  <code><a href="#get">get(name, languageCode=None, intentView=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the specified intent.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, languageCode=None, pageSize=None, intentView=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the list of all intents in the specified agent.</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, languageCode=None, intentView=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified intent.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchDelete">batchDelete(parent, body, x__xgafv=None)</code>
  <pre>Deletes intents in the specified agent.

Operation <response: google.protobuf.Empty>

Args:
  parent: string, Required. The name of the agent to delete all entities types for. Format:
`projects/<Project ID>/agent`. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The request message for Intents.BatchDeleteIntents.
    "intents": [ # Required. The collection of intents to delete. Only intent `name` must be
        # filled in.
      { # Represents an intent.
          # Intents convert a number of user expressions or patterns into an action. An
          # action is an extraction of a user command or sentence semantics.
        "isFallback": True or False, # Optional. Indicates whether this is a fallback intent.
        "mlDisabled": True or False, # Optional. Indicates whether Machine Learning is disabled for the intent.
            # Note: If `ml_diabled` 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.
        "displayName": "A String", # Required. The name of this intent.
        "name": "A String", # The unique identifier of this intent.
            # Required for Intents.UpdateIntent and Intents.BatchUpdateIntents
            # methods.
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
        "parameters": [ # Optional. The collection of parameters associated with the intent.
          { # Represents intent parameters.
            "displayName": "A String", # Required. The name of the parameter.
            "name": "A String", # The unique identifier of this parameter.
            "defaultValue": "A String", # 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`.
            "entityTypeDisplayName": "A String", # Optional. The name of the entity type, prefixed with `@`, that
                # describes values of the parameter. If the parameter is
                # required, this must be provided.
            "value": "A String", # 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`.
            "prompts": [ # Optional. The collection of prompts that the agent can present to the
                # user in order to collect value for the parameter.
              "A String",
            ],
            "isList": True or False, # Optional. Indicates whether the parameter represents a list of values.
            "mandatory": True or False, # Optional. Indicates whether the parameter is required. That is,
                # whether the intent cannot be completed without collecting the parameter
                # value.
          },
        ],
        "trainingPhrases": [ # Optional. The collection of examples that the agent is
            # trained on.
          { # Represents an example that the agent is trained on.
            "parts": [ # 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.
                "alias": "A String", # 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.
                "entityType": "A String", # Optional. The entity type name prefixed with `@`.
                    # This field is required for annotated parts of the training phrase.
                "text": "A String", # Required. The text for this part.
                "userDefined": 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.
              },
            ],
            "type": "A String", # Required. The type of the training phrase.
            "name": "A String", # Output only. The unique identifier of this training phrase.
            "timesAddedCount": 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.
          },
        ],
        "followupIntentInfo": [ # Read-only. Information about all followup intents that have this intent as
            # a direct or indirect parent. We populate this field only in the output.
          { # Represents a single followup intent in the chain.
            "followupIntentName": "A String", # The unique identifier of the followup intent.
                # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
            "parentFollowupIntentName": "A String", # The unique identifier of the followup intent's parent.
                # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
          },
        ],
        "webhookState": "A String", # Optional. Indicates whether webhooks are enabled for the intent.
        "resetContexts": True or False, # Optional. Indicates whether to delete all contexts in the current
            # session when this intent is matched.
        "messages": [ # Optional. The collection of rich messages corresponding to the
            # `Response` field in the Dialogflow console.
          { # Corresponds to the `Response` field in the Dialogflow console.
            "simpleResponses": { # The collection of simple response candidates. # The voice and text-only responses for Actions on Google.
                # This message in `QueryResult.fulfillment_messages` and
                # `WebhookResponse.fulfillment_messages` should contain only one
                # `SimpleResponse`.
              "simpleResponses": [ # Required. The list of simple responses.
                { # The simple response message containing speech or text.
                  "textToSpeech": "A String", # One of text_to_speech or ssml must be provided. The plain text of the
                      # speech output. Mutually exclusive with ssml.
                  "displayText": "A String", # Optional. The text to display.
                  "ssml": "A String", # 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.
                },
              ],
            },
            "quickReplies": { # The quick replies response message. # The quick replies response.
              "quickReplies": [ # Optional. The collection of quick replies.
                "A String",
              ],
              "title": "A String", # Optional. The title of the collection of quick replies.
            },
            "platform": "A String", # Optional. The platform that this message is intended for.
            "text": { # The text response message. # The text response.
              "text": [ # Optional. The collection of the agent's responses.
                "A String",
              ],
            },
            "image": { # The image response message. # The image response.
              "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                  # e.g., screen readers.
              "imageUri": "A String", # Optional. The public URI to an image file.
            },
            "suggestions": { # The collection of suggestions. # The suggestion chips for Actions on Google.
              "suggestions": [ # Required. The list of suggested replies.
                { # The suggestion chip message that the user can tap to quickly post a reply
                    # to the conversation.
                  "title": "A String", # Required. The text shown the in the suggestion chip.
                },
              ],
            },
            "linkOutSuggestion": { # The suggestion chip message that allows the user to jump out to the app # The link out suggestion chip for Actions on Google.
                # or website associated with this agent.
              "uri": "A String", # Required. The URI of the app or site to open when the user taps the
                  # suggestion chip.
              "destinationName": "A String", # Required. The name of the app or site this chip is linking to.
            },
            "basicCard": { # The basic card message. Useful for displaying information. # The basic card response for Actions on Google.
              "buttons": [ # Optional. The collection of card buttons.
                { # The button object that appears at the bottom of a card.
                  "openUriAction": { # Opens the given URI. # Required. Action to take when a user taps on the button.
                    "uri": "A String", # Required. The HTTP or HTTPS scheme URI.
                  },
                  "title": "A String", # Required. The title of the button.
                },
              ],
              "subtitle": "A String", # Optional. The subtitle of the card.
              "image": { # The image response message. # Optional. The image for the card.
                "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                    # e.g., screen readers.
                "imageUri": "A String", # Optional. The public URI to an image file.
              },
              "formattedText": "A String", # Required, unless image is present. The body text of the card.
              "title": "A String", # Optional. The title of the card.
            },
            "carouselSelect": { # The card for presenting a carousel of options to select from. # The carousel card response for Actions on Google.
              "items": [ # Required. Carousel items.
                { # An item in the carousel.
                  "info": { # Additional info about the select item for when it is triggered in a # Required. Additional info about the option item.
                      # dialog.
                    "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                        # item in dialog.
                      "A String",
                    ],
                    "key": "A String", # Required. A unique key that will be sent back to the agent if this
                        # response is given.
                  },
                  "image": { # The image response message. # Optional. The image to display.
                    "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                        # e.g., screen readers.
                    "imageUri": "A String", # Optional. The public URI to an image file.
                  },
                  "description": "A String", # Optional. The body text of the card.
                  "title": "A String", # Required. Title of the carousel item.
                },
              ],
            },
            "listSelect": { # The card for presenting a list of options to select from. # The list card response for Actions on Google.
              "items": [ # Required. List items.
                { # An item in the list.
                  "info": { # Additional info about the select item for when it is triggered in a # Required. Additional information about this option.
                      # dialog.
                    "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                        # item in dialog.
                      "A String",
                    ],
                    "key": "A String", # Required. A unique key that will be sent back to the agent if this
                        # response is given.
                  },
                  "image": { # The image response message. # Optional. The image to display.
                    "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                        # e.g., screen readers.
                    "imageUri": "A String", # Optional. The public URI to an image file.
                  },
                  "description": "A String", # Optional. The main text describing the item.
                  "title": "A String", # Required. The title of the list item.
                },
              ],
              "title": "A String", # Optional. The overall title of the list.
            },
            "payload": { # Returns a response containing a custom, platform-specific payload.
                # See the Intent.Message.Platform type for a description of the
                # structure that may be required for your platform.
              "a_key": "", # Properties of the object.
            },
            "card": { # The card response message. # The card response.
              "buttons": [ # Optional. The collection of card buttons.
                { # Optional. Contains information about a button.
                  "text": "A String", # Optional. The text to show on the button.
                  "postback": "A String", # Optional. The text to send back to the Dialogflow API or a URI to
                      # open.
                },
              ],
              "title": "A String", # Optional. The title of the card.
              "subtitle": "A String", # Optional. The subtitle of the card.
              "imageUri": "A String", # Optional. The public URI to an image file for the card.
            },
          },
        ],
        "parentFollowupIntentName": "A String", # Read-only after creation. The unique identifier of the parent intent in the
            # chain of followup intents. You can set this field when creating an intent,
            # for example with CreateIntent or BatchUpdateIntents, in order to
            # make this intent a followup intent.
            #
            # It identifies the parent followup intent.
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
        "defaultResponsePlatforms": [ # Optional. The list of platforms for which the first responses will be
            # copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
          "A String",
        ],
        "priority": 42, # Optional. The priority of this intent. Higher numbers represent higher
            # priorities. If this is zero or unspecified, we use the default
            # priority 500000.
            #
            # Negative numbers mean that the intent is disabled.
        "rootFollowupIntentName": "A String", # Read-only. The unique identifier of the root intent in the chain of
            # followup intents. It identifies the correct followup intents chain for
            # this intent. We populate this field only in the output.
            #
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
        "inputContextNames": [ # Optional. The list of context names required for this intent to be
            # triggered.
            # Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
          "A String",
        ],
        "action": "A String", # Optional. The name of the action associated with the intent.
            # Note: The action name must not contain whitespaces.
        "outputContexts": [ # 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/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
          { # Represents a context.
            "parameters": { # Optional. The collection of parameters associated with this context.
                # Refer to [this
                # doc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)
                # for syntax.
              "a_key": "", # Properties of the object.
            },
            "name": "A String", # Required. The unique identifier of the context. Format:
                # `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`.
                #
                # 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.
            "lifespanCount": 42, # Optional. The number of conversational query requests after which the
                # context expires. If set to `0` (the default) the context expires
                # immediately. Contexts expire automatically after 20 minutes if there
                # are no matching queries.
          },
        ],
        "events": [ # 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.
          "A String",
        ],
      },
    ],
  }

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a
      # network API call.
    "metadata": { # Service-specific metadata associated with the operation.  It typically
        # contains progress information and common metadata such as create time.
        # Some services might not provide such metadata.  Any method that returns a
        # long-running operation should document the metadata type, if any.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
        # 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).
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details.  There is a common set of
          # message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": True or False, # If the value is `false`, it means the operation is still in progress.
        # If `true`, the operation is completed, and either `error` or `response` is
        # available.
    "response": { # The normal response of the operation in case of success.  If the original
        # method returns no data on success, such as `Delete`, the response is
        # `google.protobuf.Empty`.  If the original method is standard
        # `Get`/`Create`/`Update`, the response should be the resource.  For other
        # methods, the response should have the type `XxxResponse`, where `Xxx`
        # is the original method name.  For example, if the original method name
        # is `TakeSnapshot()`, the inferred response type is
        # `TakeSnapshotResponse`.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # The server-assigned name, which is only unique within the same service that
        # originally returns it. If you use the default HTTP mapping, the
        # `name` should be a resource name ending with `operations/{unique_id}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="batchUpdate">batchUpdate(parent, body, x__xgafv=None)</code>
  <pre>Updates/Creates multiple intents in the specified agent.

Operation <response: BatchUpdateIntentsResponse>

Args:
  parent: string, Required. The name of the agent to update or create intents in.
Format: `projects/<Project ID>/agent`. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The request message for Intents.BatchUpdateIntents.
    "languageCode": "A String", # Optional. The language of training phrases, parameters and rich messages
        # defined in `intents`. If not specified, the agent's default language is
        # used. [Many
        # languages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)
        # are supported. Note: languages must be enabled in the agent before they can
        # be used.
    "intentBatchUri": "A String", # The URI to a Google Cloud Storage file containing intents to update or
        # create. The file format can either be a serialized proto (of IntentBatch
        # type) or JSON object. Note: The URI must start with "gs://".
    "intentBatchInline": { # This message is a wrapper around a collection of intents. # The collection of intents to update or create.
      "intents": [ # A collection of intents.
        { # Represents an intent.
            # Intents convert a number of user expressions or patterns into an action. An
            # action is an extraction of a user command or sentence semantics.
          "isFallback": True or False, # Optional. Indicates whether this is a fallback intent.
          "mlDisabled": True or False, # Optional. Indicates whether Machine Learning is disabled for the intent.
              # Note: If `ml_diabled` 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.
          "displayName": "A String", # Required. The name of this intent.
          "name": "A String", # The unique identifier of this intent.
              # Required for Intents.UpdateIntent and Intents.BatchUpdateIntents
              # methods.
              # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
          "parameters": [ # Optional. The collection of parameters associated with the intent.
            { # Represents intent parameters.
              "displayName": "A String", # Required. The name of the parameter.
              "name": "A String", # The unique identifier of this parameter.
              "defaultValue": "A String", # 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`.
              "entityTypeDisplayName": "A String", # Optional. The name of the entity type, prefixed with `@`, that
                  # describes values of the parameter. If the parameter is
                  # required, this must be provided.
              "value": "A String", # 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`.
              "prompts": [ # Optional. The collection of prompts that the agent can present to the
                  # user in order to collect value for the parameter.
                "A String",
              ],
              "isList": True or False, # Optional. Indicates whether the parameter represents a list of values.
              "mandatory": True or False, # Optional. Indicates whether the parameter is required. That is,
                  # whether the intent cannot be completed without collecting the parameter
                  # value.
            },
          ],
          "trainingPhrases": [ # Optional. The collection of examples that the agent is
              # trained on.
            { # Represents an example that the agent is trained on.
              "parts": [ # 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.
                  "alias": "A String", # 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.
                  "entityType": "A String", # Optional. The entity type name prefixed with `@`.
                      # This field is required for annotated parts of the training phrase.
                  "text": "A String", # Required. The text for this part.
                  "userDefined": 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.
                },
              ],
              "type": "A String", # Required. The type of the training phrase.
              "name": "A String", # Output only. The unique identifier of this training phrase.
              "timesAddedCount": 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.
            },
          ],
          "followupIntentInfo": [ # Read-only. Information about all followup intents that have this intent as
              # a direct or indirect parent. We populate this field only in the output.
            { # Represents a single followup intent in the chain.
              "followupIntentName": "A String", # The unique identifier of the followup intent.
                  # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
              "parentFollowupIntentName": "A String", # The unique identifier of the followup intent's parent.
                  # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
            },
          ],
          "webhookState": "A String", # Optional. Indicates whether webhooks are enabled for the intent.
          "resetContexts": True or False, # Optional. Indicates whether to delete all contexts in the current
              # session when this intent is matched.
          "messages": [ # Optional. The collection of rich messages corresponding to the
              # `Response` field in the Dialogflow console.
            { # Corresponds to the `Response` field in the Dialogflow console.
              "simpleResponses": { # The collection of simple response candidates. # The voice and text-only responses for Actions on Google.
                  # This message in `QueryResult.fulfillment_messages` and
                  # `WebhookResponse.fulfillment_messages` should contain only one
                  # `SimpleResponse`.
                "simpleResponses": [ # Required. The list of simple responses.
                  { # The simple response message containing speech or text.
                    "textToSpeech": "A String", # One of text_to_speech or ssml must be provided. The plain text of the
                        # speech output. Mutually exclusive with ssml.
                    "displayText": "A String", # Optional. The text to display.
                    "ssml": "A String", # 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.
                  },
                ],
              },
              "quickReplies": { # The quick replies response message. # The quick replies response.
                "quickReplies": [ # Optional. The collection of quick replies.
                  "A String",
                ],
                "title": "A String", # Optional. The title of the collection of quick replies.
              },
              "platform": "A String", # Optional. The platform that this message is intended for.
              "text": { # The text response message. # The text response.
                "text": [ # Optional. The collection of the agent's responses.
                  "A String",
                ],
              },
              "image": { # The image response message. # The image response.
                "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                    # e.g., screen readers.
                "imageUri": "A String", # Optional. The public URI to an image file.
              },
              "suggestions": { # The collection of suggestions. # The suggestion chips for Actions on Google.
                "suggestions": [ # Required. The list of suggested replies.
                  { # The suggestion chip message that the user can tap to quickly post a reply
                      # to the conversation.
                    "title": "A String", # Required. The text shown the in the suggestion chip.
                  },
                ],
              },
              "linkOutSuggestion": { # The suggestion chip message that allows the user to jump out to the app # The link out suggestion chip for Actions on Google.
                  # or website associated with this agent.
                "uri": "A String", # Required. The URI of the app or site to open when the user taps the
                    # suggestion chip.
                "destinationName": "A String", # Required. The name of the app or site this chip is linking to.
              },
              "basicCard": { # The basic card message. Useful for displaying information. # The basic card response for Actions on Google.
                "buttons": [ # Optional. The collection of card buttons.
                  { # The button object that appears at the bottom of a card.
                    "openUriAction": { # Opens the given URI. # Required. Action to take when a user taps on the button.
                      "uri": "A String", # Required. The HTTP or HTTPS scheme URI.
                    },
                    "title": "A String", # Required. The title of the button.
                  },
                ],
                "subtitle": "A String", # Optional. The subtitle of the card.
                "image": { # The image response message. # Optional. The image for the card.
                  "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                      # e.g., screen readers.
                  "imageUri": "A String", # Optional. The public URI to an image file.
                },
                "formattedText": "A String", # Required, unless image is present. The body text of the card.
                "title": "A String", # Optional. The title of the card.
              },
              "carouselSelect": { # The card for presenting a carousel of options to select from. # The carousel card response for Actions on Google.
                "items": [ # Required. Carousel items.
                  { # An item in the carousel.
                    "info": { # Additional info about the select item for when it is triggered in a # Required. Additional info about the option item.
                        # dialog.
                      "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                          # item in dialog.
                        "A String",
                      ],
                      "key": "A String", # Required. A unique key that will be sent back to the agent if this
                          # response is given.
                    },
                    "image": { # The image response message. # Optional. The image to display.
                      "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                          # e.g., screen readers.
                      "imageUri": "A String", # Optional. The public URI to an image file.
                    },
                    "description": "A String", # Optional. The body text of the card.
                    "title": "A String", # Required. Title of the carousel item.
                  },
                ],
              },
              "listSelect": { # The card for presenting a list of options to select from. # The list card response for Actions on Google.
                "items": [ # Required. List items.
                  { # An item in the list.
                    "info": { # Additional info about the select item for when it is triggered in a # Required. Additional information about this option.
                        # dialog.
                      "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                          # item in dialog.
                        "A String",
                      ],
                      "key": "A String", # Required. A unique key that will be sent back to the agent if this
                          # response is given.
                    },
                    "image": { # The image response message. # Optional. The image to display.
                      "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                          # e.g., screen readers.
                      "imageUri": "A String", # Optional. The public URI to an image file.
                    },
                    "description": "A String", # Optional. The main text describing the item.
                    "title": "A String", # Required. The title of the list item.
                  },
                ],
                "title": "A String", # Optional. The overall title of the list.
              },
              "payload": { # Returns a response containing a custom, platform-specific payload.
                  # See the Intent.Message.Platform type for a description of the
                  # structure that may be required for your platform.
                "a_key": "", # Properties of the object.
              },
              "card": { # The card response message. # The card response.
                "buttons": [ # Optional. The collection of card buttons.
                  { # Optional. Contains information about a button.
                    "text": "A String", # Optional. The text to show on the button.
                    "postback": "A String", # Optional. The text to send back to the Dialogflow API or a URI to
                        # open.
                  },
                ],
                "title": "A String", # Optional. The title of the card.
                "subtitle": "A String", # Optional. The subtitle of the card.
                "imageUri": "A String", # Optional. The public URI to an image file for the card.
              },
            },
          ],
          "parentFollowupIntentName": "A String", # Read-only after creation. The unique identifier of the parent intent in the
              # chain of followup intents. You can set this field when creating an intent,
              # for example with CreateIntent or BatchUpdateIntents, in order to
              # make this intent a followup intent.
              #
              # It identifies the parent followup intent.
              # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
          "defaultResponsePlatforms": [ # Optional. The list of platforms for which the first responses will be
              # copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
            "A String",
          ],
          "priority": 42, # Optional. The priority of this intent. Higher numbers represent higher
              # priorities. If this is zero or unspecified, we use the default
              # priority 500000.
              #
              # Negative numbers mean that the intent is disabled.
          "rootFollowupIntentName": "A String", # Read-only. The unique identifier of the root intent in the chain of
              # followup intents. It identifies the correct followup intents chain for
              # this intent. We populate this field only in the output.
              #
              # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
          "inputContextNames": [ # Optional. The list of context names required for this intent to be
              # triggered.
              # Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
            "A String",
          ],
          "action": "A String", # Optional. The name of the action associated with the intent.
              # Note: The action name must not contain whitespaces.
          "outputContexts": [ # 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/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
            { # Represents a context.
              "parameters": { # Optional. The collection of parameters associated with this context.
                  # Refer to [this
                  # doc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)
                  # for syntax.
                "a_key": "", # Properties of the object.
              },
              "name": "A String", # Required. The unique identifier of the context. Format:
                  # `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`.
                  #
                  # 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.
              "lifespanCount": 42, # Optional. The number of conversational query requests after which the
                  # context expires. If set to `0` (the default) the context expires
                  # immediately. Contexts expire automatically after 20 minutes if there
                  # are no matching queries.
            },
          ],
          "events": [ # 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.
            "A String",
          ],
        },
      ],
    },
    "updateMask": "A String", # Optional. The mask to control which fields get updated.
    "intentView": "A String", # Optional. The resource view to apply to the returned intent.
  }

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a
      # network API call.
    "metadata": { # Service-specific metadata associated with the operation.  It typically
        # contains progress information and common metadata such as create time.
        # Some services might not provide such metadata.  Any method that returns a
        # long-running operation should document the metadata type, if any.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
        # 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).
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details.  There is a common set of
          # message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": True or False, # If the value is `false`, it means the operation is still in progress.
        # If `true`, the operation is completed, and either `error` or `response` is
        # available.
    "response": { # The normal response of the operation in case of success.  If the original
        # method returns no data on success, such as `Delete`, the response is
        # `google.protobuf.Empty`.  If the original method is standard
        # `Get`/`Create`/`Update`, the response should be the resource.  For other
        # methods, the response should have the type `XxxResponse`, where `Xxx`
        # is the original method name.  For example, if the original method name
        # is `TakeSnapshot()`, the inferred response type is
        # `TakeSnapshotResponse`.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # The server-assigned name, which is only unique within the same service that
        # originally returns it. If you use the default HTTP mapping, the
        # `name` should be a resource name ending with `operations/{unique_id}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body, languageCode=None, intentView=None, x__xgafv=None)</code>
  <pre>Creates an intent in the specified agent.

Args:
  parent: string, Required. The agent to create a intent for.
Format: `projects/<Project ID>/agent`. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents an intent.
    # Intents convert a number of user expressions or patterns into an action. An
    # action is an extraction of a user command or sentence semantics.
  "isFallback": True or False, # Optional. Indicates whether this is a fallback intent.
  "mlDisabled": True or False, # Optional. Indicates whether Machine Learning is disabled for the intent.
      # Note: If `ml_diabled` 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.
  "displayName": "A String", # Required. The name of this intent.
  "name": "A String", # The unique identifier of this intent.
      # Required for Intents.UpdateIntent and Intents.BatchUpdateIntents
      # methods.
      # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
  "parameters": [ # Optional. The collection of parameters associated with the intent.
    { # Represents intent parameters.
      "displayName": "A String", # Required. The name of the parameter.
      "name": "A String", # The unique identifier of this parameter.
      "defaultValue": "A String", # 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`.
      "entityTypeDisplayName": "A String", # Optional. The name of the entity type, prefixed with `@`, that
          # describes values of the parameter. If the parameter is
          # required, this must be provided.
      "value": "A String", # 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`.
      "prompts": [ # Optional. The collection of prompts that the agent can present to the
          # user in order to collect value for the parameter.
        "A String",
      ],
      "isList": True or False, # Optional. Indicates whether the parameter represents a list of values.
      "mandatory": True or False, # Optional. Indicates whether the parameter is required. That is,
          # whether the intent cannot be completed without collecting the parameter
          # value.
    },
  ],
  "trainingPhrases": [ # Optional. The collection of examples that the agent is
      # trained on.
    { # Represents an example that the agent is trained on.
      "parts": [ # 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.
          "alias": "A String", # 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.
          "entityType": "A String", # Optional. The entity type name prefixed with `@`.
              # This field is required for annotated parts of the training phrase.
          "text": "A String", # Required. The text for this part.
          "userDefined": 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.
        },
      ],
      "type": "A String", # Required. The type of the training phrase.
      "name": "A String", # Output only. The unique identifier of this training phrase.
      "timesAddedCount": 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.
    },
  ],
  "followupIntentInfo": [ # Read-only. Information about all followup intents that have this intent as
      # a direct or indirect parent. We populate this field only in the output.
    { # Represents a single followup intent in the chain.
      "followupIntentName": "A String", # The unique identifier of the followup intent.
          # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
      "parentFollowupIntentName": "A String", # The unique identifier of the followup intent's parent.
          # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    },
  ],
  "webhookState": "A String", # Optional. Indicates whether webhooks are enabled for the intent.
  "resetContexts": True or False, # Optional. Indicates whether to delete all contexts in the current
      # session when this intent is matched.
  "messages": [ # Optional. The collection of rich messages corresponding to the
      # `Response` field in the Dialogflow console.
    { # Corresponds to the `Response` field in the Dialogflow console.
      "simpleResponses": { # The collection of simple response candidates. # The voice and text-only responses for Actions on Google.
          # This message in `QueryResult.fulfillment_messages` and
          # `WebhookResponse.fulfillment_messages` should contain only one
          # `SimpleResponse`.
        "simpleResponses": [ # Required. The list of simple responses.
          { # The simple response message containing speech or text.
            "textToSpeech": "A String", # One of text_to_speech or ssml must be provided. The plain text of the
                # speech output. Mutually exclusive with ssml.
            "displayText": "A String", # Optional. The text to display.
            "ssml": "A String", # 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.
          },
        ],
      },
      "quickReplies": { # The quick replies response message. # The quick replies response.
        "quickReplies": [ # Optional. The collection of quick replies.
          "A String",
        ],
        "title": "A String", # Optional. The title of the collection of quick replies.
      },
      "platform": "A String", # Optional. The platform that this message is intended for.
      "text": { # The text response message. # The text response.
        "text": [ # Optional. The collection of the agent's responses.
          "A String",
        ],
      },
      "image": { # The image response message. # The image response.
        "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
            # e.g., screen readers.
        "imageUri": "A String", # Optional. The public URI to an image file.
      },
      "suggestions": { # The collection of suggestions. # The suggestion chips for Actions on Google.
        "suggestions": [ # Required. The list of suggested replies.
          { # The suggestion chip message that the user can tap to quickly post a reply
              # to the conversation.
            "title": "A String", # Required. The text shown the in the suggestion chip.
          },
        ],
      },
      "linkOutSuggestion": { # The suggestion chip message that allows the user to jump out to the app # The link out suggestion chip for Actions on Google.
          # or website associated with this agent.
        "uri": "A String", # Required. The URI of the app or site to open when the user taps the
            # suggestion chip.
        "destinationName": "A String", # Required. The name of the app or site this chip is linking to.
      },
      "basicCard": { # The basic card message. Useful for displaying information. # The basic card response for Actions on Google.
        "buttons": [ # Optional. The collection of card buttons.
          { # The button object that appears at the bottom of a card.
            "openUriAction": { # Opens the given URI. # Required. Action to take when a user taps on the button.
              "uri": "A String", # Required. The HTTP or HTTPS scheme URI.
            },
            "title": "A String", # Required. The title of the button.
          },
        ],
        "subtitle": "A String", # Optional. The subtitle of the card.
        "image": { # The image response message. # Optional. The image for the card.
          "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
              # e.g., screen readers.
          "imageUri": "A String", # Optional. The public URI to an image file.
        },
        "formattedText": "A String", # Required, unless image is present. The body text of the card.
        "title": "A String", # Optional. The title of the card.
      },
      "carouselSelect": { # The card for presenting a carousel of options to select from. # The carousel card response for Actions on Google.
        "items": [ # Required. Carousel items.
          { # An item in the carousel.
            "info": { # Additional info about the select item for when it is triggered in a # Required. Additional info about the option item.
                # dialog.
              "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                  # item in dialog.
                "A String",
              ],
              "key": "A String", # Required. A unique key that will be sent back to the agent if this
                  # response is given.
            },
            "image": { # The image response message. # Optional. The image to display.
              "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                  # e.g., screen readers.
              "imageUri": "A String", # Optional. The public URI to an image file.
            },
            "description": "A String", # Optional. The body text of the card.
            "title": "A String", # Required. Title of the carousel item.
          },
        ],
      },
      "listSelect": { # The card for presenting a list of options to select from. # The list card response for Actions on Google.
        "items": [ # Required. List items.
          { # An item in the list.
            "info": { # Additional info about the select item for when it is triggered in a # Required. Additional information about this option.
                # dialog.
              "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                  # item in dialog.
                "A String",
              ],
              "key": "A String", # Required. A unique key that will be sent back to the agent if this
                  # response is given.
            },
            "image": { # The image response message. # Optional. The image to display.
              "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                  # e.g., screen readers.
              "imageUri": "A String", # Optional. The public URI to an image file.
            },
            "description": "A String", # Optional. The main text describing the item.
            "title": "A String", # Required. The title of the list item.
          },
        ],
        "title": "A String", # Optional. The overall title of the list.
      },
      "payload": { # Returns a response containing a custom, platform-specific payload.
          # See the Intent.Message.Platform type for a description of the
          # structure that may be required for your platform.
        "a_key": "", # Properties of the object.
      },
      "card": { # The card response message. # The card response.
        "buttons": [ # Optional. The collection of card buttons.
          { # Optional. Contains information about a button.
            "text": "A String", # Optional. The text to show on the button.
            "postback": "A String", # Optional. The text to send back to the Dialogflow API or a URI to
                # open.
          },
        ],
        "title": "A String", # Optional. The title of the card.
        "subtitle": "A String", # Optional. The subtitle of the card.
        "imageUri": "A String", # Optional. The public URI to an image file for the card.
      },
    },
  ],
  "parentFollowupIntentName": "A String", # Read-only after creation. The unique identifier of the parent intent in the
      # chain of followup intents. You can set this field when creating an intent,
      # for example with CreateIntent or BatchUpdateIntents, in order to
      # make this intent a followup intent.
      # 
      # It identifies the parent followup intent.
      # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
  "defaultResponsePlatforms": [ # Optional. The list of platforms for which the first responses will be
      # copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
    "A String",
  ],
  "priority": 42, # Optional. The priority of this intent. Higher numbers represent higher
      # priorities. If this is zero or unspecified, we use the default
      # priority 500000.
      # 
      # Negative numbers mean that the intent is disabled.
  "rootFollowupIntentName": "A String", # Read-only. The unique identifier of the root intent in the chain of
      # followup intents. It identifies the correct followup intents chain for
      # this intent. We populate this field only in the output.
      # 
      # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
  "inputContextNames": [ # Optional. The list of context names required for this intent to be
      # triggered.
      # Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
    "A String",
  ],
  "action": "A String", # Optional. The name of the action associated with the intent.
      # Note: The action name must not contain whitespaces.
  "outputContexts": [ # 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/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
    { # Represents a context.
      "parameters": { # Optional. The collection of parameters associated with this context.
          # Refer to [this
          # doc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)
          # for syntax.
        "a_key": "", # Properties of the object.
      },
      "name": "A String", # Required. The unique identifier of the context. Format:
          # `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`.
          #
          # 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.
      "lifespanCount": 42, # Optional. The number of conversational query requests after which the
          # context expires. If set to `0` (the default) the context expires
          # immediately. Contexts expire automatically after 20 minutes if there
          # are no matching queries.
    },
  ],
  "events": [ # 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.
    "A String",
  ],
}

  languageCode: string, Optional. The language of training phrases, parameters and rich messages
defined in `intent`. If not specified, the agent's default language is
used. [Many
languages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)
are supported. Note: languages must be enabled in the agent before they can
be used.
  intentView: string, Optional. The resource view to apply to the returned intent.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an intent.
      # Intents convert a number of user expressions or patterns into an action. An
      # action is an extraction of a user command or sentence semantics.
    "isFallback": True or False, # Optional. Indicates whether this is a fallback intent.
    "mlDisabled": True or False, # Optional. Indicates whether Machine Learning is disabled for the intent.
        # Note: If `ml_diabled` 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.
    "displayName": "A String", # Required. The name of this intent.
    "name": "A String", # The unique identifier of this intent.
        # Required for Intents.UpdateIntent and Intents.BatchUpdateIntents
        # methods.
        # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    "parameters": [ # Optional. The collection of parameters associated with the intent.
      { # Represents intent parameters.
        "displayName": "A String", # Required. The name of the parameter.
        "name": "A String", # The unique identifier of this parameter.
        "defaultValue": "A String", # 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`.
        "entityTypeDisplayName": "A String", # Optional. The name of the entity type, prefixed with `@`, that
            # describes values of the parameter. If the parameter is
            # required, this must be provided.
        "value": "A String", # 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`.
        "prompts": [ # Optional. The collection of prompts that the agent can present to the
            # user in order to collect value for the parameter.
          "A String",
        ],
        "isList": True or False, # Optional. Indicates whether the parameter represents a list of values.
        "mandatory": True or False, # Optional. Indicates whether the parameter is required. That is,
            # whether the intent cannot be completed without collecting the parameter
            # value.
      },
    ],
    "trainingPhrases": [ # Optional. The collection of examples that the agent is
        # trained on.
      { # Represents an example that the agent is trained on.
        "parts": [ # 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.
            "alias": "A String", # 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.
            "entityType": "A String", # Optional. The entity type name prefixed with `@`.
                # This field is required for annotated parts of the training phrase.
            "text": "A String", # Required. The text for this part.
            "userDefined": 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.
          },
        ],
        "type": "A String", # Required. The type of the training phrase.
        "name": "A String", # Output only. The unique identifier of this training phrase.
        "timesAddedCount": 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.
      },
    ],
    "followupIntentInfo": [ # Read-only. Information about all followup intents that have this intent as
        # a direct or indirect parent. We populate this field only in the output.
      { # Represents a single followup intent in the chain.
        "followupIntentName": "A String", # The unique identifier of the followup intent.
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
        "parentFollowupIntentName": "A String", # The unique identifier of the followup intent's parent.
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
      },
    ],
    "webhookState": "A String", # Optional. Indicates whether webhooks are enabled for the intent.
    "resetContexts": True or False, # Optional. Indicates whether to delete all contexts in the current
        # session when this intent is matched.
    "messages": [ # Optional. The collection of rich messages corresponding to the
        # `Response` field in the Dialogflow console.
      { # Corresponds to the `Response` field in the Dialogflow console.
        "simpleResponses": { # The collection of simple response candidates. # The voice and text-only responses for Actions on Google.
            # This message in `QueryResult.fulfillment_messages` and
            # `WebhookResponse.fulfillment_messages` should contain only one
            # `SimpleResponse`.
          "simpleResponses": [ # Required. The list of simple responses.
            { # The simple response message containing speech or text.
              "textToSpeech": "A String", # One of text_to_speech or ssml must be provided. The plain text of the
                  # speech output. Mutually exclusive with ssml.
              "displayText": "A String", # Optional. The text to display.
              "ssml": "A String", # 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.
            },
          ],
        },
        "quickReplies": { # The quick replies response message. # The quick replies response.
          "quickReplies": [ # Optional. The collection of quick replies.
            "A String",
          ],
          "title": "A String", # Optional. The title of the collection of quick replies.
        },
        "platform": "A String", # Optional. The platform that this message is intended for.
        "text": { # The text response message. # The text response.
          "text": [ # Optional. The collection of the agent's responses.
            "A String",
          ],
        },
        "image": { # The image response message. # The image response.
          "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
              # e.g., screen readers.
          "imageUri": "A String", # Optional. The public URI to an image file.
        },
        "suggestions": { # The collection of suggestions. # The suggestion chips for Actions on Google.
          "suggestions": [ # Required. The list of suggested replies.
            { # The suggestion chip message that the user can tap to quickly post a reply
                # to the conversation.
              "title": "A String", # Required. The text shown the in the suggestion chip.
            },
          ],
        },
        "linkOutSuggestion": { # The suggestion chip message that allows the user to jump out to the app # The link out suggestion chip for Actions on Google.
            # or website associated with this agent.
          "uri": "A String", # Required. The URI of the app or site to open when the user taps the
              # suggestion chip.
          "destinationName": "A String", # Required. The name of the app or site this chip is linking to.
        },
        "basicCard": { # The basic card message. Useful for displaying information. # The basic card response for Actions on Google.
          "buttons": [ # Optional. The collection of card buttons.
            { # The button object that appears at the bottom of a card.
              "openUriAction": { # Opens the given URI. # Required. Action to take when a user taps on the button.
                "uri": "A String", # Required. The HTTP or HTTPS scheme URI.
              },
              "title": "A String", # Required. The title of the button.
            },
          ],
          "subtitle": "A String", # Optional. The subtitle of the card.
          "image": { # The image response message. # Optional. The image for the card.
            "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                # e.g., screen readers.
            "imageUri": "A String", # Optional. The public URI to an image file.
          },
          "formattedText": "A String", # Required, unless image is present. The body text of the card.
          "title": "A String", # Optional. The title of the card.
        },
        "carouselSelect": { # The card for presenting a carousel of options to select from. # The carousel card response for Actions on Google.
          "items": [ # Required. Carousel items.
            { # An item in the carousel.
              "info": { # Additional info about the select item for when it is triggered in a # Required. Additional info about the option item.
                  # dialog.
                "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                    # item in dialog.
                  "A String",
                ],
                "key": "A String", # Required. A unique key that will be sent back to the agent if this
                    # response is given.
              },
              "image": { # The image response message. # Optional. The image to display.
                "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                    # e.g., screen readers.
                "imageUri": "A String", # Optional. The public URI to an image file.
              },
              "description": "A String", # Optional. The body text of the card.
              "title": "A String", # Required. Title of the carousel item.
            },
          ],
        },
        "listSelect": { # The card for presenting a list of options to select from. # The list card response for Actions on Google.
          "items": [ # Required. List items.
            { # An item in the list.
              "info": { # Additional info about the select item for when it is triggered in a # Required. Additional information about this option.
                  # dialog.
                "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                    # item in dialog.
                  "A String",
                ],
                "key": "A String", # Required. A unique key that will be sent back to the agent if this
                    # response is given.
              },
              "image": { # The image response message. # Optional. The image to display.
                "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                    # e.g., screen readers.
                "imageUri": "A String", # Optional. The public URI to an image file.
              },
              "description": "A String", # Optional. The main text describing the item.
              "title": "A String", # Required. The title of the list item.
            },
          ],
          "title": "A String", # Optional. The overall title of the list.
        },
        "payload": { # Returns a response containing a custom, platform-specific payload.
            # See the Intent.Message.Platform type for a description of the
            # structure that may be required for your platform.
          "a_key": "", # Properties of the object.
        },
        "card": { # The card response message. # The card response.
          "buttons": [ # Optional. The collection of card buttons.
            { # Optional. Contains information about a button.
              "text": "A String", # Optional. The text to show on the button.
              "postback": "A String", # Optional. The text to send back to the Dialogflow API or a URI to
                  # open.
            },
          ],
          "title": "A String", # Optional. The title of the card.
          "subtitle": "A String", # Optional. The subtitle of the card.
          "imageUri": "A String", # Optional. The public URI to an image file for the card.
        },
      },
    ],
    "parentFollowupIntentName": "A String", # Read-only after creation. The unique identifier of the parent intent in the
        # chain of followup intents. You can set this field when creating an intent,
        # for example with CreateIntent or BatchUpdateIntents, in order to
        # make this intent a followup intent.
        #
        # It identifies the parent followup intent.
        # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    "defaultResponsePlatforms": [ # Optional. The list of platforms for which the first responses will be
        # copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
      "A String",
    ],
    "priority": 42, # Optional. The priority of this intent. Higher numbers represent higher
        # priorities. If this is zero or unspecified, we use the default
        # priority 500000.
        #
        # Negative numbers mean that the intent is disabled.
    "rootFollowupIntentName": "A String", # Read-only. The unique identifier of the root intent in the chain of
        # followup intents. It identifies the correct followup intents chain for
        # this intent. We populate this field only in the output.
        #
        # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    "inputContextNames": [ # Optional. The list of context names required for this intent to be
        # triggered.
        # Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
      "A String",
    ],
    "action": "A String", # Optional. The name of the action associated with the intent.
        # Note: The action name must not contain whitespaces.
    "outputContexts": [ # 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/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
      { # Represents a context.
        "parameters": { # Optional. The collection of parameters associated with this context.
            # Refer to [this
            # doc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)
            # for syntax.
          "a_key": "", # Properties of the object.
        },
        "name": "A String", # Required. The unique identifier of the context. Format:
            # `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`.
            #
            # 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.
        "lifespanCount": 42, # Optional. The number of conversational query requests after which the
            # context expires. If set to `0` (the default) the context expires
            # immediately. Contexts expire automatically after 20 minutes if there
            # are no matching queries.
      },
    ],
    "events": [ # 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.
      "A String",
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the specified intent and its direct or indirect followup intents.

Args:
  name: string, Required. The name of the intent to delete. If this intent has direct or
indirect followup intents, we also delete them.
Format: `projects/<Project ID>/agent/intents/<Intent ID>`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated
      # empty messages in your APIs. A typical example is to use it as the request
      # or the response type of an API method. For instance:
      #
      #     service Foo {
      #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
      #     }
      #
      # The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, languageCode=None, intentView=None, x__xgafv=None)</code>
  <pre>Retrieves the specified intent.

Args:
  name: string, Required. The name of the intent.
Format: `projects/<Project ID>/agent/intents/<Intent ID>`. (required)
  languageCode: string, Optional. The language to retrieve training phrases, parameters and rich
messages for. If not specified, the agent's default language is used.
[Many
languages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)
are supported. Note: languages must be enabled in the agent before they can
be used.
  intentView: string, Optional. The resource view to apply to the returned intent.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an intent.
      # Intents convert a number of user expressions or patterns into an action. An
      # action is an extraction of a user command or sentence semantics.
    "isFallback": True or False, # Optional. Indicates whether this is a fallback intent.
    "mlDisabled": True or False, # Optional. Indicates whether Machine Learning is disabled for the intent.
        # Note: If `ml_diabled` 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.
    "displayName": "A String", # Required. The name of this intent.
    "name": "A String", # The unique identifier of this intent.
        # Required for Intents.UpdateIntent and Intents.BatchUpdateIntents
        # methods.
        # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    "parameters": [ # Optional. The collection of parameters associated with the intent.
      { # Represents intent parameters.
        "displayName": "A String", # Required. The name of the parameter.
        "name": "A String", # The unique identifier of this parameter.
        "defaultValue": "A String", # 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`.
        "entityTypeDisplayName": "A String", # Optional. The name of the entity type, prefixed with `@`, that
            # describes values of the parameter. If the parameter is
            # required, this must be provided.
        "value": "A String", # 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`.
        "prompts": [ # Optional. The collection of prompts that the agent can present to the
            # user in order to collect value for the parameter.
          "A String",
        ],
        "isList": True or False, # Optional. Indicates whether the parameter represents a list of values.
        "mandatory": True or False, # Optional. Indicates whether the parameter is required. That is,
            # whether the intent cannot be completed without collecting the parameter
            # value.
      },
    ],
    "trainingPhrases": [ # Optional. The collection of examples that the agent is
        # trained on.
      { # Represents an example that the agent is trained on.
        "parts": [ # 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.
            "alias": "A String", # 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.
            "entityType": "A String", # Optional. The entity type name prefixed with `@`.
                # This field is required for annotated parts of the training phrase.
            "text": "A String", # Required. The text for this part.
            "userDefined": 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.
          },
        ],
        "type": "A String", # Required. The type of the training phrase.
        "name": "A String", # Output only. The unique identifier of this training phrase.
        "timesAddedCount": 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.
      },
    ],
    "followupIntentInfo": [ # Read-only. Information about all followup intents that have this intent as
        # a direct or indirect parent. We populate this field only in the output.
      { # Represents a single followup intent in the chain.
        "followupIntentName": "A String", # The unique identifier of the followup intent.
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
        "parentFollowupIntentName": "A String", # The unique identifier of the followup intent's parent.
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
      },
    ],
    "webhookState": "A String", # Optional. Indicates whether webhooks are enabled for the intent.
    "resetContexts": True or False, # Optional. Indicates whether to delete all contexts in the current
        # session when this intent is matched.
    "messages": [ # Optional. The collection of rich messages corresponding to the
        # `Response` field in the Dialogflow console.
      { # Corresponds to the `Response` field in the Dialogflow console.
        "simpleResponses": { # The collection of simple response candidates. # The voice and text-only responses for Actions on Google.
            # This message in `QueryResult.fulfillment_messages` and
            # `WebhookResponse.fulfillment_messages` should contain only one
            # `SimpleResponse`.
          "simpleResponses": [ # Required. The list of simple responses.
            { # The simple response message containing speech or text.
              "textToSpeech": "A String", # One of text_to_speech or ssml must be provided. The plain text of the
                  # speech output. Mutually exclusive with ssml.
              "displayText": "A String", # Optional. The text to display.
              "ssml": "A String", # 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.
            },
          ],
        },
        "quickReplies": { # The quick replies response message. # The quick replies response.
          "quickReplies": [ # Optional. The collection of quick replies.
            "A String",
          ],
          "title": "A String", # Optional. The title of the collection of quick replies.
        },
        "platform": "A String", # Optional. The platform that this message is intended for.
        "text": { # The text response message. # The text response.
          "text": [ # Optional. The collection of the agent's responses.
            "A String",
          ],
        },
        "image": { # The image response message. # The image response.
          "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
              # e.g., screen readers.
          "imageUri": "A String", # Optional. The public URI to an image file.
        },
        "suggestions": { # The collection of suggestions. # The suggestion chips for Actions on Google.
          "suggestions": [ # Required. The list of suggested replies.
            { # The suggestion chip message that the user can tap to quickly post a reply
                # to the conversation.
              "title": "A String", # Required. The text shown the in the suggestion chip.
            },
          ],
        },
        "linkOutSuggestion": { # The suggestion chip message that allows the user to jump out to the app # The link out suggestion chip for Actions on Google.
            # or website associated with this agent.
          "uri": "A String", # Required. The URI of the app or site to open when the user taps the
              # suggestion chip.
          "destinationName": "A String", # Required. The name of the app or site this chip is linking to.
        },
        "basicCard": { # The basic card message. Useful for displaying information. # The basic card response for Actions on Google.
          "buttons": [ # Optional. The collection of card buttons.
            { # The button object that appears at the bottom of a card.
              "openUriAction": { # Opens the given URI. # Required. Action to take when a user taps on the button.
                "uri": "A String", # Required. The HTTP or HTTPS scheme URI.
              },
              "title": "A String", # Required. The title of the button.
            },
          ],
          "subtitle": "A String", # Optional. The subtitle of the card.
          "image": { # The image response message. # Optional. The image for the card.
            "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                # e.g., screen readers.
            "imageUri": "A String", # Optional. The public URI to an image file.
          },
          "formattedText": "A String", # Required, unless image is present. The body text of the card.
          "title": "A String", # Optional. The title of the card.
        },
        "carouselSelect": { # The card for presenting a carousel of options to select from. # The carousel card response for Actions on Google.
          "items": [ # Required. Carousel items.
            { # An item in the carousel.
              "info": { # Additional info about the select item for when it is triggered in a # Required. Additional info about the option item.
                  # dialog.
                "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                    # item in dialog.
                  "A String",
                ],
                "key": "A String", # Required. A unique key that will be sent back to the agent if this
                    # response is given.
              },
              "image": { # The image response message. # Optional. The image to display.
                "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                    # e.g., screen readers.
                "imageUri": "A String", # Optional. The public URI to an image file.
              },
              "description": "A String", # Optional. The body text of the card.
              "title": "A String", # Required. Title of the carousel item.
            },
          ],
        },
        "listSelect": { # The card for presenting a list of options to select from. # The list card response for Actions on Google.
          "items": [ # Required. List items.
            { # An item in the list.
              "info": { # Additional info about the select item for when it is triggered in a # Required. Additional information about this option.
                  # dialog.
                "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                    # item in dialog.
                  "A String",
                ],
                "key": "A String", # Required. A unique key that will be sent back to the agent if this
                    # response is given.
              },
              "image": { # The image response message. # Optional. The image to display.
                "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                    # e.g., screen readers.
                "imageUri": "A String", # Optional. The public URI to an image file.
              },
              "description": "A String", # Optional. The main text describing the item.
              "title": "A String", # Required. The title of the list item.
            },
          ],
          "title": "A String", # Optional. The overall title of the list.
        },
        "payload": { # Returns a response containing a custom, platform-specific payload.
            # See the Intent.Message.Platform type for a description of the
            # structure that may be required for your platform.
          "a_key": "", # Properties of the object.
        },
        "card": { # The card response message. # The card response.
          "buttons": [ # Optional. The collection of card buttons.
            { # Optional. Contains information about a button.
              "text": "A String", # Optional. The text to show on the button.
              "postback": "A String", # Optional. The text to send back to the Dialogflow API or a URI to
                  # open.
            },
          ],
          "title": "A String", # Optional. The title of the card.
          "subtitle": "A String", # Optional. The subtitle of the card.
          "imageUri": "A String", # Optional. The public URI to an image file for the card.
        },
      },
    ],
    "parentFollowupIntentName": "A String", # Read-only after creation. The unique identifier of the parent intent in the
        # chain of followup intents. You can set this field when creating an intent,
        # for example with CreateIntent or BatchUpdateIntents, in order to
        # make this intent a followup intent.
        #
        # It identifies the parent followup intent.
        # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    "defaultResponsePlatforms": [ # Optional. The list of platforms for which the first responses will be
        # copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
      "A String",
    ],
    "priority": 42, # Optional. The priority of this intent. Higher numbers represent higher
        # priorities. If this is zero or unspecified, we use the default
        # priority 500000.
        #
        # Negative numbers mean that the intent is disabled.
    "rootFollowupIntentName": "A String", # Read-only. The unique identifier of the root intent in the chain of
        # followup intents. It identifies the correct followup intents chain for
        # this intent. We populate this field only in the output.
        #
        # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    "inputContextNames": [ # Optional. The list of context names required for this intent to be
        # triggered.
        # Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
      "A String",
    ],
    "action": "A String", # Optional. The name of the action associated with the intent.
        # Note: The action name must not contain whitespaces.
    "outputContexts": [ # 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/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
      { # Represents a context.
        "parameters": { # Optional. The collection of parameters associated with this context.
            # Refer to [this
            # doc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)
            # for syntax.
          "a_key": "", # Properties of the object.
        },
        "name": "A String", # Required. The unique identifier of the context. Format:
            # `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`.
            #
            # 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.
        "lifespanCount": 42, # Optional. The number of conversational query requests after which the
            # context expires. If set to `0` (the default) the context expires
            # immediately. Contexts expire automatically after 20 minutes if there
            # are no matching queries.
      },
    ],
    "events": [ # 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.
      "A String",
    ],
  }</pre>
</div>

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

Args:
  parent: string, Required. The agent to list all intents from.
Format: `projects/<Project ID>/agent`. (required)
  languageCode: string, Optional. The language to list training phrases, parameters and rich
messages for. If not specified, the agent's default language is used.
[Many
languages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)
are supported. Note: languages must be enabled in the agent before they can
be used.
  pageSize: integer, Optional. The maximum number of items to return in a single page. By
default 100 and at most 1000.
  intentView: string, Optional. The resource view to apply to the returned intent.
  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 Intents.ListIntents.
    "nextPageToken": "A String", # Token to retrieve the next page of results, or empty if there are no
        # more results in the list.
    "intents": [ # The list of agent intents. There will be a maximum number of items
        # returned based on the page_size field in the request.
      { # Represents an intent.
          # Intents convert a number of user expressions or patterns into an action. An
          # action is an extraction of a user command or sentence semantics.
        "isFallback": True or False, # Optional. Indicates whether this is a fallback intent.
        "mlDisabled": True or False, # Optional. Indicates whether Machine Learning is disabled for the intent.
            # Note: If `ml_diabled` 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.
        "displayName": "A String", # Required. The name of this intent.
        "name": "A String", # The unique identifier of this intent.
            # Required for Intents.UpdateIntent and Intents.BatchUpdateIntents
            # methods.
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
        "parameters": [ # Optional. The collection of parameters associated with the intent.
          { # Represents intent parameters.
            "displayName": "A String", # Required. The name of the parameter.
            "name": "A String", # The unique identifier of this parameter.
            "defaultValue": "A String", # 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`.
            "entityTypeDisplayName": "A String", # Optional. The name of the entity type, prefixed with `@`, that
                # describes values of the parameter. If the parameter is
                # required, this must be provided.
            "value": "A String", # 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`.
            "prompts": [ # Optional. The collection of prompts that the agent can present to the
                # user in order to collect value for the parameter.
              "A String",
            ],
            "isList": True or False, # Optional. Indicates whether the parameter represents a list of values.
            "mandatory": True or False, # Optional. Indicates whether the parameter is required. That is,
                # whether the intent cannot be completed without collecting the parameter
                # value.
          },
        ],
        "trainingPhrases": [ # Optional. The collection of examples that the agent is
            # trained on.
          { # Represents an example that the agent is trained on.
            "parts": [ # 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.
                "alias": "A String", # 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.
                "entityType": "A String", # Optional. The entity type name prefixed with `@`.
                    # This field is required for annotated parts of the training phrase.
                "text": "A String", # Required. The text for this part.
                "userDefined": 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.
              },
            ],
            "type": "A String", # Required. The type of the training phrase.
            "name": "A String", # Output only. The unique identifier of this training phrase.
            "timesAddedCount": 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.
          },
        ],
        "followupIntentInfo": [ # Read-only. Information about all followup intents that have this intent as
            # a direct or indirect parent. We populate this field only in the output.
          { # Represents a single followup intent in the chain.
            "followupIntentName": "A String", # The unique identifier of the followup intent.
                # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
            "parentFollowupIntentName": "A String", # The unique identifier of the followup intent's parent.
                # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
          },
        ],
        "webhookState": "A String", # Optional. Indicates whether webhooks are enabled for the intent.
        "resetContexts": True or False, # Optional. Indicates whether to delete all contexts in the current
            # session when this intent is matched.
        "messages": [ # Optional. The collection of rich messages corresponding to the
            # `Response` field in the Dialogflow console.
          { # Corresponds to the `Response` field in the Dialogflow console.
            "simpleResponses": { # The collection of simple response candidates. # The voice and text-only responses for Actions on Google.
                # This message in `QueryResult.fulfillment_messages` and
                # `WebhookResponse.fulfillment_messages` should contain only one
                # `SimpleResponse`.
              "simpleResponses": [ # Required. The list of simple responses.
                { # The simple response message containing speech or text.
                  "textToSpeech": "A String", # One of text_to_speech or ssml must be provided. The plain text of the
                      # speech output. Mutually exclusive with ssml.
                  "displayText": "A String", # Optional. The text to display.
                  "ssml": "A String", # 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.
                },
              ],
            },
            "quickReplies": { # The quick replies response message. # The quick replies response.
              "quickReplies": [ # Optional. The collection of quick replies.
                "A String",
              ],
              "title": "A String", # Optional. The title of the collection of quick replies.
            },
            "platform": "A String", # Optional. The platform that this message is intended for.
            "text": { # The text response message. # The text response.
              "text": [ # Optional. The collection of the agent's responses.
                "A String",
              ],
            },
            "image": { # The image response message. # The image response.
              "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                  # e.g., screen readers.
              "imageUri": "A String", # Optional. The public URI to an image file.
            },
            "suggestions": { # The collection of suggestions. # The suggestion chips for Actions on Google.
              "suggestions": [ # Required. The list of suggested replies.
                { # The suggestion chip message that the user can tap to quickly post a reply
                    # to the conversation.
                  "title": "A String", # Required. The text shown the in the suggestion chip.
                },
              ],
            },
            "linkOutSuggestion": { # The suggestion chip message that allows the user to jump out to the app # The link out suggestion chip for Actions on Google.
                # or website associated with this agent.
              "uri": "A String", # Required. The URI of the app or site to open when the user taps the
                  # suggestion chip.
              "destinationName": "A String", # Required. The name of the app or site this chip is linking to.
            },
            "basicCard": { # The basic card message. Useful for displaying information. # The basic card response for Actions on Google.
              "buttons": [ # Optional. The collection of card buttons.
                { # The button object that appears at the bottom of a card.
                  "openUriAction": { # Opens the given URI. # Required. Action to take when a user taps on the button.
                    "uri": "A String", # Required. The HTTP or HTTPS scheme URI.
                  },
                  "title": "A String", # Required. The title of the button.
                },
              ],
              "subtitle": "A String", # Optional. The subtitle of the card.
              "image": { # The image response message. # Optional. The image for the card.
                "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                    # e.g., screen readers.
                "imageUri": "A String", # Optional. The public URI to an image file.
              },
              "formattedText": "A String", # Required, unless image is present. The body text of the card.
              "title": "A String", # Optional. The title of the card.
            },
            "carouselSelect": { # The card for presenting a carousel of options to select from. # The carousel card response for Actions on Google.
              "items": [ # Required. Carousel items.
                { # An item in the carousel.
                  "info": { # Additional info about the select item for when it is triggered in a # Required. Additional info about the option item.
                      # dialog.
                    "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                        # item in dialog.
                      "A String",
                    ],
                    "key": "A String", # Required. A unique key that will be sent back to the agent if this
                        # response is given.
                  },
                  "image": { # The image response message. # Optional. The image to display.
                    "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                        # e.g., screen readers.
                    "imageUri": "A String", # Optional. The public URI to an image file.
                  },
                  "description": "A String", # Optional. The body text of the card.
                  "title": "A String", # Required. Title of the carousel item.
                },
              ],
            },
            "listSelect": { # The card for presenting a list of options to select from. # The list card response for Actions on Google.
              "items": [ # Required. List items.
                { # An item in the list.
                  "info": { # Additional info about the select item for when it is triggered in a # Required. Additional information about this option.
                      # dialog.
                    "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                        # item in dialog.
                      "A String",
                    ],
                    "key": "A String", # Required. A unique key that will be sent back to the agent if this
                        # response is given.
                  },
                  "image": { # The image response message. # Optional. The image to display.
                    "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                        # e.g., screen readers.
                    "imageUri": "A String", # Optional. The public URI to an image file.
                  },
                  "description": "A String", # Optional. The main text describing the item.
                  "title": "A String", # Required. The title of the list item.
                },
              ],
              "title": "A String", # Optional. The overall title of the list.
            },
            "payload": { # Returns a response containing a custom, platform-specific payload.
                # See the Intent.Message.Platform type for a description of the
                # structure that may be required for your platform.
              "a_key": "", # Properties of the object.
            },
            "card": { # The card response message. # The card response.
              "buttons": [ # Optional. The collection of card buttons.
                { # Optional. Contains information about a button.
                  "text": "A String", # Optional. The text to show on the button.
                  "postback": "A String", # Optional. The text to send back to the Dialogflow API or a URI to
                      # open.
                },
              ],
              "title": "A String", # Optional. The title of the card.
              "subtitle": "A String", # Optional. The subtitle of the card.
              "imageUri": "A String", # Optional. The public URI to an image file for the card.
            },
          },
        ],
        "parentFollowupIntentName": "A String", # Read-only after creation. The unique identifier of the parent intent in the
            # chain of followup intents. You can set this field when creating an intent,
            # for example with CreateIntent or BatchUpdateIntents, in order to
            # make this intent a followup intent.
            #
            # It identifies the parent followup intent.
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
        "defaultResponsePlatforms": [ # Optional. The list of platforms for which the first responses will be
            # copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
          "A String",
        ],
        "priority": 42, # Optional. The priority of this intent. Higher numbers represent higher
            # priorities. If this is zero or unspecified, we use the default
            # priority 500000.
            #
            # Negative numbers mean that the intent is disabled.
        "rootFollowupIntentName": "A String", # Read-only. The unique identifier of the root intent in the chain of
            # followup intents. It identifies the correct followup intents chain for
            # this intent. We populate this field only in the output.
            #
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
        "inputContextNames": [ # Optional. The list of context names required for this intent to be
            # triggered.
            # Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
          "A String",
        ],
        "action": "A String", # Optional. The name of the action associated with the intent.
            # Note: The action name must not contain whitespaces.
        "outputContexts": [ # 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/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
          { # Represents a context.
            "parameters": { # Optional. The collection of parameters associated with this context.
                # Refer to [this
                # doc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)
                # for syntax.
              "a_key": "", # Properties of the object.
            },
            "name": "A String", # Required. The unique identifier of the context. Format:
                # `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`.
                #
                # 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.
            "lifespanCount": 42, # Optional. The number of conversational query requests after which the
                # context expires. If set to `0` (the default) the context expires
                # immediately. Contexts expire automatically after 20 minutes if there
                # are no matching queries.
          },
        ],
        "events": [ # 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.
          "A String",
        ],
      },
    ],
  }</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 'execute()' 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, languageCode=None, intentView=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the specified intent.

Args:
  name: string, The unique identifier of this intent.
Required for Intents.UpdateIntent and Intents.BatchUpdateIntents
methods.
Format: `projects/<Project ID>/agent/intents/<Intent ID>`. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents an intent.
    # Intents convert a number of user expressions or patterns into an action. An
    # action is an extraction of a user command or sentence semantics.
  "isFallback": True or False, # Optional. Indicates whether this is a fallback intent.
  "mlDisabled": True or False, # Optional. Indicates whether Machine Learning is disabled for the intent.
      # Note: If `ml_diabled` 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.
  "displayName": "A String", # Required. The name of this intent.
  "name": "A String", # The unique identifier of this intent.
      # Required for Intents.UpdateIntent and Intents.BatchUpdateIntents
      # methods.
      # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
  "parameters": [ # Optional. The collection of parameters associated with the intent.
    { # Represents intent parameters.
      "displayName": "A String", # Required. The name of the parameter.
      "name": "A String", # The unique identifier of this parameter.
      "defaultValue": "A String", # 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`.
      "entityTypeDisplayName": "A String", # Optional. The name of the entity type, prefixed with `@`, that
          # describes values of the parameter. If the parameter is
          # required, this must be provided.
      "value": "A String", # 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`.
      "prompts": [ # Optional. The collection of prompts that the agent can present to the
          # user in order to collect value for the parameter.
        "A String",
      ],
      "isList": True or False, # Optional. Indicates whether the parameter represents a list of values.
      "mandatory": True or False, # Optional. Indicates whether the parameter is required. That is,
          # whether the intent cannot be completed without collecting the parameter
          # value.
    },
  ],
  "trainingPhrases": [ # Optional. The collection of examples that the agent is
      # trained on.
    { # Represents an example that the agent is trained on.
      "parts": [ # 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.
          "alias": "A String", # 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.
          "entityType": "A String", # Optional. The entity type name prefixed with `@`.
              # This field is required for annotated parts of the training phrase.
          "text": "A String", # Required. The text for this part.
          "userDefined": 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.
        },
      ],
      "type": "A String", # Required. The type of the training phrase.
      "name": "A String", # Output only. The unique identifier of this training phrase.
      "timesAddedCount": 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.
    },
  ],
  "followupIntentInfo": [ # Read-only. Information about all followup intents that have this intent as
      # a direct or indirect parent. We populate this field only in the output.
    { # Represents a single followup intent in the chain.
      "followupIntentName": "A String", # The unique identifier of the followup intent.
          # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
      "parentFollowupIntentName": "A String", # The unique identifier of the followup intent's parent.
          # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    },
  ],
  "webhookState": "A String", # Optional. Indicates whether webhooks are enabled for the intent.
  "resetContexts": True or False, # Optional. Indicates whether to delete all contexts in the current
      # session when this intent is matched.
  "messages": [ # Optional. The collection of rich messages corresponding to the
      # `Response` field in the Dialogflow console.
    { # Corresponds to the `Response` field in the Dialogflow console.
      "simpleResponses": { # The collection of simple response candidates. # The voice and text-only responses for Actions on Google.
          # This message in `QueryResult.fulfillment_messages` and
          # `WebhookResponse.fulfillment_messages` should contain only one
          # `SimpleResponse`.
        "simpleResponses": [ # Required. The list of simple responses.
          { # The simple response message containing speech or text.
            "textToSpeech": "A String", # One of text_to_speech or ssml must be provided. The plain text of the
                # speech output. Mutually exclusive with ssml.
            "displayText": "A String", # Optional. The text to display.
            "ssml": "A String", # 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.
          },
        ],
      },
      "quickReplies": { # The quick replies response message. # The quick replies response.
        "quickReplies": [ # Optional. The collection of quick replies.
          "A String",
        ],
        "title": "A String", # Optional. The title of the collection of quick replies.
      },
      "platform": "A String", # Optional. The platform that this message is intended for.
      "text": { # The text response message. # The text response.
        "text": [ # Optional. The collection of the agent's responses.
          "A String",
        ],
      },
      "image": { # The image response message. # The image response.
        "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
            # e.g., screen readers.
        "imageUri": "A String", # Optional. The public URI to an image file.
      },
      "suggestions": { # The collection of suggestions. # The suggestion chips for Actions on Google.
        "suggestions": [ # Required. The list of suggested replies.
          { # The suggestion chip message that the user can tap to quickly post a reply
              # to the conversation.
            "title": "A String", # Required. The text shown the in the suggestion chip.
          },
        ],
      },
      "linkOutSuggestion": { # The suggestion chip message that allows the user to jump out to the app # The link out suggestion chip for Actions on Google.
          # or website associated with this agent.
        "uri": "A String", # Required. The URI of the app or site to open when the user taps the
            # suggestion chip.
        "destinationName": "A String", # Required. The name of the app or site this chip is linking to.
      },
      "basicCard": { # The basic card message. Useful for displaying information. # The basic card response for Actions on Google.
        "buttons": [ # Optional. The collection of card buttons.
          { # The button object that appears at the bottom of a card.
            "openUriAction": { # Opens the given URI. # Required. Action to take when a user taps on the button.
              "uri": "A String", # Required. The HTTP or HTTPS scheme URI.
            },
            "title": "A String", # Required. The title of the button.
          },
        ],
        "subtitle": "A String", # Optional. The subtitle of the card.
        "image": { # The image response message. # Optional. The image for the card.
          "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
              # e.g., screen readers.
          "imageUri": "A String", # Optional. The public URI to an image file.
        },
        "formattedText": "A String", # Required, unless image is present. The body text of the card.
        "title": "A String", # Optional. The title of the card.
      },
      "carouselSelect": { # The card for presenting a carousel of options to select from. # The carousel card response for Actions on Google.
        "items": [ # Required. Carousel items.
          { # An item in the carousel.
            "info": { # Additional info about the select item for when it is triggered in a # Required. Additional info about the option item.
                # dialog.
              "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                  # item in dialog.
                "A String",
              ],
              "key": "A String", # Required. A unique key that will be sent back to the agent if this
                  # response is given.
            },
            "image": { # The image response message. # Optional. The image to display.
              "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                  # e.g., screen readers.
              "imageUri": "A String", # Optional. The public URI to an image file.
            },
            "description": "A String", # Optional. The body text of the card.
            "title": "A String", # Required. Title of the carousel item.
          },
        ],
      },
      "listSelect": { # The card for presenting a list of options to select from. # The list card response for Actions on Google.
        "items": [ # Required. List items.
          { # An item in the list.
            "info": { # Additional info about the select item for when it is triggered in a # Required. Additional information about this option.
                # dialog.
              "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                  # item in dialog.
                "A String",
              ],
              "key": "A String", # Required. A unique key that will be sent back to the agent if this
                  # response is given.
            },
            "image": { # The image response message. # Optional. The image to display.
              "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                  # e.g., screen readers.
              "imageUri": "A String", # Optional. The public URI to an image file.
            },
            "description": "A String", # Optional. The main text describing the item.
            "title": "A String", # Required. The title of the list item.
          },
        ],
        "title": "A String", # Optional. The overall title of the list.
      },
      "payload": { # Returns a response containing a custom, platform-specific payload.
          # See the Intent.Message.Platform type for a description of the
          # structure that may be required for your platform.
        "a_key": "", # Properties of the object.
      },
      "card": { # The card response message. # The card response.
        "buttons": [ # Optional. The collection of card buttons.
          { # Optional. Contains information about a button.
            "text": "A String", # Optional. The text to show on the button.
            "postback": "A String", # Optional. The text to send back to the Dialogflow API or a URI to
                # open.
          },
        ],
        "title": "A String", # Optional. The title of the card.
        "subtitle": "A String", # Optional. The subtitle of the card.
        "imageUri": "A String", # Optional. The public URI to an image file for the card.
      },
    },
  ],
  "parentFollowupIntentName": "A String", # Read-only after creation. The unique identifier of the parent intent in the
      # chain of followup intents. You can set this field when creating an intent,
      # for example with CreateIntent or BatchUpdateIntents, in order to
      # make this intent a followup intent.
      # 
      # It identifies the parent followup intent.
      # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
  "defaultResponsePlatforms": [ # Optional. The list of platforms for which the first responses will be
      # copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
    "A String",
  ],
  "priority": 42, # Optional. The priority of this intent. Higher numbers represent higher
      # priorities. If this is zero or unspecified, we use the default
      # priority 500000.
      # 
      # Negative numbers mean that the intent is disabled.
  "rootFollowupIntentName": "A String", # Read-only. The unique identifier of the root intent in the chain of
      # followup intents. It identifies the correct followup intents chain for
      # this intent. We populate this field only in the output.
      # 
      # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
  "inputContextNames": [ # Optional. The list of context names required for this intent to be
      # triggered.
      # Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
    "A String",
  ],
  "action": "A String", # Optional. The name of the action associated with the intent.
      # Note: The action name must not contain whitespaces.
  "outputContexts": [ # 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/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
    { # Represents a context.
      "parameters": { # Optional. The collection of parameters associated with this context.
          # Refer to [this
          # doc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)
          # for syntax.
        "a_key": "", # Properties of the object.
      },
      "name": "A String", # Required. The unique identifier of the context. Format:
          # `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`.
          #
          # 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.
      "lifespanCount": 42, # Optional. The number of conversational query requests after which the
          # context expires. If set to `0` (the default) the context expires
          # immediately. Contexts expire automatically after 20 minutes if there
          # are no matching queries.
    },
  ],
  "events": [ # 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.
    "A String",
  ],
}

  languageCode: string, Optional. The language of training phrases, parameters and rich messages
defined in `intent`. If not specified, the agent's default language is
used. [Many
languages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)
are supported. Note: languages must be enabled in the agent before they can
be used.
  intentView: string, Optional. The resource view to apply to the returned intent.
  updateMask: string, Optional. The mask to control which fields get updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an intent.
      # Intents convert a number of user expressions or patterns into an action. An
      # action is an extraction of a user command or sentence semantics.
    "isFallback": True or False, # Optional. Indicates whether this is a fallback intent.
    "mlDisabled": True or False, # Optional. Indicates whether Machine Learning is disabled for the intent.
        # Note: If `ml_diabled` 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.
    "displayName": "A String", # Required. The name of this intent.
    "name": "A String", # The unique identifier of this intent.
        # Required for Intents.UpdateIntent and Intents.BatchUpdateIntents
        # methods.
        # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    "parameters": [ # Optional. The collection of parameters associated with the intent.
      { # Represents intent parameters.
        "displayName": "A String", # Required. The name of the parameter.
        "name": "A String", # The unique identifier of this parameter.
        "defaultValue": "A String", # 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`.
        "entityTypeDisplayName": "A String", # Optional. The name of the entity type, prefixed with `@`, that
            # describes values of the parameter. If the parameter is
            # required, this must be provided.
        "value": "A String", # 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`.
        "prompts": [ # Optional. The collection of prompts that the agent can present to the
            # user in order to collect value for the parameter.
          "A String",
        ],
        "isList": True or False, # Optional. Indicates whether the parameter represents a list of values.
        "mandatory": True or False, # Optional. Indicates whether the parameter is required. That is,
            # whether the intent cannot be completed without collecting the parameter
            # value.
      },
    ],
    "trainingPhrases": [ # Optional. The collection of examples that the agent is
        # trained on.
      { # Represents an example that the agent is trained on.
        "parts": [ # 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.
            "alias": "A String", # 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.
            "entityType": "A String", # Optional. The entity type name prefixed with `@`.
                # This field is required for annotated parts of the training phrase.
            "text": "A String", # Required. The text for this part.
            "userDefined": 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.
          },
        ],
        "type": "A String", # Required. The type of the training phrase.
        "name": "A String", # Output only. The unique identifier of this training phrase.
        "timesAddedCount": 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.
      },
    ],
    "followupIntentInfo": [ # Read-only. Information about all followup intents that have this intent as
        # a direct or indirect parent. We populate this field only in the output.
      { # Represents a single followup intent in the chain.
        "followupIntentName": "A String", # The unique identifier of the followup intent.
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
        "parentFollowupIntentName": "A String", # The unique identifier of the followup intent's parent.
            # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
      },
    ],
    "webhookState": "A String", # Optional. Indicates whether webhooks are enabled for the intent.
    "resetContexts": True or False, # Optional. Indicates whether to delete all contexts in the current
        # session when this intent is matched.
    "messages": [ # Optional. The collection of rich messages corresponding to the
        # `Response` field in the Dialogflow console.
      { # Corresponds to the `Response` field in the Dialogflow console.
        "simpleResponses": { # The collection of simple response candidates. # The voice and text-only responses for Actions on Google.
            # This message in `QueryResult.fulfillment_messages` and
            # `WebhookResponse.fulfillment_messages` should contain only one
            # `SimpleResponse`.
          "simpleResponses": [ # Required. The list of simple responses.
            { # The simple response message containing speech or text.
              "textToSpeech": "A String", # One of text_to_speech or ssml must be provided. The plain text of the
                  # speech output. Mutually exclusive with ssml.
              "displayText": "A String", # Optional. The text to display.
              "ssml": "A String", # 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.
            },
          ],
        },
        "quickReplies": { # The quick replies response message. # The quick replies response.
          "quickReplies": [ # Optional. The collection of quick replies.
            "A String",
          ],
          "title": "A String", # Optional. The title of the collection of quick replies.
        },
        "platform": "A String", # Optional. The platform that this message is intended for.
        "text": { # The text response message. # The text response.
          "text": [ # Optional. The collection of the agent's responses.
            "A String",
          ],
        },
        "image": { # The image response message. # The image response.
          "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
              # e.g., screen readers.
          "imageUri": "A String", # Optional. The public URI to an image file.
        },
        "suggestions": { # The collection of suggestions. # The suggestion chips for Actions on Google.
          "suggestions": [ # Required. The list of suggested replies.
            { # The suggestion chip message that the user can tap to quickly post a reply
                # to the conversation.
              "title": "A String", # Required. The text shown the in the suggestion chip.
            },
          ],
        },
        "linkOutSuggestion": { # The suggestion chip message that allows the user to jump out to the app # The link out suggestion chip for Actions on Google.
            # or website associated with this agent.
          "uri": "A String", # Required. The URI of the app or site to open when the user taps the
              # suggestion chip.
          "destinationName": "A String", # Required. The name of the app or site this chip is linking to.
        },
        "basicCard": { # The basic card message. Useful for displaying information. # The basic card response for Actions on Google.
          "buttons": [ # Optional. The collection of card buttons.
            { # The button object that appears at the bottom of a card.
              "openUriAction": { # Opens the given URI. # Required. Action to take when a user taps on the button.
                "uri": "A String", # Required. The HTTP or HTTPS scheme URI.
              },
              "title": "A String", # Required. The title of the button.
            },
          ],
          "subtitle": "A String", # Optional. The subtitle of the card.
          "image": { # The image response message. # Optional. The image for the card.
            "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                # e.g., screen readers.
            "imageUri": "A String", # Optional. The public URI to an image file.
          },
          "formattedText": "A String", # Required, unless image is present. The body text of the card.
          "title": "A String", # Optional. The title of the card.
        },
        "carouselSelect": { # The card for presenting a carousel of options to select from. # The carousel card response for Actions on Google.
          "items": [ # Required. Carousel items.
            { # An item in the carousel.
              "info": { # Additional info about the select item for when it is triggered in a # Required. Additional info about the option item.
                  # dialog.
                "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                    # item in dialog.
                  "A String",
                ],
                "key": "A String", # Required. A unique key that will be sent back to the agent if this
                    # response is given.
              },
              "image": { # The image response message. # Optional. The image to display.
                "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                    # e.g., screen readers.
                "imageUri": "A String", # Optional. The public URI to an image file.
              },
              "description": "A String", # Optional. The body text of the card.
              "title": "A String", # Required. Title of the carousel item.
            },
          ],
        },
        "listSelect": { # The card for presenting a list of options to select from. # The list card response for Actions on Google.
          "items": [ # Required. List items.
            { # An item in the list.
              "info": { # Additional info about the select item for when it is triggered in a # Required. Additional information about this option.
                  # dialog.
                "synonyms": [ # Optional. A list of synonyms that can also be used to trigger this
                    # item in dialog.
                  "A String",
                ],
                "key": "A String", # Required. A unique key that will be sent back to the agent if this
                    # response is given.
              },
              "image": { # The image response message. # Optional. The image to display.
                "accessibilityText": "A String", # Optional. A text description of the image to be used for accessibility,
                    # e.g., screen readers.
                "imageUri": "A String", # Optional. The public URI to an image file.
              },
              "description": "A String", # Optional. The main text describing the item.
              "title": "A String", # Required. The title of the list item.
            },
          ],
          "title": "A String", # Optional. The overall title of the list.
        },
        "payload": { # Returns a response containing a custom, platform-specific payload.
            # See the Intent.Message.Platform type for a description of the
            # structure that may be required for your platform.
          "a_key": "", # Properties of the object.
        },
        "card": { # The card response message. # The card response.
          "buttons": [ # Optional. The collection of card buttons.
            { # Optional. Contains information about a button.
              "text": "A String", # Optional. The text to show on the button.
              "postback": "A String", # Optional. The text to send back to the Dialogflow API or a URI to
                  # open.
            },
          ],
          "title": "A String", # Optional. The title of the card.
          "subtitle": "A String", # Optional. The subtitle of the card.
          "imageUri": "A String", # Optional. The public URI to an image file for the card.
        },
      },
    ],
    "parentFollowupIntentName": "A String", # Read-only after creation. The unique identifier of the parent intent in the
        # chain of followup intents. You can set this field when creating an intent,
        # for example with CreateIntent or BatchUpdateIntents, in order to
        # make this intent a followup intent.
        #
        # It identifies the parent followup intent.
        # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    "defaultResponsePlatforms": [ # Optional. The list of platforms for which the first responses will be
        # copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).
      "A String",
    ],
    "priority": 42, # Optional. The priority of this intent. Higher numbers represent higher
        # priorities. If this is zero or unspecified, we use the default
        # priority 500000.
        #
        # Negative numbers mean that the intent is disabled.
    "rootFollowupIntentName": "A String", # Read-only. The unique identifier of the root intent in the chain of
        # followup intents. It identifies the correct followup intents chain for
        # this intent. We populate this field only in the output.
        #
        # Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
    "inputContextNames": [ # Optional. The list of context names required for this intent to be
        # triggered.
        # Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
      "A String",
    ],
    "action": "A String", # Optional. The name of the action associated with the intent.
        # Note: The action name must not contain whitespaces.
    "outputContexts": [ # 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/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
      { # Represents a context.
        "parameters": { # Optional. The collection of parameters associated with this context.
            # Refer to [this
            # doc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)
            # for syntax.
          "a_key": "", # Properties of the object.
        },
        "name": "A String", # Required. The unique identifier of the context. Format:
            # `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`.
            #
            # 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.
        "lifespanCount": 42, # Optional. The number of conversational query requests after which the
            # context expires. If set to `0` (the default) the context expires
            # immediately. Contexts expire automatically after 20 minutes if there
            # are no matching queries.
      },
    ],
    "events": [ # 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.
      "A String",
    ],
  }</pre>
</div>

</body></html>