<reponame>martini9393/python-dialogflow
# -*- coding: utf-8 -*-

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

import proto  # type: ignore


from google.cloud.dialogflow_v2beta1.types import context
from google.protobuf import field_mask_pb2 as field_mask  # type: ignore
from google.protobuf import struct_pb2 as struct  # type: ignore


__protobuf__ = proto.module(
    package="google.cloud.dialogflow.v2beta1",
    manifest={
        "IntentView",
        "Intent",
        "ListIntentsRequest",
        "ListIntentsResponse",
        "GetIntentRequest",
        "CreateIntentRequest",
        "UpdateIntentRequest",
        "DeleteIntentRequest",
        "BatchUpdateIntentsRequest",
        "BatchUpdateIntentsResponse",
        "BatchDeleteIntentsRequest",
        "IntentBatch",
    },
)


class IntentView(proto.Enum):
    r"""Represents the options for views of an intent.
    An intent can be a sizable object. Therefore, we provide a
    resource view that does not return training phrases in the
    response by default.
    """
    INTENT_VIEW_UNSPECIFIED = 0
    INTENT_VIEW_FULL = 1


class Intent(proto.Message):
    r"""An intent categorizes an end-user's intention for one conversation
    turn. For each agent, you define many intents, where your combined
    intents can handle a complete conversation. When an end-user writes
    or says something, referred to as an end-user expression or end-user
    input, Dialogflow matches the end-user input to the best intent in
    your agent. Matching an intent is also known as intent
    classification.

    For more information, see the `intent
    guide <https://cloud.google.com/dialogflow/docs/intents-overview>`__.

    Attributes:
        name (str):
            Optional. The unique identifier of this intent. Required for
            [Intents.UpdateIntent][google.cloud.dialogflow.v2beta1.Intents.UpdateIntent]
            and
            [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents]
            methods. Supported formats:

            -  ``projects/<Project ID>/agent/intents/<Intent ID>``
            -  ``projects/<Project ID>/locations/<Location ID>/agent/intents/<Intent ID>``
        display_name (str):
            Required. The name of this intent.
        webhook_state (~.gcd_intent.Intent.WebhookState):
            Optional. Indicates whether webhooks are
            enabled for the intent.
        priority (int):
            Optional. The priority of this intent. Higher numbers
            represent higher priorities.

            -  If the supplied value is unspecified or 0, the service
               translates the value to 500,000, which corresponds to the
               ``Normal`` priority in the console.
            -  If the supplied value is negative, the intent is ignored
               in runtime detect intent requests.
        is_fallback (bool):
            Optional. Indicates whether this is a
            fallback intent.
        ml_enabled (bool):
            Optional. Indicates whether Machine Learning is enabled for
            the intent. Note: If ``ml_enabled`` setting is set to false,
            then this intent is not taken into account during inference
            in ``ML ONLY`` match mode. Also, auto-markup in the UI is
            turned off. DEPRECATED! Please use ``ml_disabled`` field
            instead. NOTE: If both ``ml_enabled`` and ``ml_disabled``
            are either not set or false, then the default value is
            determined as follows:

            -  Before April 15th, 2018 the default is: ml_enabled =
               false / ml_disabled = true.
            -  After April 15th, 2018 the default is: ml_enabled = true
               / ml_disabled = false.
        ml_disabled (bool):
            Optional. Indicates whether Machine Learning is disabled for
            the intent. Note: If ``ml_disabled`` setting is set to true,
            then this intent is not taken into account during inference
            in ``ML ONLY`` match mode. Also, auto-markup in the UI is
            turned off.
        end_interaction (bool):
            Optional. Indicates that this intent ends an
            interaction. Some integrations (e.g., Actions on
            Google or Dialogflow phone gateway) use this
            information to close interaction with an end
            user. Default is false.
        input_context_names (Sequence[str]):
            Optional. The list of context names required for this intent
            to be triggered. Formats:

            -  ``projects/<Project ID>/agent/sessions/-/contexts/<Context ID>``
            -  ``projects/<Project ID>/locations/<Location ID>/agent/sessions/-/contexts/<Context ID>``
        events (Sequence[str]):
            Optional. The collection of event names that
            trigger the intent. If the collection of input
            contexts is not empty, all of the contexts must
            be present in the active user session for an
            event to trigger this intent. Event names are
            limited to 150 characters.
        training_phrases (Sequence[~.gcd_intent.Intent.TrainingPhrase]):
            Optional. The collection of examples that the
            agent is trained on.
        action (str):
            Optional. The name of the action associated
            with the intent. Note: The action name must not
            contain whitespaces.
        output_contexts (Sequence[~.context.Context]):
            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>``.
        reset_contexts (bool):
            Optional. Indicates whether to delete all
            contexts in the current session when this intent
            is matched.
        parameters (Sequence[~.gcd_intent.Intent.Parameter]):
            Optional. The collection of parameters
            associated with the intent.
        messages (Sequence[~.gcd_intent.Intent.Message]):
            Optional. The collection of rich messages corresponding to
            the ``Response`` field in the Dialogflow console.
        default_response_platforms (Sequence[~.gcd_intent.Intent.Message.Platform]):
            Optional. The list of platforms for which the first
            responses will be copied from the messages in
            PLATFORM_UNSPECIFIED (i.e. default platform).
        root_followup_intent_name (str):
            Output only. The unique identifier of the root intent in the
            chain of followup intents. It identifies the correct
            followup intents chain for this intent.

            Format: ``projects/<Project ID>/agent/intents/<Intent ID>``.
        parent_followup_intent_name (str):
            Optional. The unique identifier of the parent intent in the
            chain of followup intents. You can set this field when
            creating an intent, for example with
            [CreateIntent][google.cloud.dialogflow.v2beta1.Intents.CreateIntent]
            or
            [BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents],
            in order to make this intent a followup intent.

            It identifies the parent followup intent. Format:
            ``projects/<Project ID>/agent/intents/<Intent ID>``.
        followup_intent_info (Sequence[~.gcd_intent.Intent.FollowupIntentInfo]):
            Output only. Information about all followup
            intents that have this intent as a direct or
            indirect parent. We populate this field only in
            the output.
    """

    class WebhookState(proto.Enum):
        r"""Represents the different states that webhooks can be in."""
        WEBHOOK_STATE_UNSPECIFIED = 0
        WEBHOOK_STATE_ENABLED = 1
        WEBHOOK_STATE_ENABLED_FOR_SLOT_FILLING = 2

    class TrainingPhrase(proto.Message):
        r"""Represents an example that the agent is trained on.

        Attributes:
            name (str):
                Output only. The unique identifier of this
                training phrase.
            type_ (~.gcd_intent.Intent.TrainingPhrase.Type):
                Required. The type of the training phrase.
            parts (Sequence[~.gcd_intent.Intent.TrainingPhrase.Part]):
                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][google.cloud.dialogflow.v2beta1.Intent.TrainingPhrase.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.
            times_added_count (int):
                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.
        """

        class Type(proto.Enum):
            r"""Represents different types of training phrases."""
            TYPE_UNSPECIFIED = 0
            EXAMPLE = 1
            TEMPLATE = 2

        class Part(proto.Message):
            r"""Represents a part of a training phrase.

            Attributes:
                text (str):
                    Required. The text for this part.
                entity_type (str):
                    Optional. The entity type name prefixed with ``@``. This
                    field is required for annotated parts of the training
                    phrase.
                alias (str):
                    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.
                user_defined (bool):
                    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.
            """

            text = proto.Field(proto.STRING, number=1)

            entity_type = proto.Field(proto.STRING, number=2)

            alias = proto.Field(proto.STRING, number=3)

            user_defined = proto.Field(proto.BOOL, number=4)

        name = proto.Field(proto.STRING, number=1)

        type_ = proto.Field(proto.ENUM, number=2, enum="Intent.TrainingPhrase.Type",)

        parts = proto.RepeatedField(
            proto.MESSAGE, number=3, message="Intent.TrainingPhrase.Part",
        )

        times_added_count = proto.Field(proto.INT32, number=4)

    class Parameter(proto.Message):
        r"""Represents intent parameters.

        Attributes:
            name (str):
                The unique identifier of this parameter.
            display_name (str):
                Required. The name of the parameter.
            value (str):
                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``.
            default_value (str):
                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``.
            entity_type_display_name (str):
                Optional. The name of the entity type, prefixed with ``@``,
                that describes values of the parameter. If the parameter is
                required, this must be provided.
            mandatory (bool):
                Optional. Indicates whether the parameter is
                required. That is, whether the intent cannot be
                completed without collecting the parameter
                value.
            prompts (Sequence[str]):
                Optional. The collection of prompts that the
                agent can present to the user in order to
                collect a value for the parameter.
            is_list (bool):
                Optional. Indicates whether the parameter
                represents a list of values.
        """

        name = proto.Field(proto.STRING, number=1)

        display_name = proto.Field(proto.STRING, number=2)

        value = proto.Field(proto.STRING, number=3)

        default_value = proto.Field(proto.STRING, number=4)

        entity_type_display_name = proto.Field(proto.STRING, number=5)

        mandatory = proto.Field(proto.BOOL, number=6)

        prompts = proto.RepeatedField(proto.STRING, number=7)

        is_list = proto.Field(proto.BOOL, number=8)

    class Message(proto.Message):
        r"""Corresponds to the ``Response`` field in the Dialogflow console.

        Attributes:
            text (~.gcd_intent.Intent.Message.Text):
                Returns a text response.
            image (~.gcd_intent.Intent.Message.Image):
                Displays an image.
            quick_replies (~.gcd_intent.Intent.Message.QuickReplies):
                Displays quick replies.
            card (~.gcd_intent.Intent.Message.Card):
                Displays a card.
            payload (~.struct.Struct):
                A custom platform-specific response.
            simple_responses (~.gcd_intent.Intent.Message.SimpleResponses):
                Returns a voice or text-only response for
                Actions on Google.
            basic_card (~.gcd_intent.Intent.Message.BasicCard):
                Displays a basic card for Actions on Google.
            suggestions (~.gcd_intent.Intent.Message.Suggestions):
                Displays suggestion chips for Actions on
                Google.
            link_out_suggestion (~.gcd_intent.Intent.Message.LinkOutSuggestion):
                Displays a link out suggestion chip for
                Actions on Google.
            list_select (~.gcd_intent.Intent.Message.ListSelect):
                Displays a list card for Actions on Google.
            carousel_select (~.gcd_intent.Intent.Message.CarouselSelect):
                Displays a carousel card for Actions on
                Google.
            telephony_play_audio (~.gcd_intent.Intent.Message.TelephonyPlayAudio):
                Plays audio from a file in Telephony Gateway.
            telephony_synthesize_speech (~.gcd_intent.Intent.Message.TelephonySynthesizeSpeech):
                Synthesizes speech in Telephony Gateway.
            telephony_transfer_call (~.gcd_intent.Intent.Message.TelephonyTransferCall):
                Transfers the call in Telephony Gateway.
            rbm_text (~.gcd_intent.Intent.Message.RbmText):
                Rich Business Messaging (RBM) text response.
                RBM allows businesses to send enriched and
                branded versions of SMS. See
                https://jibe.google.com/business-messaging.
            rbm_standalone_rich_card (~.gcd_intent.Intent.Message.RbmStandaloneCard):
                Standalone Rich Business Messaging (RBM) rich
                card response.
            rbm_carousel_rich_card (~.gcd_intent.Intent.Message.RbmCarouselCard):
                Rich Business Messaging (RBM) carousel rich
                card response.
            browse_carousel_card (~.gcd_intent.Intent.Message.BrowseCarouselCard):
                Browse carousel card for Actions on Google.
            table_card (~.gcd_intent.Intent.Message.TableCard):
                Table card for Actions on Google.
            media_content (~.gcd_intent.Intent.Message.MediaContent):
                The media content card for Actions on Google.
            platform (~.gcd_intent.Intent.Message.Platform):
                Optional. The platform that this message is
                intended for.
        """

        class Platform(proto.Enum):
            r"""Represents different platforms that a rich message can be
            intended for.
            """
            PLATFORM_UNSPECIFIED = 0
            FACEBOOK = 1
            SLACK = 2
            TELEGRAM = 3
            KIK = 4
            SKYPE = 5
            LINE = 6
            VIBER = 7
            ACTIONS_ON_GOOGLE = 8
            TELEPHONY = 10
            GOOGLE_HANGOUTS = 11

        class Text(proto.Message):
            r"""The text response message.

            Attributes:
                text (Sequence[str]):
                    Optional. The collection of the agent's
                    responses.
            """

            text = proto.RepeatedField(proto.STRING, number=1)

        class Image(proto.Message):
            r"""The image response message.

            Attributes:
                image_uri (str):
                    Optional. The public URI to an image file.
                accessibility_text (str):
                    A text description of the image to be used for
                    accessibility, e.g., screen readers. Required if image_uri
                    is set for CarouselSelect.
            """

            image_uri = proto.Field(proto.STRING, number=1)

            accessibility_text = proto.Field(proto.STRING, number=2)

        class QuickReplies(proto.Message):
            r"""The quick replies response message.

            Attributes:
                title (str):
                    Optional. The title of the collection of
                    quick replies.
                quick_replies (Sequence[str]):
                    Optional. The collection of quick replies.
            """

            title = proto.Field(proto.STRING, number=1)

            quick_replies = proto.RepeatedField(proto.STRING, number=2)

        class Card(proto.Message):
            r"""The card response message.

            Attributes:
                title (str):
                    Optional. The title of the card.
                subtitle (str):
                    Optional. The subtitle of the card.
                image_uri (str):
                    Optional. The public URI to an image file for
                    the card.
                buttons (Sequence[~.gcd_intent.Intent.Message.Card.Button]):
                    Optional. The collection of card buttons.
            """

            class Button(proto.Message):
                r"""Optional. Contains information about a button.

                Attributes:
                    text (str):
                        Optional. The text to show on the button.
                    postback (str):
                        Optional. The text to send back to the
                        Dialogflow API or a URI to open.
                """

                text = proto.Field(proto.STRING, number=1)

                postback = proto.Field(proto.STRING, number=2)

            title = proto.Field(proto.STRING, number=1)

            subtitle = proto.Field(proto.STRING, number=2)

            image_uri = proto.Field(proto.STRING, number=3)

            buttons = proto.RepeatedField(
                proto.MESSAGE, number=4, message="Intent.Message.Card.Button",
            )

        class SimpleResponse(proto.Message):
            r"""The simple response message containing speech or text.

            Attributes:
                text_to_speech (str):
                    One of text_to_speech or ssml must be provided. The plain
                    text of the speech output. Mutually exclusive with ssml.
                ssml (str):
                    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.
                display_text (str):
                    Optional. The text to display.
            """

            text_to_speech = proto.Field(proto.STRING, number=1)

            ssml = proto.Field(proto.STRING, number=2)

            display_text = proto.Field(proto.STRING, number=3)

        class SimpleResponses(proto.Message):
            r"""The collection of simple response candidates. This message in
            ``QueryResult.fulfillment_messages`` and
            ``WebhookResponse.fulfillment_messages`` should contain only one
            ``SimpleResponse``.

            Attributes:
                simple_responses (Sequence[~.gcd_intent.Intent.Message.SimpleResponse]):
                    Required. The list of simple responses.
            """

            simple_responses = proto.RepeatedField(
                proto.MESSAGE, number=1, message="Intent.Message.SimpleResponse",
            )

        class BasicCard(proto.Message):
            r"""The basic card message. Useful for displaying information.

            Attributes:
                title (str):
                    Optional. The title of the card.
                subtitle (str):
                    Optional. The subtitle of the card.
                formatted_text (str):
                    Required, unless image is present. The body
                    text of the card.
                image (~.gcd_intent.Intent.Message.Image):
                    Optional. The image for the card.
                buttons (Sequence[~.gcd_intent.Intent.Message.BasicCard.Button]):
                    Optional. The collection of card buttons.
            """

            class Button(proto.Message):
                r"""The button object that appears at the bottom of a card.

                Attributes:
                    title (str):
                        Required. The title of the button.
                    open_uri_action (~.gcd_intent.Intent.Message.BasicCard.Button.OpenUriAction):
                        Required. Action to take when a user taps on
                        the button.
                """

                class OpenUriAction(proto.Message):
                    r"""Opens the given URI.

                    Attributes:
                        uri (str):
                            Required. The HTTP or HTTPS scheme URI.
                    """

                    uri = proto.Field(proto.STRING, number=1)

                title = proto.Field(proto.STRING, number=1)

                open_uri_action = proto.Field(
                    proto.MESSAGE,
                    number=2,
                    message="Intent.Message.BasicCard.Button.OpenUriAction",
                )

            title = proto.Field(proto.STRING, number=1)

            subtitle = proto.Field(proto.STRING, number=2)

            formatted_text = proto.Field(proto.STRING, number=3)

            image = proto.Field(
                proto.MESSAGE, number=4, message="Intent.Message.Image",
            )

            buttons = proto.RepeatedField(
                proto.MESSAGE, number=5, message="Intent.Message.BasicCard.Button",
            )

        class Suggestion(proto.Message):
            r"""The suggestion chip message that the user can tap to quickly
            post a reply to the conversation.

            Attributes:
                title (str):
                    Required. The text shown the in the
                    suggestion chip.
            """

            title = proto.Field(proto.STRING, number=1)

        class Suggestions(proto.Message):
            r"""The collection of suggestions.

            Attributes:
                suggestions (Sequence[~.gcd_intent.Intent.Message.Suggestion]):
                    Required. The list of suggested replies.
            """

            suggestions = proto.RepeatedField(
                proto.MESSAGE, number=1, message="Intent.Message.Suggestion",
            )

        class LinkOutSuggestion(proto.Message):
            r"""The suggestion chip message that allows the user to jump out
            to the app or website associated with this agent.

            Attributes:
                destination_name (str):
                    Required. The name of the app or site this
                    chip is linking to.
                uri (str):
                    Required. The URI of the app or site to open
                    when the user taps the suggestion chip.
            """

            destination_name = proto.Field(proto.STRING, number=1)

            uri = proto.Field(proto.STRING, number=2)

        class ListSelect(proto.Message):
            r"""The card for presenting a list of options to select from.

            Attributes:
                title (str):
                    Optional. The overall title of the list.
                items (Sequence[~.gcd_intent.Intent.Message.ListSelect.Item]):
                    Required. List items.
                subtitle (str):
                    Optional. Subtitle of the list.
            """

            class Item(proto.Message):
                r"""An item in the list.

                Attributes:
                    info (~.gcd_intent.Intent.Message.SelectItemInfo):
                        Required. Additional information about this
                        option.
                    title (str):
                        Required. The title of the list item.
                    description (str):
                        Optional. The main text describing the item.
                    image (~.gcd_intent.Intent.Message.Image):
                        Optional. The image to display.
                """

                info = proto.Field(
                    proto.MESSAGE, number=1, message="Intent.Message.SelectItemInfo",
                )

                title = proto.Field(proto.STRING, number=2)

                description = proto.Field(proto.STRING, number=3)

                image = proto.Field(
                    proto.MESSAGE, number=4, message="Intent.Message.Image",
                )

            title = proto.Field(proto.STRING, number=1)

            items = proto.RepeatedField(
                proto.MESSAGE, number=2, message="Intent.Message.ListSelect.Item",
            )

            subtitle = proto.Field(proto.STRING, number=3)

        class CarouselSelect(proto.Message):
            r"""The card for presenting a carousel of options to select from.

            Attributes:
                items (Sequence[~.gcd_intent.Intent.Message.CarouselSelect.Item]):
                    Required. Carousel items.
            """

            class Item(proto.Message):
                r"""An item in the carousel.

                Attributes:
                    info (~.gcd_intent.Intent.Message.SelectItemInfo):
                        Required. Additional info about the option
                        item.
                    title (str):
                        Required. Title of the carousel item.
                    description (str):
                        Optional. The body text of the card.
                    image (~.gcd_intent.Intent.Message.Image):
                        Optional. The image to display.
                """

                info = proto.Field(
                    proto.MESSAGE, number=1, message="Intent.Message.SelectItemInfo",
                )

                title = proto.Field(proto.STRING, number=2)

                description = proto.Field(proto.STRING, number=3)

                image = proto.Field(
                    proto.MESSAGE, number=4, message="Intent.Message.Image",
                )

            items = proto.RepeatedField(
                proto.MESSAGE, number=1, message="Intent.Message.CarouselSelect.Item",
            )

        class SelectItemInfo(proto.Message):
            r"""Additional info about the select item for when it is
            triggered in a dialog.

            Attributes:
                key (str):
                    Required. A unique key that will be sent back
                    to the agent if this response is given.
                synonyms (Sequence[str]):
                    Optional. A list of synonyms that can also be
                    used to trigger this item in dialog.
            """

            key = proto.Field(proto.STRING, number=1)

            synonyms = proto.RepeatedField(proto.STRING, number=2)

        class TelephonyPlayAudio(proto.Message):
            r"""Plays audio from a file in Telephony Gateway.

            Attributes:
                audio_uri (str):
                    Required. URI to a Google Cloud Storage object containing
                    the audio to play, e.g., "gs://bucket/object". The object
                    must contain a single channel (mono) of linear PCM audio (2
                    bytes / sample) at 8kHz.

                    This object must be readable by the
                    ``<EMAIL>-<Project <EMAIL>.com``
                    service account where is the number of the Telephony Gateway
                    project (usually the same as the Dialogflow agent project).
                    If the Google Cloud Storage bucket is in the Telephony
                    Gateway project, this permission is added by default when
                    enabling the Dialogflow V2 API.

                    For audio from other sources, consider using the
                    ``TelephonySynthesizeSpeech`` message with SSML.
            """

            audio_uri = proto.Field(proto.STRING, number=1)

        class TelephonySynthesizeSpeech(proto.Message):
            r"""Synthesizes speech and plays back the synthesized audio to the
            caller in Telephony Gateway.

            Telephony Gateway takes the synthesizer settings from
            ``DetectIntentResponse.output_audio_config`` which can either be set
            at request-level or can come from the agent-level synthesizer
            config.

            Attributes:
                text (str):
                    The raw text to be synthesized.
                ssml (str):
                    The SSML to be synthesized. For more information, see
                    `SSML <https://developers.google.com/actions/reference/ssml>`__.
            """

            text = proto.Field(proto.STRING, number=1, oneof="source")

            ssml = proto.Field(proto.STRING, number=2, oneof="source")

        class TelephonyTransferCall(proto.Message):
            r"""Transfers the call in Telephony Gateway.

            Attributes:
                phone_number (str):
                    Required. The phone number to transfer the call to in `E.164
                    format <https://en.wikipedia.org/wiki/E.164>`__.

                    We currently only allow transferring to US numbers
                    (+1xxxyyyzzzz).
            """

            phone_number = proto.Field(proto.STRING, number=1)

        class RbmText(proto.Message):
            r"""Rich Business Messaging (RBM) text response with suggestions.

            Attributes:
                text (str):
                    Required. Text sent and displayed to the
                    user.
                rbm_suggestion (Sequence[~.gcd_intent.Intent.Message.RbmSuggestion]):
                    Optional. One or more suggestions to show to
                    the user.
            """

            text = proto.Field(proto.STRING, number=1)

            rbm_suggestion = proto.RepeatedField(
                proto.MESSAGE, number=2, message="Intent.Message.RbmSuggestion",
            )

        class RbmCarouselCard(proto.Message):
            r"""Carousel Rich Business Messaging (RBM) rich card.

            Rich cards allow you to respond to users with more vivid content,
            e.g. with media and suggestions.

            If you want to show a single card with more control over the layout,
            please use
            [RbmStandaloneCard][google.cloud.dialogflow.v2beta1.Intent.Message.RbmStandaloneCard]
            instead.

            Attributes:
                card_width (~.gcd_intent.Intent.Message.RbmCarouselCard.CardWidth):
                    Required. The width of the cards in the
                    carousel.
                card_contents (Sequence[~.gcd_intent.Intent.Message.RbmCardContent]):
                    Required. The cards in the carousel. A
                    carousel must have at least 2 cards and at most
                    10.
            """

            class CardWidth(proto.Enum):
                r"""The width of the cards in the carousel."""
                CARD_WIDTH_UNSPECIFIED = 0
                SMALL = 1
                MEDIUM = 2

            card_width = proto.Field(
                proto.ENUM, number=1, enum="Intent.Message.RbmCarouselCard.CardWidth",
            )

            card_contents = proto.RepeatedField(
                proto.MESSAGE, number=2, message="Intent.Message.RbmCardContent",
            )

        class RbmStandaloneCard(proto.Message):
            r"""Standalone Rich Business Messaging (RBM) rich card.

            Rich cards allow you to respond to users with more vivid content,
            e.g. with media and suggestions.

            You can group multiple rich cards into one using
            [RbmCarouselCard][google.cloud.dialogflow.v2beta1.Intent.Message.RbmCarouselCard]
            but carousel cards will give you less control over the card layout.

            Attributes:
                card_orientation (~.gcd_intent.Intent.Message.RbmStandaloneCard.CardOrientation):
                    Required. Orientation of the card.
                thumbnail_image_alignment (~.gcd_intent.Intent.Message.RbmStandaloneCard.ThumbnailImageAlignment):
                    Required if orientation is horizontal.
                    Image preview alignment for standalone cards
                    with horizontal layout.
                card_content (~.gcd_intent.Intent.Message.RbmCardContent):
                    Required. Card content.
            """

            class CardOrientation(proto.Enum):
                r"""Orientation of the card."""
                CARD_ORIENTATION_UNSPECIFIED = 0
                HORIZONTAL = 1
                VERTICAL = 2

            class ThumbnailImageAlignment(proto.Enum):
                r"""Thumbnail preview alignment for standalone cards with
                horizontal layout.
                """
                THUMBNAIL_IMAGE_ALIGNMENT_UNSPECIFIED = 0
                LEFT = 1
                RIGHT = 2

            card_orientation = proto.Field(
                proto.ENUM,
                number=1,
                enum="Intent.Message.RbmStandaloneCard.CardOrientation",
            )

            thumbnail_image_alignment = proto.Field(
                proto.ENUM,
                number=2,
                enum="Intent.Message.RbmStandaloneCard.ThumbnailImageAlignment",
            )

            card_content = proto.Field(
                proto.MESSAGE, number=3, message="Intent.Message.RbmCardContent",
            )

        class RbmCardContent(proto.Message):
            r"""Rich Business Messaging (RBM) Card content

            Attributes:
                title (str):
                    Optional. Title of the card (at most 200
                    bytes).
                    At least one of the title, description or media
                    must be set.
                description (str):
                    Optional. Description of the card (at most
                    2000 bytes).
                    At least one of the title, description or media
                    must be set.
                media (~.gcd_intent.Intent.Message.RbmCardContent.RbmMedia):
                    Optional. However at least one of the title,
                    description or media must be set. Media (image,
                    GIF or a video) to include in the card.
                suggestions (Sequence[~.gcd_intent.Intent.Message.RbmSuggestion]):
                    Optional. List of suggestions to include in
                    the card.
            """

            class RbmMedia(proto.Message):
                r"""Rich Business Messaging (RBM) Media displayed in Cards The following
                media-types are currently supported:

                Image Types

                -  image/jpeg
                -  image/jpg'
                -  image/gif
                -  image/png

                Video Types

                -  video/h263
                -  video/m4v
                -  video/mp4
                -  video/mpeg
                -  video/mpeg4
                -  video/webm

                Attributes:
                    file_uri (str):
                        Required. Publicly reachable URI of the file.
                        The RBM platform determines the MIME type of the
                        file from the content-type field in the HTTP
                        headers when the platform fetches the file. The
                        content-type field must be present and accurate
                        in the HTTP response from the URL.
                    thumbnail_uri (str):
                        Optional. Publicly reachable URI of the
                        thumbnail.If you don't provide a thumbnail URI,
                        the RBM platform displays a blank placeholder
                        thumbnail until the user's device downloads the
                        file. Depending on the user's setting, the file
                        may not download automatically and may require
                        the user to tap a download button.
                    height (~.gcd_intent.Intent.Message.RbmCardContent.RbmMedia.Height):
                        Required for cards with vertical orientation.
                        The height of the media within a rich card with
                        a vertical layout. For a standalone card with
                        horizontal layout, height is not customizable,
                        and this field is ignored.
                """

                class Height(proto.Enum):
                    r"""Media height"""
                    HEIGHT_UNSPECIFIED = 0
                    SHORT = 1
                    MEDIUM = 2
                    TALL = 3

                file_uri = proto.Field(proto.STRING, number=1)

                thumbnail_uri = proto.Field(proto.STRING, number=2)

                height = proto.Field(
                    proto.ENUM,
                    number=3,
                    enum="Intent.Message.RbmCardContent.RbmMedia.Height",
                )

            title = proto.Field(proto.STRING, number=1)

            description = proto.Field(proto.STRING, number=2)

            media = proto.Field(
                proto.MESSAGE,
                number=3,
                message="Intent.Message.RbmCardContent.RbmMedia",
            )

            suggestions = proto.RepeatedField(
                proto.MESSAGE, number=4, message="Intent.Message.RbmSuggestion",
            )

        class RbmSuggestion(proto.Message):
            r"""Rich Business Messaging (RBM) suggestion. Suggestions allow
            user to easily select/click a predefined response or perform an
            action (like opening a web uri).

            Attributes:
                reply (~.gcd_intent.Intent.Message.RbmSuggestedReply):
                    Predefined replies for user to select instead
                    of typing
                action (~.gcd_intent.Intent.Message.RbmSuggestedAction):
                    Predefined client side actions that user can
                    choose
            """

            reply = proto.Field(
                proto.MESSAGE,
                number=1,
                oneof="suggestion",
                message="Intent.Message.RbmSuggestedReply",
            )

            action = proto.Field(
                proto.MESSAGE,
                number=2,
                oneof="suggestion",
                message="Intent.Message.RbmSuggestedAction",
            )

        class RbmSuggestedReply(proto.Message):
            r"""Rich Business Messaging (RBM) suggested reply that the user
            can click instead of typing in their own response.

            Attributes:
                text (str):
                    Suggested reply text.
                postback_data (str):
                    Opaque payload that the Dialogflow receives
                    in a user event when the user taps the suggested
                    reply. This data will be also forwarded to
                    webhook to allow performing custom business
                    logic.
            """

            text = proto.Field(proto.STRING, number=1)

            postback_data = proto.Field(proto.STRING, number=2)

        class RbmSuggestedAction(proto.Message):
            r"""Rich Business Messaging (RBM) suggested client-side action
            that the user can choose from the card.

            Attributes:
                text (str):
                    Text to display alongside the action.
                postback_data (str):
                    Opaque payload that the Dialogflow receives
                    in a user event when the user taps the suggested
                    action. This data will be also forwarded to
                    webhook to allow performing custom business
                    logic.
                dial (~.gcd_intent.Intent.Message.RbmSuggestedAction.RbmSuggestedActionDial):
                    Suggested client side action: Dial a phone
                    number
                open_url (~.gcd_intent.Intent.Message.RbmSuggestedAction.RbmSuggestedActionOpenUri):
                    Suggested client side action: Open a URI on
                    device
                share_location (~.gcd_intent.Intent.Message.RbmSuggestedAction.RbmSuggestedActionShareLocation):
                    Suggested client side action: Share user
                    location
            """

            class RbmSuggestedActionDial(proto.Message):
                r"""Opens the user's default dialer app with the specified phone
                number but does not dial automatically.

                Attributes:
                    phone_number (str):
                        Required. The phone number to fill in the default dialer
                        app. This field should be in
                        `E.164 <https://en.wikipedia.org/wiki/E.164>`__ format. An
                        example of a correctly formatted phone number: +15556767888.
                """

                phone_number = proto.Field(proto.STRING, number=1)

            class RbmSuggestedActionOpenUri(proto.Message):
                r"""Opens the user's default web browser app to the specified uri
                If the user has an app installed that is
                registered as the default handler for the URL, then this app
                will be opened instead, and its icon will be used in the
                suggested action UI.

                Attributes:
                    uri (str):
                        Required. The uri to open on the user device
                """

                uri = proto.Field(proto.STRING, number=1)

            class RbmSuggestedActionShareLocation(proto.Message):
                r"""Opens the device's location chooser so the user can pick a
                location to send back to the agent.
                """

            text = proto.Field(proto.STRING, number=1)

            postback_data = proto.Field(proto.STRING, number=2)

            dial = proto.Field(
                proto.MESSAGE,
                number=3,
                oneof="action",
                message="Intent.Message.RbmSuggestedAction.RbmSuggestedActionDial",
            )

            open_url = proto.Field(
                proto.MESSAGE,
                number=4,
                oneof="action",
                message="Intent.Message.RbmSuggestedAction.RbmSuggestedActionOpenUri",
            )

            share_location = proto.Field(
                proto.MESSAGE,
                number=5,
                oneof="action",
                message="Intent.Message.RbmSuggestedAction.RbmSuggestedActionShareLocation",
            )

        class MediaContent(proto.Message):
            r"""The media content card for Actions on Google.

            Attributes:
                media_type (~.gcd_intent.Intent.Message.MediaContent.ResponseMediaType):
                    Optional. What type of media is the content
                    (ie "audio").
                media_objects (Sequence[~.gcd_intent.Intent.Message.MediaContent.ResponseMediaObject]):
                    Required. List of media objects.
            """

            class ResponseMediaType(proto.Enum):
                r"""Format of response media type."""
                RESPONSE_MEDIA_TYPE_UNSPECIFIED = 0
                AUDIO = 1

            class ResponseMediaObject(proto.Message):
                r"""Response media object for media content card.

                Attributes:
                    name (str):
                        Required. Name of media card.
                    description (str):
                        Optional. Description of media card.
                    large_image (~.gcd_intent.Intent.Message.Image):
                        Optional. Image to display above media
                        content.
                    icon (~.gcd_intent.Intent.Message.Image):
                        Optional. Icon to display above media
                        content.
                    content_url (str):
                        Required. Url where the media is stored.
                """

                name = proto.Field(proto.STRING, number=1)

                description = proto.Field(proto.STRING, number=2)

                large_image = proto.Field(
                    proto.MESSAGE,
                    number=3,
                    oneof="image",
                    message="Intent.Message.Image",
                )

                icon = proto.Field(
                    proto.MESSAGE,
                    number=4,
                    oneof="image",
                    message="Intent.Message.Image",
                )

                content_url = proto.Field(proto.STRING, number=5)

            media_type = proto.Field(
                proto.ENUM,
                number=1,
                enum="Intent.Message.MediaContent.ResponseMediaType",
            )

            media_objects = proto.RepeatedField(
                proto.MESSAGE,
                number=2,
                message="Intent.Message.MediaContent.ResponseMediaObject",
            )

        class BrowseCarouselCard(proto.Message):
            r"""Browse Carousel Card for Actions on Google.
            https://developers.google.com/actions/assistant/responses#browsing_carousel

            Attributes:
                items (Sequence[~.gcd_intent.Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem]):
                    Required. List of items in the Browse
                    Carousel Card. Minimum of two items, maximum of
                    ten.
                image_display_options (~.gcd_intent.Intent.Message.BrowseCarouselCard.ImageDisplayOptions):
                    Optional. Settings for displaying the image. Applies to
                    every image in
                    [items][google.cloud.dialogflow.v2beta1.Intent.Message.BrowseCarouselCard.items].
            """

            class ImageDisplayOptions(proto.Enum):
                r"""Image display options for Actions on Google. This should be
                used for when the image's aspect ratio does not match the image
                container's aspect ratio.
                """
                IMAGE_DISPLAY_OPTIONS_UNSPECIFIED = 0
                GRAY = 1
                WHITE = 2
                CROPPED = 3
                BLURRED_BACKGROUND = 4

            class BrowseCarouselCardItem(proto.Message):
                r"""Browsing carousel tile

                Attributes:
                    open_uri_action (~.gcd_intent.Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem.OpenUrlAction):
                        Required. Action to present to the user.
                    title (str):
                        Required. Title of the carousel item. Maximum
                        of two lines of text.
                    description (str):
                        Optional. Description of the carousel item.
                        Maximum of four lines of text.
                    image (~.gcd_intent.Intent.Message.Image):
                        Optional. Hero image for the carousel item.
                    footer (str):
                        Optional. Text that appears at the bottom of
                        the Browse Carousel Card. Maximum of one line of
                        text.
                """

                class OpenUrlAction(proto.Message):
                    r"""Actions on Google action to open a given url.

                    Attributes:
                        url (str):
                            Required. URL
                        url_type_hint (~.gcd_intent.Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem.OpenUrlAction.UrlTypeHint):
                            Optional. Specifies the type of viewer that
                            is used when opening the URL. Defaults to
                            opening via web browser.
                    """

                    class UrlTypeHint(proto.Enum):
                        r"""Type of the URI."""
                        URL_TYPE_HINT_UNSPECIFIED = 0
                        AMP_ACTION = 1
                        AMP_CONTENT = 2

                    url = proto.Field(proto.STRING, number=1)

                    url_type_hint = proto.Field(
                        proto.ENUM,
                        number=3,
                        enum="Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem.OpenUrlAction.UrlTypeHint",
                    )

                open_uri_action = proto.Field(
                    proto.MESSAGE,
                    number=1,
                    message="Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem.OpenUrlAction",
                )

                title = proto.Field(proto.STRING, number=2)

                description = proto.Field(proto.STRING, number=3)

                image = proto.Field(
                    proto.MESSAGE, number=4, message="Intent.Message.Image",
                )

                footer = proto.Field(proto.STRING, number=5)

            items = proto.RepeatedField(
                proto.MESSAGE,
                number=1,
                message="Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem",
            )

            image_display_options = proto.Field(
                proto.ENUM,
                number=2,
                enum="Intent.Message.BrowseCarouselCard.ImageDisplayOptions",
            )

        class TableCard(proto.Message):
            r"""Table card for Actions on Google.

            Attributes:
                title (str):
                    Required. Title of the card.
                subtitle (str):
                    Optional. Subtitle to the title.
                image (~.gcd_intent.Intent.Message.Image):
                    Optional. Image which should be displayed on
                    the card.
                column_properties (Sequence[~.gcd_intent.Intent.Message.ColumnProperties]):
                    Optional. Display properties for the columns
                    in this table.
                rows (Sequence[~.gcd_intent.Intent.Message.TableCardRow]):
                    Optional. Rows in this table of data.
                buttons (Sequence[~.gcd_intent.Intent.Message.BasicCard.Button]):
                    Optional. List of buttons for the card.
            """

            title = proto.Field(proto.STRING, number=1)

            subtitle = proto.Field(proto.STRING, number=2)

            image = proto.Field(
                proto.MESSAGE, number=3, message="Intent.Message.Image",
            )

            column_properties = proto.RepeatedField(
                proto.MESSAGE, number=4, message="Intent.Message.ColumnProperties",
            )

            rows = proto.RepeatedField(
                proto.MESSAGE, number=5, message="Intent.Message.TableCardRow",
            )

            buttons = proto.RepeatedField(
                proto.MESSAGE, number=6, message="Intent.Message.BasicCard.Button",
            )

        class ColumnProperties(proto.Message):
            r"""Column properties for
            [TableCard][google.cloud.dialogflow.v2beta1.Intent.Message.TableCard].

            Attributes:
                header (str):
                    Required. Column heading.
                horizontal_alignment (~.gcd_intent.Intent.Message.ColumnProperties.HorizontalAlignment):
                    Optional. Defines text alignment for all
                    cells in this column.
            """

            class HorizontalAlignment(proto.Enum):
                r"""Text alignments within a cell."""
                HORIZONTAL_ALIGNMENT_UNSPECIFIED = 0
                LEADING = 1
                CENTER = 2
                TRAILING = 3

            header = proto.Field(proto.STRING, number=1)

            horizontal_alignment = proto.Field(
                proto.ENUM,
                number=2,
                enum="Intent.Message.ColumnProperties.HorizontalAlignment",
            )

        class TableCardRow(proto.Message):
            r"""Row of
            [TableCard][google.cloud.dialogflow.v2beta1.Intent.Message.TableCard].

            Attributes:
                cells (Sequence[~.gcd_intent.Intent.Message.TableCardCell]):
                    Optional. List of cells that make up this
                    row.
                divider_after (bool):
                    Optional. Whether to add a visual divider
                    after this row.
            """

            cells = proto.RepeatedField(
                proto.MESSAGE, number=1, message="Intent.Message.TableCardCell",
            )

            divider_after = proto.Field(proto.BOOL, number=2)

        class TableCardCell(proto.Message):
            r"""Cell of
            [TableCardRow][google.cloud.dialogflow.v2beta1.Intent.Message.TableCardRow].

            Attributes:
                text (str):
                    Required. Text in this cell.
            """

            text = proto.Field(proto.STRING, number=1)

        text = proto.Field(
            proto.MESSAGE, number=1, oneof="message", message="Intent.Message.Text",
        )

        image = proto.Field(
            proto.MESSAGE, number=2, oneof="message", message="Intent.Message.Image",
        )

        quick_replies = proto.Field(
            proto.MESSAGE,
            number=3,
            oneof="message",
            message="Intent.Message.QuickReplies",
        )

        card = proto.Field(
            proto.MESSAGE, number=4, oneof="message", message="Intent.Message.Card",
        )

        payload = proto.Field(
            proto.MESSAGE, number=5, oneof="message", message=struct.Struct,
        )

        simple_responses = proto.Field(
            proto.MESSAGE,
            number=7,
            oneof="message",
            message="Intent.Message.SimpleResponses",
        )

        basic_card = proto.Field(
            proto.MESSAGE,
            number=8,
            oneof="message",
            message="Intent.Message.BasicCard",
        )

        suggestions = proto.Field(
            proto.MESSAGE,
            number=9,
            oneof="message",
            message="Intent.Message.Suggestions",
        )

        link_out_suggestion = proto.Field(
            proto.MESSAGE,
            number=10,
            oneof="message",
            message="Intent.Message.LinkOutSuggestion",
        )

        list_select = proto.Field(
            proto.MESSAGE,
            number=11,
            oneof="message",
            message="Intent.Message.ListSelect",
        )

        carousel_select = proto.Field(
            proto.MESSAGE,
            number=12,
            oneof="message",
            message="Intent.Message.CarouselSelect",
        )

        telephony_play_audio = proto.Field(
            proto.MESSAGE,
            number=13,
            oneof="message",
            message="Intent.Message.TelephonyPlayAudio",
        )

        telephony_synthesize_speech = proto.Field(
            proto.MESSAGE,
            number=14,
            oneof="message",
            message="Intent.Message.TelephonySynthesizeSpeech",
        )

        telephony_transfer_call = proto.Field(
            proto.MESSAGE,
            number=15,
            oneof="message",
            message="Intent.Message.TelephonyTransferCall",
        )

        rbm_text = proto.Field(
            proto.MESSAGE, number=18, oneof="message", message="Intent.Message.RbmText",
        )

        rbm_standalone_rich_card = proto.Field(
            proto.MESSAGE,
            number=19,
            oneof="message",
            message="Intent.Message.RbmStandaloneCard",
        )

        rbm_carousel_rich_card = proto.Field(
            proto.MESSAGE,
            number=20,
            oneof="message",
            message="Intent.Message.RbmCarouselCard",
        )

        browse_carousel_card = proto.Field(
            proto.MESSAGE,
            number=22,
            oneof="message",
            message="Intent.Message.BrowseCarouselCard",
        )

        table_card = proto.Field(
            proto.MESSAGE,
            number=23,
            oneof="message",
            message="Intent.Message.TableCard",
        )

        media_content = proto.Field(
            proto.MESSAGE,
            number=24,
            oneof="message",
            message="Intent.Message.MediaContent",
        )

        platform = proto.Field(proto.ENUM, number=6, enum="Intent.Message.Platform",)

    class FollowupIntentInfo(proto.Message):
        r"""Represents a single followup intent in the chain.

        Attributes:
            followup_intent_name (str):
                The unique identifier of the followup intent. Format:
                ``projects/<Project ID>/agent/intents/<Intent ID>``.
            parent_followup_intent_name (str):
                The unique identifier of the followup intent's parent.
                Format: ``projects/<Project ID>/agent/intents/<Intent ID>``.
        """

        followup_intent_name = proto.Field(proto.STRING, number=1)

        parent_followup_intent_name = proto.Field(proto.STRING, number=2)

    name = proto.Field(proto.STRING, number=1)

    display_name = proto.Field(proto.STRING, number=2)

    webhook_state = proto.Field(proto.ENUM, number=6, enum=WebhookState,)

    priority = proto.Field(proto.INT32, number=3)

    is_fallback = proto.Field(proto.BOOL, number=4)

    ml_enabled = proto.Field(proto.BOOL, number=5)

    ml_disabled = proto.Field(proto.BOOL, number=19)

    end_interaction = proto.Field(proto.BOOL, number=21)

    input_context_names = proto.RepeatedField(proto.STRING, number=7)

    events = proto.RepeatedField(proto.STRING, number=8)

    training_phrases = proto.RepeatedField(
        proto.MESSAGE, number=9, message=TrainingPhrase,
    )

    action = proto.Field(proto.STRING, number=10)

    output_contexts = proto.RepeatedField(
        proto.MESSAGE, number=11, message=context.Context,
    )

    reset_contexts = proto.Field(proto.BOOL, number=12)

    parameters = proto.RepeatedField(proto.MESSAGE, number=13, message=Parameter,)

    messages = proto.RepeatedField(proto.MESSAGE, number=14, message=Message,)

    default_response_platforms = proto.RepeatedField(
        proto.ENUM, number=15, enum=Message.Platform,
    )

    root_followup_intent_name = proto.Field(proto.STRING, number=16)

    parent_followup_intent_name = proto.Field(proto.STRING, number=17)

    followup_intent_info = proto.RepeatedField(
        proto.MESSAGE, number=18, message=FollowupIntentInfo,
    )


class ListIntentsRequest(proto.Message):
    r"""The request message for
    [Intents.ListIntents][google.cloud.dialogflow.v2beta1.Intents.ListIntents].

    Attributes:
        parent (str):
            Required. The agent to list all intents from. Format:
            ``projects/<Project ID>/agent``.
        language_code (str):
            Optional. The language used to access language-specific
            data. If not specified, the agent's default language is
            used. For more information, see `Multilingual intent and
            entity
            data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.
        intent_view (~.gcd_intent.IntentView):
            Optional. The resource view to apply to the
            returned intent.
        page_size (int):
            Optional. The maximum number of items to
            return in a single page. By default 100 and at
            most 1000.
        page_token (str):
            Optional. The next_page_token value returned from a previous
            list request.
    """

    parent = proto.Field(proto.STRING, number=1)

    language_code = proto.Field(proto.STRING, number=2)

    intent_view = proto.Field(proto.ENUM, number=3, enum="IntentView",)

    page_size = proto.Field(proto.INT32, number=4)

    page_token = proto.Field(proto.STRING, number=5)


class ListIntentsResponse(proto.Message):
    r"""The response message for
    [Intents.ListIntents][google.cloud.dialogflow.v2beta1.Intents.ListIntents].

    Attributes:
        intents (Sequence[~.gcd_intent.Intent]):
            The list of agent intents. There will be a maximum number of
            items returned based on the page_size field in the request.
        next_page_token (str):
            Token to retrieve the next page of results,
            or empty if there are no more results in the
            list.
    """

    @property
    def raw_page(self):
        return self

    intents = proto.RepeatedField(proto.MESSAGE, number=1, message="Intent",)

    next_page_token = proto.Field(proto.STRING, number=2)


class GetIntentRequest(proto.Message):
    r"""The request message for
    [Intents.GetIntent][google.cloud.dialogflow.v2beta1.Intents.GetIntent].

    Attributes:
        name (str):
            Required. The name of the intent. Supported formats:

            -  ``projects/<Project ID>/agent/intents/<Intent ID>``
            -  ``projects/<Project ID>/locations/<Location ID>/agent/intents/<Intent ID>``
        language_code (str):
            Optional. The language used to access language-specific
            data. If not specified, the agent's default language is
            used. For more information, see `Multilingual intent and
            entity
            data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.
        intent_view (~.gcd_intent.IntentView):
            Optional. The resource view to apply to the
            returned intent.
    """

    name = proto.Field(proto.STRING, number=1)

    language_code = proto.Field(proto.STRING, number=2)

    intent_view = proto.Field(proto.ENUM, number=3, enum="IntentView",)


class CreateIntentRequest(proto.Message):
    r"""The request message for
    [Intents.CreateIntent][google.cloud.dialogflow.v2beta1.Intents.CreateIntent].

    Attributes:
        parent (str):
            Required. The agent to create a intent for. Supported
            formats:

            -  ``projects/<Project ID>/agent``
            -  ``projects/<Project ID>/locations/<Location ID>/agent``
        intent (~.gcd_intent.Intent):
            Required. The intent to create.
        language_code (str):
            Optional. The language used to access language-specific
            data. If not specified, the agent's default language is
            used. For more information, see `Multilingual intent and
            entity
            data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.
        intent_view (~.gcd_intent.IntentView):
            Optional. The resource view to apply to the
            returned intent.
    """

    parent = proto.Field(proto.STRING, number=1)

    intent = proto.Field(proto.MESSAGE, number=2, message="Intent",)

    language_code = proto.Field(proto.STRING, number=3)

    intent_view = proto.Field(proto.ENUM, number=4, enum="IntentView",)


class UpdateIntentRequest(proto.Message):
    r"""The request message for
    [Intents.UpdateIntent][google.cloud.dialogflow.v2beta1.Intents.UpdateIntent].

    Attributes:
        intent (~.gcd_intent.Intent):
            Required. The intent to update.
        language_code (str):
            Optional. The language used to access language-specific
            data. If not specified, the agent's default language is
            used. For more information, see `Multilingual intent and
            entity
            data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.
        update_mask (~.field_mask.FieldMask):
            Optional. The mask to control which fields
            get updated.
        intent_view (~.gcd_intent.IntentView):
            Optional. The resource view to apply to the
            returned intent.
    """

    intent = proto.Field(proto.MESSAGE, number=1, message="Intent",)

    language_code = proto.Field(proto.STRING, number=2)

    update_mask = proto.Field(proto.MESSAGE, number=3, message=field_mask.FieldMask,)

    intent_view = proto.Field(proto.ENUM, number=4, enum="IntentView",)


class DeleteIntentRequest(proto.Message):
    r"""The request message for
    [Intents.DeleteIntent][google.cloud.dialogflow.v2beta1.Intents.DeleteIntent].

    Attributes:
        name (str):
            Required. The name of the intent to delete. If this intent
            has direct or indirect followup intents, we also delete
            them.

            Supported formats:

            -  ``projects/<Project ID>/agent/intents/<Intent ID>``
            -  ``projects/<Project ID>/locations/<Location ID>/agent/intents/<Intent ID>``
    """

    name = proto.Field(proto.STRING, number=1)


class BatchUpdateIntentsRequest(proto.Message):
    r"""The request message for
    [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents].

    Attributes:
        parent (str):
            Required. The name of the agent to update or create intents
            in. Supported formats:

            -  ``projects/<Project ID>/agent``
            -  ``projects/<Project ID>/locations/<Location ID>/agent``
        intent_batch_uri (str):
            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://".
        intent_batch_inline (~.gcd_intent.IntentBatch):
            The collection of intents to update or
            create.
        language_code (str):
            Optional. The language used to access language-specific
            data. If not specified, the agent's default language is
            used. For more information, see `Multilingual intent and
            entity
            data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.
        update_mask (~.field_mask.FieldMask):
            Optional. The mask to control which fields
            get updated.
        intent_view (~.gcd_intent.IntentView):
            Optional. The resource view to apply to the
            returned intent.
    """

    parent = proto.Field(proto.STRING, number=1)

    intent_batch_uri = proto.Field(proto.STRING, number=2, oneof="intent_batch")

    intent_batch_inline = proto.Field(
        proto.MESSAGE, number=3, oneof="intent_batch", message="IntentBatch",
    )

    language_code = proto.Field(proto.STRING, number=4)

    update_mask = proto.Field(proto.MESSAGE, number=5, message=field_mask.FieldMask,)

    intent_view = proto.Field(proto.ENUM, number=6, enum="IntentView",)


class BatchUpdateIntentsResponse(proto.Message):
    r"""The response message for
    [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents].

    Attributes:
        intents (Sequence[~.gcd_intent.Intent]):
            The collection of updated or created intents.
    """

    intents = proto.RepeatedField(proto.MESSAGE, number=1, message="Intent",)


class BatchDeleteIntentsRequest(proto.Message):
    r"""The request message for
    [Intents.BatchDeleteIntents][google.cloud.dialogflow.v2beta1.Intents.BatchDeleteIntents].

    Attributes:
        parent (str):
            Required. The name of the agent to delete all entities types
            for. Supported formats:

            -  ``projects/<Project ID>/agent``
            -  ``projects/<Project ID>/locations/<Location ID>/agent``
        intents (Sequence[~.gcd_intent.Intent]):
            Required. The collection of intents to delete. Only intent
            ``name`` must be filled in.
    """

    parent = proto.Field(proto.STRING, number=1)

    intents = proto.RepeatedField(proto.MESSAGE, number=2, message="Intent",)


class IntentBatch(proto.Message):
    r"""This message is a wrapper around a collection of intents.

    Attributes:
        intents (Sequence[~.gcd_intent.Intent]):
            A collection of intents.
    """

    intents = proto.RepeatedField(proto.MESSAGE, number=1, message="Intent",)


__all__ = tuple(sorted(__protobuf__.manifest))

# -*- coding: utf-8 -*-

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

import proto  # type: ignore


from google.cloud.dialogflow_v2beta1.types import context
from google.protobuf import field_mask_pb2 as field_mask  # type: ignore
from google.protobuf import struct_pb2 as struct  # type: ignore


__protobuf__ = proto.module(
    package="google.cloud.dialogflow.v2beta1",
    manifest={
        "IntentView",
        "Intent",
        "ListIntentsRequest",
        "ListIntentsResponse",
        "GetIntentRequest",
        "CreateIntentRequest",
        "UpdateIntentRequest",
        "DeleteIntentRequest",
        "BatchUpdateIntentsRequest",
        "BatchUpdateIntentsResponse",
        "BatchDeleteIntentsRequest",
        "IntentBatch",
    },
)


class IntentView(proto.Enum):
    r"""Represents the options for views of an intent.
    An intent can be a sizable object. Therefore, we provide a
    resource view that does not return training phrases in the
    response by default.
    """
    INTENT_VIEW_UNSPECIFIED = 0
    INTENT_VIEW_FULL = 1


class Intent(proto.Message):
    r"""An intent categorizes an end-user's intention for one conversation
    turn. For each agent, you define many intents, where your combined
    intents can handle a complete conversation. When an end-user writes
    or says something, referred to as an end-user expression or end-user
    input, Dialogflow matches the end-user input to the best intent in
    your agent. Matching an intent is also known as intent
    classification.

    For more information, see the `intent
    guide <https://cloud.google.com/dialogflow/docs/intents-overview>`__.

    Attributes:
        name (str):
            Optional. The unique identifier of this intent. Required for
            [Intents.UpdateIntent][google.cloud.dialogflow.v2beta1.Intents.UpdateIntent]
            and
            [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents]
            methods. Supported formats:

            -  ``projects/<Project ID>/agent/intents/<Intent ID>``
            -  ``projects/<Project ID>/locations/<Location ID>/agent/intents/<Intent ID>``
        display_name (str):
            Required. The name of this intent.
        webhook_state (~.gcd_intent.Intent.WebhookState):
            Optional. Indicates whether webhooks are
            enabled for the intent.
        priority (int):
            Optional. The priority of this intent. Higher numbers
            represent higher priorities.

            -  If the supplied value is unspecified or 0, the service
               translates the value to 500,000, which corresponds to the
               ``Normal`` priority in the console.
            -  If the supplied value is negative, the intent is ignored
               in runtime detect intent requests.
        is_fallback (bool):
            Optional. Indicates whether this is a
            fallback intent.
        ml_enabled (bool):
            Optional. Indicates whether Machine Learning is enabled for
            the intent. Note: If ``ml_enabled`` setting is set to false,
            then this intent is not taken into account during inference
            in ``ML ONLY`` match mode. Also, auto-markup in the UI is
            turned off. DEPRECATED! Please use ``ml_disabled`` field
            instead. NOTE: If both ``ml_enabled`` and ``ml_disabled``
            are either not set or false, then the default value is
            determined as follows:

            -  Before April 15th, 2018 the default is: ml_enabled =
               false / ml_disabled = true.
            -  After April 15th, 2018 the default is: ml_enabled = true
               / ml_disabled = false.
        ml_disabled (bool):
            Optional. Indicates whether Machine Learning is disabled for
            the intent. Note: If ``ml_disabled`` setting is set to true,
            then this intent is not taken into account during inference
            in ``ML ONLY`` match mode. Also, auto-markup in the UI is
            turned off.
        end_interaction (bool):
            Optional. Indicates that this intent ends an
            interaction. Some integrations (e.g., Actions on
            Google or Dialogflow phone gateway) use this
            information to close interaction with an end
            user. Default is false.
        input_context_names (Sequence[str]):
            Optional. The list of context names required for this intent
            to be triggered. Formats:

            -  ``projects/<Project ID>/agent/sessions/-/contexts/<Context ID>``
            -  ``projects/<Project ID>/locations/<Location ID>/agent/sessions/-/contexts/<Context ID>``
        events (Sequence[str]):
            Optional. The collection of event names that
            trigger the intent. If the collection of input
            contexts is not empty, all of the contexts must
            be present in the active user session for an
            event to trigger this intent. Event names are
            limited to 150 characters.
        training_phrases (Sequence[~.gcd_intent.Intent.TrainingPhrase]):
            Optional. The collection of examples that the
            agent is trained on.
        action (str):
            Optional. The name of the action associated
            with the intent. Note: The action name must not
            contain whitespaces.
        output_contexts (Sequence[~.context.Context]):
            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>``.
        reset_contexts (bool):
            Optional. Indicates whether to delete all
            contexts in the current session when this intent
            is matched.
        parameters (Sequence[~.gcd_intent.Intent.Parameter]):
            Optional. The collection of parameters
            associated with the intent.
        messages (Sequence[~.gcd_intent.Intent.Message]):
            Optional. The collection of rich messages corresponding to
            the ``Response`` field in the Dialogflow console.
        default_response_platforms (Sequence[~.gcd_intent.Intent.Message.Platform]):
            Optional. The list of platforms for which the first
            responses will be copied from the messages in
            PLATFORM_UNSPECIFIED (i.e. default platform).
        root_followup_intent_name (str):
            Output only. The unique identifier of the root intent in the
            chain of followup intents. It identifies the correct
            followup intents chain for this intent.

            Format: ``projects/<Project ID>/agent/intents/<Intent ID>``.
        parent_followup_intent_name (str):
            Optional. The unique identifier of the parent intent in the
            chain of followup intents. You can set this field when
            creating an intent, for example with
            [CreateIntent][google.cloud.dialogflow.v2beta1.Intents.CreateIntent]
            or
            [BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents],
            in order to make this intent a followup intent.

            It identifies the parent followup intent. Format:
            ``projects/<Project ID>/agent/intents/<Intent ID>``.
        followup_intent_info (Sequence[~.gcd_intent.Intent.FollowupIntentInfo]):
            Output only. Information about all followup
            intents that have this intent as a direct or
            indirect parent. We populate this field only in
            the output.
    """

    class WebhookState(proto.Enum):
        r"""Represents the different states that webhooks can be in."""
        WEBHOOK_STATE_UNSPECIFIED = 0
        WEBHOOK_STATE_ENABLED = 1
        WEBHOOK_STATE_ENABLED_FOR_SLOT_FILLING = 2

    class TrainingPhrase(proto.Message):
        r"""Represents an example that the agent is trained on.

        Attributes:
            name (str):
                Output only. The unique identifier of this
                training phrase.
            type_ (~.gcd_intent.Intent.TrainingPhrase.Type):
                Required. The type of the training phrase.
            parts (Sequence[~.gcd_intent.Intent.TrainingPhrase.Part]):
                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][google.cloud.dialogflow.v2beta1.Intent.TrainingPhrase.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.
            times_added_count (int):
                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.
        """

        class Type(proto.Enum):
            r"""Represents different types of training phrases."""
            TYPE_UNSPECIFIED = 0
            EXAMPLE = 1
            TEMPLATE = 2

        class Part(proto.Message):
            r"""Represents a part of a training phrase.

            Attributes:
                text (str):
                    Required. The text for this part.
                entity_type (str):
                    Optional. The entity type name prefixed with ``@``. This
                    field is required for annotated parts of the training
                    phrase.
                alias (str):
                    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.
                user_defined (bool):
                    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.
            """

            text = proto.Field(proto.STRING, number=1)

            entity_type = proto.Field(proto.STRING, number=2)

            alias = proto.Field(proto.STRING, number=3)

            user_defined = proto.Field(proto.BOOL, number=4)

        name = proto.Field(proto.STRING, number=1)

        type_ = proto.Field(proto.ENUM, number=2, enum="Intent.TrainingPhrase.Type",)

        parts = proto.RepeatedField(
            proto.MESSAGE, number=3, message="Intent.TrainingPhrase.Part",
        )

        times_added_count = proto.Field(proto.INT32, number=4)

    class Parameter(proto.Message):
        r"""Represents intent parameters.

        Attributes:
            name (str):
                The unique identifier of this parameter.
            display_name (str):
                Required. The name of the parameter.
            value (str):
                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``.
            default_value (str):
                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``.
            entity_type_display_name (str):
                Optional. The name of the entity type, prefixed with ``@``,
                that describes values of the parameter. If the parameter is
                required, this must be provided.
            mandatory (bool):
                Optional. Indicates whether the parameter is
                required. That is, whether the intent cannot be
                completed without collecting the parameter
                value.
            prompts (Sequence[str]):
                Optional. The collection of prompts that the
                agent can present to the user in order to
                collect a value for the parameter.
            is_list (bool):
                Optional. Indicates whether the parameter
                represents a list of values.
        """

        name = proto.Field(proto.STRING, number=1)

        display_name = proto.Field(proto.STRING, number=2)

        value = proto.Field(proto.STRING, number=3)

        default_value = proto.Field(proto.STRING, number=4)

        entity_type_display_name = proto.Field(proto.STRING, number=5)

        mandatory = proto.Field(proto.BOOL, number=6)

        prompts = proto.RepeatedField(proto.STRING, number=7)

        is_list = proto.Field(proto.BOOL, number=8)

    class Message(proto.Message):
        r"""Corresponds to the ``Response`` field in the Dialogflow console.

        Attributes:
            text (~.gcd_intent.Intent.Message.Text):
                Returns a text response.
            image (~.gcd_intent.Intent.Message.Image):
                Displays an image.
            quick_replies (~.gcd_intent.Intent.Message.QuickReplies):
                Displays quick replies.
            card (~.gcd_intent.Intent.Message.Card):
                Displays a card.
            payload (~.struct.Struct):
                A custom platform-specific response.
            simple_responses (~.gcd_intent.Intent.Message.SimpleResponses):
                Returns a voice or text-only response for
                Actions on Google.
            basic_card (~.gcd_intent.Intent.Message.BasicCard):
                Displays a basic card for Actions on Google.
            suggestions (~.gcd_intent.Intent.Message.Suggestions):
                Displays suggestion chips for Actions on
                Google.
            link_out_suggestion (~.gcd_intent.Intent.Message.LinkOutSuggestion):
                Displays a link out suggestion chip for
                Actions on Google.
            list_select (~.gcd_intent.Intent.Message.ListSelect):
                Displays a list card for Actions on Google.
            carousel_select (~.gcd_intent.Intent.Message.CarouselSelect):
                Displays a carousel card for Actions on
                Google.
            telephony_play_audio (~.gcd_intent.Intent.Message.TelephonyPlayAudio):
                Plays audio from a file in Telephony Gateway.
            telephony_synthesize_speech (~.gcd_intent.Intent.Message.TelephonySynthesizeSpeech):
                Synthesizes speech in Telephony Gateway.
            telephony_transfer_call (~.gcd_intent.Intent.Message.TelephonyTransferCall):
                Transfers the call in Telephony Gateway.
            rbm_text (~.gcd_intent.Intent.Message.RbmText):
                Rich Business Messaging (RBM) text response.
                RBM allows businesses to send enriched and
                branded versions of SMS. See
                https://jibe.google.com/business-messaging.
            rbm_standalone_rich_card (~.gcd_intent.Intent.Message.RbmStandaloneCard):
                Standalone Rich Business Messaging (RBM) rich
                card response.
            rbm_carousel_rich_card (~.gcd_intent.Intent.Message.RbmCarouselCard):
                Rich Business Messaging (RBM) carousel rich
                card response.
            browse_carousel_card (~.gcd_intent.Intent.Message.BrowseCarouselCard):
                Browse carousel card for Actions on Google.
            table_card (~.gcd_intent.Intent.Message.TableCard):
                Table card for Actions on Google.
            media_content (~.gcd_intent.Intent.Message.MediaContent):
                The media content card for Actions on Google.
            platform (~.gcd_intent.Intent.Message.Platform):
                Optional. The platform that this message is
                intended for.
        """

        class Platform(proto.Enum):
            r"""Represents different platforms that a rich message can be
            intended for.
            """
            PLATFORM_UNSPECIFIED = 0
            FACEBOOK = 1
            SLACK = 2
            TELEGRAM = 3
            KIK = 4
            SKYPE = 5
            LINE = 6
            VIBER = 7
            ACTIONS_ON_GOOGLE = 8
            TELEPHONY = 10
            GOOGLE_HANGOUTS = 11

        class Text(proto.Message):
            r"""The text response message.

            Attributes:
                text (Sequence[str]):
                    Optional. The collection of the agent's
                    responses.
            """

            text = proto.RepeatedField(proto.STRING, number=1)

        class Image(proto.Message):
            r"""The image response message.

            Attributes:
                image_uri (str):
                    Optional. The public URI to an image file.
                accessibility_text (str):
                    A text description of the image to be used for
                    accessibility, e.g., screen readers. Required if image_uri
                    is set for CarouselSelect.
            """

            image_uri = proto.Field(proto.STRING, number=1)

            accessibility_text = proto.Field(proto.STRING, number=2)

        class QuickReplies(proto.Message):
            r"""The quick replies response message.

            Attributes:
                title (str):
                    Optional. The title of the collection of
                    quick replies.
                quick_replies (Sequence[str]):
                    Optional. The collection of quick replies.
            """

            title = proto.Field(proto.STRING, number=1)

            quick_replies = proto.RepeatedField(proto.STRING, number=2)

        class Card(proto.Message):
            r"""The card response message.

            Attributes:
                title (str):
                    Optional. The title of the card.
                subtitle (str):
                    Optional. The subtitle of the card.
                image_uri (str):
                    Optional. The public URI to an image file for
                    the card.
                buttons (Sequence[~.gcd_intent.Intent.Message.Card.Button]):
                    Optional. The collection of card buttons.
            """

            class Button(proto.Message):
                r"""Optional. Contains information about a button.

                Attributes:
                    text (str):
                        Optional. The text to show on the button.
                    postback (str):
                        Optional. The text to send back to the
                        Dialogflow API or a URI to open.
                """

                text = proto.Field(proto.STRING, number=1)

                postback = proto.Field(proto.STRING, number=2)

            title = proto.Field(proto.STRING, number=1)

            subtitle = proto.Field(proto.STRING, number=2)

            image_uri = proto.Field(proto.STRING, number=3)

            buttons = proto.RepeatedField(
                proto.MESSAGE, number=4, message="Intent.Message.Card.Button",
            )

        class SimpleResponse(proto.Message):
            r"""The simple response message containing speech or text.

            Attributes:
                text_to_speech (str):
                    One of text_to_speech or ssml must be provided. The plain
                    text of the speech output. Mutually exclusive with ssml.
                ssml (str):
                    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.
                display_text (str):
                    Optional. The text to display.
            """

            text_to_speech = proto.Field(proto.STRING, number=1)

            ssml = proto.Field(proto.STRING, number=2)

            display_text = proto.Field(proto.STRING, number=3)

        class SimpleResponses(proto.Message):
            r"""The collection of simple response candidates. This message in
            ``QueryResult.fulfillment_messages`` and
            ``WebhookResponse.fulfillment_messages`` should contain only one
            ``SimpleResponse``.

            Attributes:
                simple_responses (Sequence[~.gcd_intent.Intent.Message.SimpleResponse]):
                    Required. The list of simple responses.
            """

            simple_responses = proto.RepeatedField(
                proto.MESSAGE, number=1, message="Intent.Message.SimpleResponse",
            )

        class BasicCard(proto.Message):
            r"""The basic card message. Useful for displaying information.

            Attributes:
                title (str):
                    Optional. The title of the card.
                subtitle (str):
                    Optional. The subtitle of the card.
                formatted_text (str):
                    Required, unless image is present. The body
                    text of the card.
                image (~.gcd_intent.Intent.Message.Image):
                    Optional. The image for the card.
                buttons (Sequence[~.gcd_intent.Intent.Message.BasicCard.Button]):
                    Optional. The collection of card buttons.
            """

            class Button(proto.Message):
                r"""The button object that appears at the bottom of a card.

                Attributes:
                    title (str):
                        Required. The title of the button.
                    open_uri_action (~.gcd_intent.Intent.Message.BasicCard.Button.OpenUriAction):
                        Required. Action to take when a user taps on
                        the button.
                """

                class OpenUriAction(proto.Message):
                    r"""Opens the given URI.

                    Attributes:
                        uri (str):
                            Required. The HTTP or HTTPS scheme URI.
                    """

                    uri = proto.Field(proto.STRING, number=1)

                title = proto.Field(proto.STRING, number=1)

                open_uri_action = proto.Field(
                    proto.MESSAGE,
                    number=2,
                    message="Intent.Message.BasicCard.Button.OpenUriAction",
                )

            title = proto.Field(proto.STRING, number=1)

            subtitle = proto.Field(proto.STRING, number=2)

            formatted_text = proto.Field(proto.STRING, number=3)

            image = proto.Field(
                proto.MESSAGE, number=4, message="Intent.Message.Image",
            )

            buttons = proto.RepeatedField(
                proto.MESSAGE, number=5, message="Intent.Message.BasicCard.Button",
            )

        class Suggestion(proto.Message):
            r"""The suggestion chip message that the user can tap to quickly
            post a reply to the conversation.

            Attributes:
                title (str):
                    Required. The text shown the in the
                    suggestion chip.
            """

            title = proto.Field(proto.STRING, number=1)

        class Suggestions(proto.Message):
            r"""The collection of suggestions.

            Attributes:
                suggestions (Sequence[~.gcd_intent.Intent.Message.Suggestion]):
                    Required. The list of suggested replies.
            """

            suggestions = proto.RepeatedField(
                proto.MESSAGE, number=1, message="Intent.Message.Suggestion",
            )

        class LinkOutSuggestion(proto.Message):
            r"""The suggestion chip message that allows the user to jump out
            to the app or website associated with this agent.

            Attributes:
                destination_name (str):
                    Required. The name of the app or site this
                    chip is linking to.
                uri (str):
                    Required. The URI of the app or site to open
                    when the user taps the suggestion chip.
            """

            destination_name = proto.Field(proto.STRING, number=1)

            uri = proto.Field(proto.STRING, number=2)

        class ListSelect(proto.Message):
            r"""The card for presenting a list of options to select from.

            Attributes:
                title (str):
                    Optional. The overall title of the list.
                items (Sequence[~.gcd_intent.Intent.Message.ListSelect.Item]):
                    Required. List items.
                subtitle (str):
                    Optional. Subtitle of the list.
            """

            class Item(proto.Message):
                r"""An item in the list.

                Attributes:
                    info (~.gcd_intent.Intent.Message.SelectItemInfo):
                        Required. Additional information about this
                        option.
                    title (str):
                        Required. The title of the list item.
                    description (str):
                        Optional. The main text describing the item.
                    image (~.gcd_intent.Intent.Message.Image):
                        Optional. The image to display.
                """

                info = proto.Field(
                    proto.MESSAGE, number=1, message="Intent.Message.SelectItemInfo",
                )

                title = proto.Field(proto.STRING, number=2)

                description = proto.Field(proto.STRING, number=3)

                image = proto.Field(
                    proto.MESSAGE, number=4, message="Intent.Message.Image",
                )

            title = proto.Field(proto.STRING, number=1)

            items = proto.RepeatedField(
                proto.MESSAGE, number=2, message="Intent.Message.ListSelect.Item",
            )

            subtitle = proto.Field(proto.STRING, number=3)

        class CarouselSelect(proto.Message):
            r"""The card for presenting a carousel of options to select from.

            Attributes:
                items (Sequence[~.gcd_intent.Intent.Message.CarouselSelect.Item]):
                    Required. Carousel items.
            """

            class Item(proto.Message):
                r"""An item in the carousel.

                Attributes:
                    info (~.gcd_intent.Intent.Message.SelectItemInfo):
                        Required. Additional info about the option
                        item.
                    title (str):
                        Required. Title of the carousel item.
                    description (str):
                        Optional. The body text of the card.
                    image (~.gcd_intent.Intent.Message.Image):
                        Optional. The image to display.
                """

                info = proto.Field(
                    proto.MESSAGE, number=1, message="Intent.Message.SelectItemInfo",
                )

                title = proto.Field(proto.STRING, number=2)

                description = proto.Field(proto.STRING, number=3)

                image = proto.Field(
                    proto.MESSAGE, number=4, message="Intent.Message.Image",
                )

            items = proto.RepeatedField(
                proto.MESSAGE, number=1, message="Intent.Message.CarouselSelect.Item",
            )

        class SelectItemInfo(proto.Message):
            r"""Additional info about the select item for when it is
            triggered in a dialog.

            Attributes:
                key (str):
                    Required. A unique key that will be sent back
                    to the agent if this response is given.
                synonyms (Sequence[str]):
                    Optional. A list of synonyms that can also be
                    used to trigger this item in dialog.
            """

            key = proto.Field(proto.STRING, number=1)

            synonyms = proto.RepeatedField(proto.STRING, number=2)

        class TelephonyPlayAudio(proto.Message):
            r"""Plays audio from a file in Telephony Gateway.

            Attributes:
                audio_uri (str):
                    Required. URI to a Google Cloud Storage object containing
                    the audio to play, e.g., "gs://bucket/object". The object
                    must contain a single channel (mono) of linear PCM audio (2
                    bytes / sample) at 8kHz.

                    This object must be readable by the
                    ``<EMAIL>-<Project <EMAIL>.com``
                    service account where is the number of the Telephony Gateway
                    project (usually the same as the Dialogflow agent project).
                    If the Google Cloud Storage bucket is in the Telephony
                    Gateway project, this permission is added by default when
                    enabling the Dialogflow V2 API.

                    For audio from other sources, consider using the
                    ``TelephonySynthesizeSpeech`` message with SSML.
            """

            audio_uri = proto.Field(proto.STRING, number=1)

        class TelephonySynthesizeSpeech(proto.Message):
            r"""Synthesizes speech and plays back the synthesized audio to the
            caller in Telephony Gateway.

            Telephony Gateway takes the synthesizer settings from
            ``DetectIntentResponse.output_audio_config`` which can either be set
            at request-level or can come from the agent-level synthesizer
            config.

            Attributes:
                text (str):
                    The raw text to be synthesized.
                ssml (str):
                    The SSML to be synthesized. For more information, see
                    `SSML <https://developers.google.com/actions/reference/ssml>`__.
            """

            text = proto.Field(proto.STRING, number=1, oneof="source")

            ssml = proto.Field(proto.STRING, number=2, oneof="source")

        class TelephonyTransferCall(proto.Message):
            r"""Transfers the call in Telephony Gateway.

            Attributes:
                phone_number (str):
                    Required. The phone number to transfer the call to in `E.164
                    format <https://en.wikipedia.org/wiki/E.164>`__.

                    We currently only allow transferring to US numbers
                    (+1xxxyyyzzzz).
            """

            phone_number = proto.Field(proto.STRING, number=1)

        class RbmText(proto.Message):
            r"""Rich Business Messaging (RBM) text response with suggestions.

            Attributes:
                text (str):
                    Required. Text sent and displayed to the
                    user.
                rbm_suggestion (Sequence[~.gcd_intent.Intent.Message.RbmSuggestion]):
                    Optional. One or more suggestions to show to
                    the user.
            """

            text = proto.Field(proto.STRING, number=1)

            rbm_suggestion = proto.RepeatedField(
                proto.MESSAGE, number=2, message="Intent.Message.RbmSuggestion",
            )

        class RbmCarouselCard(proto.Message):
            r"""Carousel Rich Business Messaging (RBM) rich card.

            Rich cards allow you to respond to users with more vivid content,
            e.g. with media and suggestions.

            If you want to show a single card with more control over the layout,
            please use
            [RbmStandaloneCard][google.cloud.dialogflow.v2beta1.Intent.Message.RbmStandaloneCard]
            instead.

            Attributes:
                card_width (~.gcd_intent.Intent.Message.RbmCarouselCard.CardWidth):
                    Required. The width of the cards in the
                    carousel.
                card_contents (Sequence[~.gcd_intent.Intent.Message.RbmCardContent]):
                    Required. The cards in the carousel. A
                    carousel must have at least 2 cards and at most
                    10.
            """

            class CardWidth(proto.Enum):
                r"""The width of the cards in the carousel."""
                CARD_WIDTH_UNSPECIFIED = 0
                SMALL = 1
                MEDIUM = 2

            card_width = proto.Field(
                proto.ENUM, number=1, enum="Intent.Message.RbmCarouselCard.CardWidth",
            )

            card_contents = proto.RepeatedField(
                proto.MESSAGE, number=2, message="Intent.Message.RbmCardContent",
            )

        class RbmStandaloneCard(proto.Message):
            r"""Standalone Rich Business Messaging (RBM) rich card.

            Rich cards allow you to respond to users with more vivid content,
            e.g. with media and suggestions.

            You can group multiple rich cards into one using
            [RbmCarouselCard][google.cloud.dialogflow.v2beta1.Intent.Message.RbmCarouselCard]
            but carousel cards will give you less control over the card layout.

            Attributes:
                card_orientation (~.gcd_intent.Intent.Message.RbmStandaloneCard.CardOrientation):
                    Required. Orientation of the card.
                thumbnail_image_alignment (~.gcd_intent.Intent.Message.RbmStandaloneCard.ThumbnailImageAlignment):
                    Required if orientation is horizontal.
                    Image preview alignment for standalone cards
                    with horizontal layout.
                card_content (~.gcd_intent.Intent.Message.RbmCardContent):
                    Required. Card content.
            """

            class CardOrientation(proto.Enum):
                r"""Orientation of the card."""
                CARD_ORIENTATION_UNSPECIFIED = 0
                HORIZONTAL = 1
                VERTICAL = 2

            class ThumbnailImageAlignment(proto.Enum):
                r"""Thumbnail preview alignment for standalone cards with
                horizontal layout.
                """
                THUMBNAIL_IMAGE_ALIGNMENT_UNSPECIFIED = 0
                LEFT = 1
                RIGHT = 2

            card_orientation = proto.Field(
                proto.ENUM,
                number=1,
                enum="Intent.Message.RbmStandaloneCard.CardOrientation",
            )

            thumbnail_image_alignment = proto.Field(
                proto.ENUM,
                number=2,
                enum="Intent.Message.RbmStandaloneCard.ThumbnailImageAlignment",
            )

            card_content = proto.Field(
                proto.MESSAGE, number=3, message="Intent.Message.RbmCardContent",
            )

        class RbmCardContent(proto.Message):
            r"""Rich Business Messaging (RBM) Card content

            Attributes:
                title (str):
                    Optional. Title of the card (at most 200
                    bytes).
                    At least one of the title, description or media
                    must be set.
                description (str):
                    Optional. Description of the card (at most
                    2000 bytes).
                    At least one of the title, description or media
                    must be set.
                media (~.gcd_intent.Intent.Message.RbmCardContent.RbmMedia):
                    Optional. However at least one of the title,
                    description or media must be set. Media (image,
                    GIF or a video) to include in the card.
                suggestions (Sequence[~.gcd_intent.Intent.Message.RbmSuggestion]):
                    Optional. List of suggestions to include in
                    the card.
            """

            class RbmMedia(proto.Message):
                r"""Rich Business Messaging (RBM) Media displayed in Cards The following
                media-types are currently supported:

                Image Types

                -  image/jpeg
                -  image/jpg'
                -  image/gif
                -  image/png

                Video Types

                -  video/h263
                -  video/m4v
                -  video/mp4
                -  video/mpeg
                -  video/mpeg4
                -  video/webm

                Attributes:
                    file_uri (str):
                        Required. Publicly reachable URI of the file.
                        The RBM platform determines the MIME type of the
                        file from the content-type field in the HTTP
                        headers when the platform fetches the file. The
                        content-type field must be present and accurate
                        in the HTTP response from the URL.
                    thumbnail_uri (str):
                        Optional. Publicly reachable URI of the
                        thumbnail.If you don't provide a thumbnail URI,
                        the RBM platform displays a blank placeholder
                        thumbnail until the user's device downloads the
                        file. Depending on the user's setting, the file
                        may not download automatically and may require
                        the user to tap a download button.
                    height (~.gcd_intent.Intent.Message.RbmCardContent.RbmMedia.Height):
                        Required for cards with vertical orientation.
                        The height of the media within a rich card with
                        a vertical layout. For a standalone card with
                        horizontal layout, height is not customizable,
                        and this field is ignored.
                """

                class Height(proto.Enum):
                    r"""Media height"""
                    HEIGHT_UNSPECIFIED = 0
                    SHORT = 1
                    MEDIUM = 2
                    TALL = 3

                file_uri = proto.Field(proto.STRING, number=1)

                thumbnail_uri = proto.Field(proto.STRING, number=2)

                height = proto.Field(
                    proto.ENUM,
                    number=3,
                    enum="Intent.Message.RbmCardContent.RbmMedia.Height",
                )

            title = proto.Field(proto.STRING, number=1)

            description = proto.Field(proto.STRING, number=2)

            media = proto.Field(
                proto.MESSAGE,
                number=3,
                message="Intent.Message.RbmCardContent.RbmMedia",
            )

            suggestions = proto.RepeatedField(
                proto.MESSAGE, number=4, message="Intent.Message.RbmSuggestion",
            )

        class RbmSuggestion(proto.Message):
            r"""Rich Business Messaging (RBM) suggestion. Suggestions allow
            user to easily select/click a predefined response or perform an
            action (like opening a web uri).

            Attributes:
                reply (~.gcd_intent.Intent.Message.RbmSuggestedReply):
                    Predefined replies for user to select instead
                    of typing
                action (~.gcd_intent.Intent.Message.RbmSuggestedAction):
                    Predefined client side actions that user can
                    choose
            """

            reply = proto.Field(
                proto.MESSAGE,
                number=1,
                oneof="suggestion",
                message="Intent.Message.RbmSuggestedReply",
            )

            action = proto.Field(
                proto.MESSAGE,
                number=2,
                oneof="suggestion",
                message="Intent.Message.RbmSuggestedAction",
            )

        class RbmSuggestedReply(proto.Message):
            r"""Rich Business Messaging (RBM) suggested reply that the user
            can click instead of typing in their own response.

            Attributes:
                text (str):
                    Suggested reply text.
                postback_data (str):
                    Opaque payload that the Dialogflow receives
                    in a user event when the user taps the suggested
                    reply. This data will be also forwarded to
                    webhook to allow performing custom business
                    logic.
            """

            text = proto.Field(proto.STRING, number=1)

            postback_data = proto.Field(proto.STRING, number=2)

        class RbmSuggestedAction(proto.Message):
            r"""Rich Business Messaging (RBM) suggested client-side action
            that the user can choose from the card.

            Attributes:
                text (str):
                    Text to display alongside the action.
                postback_data (str):
                    Opaque payload that the Dialogflow receives
                    in a user event when the user taps the suggested
                    action. This data will be also forwarded to
                    webhook to allow performing custom business
                    logic.
                dial (~.gcd_intent.Intent.Message.RbmSuggestedAction.RbmSuggestedActionDial):
                    Suggested client side action: Dial a phone
                    number
                open_url (~.gcd_intent.Intent.Message.RbmSuggestedAction.RbmSuggestedActionOpenUri):
                    Suggested client side action: Open a URI on
                    device
                share_location (~.gcd_intent.Intent.Message.RbmSuggestedAction.RbmSuggestedActionShareLocation):
                    Suggested client side action: Share user
                    location
            """

            class RbmSuggestedActionDial(proto.Message):
                r"""Opens the user's default dialer app with the specified phone
                number but does not dial automatically.

                Attributes:
                    phone_number (str):
                        Required. The phone number to fill in the default dialer
                        app. This field should be in
                        `E.164 <https://en.wikipedia.org/wiki/E.164>`__ format. An
                        example of a correctly formatted phone number: +15556767888.
                """

                phone_number = proto.Field(proto.STRING, number=1)

            class RbmSuggestedActionOpenUri(proto.Message):
                r"""Opens the user's default web browser app to the specified uri
                If the user has an app installed that is
                registered as the default handler for the URL, then this app
                will be opened instead, and its icon will be used in the
                suggested action UI.

                Attributes:
                    uri (str):
                        Required. The uri to open on the user device
                """

                uri = proto.Field(proto.STRING, number=1)

            class RbmSuggestedActionShareLocation(proto.Message):
                r"""Opens the device's location chooser so the user can pick a
                location to send back to the agent.
                """

            text = proto.Field(proto.STRING, number=1)

            postback_data = proto.Field(proto.STRING, number=2)

            dial = proto.Field(
                proto.MESSAGE,
                number=3,
                oneof="action",
                message="Intent.Message.RbmSuggestedAction.RbmSuggestedActionDial",
            )

            open_url = proto.Field(
                proto.MESSAGE,
                number=4,
                oneof="action",
                message="Intent.Message.RbmSuggestedAction.RbmSuggestedActionOpenUri",
            )

            share_location = proto.Field(
                proto.MESSAGE,
                number=5,
                oneof="action",
                message="Intent.Message.RbmSuggestedAction.RbmSuggestedActionShareLocation",
            )

        class MediaContent(proto.Message):
            r"""The media content card for Actions on Google.

            Attributes:
                media_type (~.gcd_intent.Intent.Message.MediaContent.ResponseMediaType):
                    Optional. What type of media is the content
                    (ie "audio").
                media_objects (Sequence[~.gcd_intent.Intent.Message.MediaContent.ResponseMediaObject]):
                    Required. List of media objects.
            """

            class ResponseMediaType(proto.Enum):
                r"""Format of response media type."""
                RESPONSE_MEDIA_TYPE_UNSPECIFIED = 0
                AUDIO = 1

            class ResponseMediaObject(proto.Message):
                r"""Response media object for media content card.

                Attributes:
                    name (str):
                        Required. Name of media card.
                    description (str):
                        Optional. Description of media card.
                    large_image (~.gcd_intent.Intent.Message.Image):
                        Optional. Image to display above media
                        content.
                    icon (~.gcd_intent.Intent.Message.Image):
                        Optional. Icon to display above media
                        content.
                    content_url (str):
                        Required. Url where the media is stored.
                """

                name = proto.Field(proto.STRING, number=1)

                description = proto.Field(proto.STRING, number=2)

                large_image = proto.Field(
                    proto.MESSAGE,
                    number=3,
                    oneof="image",
                    message="Intent.Message.Image",
                )

                icon = proto.Field(
                    proto.MESSAGE,
                    number=4,
                    oneof="image",
                    message="Intent.Message.Image",
                )

                content_url = proto.Field(proto.STRING, number=5)

            media_type = proto.Field(
                proto.ENUM,
                number=1,
                enum="Intent.Message.MediaContent.ResponseMediaType",
            )

            media_objects = proto.RepeatedField(
                proto.MESSAGE,
                number=2,
                message="Intent.Message.MediaContent.ResponseMediaObject",
            )

        class BrowseCarouselCard(proto.Message):
            r"""Browse Carousel Card for Actions on Google.
            https://developers.google.com/actions/assistant/responses#browsing_carousel

            Attributes:
                items (Sequence[~.gcd_intent.Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem]):
                    Required. List of items in the Browse
                    Carousel Card. Minimum of two items, maximum of
                    ten.
                image_display_options (~.gcd_intent.Intent.Message.BrowseCarouselCard.ImageDisplayOptions):
                    Optional. Settings for displaying the image. Applies to
                    every image in
                    [items][google.cloud.dialogflow.v2beta1.Intent.Message.BrowseCarouselCard.items].
            """

            class ImageDisplayOptions(proto.Enum):
                r"""Image display options for Actions on Google. This should be
                used for when the image's aspect ratio does not match the image
                container's aspect ratio.
                """
                IMAGE_DISPLAY_OPTIONS_UNSPECIFIED = 0
                GRAY = 1
                WHITE = 2
                CROPPED = 3
                BLURRED_BACKGROUND = 4

            class BrowseCarouselCardItem(proto.Message):
                r"""Browsing carousel tile

                Attributes:
                    open_uri_action (~.gcd_intent.Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem.OpenUrlAction):
                        Required. Action to present to the user.
                    title (str):
                        Required. Title of the carousel item. Maximum
                        of two lines of text.
                    description (str):
                        Optional. Description of the carousel item.
                        Maximum of four lines of text.
                    image (~.gcd_intent.Intent.Message.Image):
                        Optional. Hero image for the carousel item.
                    footer (str):
                        Optional. Text that appears at the bottom of
                        the Browse Carousel Card. Maximum of one line of
                        text.
                """

                class OpenUrlAction(proto.Message):
                    r"""Actions on Google action to open a given url.

                    Attributes:
                        url (str):
                            Required. URL
                        url_type_hint (~.gcd_intent.Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem.OpenUrlAction.UrlTypeHint):
                            Optional. Specifies the type of viewer that
                            is used when opening the URL. Defaults to
                            opening via web browser.
                    """

                    class UrlTypeHint(proto.Enum):
                        r"""Type of the URI."""
                        URL_TYPE_HINT_UNSPECIFIED = 0
                        AMP_ACTION = 1
                        AMP_CONTENT = 2

                    url = proto.Field(proto.STRING, number=1)

                    url_type_hint = proto.Field(
                        proto.ENUM,
                        number=3,
                        enum="Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem.OpenUrlAction.UrlTypeHint",
                    )

                open_uri_action = proto.Field(
                    proto.MESSAGE,
                    number=1,
                    message="Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem.OpenUrlAction",
                )

                title = proto.Field(proto.STRING, number=2)

                description = proto.Field(proto.STRING, number=3)

                image = proto.Field(
                    proto.MESSAGE, number=4, message="Intent.Message.Image",
                )

                footer = proto.Field(proto.STRING, number=5)

            items = proto.RepeatedField(
                proto.MESSAGE,
                number=1,
                message="Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem",
            )

            image_display_options = proto.Field(
                proto.ENUM,
                number=2,
                enum="Intent.Message.BrowseCarouselCard.ImageDisplayOptions",
            )

        class TableCard(proto.Message):
            r"""Table card for Actions on Google.

            Attributes:
                title (str):
                    Required. Title of the card.
                subtitle (str):
                    Optional. Subtitle to the title.
                image (~.gcd_intent.Intent.Message.Image):
                    Optional. Image which should be displayed on
                    the card.
                column_properties (Sequence[~.gcd_intent.Intent.Message.ColumnProperties]):
                    Optional. Display properties for the columns
                    in this table.
                rows (Sequence[~.gcd_intent.Intent.Message.TableCardRow]):
                    Optional. Rows in this table of data.
                buttons (Sequence[~.gcd_intent.Intent.Message.BasicCard.Button]):
                    Optional. List of buttons for the card.
            """

            title = proto.Field(proto.STRING, number=1)

            subtitle = proto.Field(proto.STRING, number=2)

            image = proto.Field(
                proto.MESSAGE, number=3, message="Intent.Message.Image",
            )

            column_properties = proto.RepeatedField(
                proto.MESSAGE, number=4, message="Intent.Message.ColumnProperties",
            )

            rows = proto.RepeatedField(
                proto.MESSAGE, number=5, message="Intent.Message.TableCardRow",
            )

            buttons = proto.RepeatedField(
                proto.MESSAGE, number=6, message="Intent.Message.BasicCard.Button",
            )

        class ColumnProperties(proto.Message):
            r"""Column properties for
            [TableCard][google.cloud.dialogflow.v2beta1.Intent.Message.TableCard].

            Attributes:
                header (str):
                    Required. Column heading.
                horizontal_alignment (~.gcd_intent.Intent.Message.ColumnProperties.HorizontalAlignment):
                    Optional. Defines text alignment for all
                    cells in this column.
            """

            class HorizontalAlignment(proto.Enum):
                r"""Text alignments within a cell."""
                HORIZONTAL_ALIGNMENT_UNSPECIFIED = 0
                LEADING = 1
                CENTER = 2
                TRAILING = 3

            header = proto.Field(proto.STRING, number=1)

            horizontal_alignment = proto.Field(
                proto.ENUM,
                number=2,
                enum="Intent.Message.ColumnProperties.HorizontalAlignment",
            )

        class TableCardRow(proto.Message):
            r"""Row of
            [TableCard][google.cloud.dialogflow.v2beta1.Intent.Message.TableCard].

            Attributes:
                cells (Sequence[~.gcd_intent.Intent.Message.TableCardCell]):
                    Optional. List of cells that make up this
                    row.
                divider_after (bool):
                    Optional. Whether to add a visual divider
                    after this row.
            """

            cells = proto.RepeatedField(
                proto.MESSAGE, number=1, message="Intent.Message.TableCardCell",
            )

            divider_after = proto.Field(proto.BOOL, number=2)

        class TableCardCell(proto.Message):
            r"""Cell of
            [TableCardRow][google.cloud.dialogflow.v2beta1.Intent.Message.TableCardRow].

            Attributes:
                text (str):
                    Required. Text in this cell.
            """

            text = proto.Field(proto.STRING, number=1)

        text = proto.Field(
            proto.MESSAGE, number=1, oneof="message", message="Intent.Message.Text",
        )

        image = proto.Field(
            proto.MESSAGE, number=2, oneof="message", message="Intent.Message.Image",
        )

        quick_replies = proto.Field(
            proto.MESSAGE,
            number=3,
            oneof="message",
            message="Intent.Message.QuickReplies",
        )

        card = proto.Field(
            proto.MESSAGE, number=4, oneof="message", message="Intent.Message.Card",
        )

        payload = proto.Field(
            proto.MESSAGE, number=5, oneof="message", message=struct.Struct,
        )

        simple_responses = proto.Field(
            proto.MESSAGE,
            number=7,
            oneof="message",
            message="Intent.Message.SimpleResponses",
        )

        basic_card = proto.Field(
            proto.MESSAGE,
            number=8,
            oneof="message",
            message="Intent.Message.BasicCard",
        )

        suggestions = proto.Field(
            proto.MESSAGE,
            number=9,
            oneof="message",
            message="Intent.Message.Suggestions",
        )

        link_out_suggestion = proto.Field(
            proto.MESSAGE,
            number=10,
            oneof="message",
            message="Intent.Message.LinkOutSuggestion",
        )

        list_select = proto.Field(
            proto.MESSAGE,
            number=11,
            oneof="message",
            message="Intent.Message.ListSelect",
        )

        carousel_select = proto.Field(
            proto.MESSAGE,
            number=12,
            oneof="message",
            message="Intent.Message.CarouselSelect",
        )

        telephony_play_audio = proto.Field(
            proto.MESSAGE,
            number=13,
            oneof="message",
            message="Intent.Message.TelephonyPlayAudio",
        )

        telephony_synthesize_speech = proto.Field(
            proto.MESSAGE,
            number=14,
            oneof="message",
            message="Intent.Message.TelephonySynthesizeSpeech",
        )

        telephony_transfer_call = proto.Field(
            proto.MESSAGE,
            number=15,
            oneof="message",
            message="Intent.Message.TelephonyTransferCall",
        )

        rbm_text = proto.Field(
            proto.MESSAGE, number=18, oneof="message", message="Intent.Message.RbmText",
        )

        rbm_standalone_rich_card = proto.Field(
            proto.MESSAGE,
            number=19,
            oneof="message",
            message="Intent.Message.RbmStandaloneCard",
        )

        rbm_carousel_rich_card = proto.Field(
            proto.MESSAGE,
            number=20,
            oneof="message",
            message="Intent.Message.RbmCarouselCard",
        )

        browse_carousel_card = proto.Field(
            proto.MESSAGE,
            number=22,
            oneof="message",
            message="Intent.Message.BrowseCarouselCard",
        )

        table_card = proto.Field(
            proto.MESSAGE,
            number=23,
            oneof="message",
            message="Intent.Message.TableCard",
        )

        media_content = proto.Field(
            proto.MESSAGE,
            number=24,
            oneof="message",
            message="Intent.Message.MediaContent",
        )

        platform = proto.Field(proto.ENUM, number=6, enum="Intent.Message.Platform",)

    class FollowupIntentInfo(proto.Message):
        r"""Represents a single followup intent in the chain.

        Attributes:
            followup_intent_name (str):
                The unique identifier of the followup intent. Format:
                ``projects/<Project ID>/agent/intents/<Intent ID>``.
            parent_followup_intent_name (str):
                The unique identifier of the followup intent's parent.
                Format: ``projects/<Project ID>/agent/intents/<Intent ID>``.
        """

        followup_intent_name = proto.Field(proto.STRING, number=1)

        parent_followup_intent_name = proto.Field(proto.STRING, number=2)

    name = proto.Field(proto.STRING, number=1)

    display_name = proto.Field(proto.STRING, number=2)

    webhook_state = proto.Field(proto.ENUM, number=6, enum=WebhookState,)

    priority = proto.Field(proto.INT32, number=3)

    is_fallback = proto.Field(proto.BOOL, number=4)

    ml_enabled = proto.Field(proto.BOOL, number=5)

    ml_disabled = proto.Field(proto.BOOL, number=19)

    end_interaction = proto.Field(proto.BOOL, number=21)

    input_context_names = proto.RepeatedField(proto.STRING, number=7)

    events = proto.RepeatedField(proto.STRING, number=8)

    training_phrases = proto.RepeatedField(
        proto.MESSAGE, number=9, message=TrainingPhrase,
    )

    action = proto.Field(proto.STRING, number=10)

    output_contexts = proto.RepeatedField(
        proto.MESSAGE, number=11, message=context.Context,
    )

    reset_contexts = proto.Field(proto.BOOL, number=12)

    parameters = proto.RepeatedField(proto.MESSAGE, number=13, message=Parameter,)

    messages = proto.RepeatedField(proto.MESSAGE, number=14, message=Message,)

    default_response_platforms = proto.RepeatedField(
        proto.ENUM, number=15, enum=Message.Platform,
    )

    root_followup_intent_name = proto.Field(proto.STRING, number=16)

    parent_followup_intent_name = proto.Field(proto.STRING, number=17)

    followup_intent_info = proto.RepeatedField(
        proto.MESSAGE, number=18, message=FollowupIntentInfo,
    )


class ListIntentsRequest(proto.Message):
    r"""The request message for
    [Intents.ListIntents][google.cloud.dialogflow.v2beta1.Intents.ListIntents].

    Attributes:
        parent (str):
            Required. The agent to list all intents from. Format:
            ``projects/<Project ID>/agent``.
        language_code (str):
            Optional. The language used to access language-specific
            data. If not specified, the agent's default language is
            used. For more information, see `Multilingual intent and
            entity
            data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.
        intent_view (~.gcd_intent.IntentView):
            Optional. The resource view to apply to the
            returned intent.
        page_size (int):
            Optional. The maximum number of items to
            return in a single page. By default 100 and at
            most 1000.
        page_token (str):
            Optional. The next_page_token value returned from a previous
            list request.
    """

    parent = proto.Field(proto.STRING, number=1)

    language_code = proto.Field(proto.STRING, number=2)

    intent_view = proto.Field(proto.ENUM, number=3, enum="IntentView",)

    page_size = proto.Field(proto.INT32, number=4)

    page_token = proto.Field(proto.STRING, number=5)


class ListIntentsResponse(proto.Message):
    r"""The response message for
    [Intents.ListIntents][google.cloud.dialogflow.v2beta1.Intents.ListIntents].

    Attributes:
        intents (Sequence[~.gcd_intent.Intent]):
            The list of agent intents. There will be a maximum number of
            items returned based on the page_size field in the request.
        next_page_token (str):
            Token to retrieve the next page of results,
            or empty if there are no more results in the
            list.
    """

    @property
    def raw_page(self):
        return self

    intents = proto.RepeatedField(proto.MESSAGE, number=1, message="Intent",)

    next_page_token = proto.Field(proto.STRING, number=2)


class GetIntentRequest(proto.Message):
    r"""The request message for
    [Intents.GetIntent][google.cloud.dialogflow.v2beta1.Intents.GetIntent].

    Attributes:
        name (str):
            Required. The name of the intent. Supported formats:

            -  ``projects/<Project ID>/agent/intents/<Intent ID>``
            -  ``projects/<Project ID>/locations/<Location ID>/agent/intents/<Intent ID>``
        language_code (str):
            Optional. The language used to access language-specific
            data. If not specified, the agent's default language is
            used. For more information, see `Multilingual intent and
            entity
            data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.
        intent_view (~.gcd_intent.IntentView):
            Optional. The resource view to apply to the
            returned intent.
    """

    name = proto.Field(proto.STRING, number=1)

    language_code = proto.Field(proto.STRING, number=2)

    intent_view = proto.Field(proto.ENUM, number=3, enum="IntentView",)


class CreateIntentRequest(proto.Message):
    r"""The request message for
    [Intents.CreateIntent][google.cloud.dialogflow.v2beta1.Intents.CreateIntent].

    Attributes:
        parent (str):
            Required. The agent to create a intent for. Supported
            formats:

            -  ``projects/<Project ID>/agent``
            -  ``projects/<Project ID>/locations/<Location ID>/agent``
        intent (~.gcd_intent.Intent):
            Required. The intent to create.
        language_code (str):
            Optional. The language used to access language-specific
            data. If not specified, the agent's default language is
            used. For more information, see `Multilingual intent and
            entity
            data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.
        intent_view (~.gcd_intent.IntentView):
            Optional. The resource view to apply to the
            returned intent.
    """

    parent = proto.Field(proto.STRING, number=1)

    intent = proto.Field(proto.MESSAGE, number=2, message="Intent",)

    language_code = proto.Field(proto.STRING, number=3)

    intent_view = proto.Field(proto.ENUM, number=4, enum="IntentView",)


class UpdateIntentRequest(proto.Message):
    r"""The request message for
    [Intents.UpdateIntent][google.cloud.dialogflow.v2beta1.Intents.UpdateIntent].

    Attributes:
        intent (~.gcd_intent.Intent):
            Required. The intent to update.
        language_code (str):
            Optional. The language used to access language-specific
            data. If not specified, the agent's default language is
            used. For more information, see `Multilingual intent and
            entity
            data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.
        update_mask (~.field_mask.FieldMask):
            Optional. The mask to control which fields
            get updated.
        intent_view (~.gcd_intent.IntentView):
            Optional. The resource view to apply to the
            returned intent.
    """

    intent = proto.Field(proto.MESSAGE, number=1, message="Intent",)

    language_code = proto.Field(proto.STRING, number=2)

    update_mask = proto.Field(proto.MESSAGE, number=3, message=field_mask.FieldMask,)

    intent_view = proto.Field(proto.ENUM, number=4, enum="IntentView",)


class DeleteIntentRequest(proto.Message):
    r"""The request message for
    [Intents.DeleteIntent][google.cloud.dialogflow.v2beta1.Intents.DeleteIntent].

    Attributes:
        name (str):
            Required. The name of the intent to delete. If this intent
            has direct or indirect followup intents, we also delete
            them.

            Supported formats:

            -  ``projects/<Project ID>/agent/intents/<Intent ID>``
            -  ``projects/<Project ID>/locations/<Location ID>/agent/intents/<Intent ID>``
    """

    name = proto.Field(proto.STRING, number=1)


class BatchUpdateIntentsRequest(proto.Message):
    r"""The request message for
    [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents].

    Attributes:
        parent (str):
            Required. The name of the agent to update or create intents
            in. Supported formats:

            -  ``projects/<Project ID>/agent``
            -  ``projects/<Project ID>/locations/<Location ID>/agent``
        intent_batch_uri (str):
            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://".
        intent_batch_inline (~.gcd_intent.IntentBatch):
            The collection of intents to update or
            create.
        language_code (str):
            Optional. The language used to access language-specific
            data. If not specified, the agent's default language is
            used. For more information, see `Multilingual intent and
            entity
            data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.
        update_mask (~.field_mask.FieldMask):
            Optional. The mask to control which fields
            get updated.
        intent_view (~.gcd_intent.IntentView):
            Optional. The resource view to apply to the
            returned intent.
    """

    parent = proto.Field(proto.STRING, number=1)

    intent_batch_uri = proto.Field(proto.STRING, number=2, oneof="intent_batch")

    intent_batch_inline = proto.Field(
        proto.MESSAGE, number=3, oneof="intent_batch", message="IntentBatch",
    )

    language_code = proto.Field(proto.STRING, number=4)

    update_mask = proto.Field(proto.MESSAGE, number=5, message=field_mask.FieldMask,)

    intent_view = proto.Field(proto.ENUM, number=6, enum="IntentView",)


class BatchUpdateIntentsResponse(proto.Message):
    r"""The response message for
    [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents].

    Attributes:
        intents (Sequence[~.gcd_intent.Intent]):
            The collection of updated or created intents.
    """

    intents = proto.RepeatedField(proto.MESSAGE, number=1, message="Intent",)


class BatchDeleteIntentsRequest(proto.Message):
    r"""The request message for
    [Intents.BatchDeleteIntents][google.cloud.dialogflow.v2beta1.Intents.BatchDeleteIntents].

    Attributes:
        parent (str):
            Required. The name of the agent to delete all entities types
            for. Supported formats:

            -  ``projects/<Project ID>/agent``
            -  ``projects/<Project ID>/locations/<Location ID>/agent``
        intents (Sequence[~.gcd_intent.Intent]):
            Required. The collection of intents to delete. Only intent
            ``name`` must be filled in.
    """

    parent = proto.Field(proto.STRING, number=1)

    intents = proto.RepeatedField(proto.MESSAGE, number=2, message="Intent",)


class IntentBatch(proto.Message):
    r"""This message is a wrapper around a collection of intents.

    Attributes:
        intents (Sequence[~.gcd_intent.Intent]):
            A collection of intents.
    """

    intents = proto.RepeatedField(proto.MESSAGE, number=1, message="Intent",)


__all__ = tuple(sorted(__protobuf__.manifest))
# -*- coding: utf-8 -*- # Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # #     http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # type: ignore # type: ignore # type: ignore Represents the options for views of an intent.     An intent can be a sizable object. Therefore, we provide a     resource view that does not return training phrases in the     response by default. An intent categorizes an end-user's intention for one conversation     turn. For each agent, you define many intents, where your combined     intents can handle a complete conversation. When an end-user writes     or says something, referred to as an end-user expression or end-user     input, Dialogflow matches the end-user input to the best intent in     your agent. Matching an intent is also known as intent     classification.      For more information, see the `intent     guide <https://cloud.google.com/dialogflow/docs/intents-overview>`__.      Attributes:         name (str):             Optional. The unique identifier of this intent. Required for             [Intents.UpdateIntent][google.cloud.dialogflow.v2beta1.Intents.UpdateIntent]             and             [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents]             methods. Supported formats:              -  ``projects/<Project ID>/agent/intents/<Intent ID>``             -  ``projects/<Project ID>/locations/<Location ID>/agent/intents/<Intent ID>``         display_name (str):             Required. The name of this intent.         webhook_state (~.gcd_intent.Intent.WebhookState):             Optional. Indicates whether webhooks are             enabled for the intent.         priority (int):             Optional. The priority of this intent. Higher numbers             represent higher priorities.              -  If the supplied value is unspecified or 0, the service                translates the value to 500,000, which corresponds to the                ``Normal`` priority in the console.             -  If the supplied value is negative, the intent is ignored                in runtime detect intent requests.         is_fallback (bool):             Optional. Indicates whether this is a             fallback intent.         ml_enabled (bool):             Optional. Indicates whether Machine Learning is enabled for             the intent. Note: If ``ml_enabled`` setting is set to false,             then this intent is not taken into account during inference             in ``ML ONLY`` match mode. Also, auto-markup in the UI is             turned off. DEPRECATED! Please use ``ml_disabled`` field             instead. NOTE: If both ``ml_enabled`` and ``ml_disabled``             are either not set or false, then the default value is             determined as follows:              -  Before April 15th, 2018 the default is: ml_enabled =                false / ml_disabled = true.             -  After April 15th, 2018 the default is: ml_enabled = true                / ml_disabled = false.         ml_disabled (bool):             Optional. Indicates whether Machine Learning is disabled for             the intent. Note: If ``ml_disabled`` setting is set to true,             then this intent is not taken into account during inference             in ``ML ONLY`` match mode. Also, auto-markup in the UI is             turned off.         end_interaction (bool):             Optional. Indicates that this intent ends an             interaction. Some integrations (e.g., Actions on             Google or Dialogflow phone gateway) use this             information to close interaction with an end             user. Default is false.         input_context_names (Sequence[str]):             Optional. The list of context names required for this intent             to be triggered. Formats:              -  ``projects/<Project ID>/agent/sessions/-/contexts/<Context ID>``             -  ``projects/<Project ID>/locations/<Location ID>/agent/sessions/-/contexts/<Context ID>``         events (Sequence[str]):             Optional. The collection of event names that             trigger the intent. If the collection of input             contexts is not empty, all of the contexts must             be present in the active user session for an             event to trigger this intent. Event names are             limited to 150 characters.         training_phrases (Sequence[~.gcd_intent.Intent.TrainingPhrase]):             Optional. The collection of examples that the             agent is trained on.         action (str):             Optional. The name of the action associated             with the intent. Note: The action name must not             contain whitespaces.         output_contexts (Sequence[~.context.Context]):             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>``.         reset_contexts (bool):             Optional. Indicates whether to delete all             contexts in the current session when this intent             is matched.         parameters (Sequence[~.gcd_intent.Intent.Parameter]):             Optional. The collection of parameters             associated with the intent.         messages (Sequence[~.gcd_intent.Intent.Message]):             Optional. The collection of rich messages corresponding to             the ``Response`` field in the Dialogflow console.         default_response_platforms (Sequence[~.gcd_intent.Intent.Message.Platform]):             Optional. The list of platforms for which the first             responses will be copied from the messages in             PLATFORM_UNSPECIFIED (i.e. default platform).         root_followup_intent_name (str):             Output only. The unique identifier of the root intent in the             chain of followup intents. It identifies the correct             followup intents chain for this intent.              Format: ``projects/<Project ID>/agent/intents/<Intent ID>``.         parent_followup_intent_name (str):             Optional. The unique identifier of the parent intent in the             chain of followup intents. You can set this field when             creating an intent, for example with             [CreateIntent][google.cloud.dialogflow.v2beta1.Intents.CreateIntent]             or             [BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents],             in order to make this intent a followup intent.              It identifies the parent followup intent. Format:             ``projects/<Project ID>/agent/intents/<Intent ID>``.         followup_intent_info (Sequence[~.gcd_intent.Intent.FollowupIntentInfo]):             Output only. Information about all followup             intents that have this intent as a direct or             indirect parent. We populate this field only in             the output. Represents the different states that webhooks can be in. Represents an example that the agent is trained on.          Attributes:             name (str):                 Output only. The unique identifier of this                 training phrase.             type_ (~.gcd_intent.Intent.TrainingPhrase.Type):                 Required. The type of the training phrase.             parts (Sequence[~.gcd_intent.Intent.TrainingPhrase.Part]):                 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][google.cloud.dialogflow.v2beta1.Intent.TrainingPhrase.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.             times_added_count (int):                 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. Represents different types of training phrases. Represents a part of a training phrase.              Attributes:                 text (str):                     Required. The text for this part.                 entity_type (str):                     Optional. The entity type name prefixed with ``@``. This                     field is required for annotated parts of the training                     phrase.                 alias (str):                     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.                 user_defined (bool):                     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. Represents intent parameters.          Attributes:             name (str):                 The unique identifier of this parameter.             display_name (str):                 Required. The name of the parameter.             value (str):                 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``.             default_value (str):                 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``.             entity_type_display_name (str):                 Optional. The name of the entity type, prefixed with ``@``,                 that describes values of the parameter. If the parameter is                 required, this must be provided.             mandatory (bool):                 Optional. Indicates whether the parameter is                 required. That is, whether the intent cannot be                 completed without collecting the parameter                 value.             prompts (Sequence[str]):                 Optional. The collection of prompts that the                 agent can present to the user in order to                 collect a value for the parameter.             is_list (bool):                 Optional. Indicates whether the parameter                 represents a list of values. Corresponds to the ``Response`` field in the Dialogflow console.          Attributes:             text (~.gcd_intent.Intent.Message.Text):                 Returns a text response.             image (~.gcd_intent.Intent.Message.Image):                 Displays an image.             quick_replies (~.gcd_intent.Intent.Message.QuickReplies):                 Displays quick replies.             card (~.gcd_intent.Intent.Message.Card):                 Displays a card.             payload (~.struct.Struct):                 A custom platform-specific response.             simple_responses (~.gcd_intent.Intent.Message.SimpleResponses):                 Returns a voice or text-only response for                 Actions on Google.             basic_card (~.gcd_intent.Intent.Message.BasicCard):                 Displays a basic card for Actions on Google.             suggestions (~.gcd_intent.Intent.Message.Suggestions):                 Displays suggestion chips for Actions on                 Google.             link_out_suggestion (~.gcd_intent.Intent.Message.LinkOutSuggestion):                 Displays a link out suggestion chip for                 Actions on Google.             list_select (~.gcd_intent.Intent.Message.ListSelect):                 Displays a list card for Actions on Google.             carousel_select (~.gcd_intent.Intent.Message.CarouselSelect):                 Displays a carousel card for Actions on                 Google.             telephony_play_audio (~.gcd_intent.Intent.Message.TelephonyPlayAudio):                 Plays audio from a file in Telephony Gateway.             telephony_synthesize_speech (~.gcd_intent.Intent.Message.TelephonySynthesizeSpeech):                 Synthesizes speech in Telephony Gateway.             telephony_transfer_call (~.gcd_intent.Intent.Message.TelephonyTransferCall):                 Transfers the call in Telephony Gateway.             rbm_text (~.gcd_intent.Intent.Message.RbmText):                 Rich Business Messaging (RBM) text response.                 RBM allows businesses to send enriched and                 branded versions of SMS. See                 https://jibe.google.com/business-messaging.             rbm_standalone_rich_card (~.gcd_intent.Intent.Message.RbmStandaloneCard):                 Standalone Rich Business Messaging (RBM) rich                 card response.             rbm_carousel_rich_card (~.gcd_intent.Intent.Message.RbmCarouselCard):                 Rich Business Messaging (RBM) carousel rich                 card response.             browse_carousel_card (~.gcd_intent.Intent.Message.BrowseCarouselCard):                 Browse carousel card for Actions on Google.             table_card (~.gcd_intent.Intent.Message.TableCard):                 Table card for Actions on Google.             media_content (~.gcd_intent.Intent.Message.MediaContent):                 The media content card for Actions on Google.             platform (~.gcd_intent.Intent.Message.Platform):                 Optional. The platform that this message is                 intended for. Represents different platforms that a rich message can be             intended for. The text response message.              Attributes:                 text (Sequence[str]):                     Optional. The collection of the agent's                     responses. The image response message.              Attributes:                 image_uri (str):                     Optional. The public URI to an image file.                 accessibility_text (str):                     A text description of the image to be used for                     accessibility, e.g., screen readers. Required if image_uri                     is set for CarouselSelect. The quick replies response message.              Attributes:                 title (str):                     Optional. The title of the collection of                     quick replies.                 quick_replies (Sequence[str]):                     Optional. The collection of quick replies. The card response message.              Attributes:                 title (str):                     Optional. The title of the card.                 subtitle (str):                     Optional. The subtitle of the card.                 image_uri (str):                     Optional. The public URI to an image file for                     the card.                 buttons (Sequence[~.gcd_intent.Intent.Message.Card.Button]):                     Optional. The collection of card buttons. Optional. Contains information about a button.                  Attributes:                     text (str):                         Optional. The text to show on the button.                     postback (str):                         Optional. The text to send back to the                         Dialogflow API or a URI to open. The simple response message containing speech or text.              Attributes:                 text_to_speech (str):                     One of text_to_speech or ssml must be provided. The plain                     text of the speech output. Mutually exclusive with ssml.                 ssml (str):                     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.                 display_text (str):                     Optional. The text to display. The collection of simple response candidates. This message in             ``QueryResult.fulfillment_messages`` and             ``WebhookResponse.fulfillment_messages`` should contain only one             ``SimpleResponse``.              Attributes:                 simple_responses (Sequence[~.gcd_intent.Intent.Message.SimpleResponse]):                     Required. The list of simple responses. The basic card message. Useful for displaying information.              Attributes:                 title (str):                     Optional. The title of the card.                 subtitle (str):                     Optional. The subtitle of the card.                 formatted_text (str):                     Required, unless image is present. The body                     text of the card.                 image (~.gcd_intent.Intent.Message.Image):                     Optional. The image for the card.                 buttons (Sequence[~.gcd_intent.Intent.Message.BasicCard.Button]):                     Optional. The collection of card buttons. The button object that appears at the bottom of a card.                  Attributes:                     title (str):                         Required. The title of the button.                     open_uri_action (~.gcd_intent.Intent.Message.BasicCard.Button.OpenUriAction):                         Required. Action to take when a user taps on                         the button. Opens the given URI.                      Attributes:                         uri (str):                             Required. The HTTP or HTTPS scheme URI. The suggestion chip message that the user can tap to quickly             post a reply to the conversation.              Attributes:                 title (str):                     Required. The text shown the in the                     suggestion chip. The collection of suggestions.              Attributes:                 suggestions (Sequence[~.gcd_intent.Intent.Message.Suggestion]):                     Required. The list of suggested replies. The suggestion chip message that allows the user to jump out             to the app or website associated with this agent.              Attributes:                 destination_name (str):                     Required. The name of the app or site this                     chip is linking to.                 uri (str):                     Required. The URI of the app or site to open                     when the user taps the suggestion chip. The card for presenting a list of options to select from.              Attributes:                 title (str):                     Optional. The overall title of the list.                 items (Sequence[~.gcd_intent.Intent.Message.ListSelect.Item]):                     Required. List items.                 subtitle (str):                     Optional. Subtitle of the list. An item in the list.                  Attributes:                     info (~.gcd_intent.Intent.Message.SelectItemInfo):                         Required. Additional information about this                         option.                     title (str):                         Required. The title of the list item.                     description (str):                         Optional. The main text describing the item.                     image (~.gcd_intent.Intent.Message.Image):                         Optional. The image to display. The card for presenting a carousel of options to select from.              Attributes:                 items (Sequence[~.gcd_intent.Intent.Message.CarouselSelect.Item]):                     Required. Carousel items. An item in the carousel.                  Attributes:                     info (~.gcd_intent.Intent.Message.SelectItemInfo):                         Required. Additional info about the option                         item.                     title (str):                         Required. Title of the carousel item.                     description (str):                         Optional. The body text of the card.                     image (~.gcd_intent.Intent.Message.Image):                         Optional. The image to display. Additional info about the select item for when it is             triggered in a dialog.              Attributes:                 key (str):                     Required. A unique key that will be sent back                     to the agent if this response is given.                 synonyms (Sequence[str]):                     Optional. A list of synonyms that can also be                     used to trigger this item in dialog. Plays audio from a file in Telephony Gateway.              Attributes:                 audio_uri (str):                     Required. URI to a Google Cloud Storage object containing                     the audio to play, e.g., "gs://bucket/object". The object                     must contain a single channel (mono) of linear PCM audio (2                     bytes / sample) at 8kHz.                      This object must be readable by the                     ``<EMAIL>-<Project <EMAIL>.com``                     service account where is the number of the Telephony Gateway                     project (usually the same as the Dialogflow agent project).                     If the Google Cloud Storage bucket is in the Telephony                     Gateway project, this permission is added by default when                     enabling the Dialogflow V2 API.                      For audio from other sources, consider using the                     ``TelephonySynthesizeSpeech`` message with SSML. Synthesizes speech and plays back the synthesized audio to the             caller in Telephony Gateway.              Telephony Gateway takes the synthesizer settings from             ``DetectIntentResponse.output_audio_config`` which can either be set             at request-level or can come from the agent-level synthesizer             config.              Attributes:                 text (str):                     The raw text to be synthesized.                 ssml (str):                     The SSML to be synthesized. For more information, see                     `SSML <https://developers.google.com/actions/reference/ssml>`__. Transfers the call in Telephony Gateway.              Attributes:                 phone_number (str):                     Required. The phone number to transfer the call to in `E.164                     format <https://en.wikipedia.org/wiki/E.164>`__.                      We currently only allow transferring to US numbers                     (+1xxxyyyzzzz). Rich Business Messaging (RBM) text response with suggestions.              Attributes:                 text (str):                     Required. Text sent and displayed to the                     user.                 rbm_suggestion (Sequence[~.gcd_intent.Intent.Message.RbmSuggestion]):                     Optional. One or more suggestions to show to                     the user. Carousel Rich Business Messaging (RBM) rich card.              Rich cards allow you to respond to users with more vivid content,             e.g. with media and suggestions.              If you want to show a single card with more control over the layout,             please use             [RbmStandaloneCard][google.cloud.dialogflow.v2beta1.Intent.Message.RbmStandaloneCard]             instead.              Attributes:                 card_width (~.gcd_intent.Intent.Message.RbmCarouselCard.CardWidth):                     Required. The width of the cards in the                     carousel.                 card_contents (Sequence[~.gcd_intent.Intent.Message.RbmCardContent]):                     Required. The cards in the carousel. A                     carousel must have at least 2 cards and at most                     10. The width of the cards in the carousel. Standalone Rich Business Messaging (RBM) rich card.              Rich cards allow you to respond to users with more vivid content,             e.g. with media and suggestions.              You can group multiple rich cards into one using             [RbmCarouselCard][google.cloud.dialogflow.v2beta1.Intent.Message.RbmCarouselCard]             but carousel cards will give you less control over the card layout.              Attributes:                 card_orientation (~.gcd_intent.Intent.Message.RbmStandaloneCard.CardOrientation):                     Required. Orientation of the card.                 thumbnail_image_alignment (~.gcd_intent.Intent.Message.RbmStandaloneCard.ThumbnailImageAlignment):                     Required if orientation is horizontal.                     Image preview alignment for standalone cards                     with horizontal layout.                 card_content (~.gcd_intent.Intent.Message.RbmCardContent):                     Required. Card content. Orientation of the card. Thumbnail preview alignment for standalone cards with                 horizontal layout. Rich Business Messaging (RBM) Card content              Attributes:                 title (str):                     Optional. Title of the card (at most 200                     bytes).                     At least one of the title, description or media                     must be set.                 description (str):                     Optional. Description of the card (at most                     2000 bytes).                     At least one of the title, description or media                     must be set.                 media (~.gcd_intent.Intent.Message.RbmCardContent.RbmMedia):                     Optional. However at least one of the title,                     description or media must be set. Media (image,                     GIF or a video) to include in the card.                 suggestions (Sequence[~.gcd_intent.Intent.Message.RbmSuggestion]):                     Optional. List of suggestions to include in                     the card. Rich Business Messaging (RBM) Media displayed in Cards The following                 media-types are currently supported:                  Image Types                  -  image/jpeg                 -  image/jpg'                 -  image/gif                 -  image/png                  Video Types                  -  video/h263                 -  video/m4v                 -  video/mp4                 -  video/mpeg                 -  video/mpeg4                 -  video/webm                  Attributes:                     file_uri (str):                         Required. Publicly reachable URI of the file.                         The RBM platform determines the MIME type of the                         file from the content-type field in the HTTP                         headers when the platform fetches the file. The                         content-type field must be present and accurate                         in the HTTP response from the URL.                     thumbnail_uri (str):                         Optional. Publicly reachable URI of the                         thumbnail.If you don't provide a thumbnail URI,                         the RBM platform displays a blank placeholder                         thumbnail until the user's device downloads the                         file. Depending on the user's setting, the file                         may not download automatically and may require                         the user to tap a download button.                     height (~.gcd_intent.Intent.Message.RbmCardContent.RbmMedia.Height):                         Required for cards with vertical orientation.                         The height of the media within a rich card with                         a vertical layout. For a standalone card with                         horizontal layout, height is not customizable,                         and this field is ignored. Media height Rich Business Messaging (RBM) suggestion. Suggestions allow             user to easily select/click a predefined response or perform an             action (like opening a web uri).              Attributes:                 reply (~.gcd_intent.Intent.Message.RbmSuggestedReply):                     Predefined replies for user to select instead                     of typing                 action (~.gcd_intent.Intent.Message.RbmSuggestedAction):                     Predefined client side actions that user can                     choose Rich Business Messaging (RBM) suggested reply that the user             can click instead of typing in their own response.              Attributes:                 text (str):                     Suggested reply text.                 postback_data (str):                     Opaque payload that the Dialogflow receives                     in a user event when the user taps the suggested                     reply. This data will be also forwarded to                     webhook to allow performing custom business                     logic. Rich Business Messaging (RBM) suggested client-side action             that the user can choose from the card.              Attributes:                 text (str):                     Text to display alongside the action.                 postback_data (str):                     Opaque payload that the Dialogflow receives                     in a user event when the user taps the suggested                     action. This data will be also forwarded to                     webhook to allow performing custom business                     logic.                 dial (~.gcd_intent.Intent.Message.RbmSuggestedAction.RbmSuggestedActionDial):                     Suggested client side action: Dial a phone                     number                 open_url (~.gcd_intent.Intent.Message.RbmSuggestedAction.RbmSuggestedActionOpenUri):                     Suggested client side action: Open a URI on                     device                 share_location (~.gcd_intent.Intent.Message.RbmSuggestedAction.RbmSuggestedActionShareLocation):                     Suggested client side action: Share user                     location Opens the user's default dialer app with the specified phone                 number but does not dial automatically.                  Attributes:                     phone_number (str):                         Required. The phone number to fill in the default dialer                         app. This field should be in                         `E.164 <https://en.wikipedia.org/wiki/E.164>`__ format. An                         example of a correctly formatted phone number: +15556767888. Opens the user's default web browser app to the specified uri                 If the user has an app installed that is                 registered as the default handler for the URL, then this app                 will be opened instead, and its icon will be used in the                 suggested action UI.                  Attributes:                     uri (str):                         Required. The uri to open on the user device Opens the device's location chooser so the user can pick a                 location to send back to the agent. The media content card for Actions on Google.              Attributes:                 media_type (~.gcd_intent.Intent.Message.MediaContent.ResponseMediaType):                     Optional. What type of media is the content                     (ie "audio").                 media_objects (Sequence[~.gcd_intent.Intent.Message.MediaContent.ResponseMediaObject]):                     Required. List of media objects. Format of response media type. Response media object for media content card.                  Attributes:                     name (str):                         Required. Name of media card.                     description (str):                         Optional. Description of media card.                     large_image (~.gcd_intent.Intent.Message.Image):                         Optional. Image to display above media                         content.                     icon (~.gcd_intent.Intent.Message.Image):                         Optional. Icon to display above media                         content.                     content_url (str):                         Required. Url where the media is stored. Browse Carousel Card for Actions on Google.             https://developers.google.com/actions/assistant/responses#browsing_carousel              Attributes:                 items (Sequence[~.gcd_intent.Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem]):                     Required. List of items in the Browse                     Carousel Card. Minimum of two items, maximum of                     ten.                 image_display_options (~.gcd_intent.Intent.Message.BrowseCarouselCard.ImageDisplayOptions):                     Optional. Settings for displaying the image. Applies to                     every image in                     [items][google.cloud.dialogflow.v2beta1.Intent.Message.BrowseCarouselCard.items]. Image display options for Actions on Google. This should be                 used for when the image's aspect ratio does not match the image                 container's aspect ratio. Browsing carousel tile                  Attributes:                     open_uri_action (~.gcd_intent.Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem.OpenUrlAction):                         Required. Action to present to the user.                     title (str):                         Required. Title of the carousel item. Maximum                         of two lines of text.                     description (str):                         Optional. Description of the carousel item.                         Maximum of four lines of text.                     image (~.gcd_intent.Intent.Message.Image):                         Optional. Hero image for the carousel item.                     footer (str):                         Optional. Text that appears at the bottom of                         the Browse Carousel Card. Maximum of one line of                         text. Actions on Google action to open a given url.                      Attributes:                         url (str):                             Required. URL                         url_type_hint (~.gcd_intent.Intent.Message.BrowseCarouselCard.BrowseCarouselCardItem.OpenUrlAction.UrlTypeHint):                             Optional. Specifies the type of viewer that                             is used when opening the URL. Defaults to                             opening via web browser. Type of the URI. Table card for Actions on Google.              Attributes:                 title (str):                     Required. Title of the card.                 subtitle (str):                     Optional. Subtitle to the title.                 image (~.gcd_intent.Intent.Message.Image):                     Optional. Image which should be displayed on                     the card.                 column_properties (Sequence[~.gcd_intent.Intent.Message.ColumnProperties]):                     Optional. Display properties for the columns                     in this table.                 rows (Sequence[~.gcd_intent.Intent.Message.TableCardRow]):                     Optional. Rows in this table of data.                 buttons (Sequence[~.gcd_intent.Intent.Message.BasicCard.Button]):                     Optional. List of buttons for the card. Column properties for             [TableCard][google.cloud.dialogflow.v2beta1.Intent.Message.TableCard].              Attributes:                 header (str):                     Required. Column heading.                 horizontal_alignment (~.gcd_intent.Intent.Message.ColumnProperties.HorizontalAlignment):                     Optional. Defines text alignment for all                     cells in this column. Text alignments within a cell. Row of             [TableCard][google.cloud.dialogflow.v2beta1.Intent.Message.TableCard].              Attributes:                 cells (Sequence[~.gcd_intent.Intent.Message.TableCardCell]):                     Optional. List of cells that make up this                     row.                 divider_after (bool):                     Optional. Whether to add a visual divider                     after this row. Cell of             [TableCardRow][google.cloud.dialogflow.v2beta1.Intent.Message.TableCardRow].              Attributes:                 text (str):                     Required. Text in this cell. Represents a single followup intent in the chain.          Attributes:             followup_intent_name (str):                 The unique identifier of the followup intent. Format:                 ``projects/<Project ID>/agent/intents/<Intent ID>``.             parent_followup_intent_name (str):                 The unique identifier of the followup intent's parent.                 Format: ``projects/<Project ID>/agent/intents/<Intent ID>``. The request message for     [Intents.ListIntents][google.cloud.dialogflow.v2beta1.Intents.ListIntents].      Attributes:         parent (str):             Required. The agent to list all intents from. Format:             ``projects/<Project ID>/agent``.         language_code (str):             Optional. The language used to access language-specific             data. If not specified, the agent's default language is             used. For more information, see `Multilingual intent and             entity             data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.         intent_view (~.gcd_intent.IntentView):             Optional. The resource view to apply to the             returned intent.         page_size (int):             Optional. The maximum number of items to             return in a single page. By default 100 and at             most 1000.         page_token (str):             Optional. The next_page_token value returned from a previous             list request. The response message for     [Intents.ListIntents][google.cloud.dialogflow.v2beta1.Intents.ListIntents].      Attributes:         intents (Sequence[~.gcd_intent.Intent]):             The list of agent intents. There will be a maximum number of             items returned based on the page_size field in the request.         next_page_token (str):             Token to retrieve the next page of results,             or empty if there are no more results in the             list. The request message for     [Intents.GetIntent][google.cloud.dialogflow.v2beta1.Intents.GetIntent].      Attributes:         name (str):             Required. The name of the intent. Supported formats:              -  ``projects/<Project ID>/agent/intents/<Intent ID>``             -  ``projects/<Project ID>/locations/<Location ID>/agent/intents/<Intent ID>``         language_code (str):             Optional. The language used to access language-specific             data. If not specified, the agent's default language is             used. For more information, see `Multilingual intent and             entity             data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.         intent_view (~.gcd_intent.IntentView):             Optional. The resource view to apply to the             returned intent. The request message for     [Intents.CreateIntent][google.cloud.dialogflow.v2beta1.Intents.CreateIntent].      Attributes:         parent (str):             Required. The agent to create a intent for. Supported             formats:              -  ``projects/<Project ID>/agent``             -  ``projects/<Project ID>/locations/<Location ID>/agent``         intent (~.gcd_intent.Intent):             Required. The intent to create.         language_code (str):             Optional. The language used to access language-specific             data. If not specified, the agent's default language is             used. For more information, see `Multilingual intent and             entity             data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.         intent_view (~.gcd_intent.IntentView):             Optional. The resource view to apply to the             returned intent. The request message for     [Intents.UpdateIntent][google.cloud.dialogflow.v2beta1.Intents.UpdateIntent].      Attributes:         intent (~.gcd_intent.Intent):             Required. The intent to update.         language_code (str):             Optional. The language used to access language-specific             data. If not specified, the agent's default language is             used. For more information, see `Multilingual intent and             entity             data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.         update_mask (~.field_mask.FieldMask):             Optional. The mask to control which fields             get updated.         intent_view (~.gcd_intent.IntentView):             Optional. The resource view to apply to the             returned intent. The request message for     [Intents.DeleteIntent][google.cloud.dialogflow.v2beta1.Intents.DeleteIntent].      Attributes:         name (str):             Required. The name of the intent to delete. If this intent             has direct or indirect followup intents, we also delete             them.              Supported formats:              -  ``projects/<Project ID>/agent/intents/<Intent ID>``             -  ``projects/<Project ID>/locations/<Location ID>/agent/intents/<Intent ID>`` The request message for     [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents].      Attributes:         parent (str):             Required. The name of the agent to update or create intents             in. Supported formats:              -  ``projects/<Project ID>/agent``             -  ``projects/<Project ID>/locations/<Location ID>/agent``         intent_batch_uri (str):             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://".         intent_batch_inline (~.gcd_intent.IntentBatch):             The collection of intents to update or             create.         language_code (str):             Optional. The language used to access language-specific             data. If not specified, the agent's default language is             used. For more information, see `Multilingual intent and             entity             data <https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity>`__.         update_mask (~.field_mask.FieldMask):             Optional. The mask to control which fields             get updated.         intent_view (~.gcd_intent.IntentView):             Optional. The resource view to apply to the             returned intent. The response message for     [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents].      Attributes:         intents (Sequence[~.gcd_intent.Intent]):             The collection of updated or created intents. The request message for     [Intents.BatchDeleteIntents][google.cloud.dialogflow.v2beta1.Intents.BatchDeleteIntents].      Attributes:         parent (str):             Required. The name of the agent to delete all entities types             for. Supported formats:              -  ``projects/<Project ID>/agent``             -  ``projects/<Project ID>/locations/<Location ID>/agent``         intents (Sequence[~.gcd_intent.Intent]):             Required. The collection of intents to delete. Only intent             ``name`` must be filled in. This message is a wrapper around a collection of intents.      Attributes:         intents (Sequence[~.gcd_intent.Intent]):             A collection of intents.