# Intents overview (Dialogflow)

Intents are messaging objects that describe how to do something. You can use
intents in one of two ways:

- By providing the fulfillment for an intent, or
- By requesting the fulfillment of an intent by Google Assistant.

The process by which you provide the fulfillment for an intent is different for
developers [building with Dialogflow](https://developers.google.com/assistant/df-asdk/dialogflow/define-actions)
and for developers [building with the Actions SDK](https://developers.google.com/assistant/df-asdk/actions-sdk/define-actions).
However, in both cases, you're providing the name of the intent and the URL of
your fulfillment webhook. This tells Actions on Google that you can support user
queries that match the intent.

To request fulfillment of an intent, you specify the intent in the [`possibleIntents`](https://developers.google.com/assistant/df-asdk/reference/webhook/rest/Shared.Types/AppResponse#ExpectedInput.FIELDS.possible_intents)
object when responding to the Assistant. In the subsequent request to your
fulfillment, the Assistant returns the result of the
[processed intent](https://developers.google.com/assistant/df-asdk/reference/webhook/rest/Shared.Types/AppRequest#Input.FIELDS.intent)
to you. For more information, read the [helpers usage overview](https://developers.google.com/assistant/df-asdk/helpers).

> [!NOTE]
> **Note:** If you're using Dialogflow, you also need to create a Dialogflow intent and specify the corresponding Dialogflow event.

## Common intents

The following table describes intents that the Assistant requests for
you to fulfill.

| Intent name | Usage | Dialogflow event |
|---|---|---|
| `actions.intent.MAIN` | **Required**: Every Action package declares one and only one intent acts as an entry point for users to start conversations. | `WELCOME` or `GOOGLE_ASSISTANT_WELCOME` |
| `actions.intent.TEXT` | Obtain raw text representation of a user request. You use this most of the time when engaging in a conversation with users. |   |
| `actions.intent.CANCEL` | You receive this intent when you [opt into receiving cancel intents](https://developers.google.com/assistant/df-asdk/conversation-exits) in your action package. When users say a global cancel command such as "quit", you receive this intent in the next request to your fulfillment, so you can respond with a final message and do any cleanup in your fulfillment logic. | `actions_intent_CANCEL` |
| `actions.intent.NO_INPUT` | You receive this intent when you [opt into receiving no-input intents](https://developers.google.com/assistant/df-asdk/reprompts) in your action package. When users don't respond to a prompt, you receive this intent in the next request to your fulfillment. | `actions_intent_NO_INPUT` |

## Helpers

The following table describes the supported [helpers](https://developers.google.com/assistant/df-asdk/helpers)
that you can request the Assistant to fulfill.

| Intent name | Usage | Dialogflow event |
|---|---|---|
| `actions.intent.PERMISSION` | Obtain the user's [full name, coarse location, or precise location, or all 3](https://developers.google.com/assistant/df-asdk/helpers#user_information). | `actions_intent_PERMISSION` |
| `actions.intent.OPTION` | Receive the selected item from a [list](https://developers.google.com/assistant/df-asdk/selection-responses#list) or [carousel](https://developers.google.com/assistant/df-asdk/selection-responses#carousel) UI. Or, if the user does not select from the list or carousel UI, receive speech or text input that matches with the key in the list or carousel UI. | `actions_intent_OPTION` |
| `actions.intent.DATETIME` | Obtain a [date and time input](https://developers.google.com/assistant/df-asdk/helpers#date_and_time) from the user. | `actions_intent_DATETIME` |
| `actions.intent.SIGN_IN` | Requests an [account linking](https://developers.google.com/assistant/identity) flow to link a user's account. | `actions_intent_SIGN_IN` |
| `actions.intent.PLACE` | Obtain an address or saved location from the user. | `actions_intent_PLACE` |
| `actions.intent.CONFIRMATION` | Obtain a [confirmation](https://developers.google.com/assistant/df-asdk/helpers#confirmation) from the user (for example, an answer to a yes or no question). | `actions_intent_CONFIRMATION` |
| `actions.intent.NEW_SURFACE` | Asks the user for permission to [hand off to another Assistant surface](https://developers.google.com/assistant/df-asdk/surface-capabilities#multi-surface_conversations). | `actions_intent_NEW_SURFACE` |

## Built-in intents

Built-in intents model some of the common ways that users express tasks they're
trying to do or information they seek, such as ordering a meal, booking a ride,
or checking an account balance. See the [built-in intents reference](https://developers.google.com/assistant/actions/reference/built-in-intents)
for more information.

## Additional intents

Most Conversational Actions are built with a combination of the common intents, helpers, and
responses. However, Actions that incorporate additional features like
transactions or daily updates have access to intents specific to those
features.

### Transaction helpers

The following table describes helpers related to handling purchases that you can
request the Assistant to fulfill. You can find more information about how to
implement these and other related intents in the
[transactions](https://developers.google.com/assistant/transactions) feature documentation.

| Intent name | Usage | Dialogflow event |
|---|---|---|
| `actions.intent.DELIVERY_ADDRESS` | Obtain a delivery address input from the user. | `actions_intent_DELIVERY_ADDRESS` |
| `actions.intent.TRANSACTION_REQUIREMENTS_CHECK` | Check if all the requirements for a transaction are met. | `actions_intent_TRANSACTION_REQUIREMENTS_CHECK` |
| `actions.intent.TRANSACTION_DECISION` | Asks the user if the transaction should occur. | `actions_intent_TRANSACTION_DECISION` |
| `actions.intent.DIGITAL_PURCHASE_CHECK` | Validates the user's transaction configuration. Used to avoid offering digital goods to users for which the transaction will fail. | `actions_intent_DIGITAL_PURCHASE_CHECK` |
| `actions.intent.COMPLETE_PURCHASE` | Begins a purchase request. Results in a purchase result describing whether and how the transaction succeeded or failed. | `actions_intent_COMPLETE_PURCHASE` |

### User engagement intents

The following table describes intents related to user engagement features.
You can find more information about how to implement these and other related
intents in the [user engagement](https://developers.google.com/assistant/engagement) feature documentation.

| Intent name | Provide fulfillment | Request fulfillment | Usage | Dialogflow event |
|---|---|---|---|---|
| `actions.intent.REGISTER_UPDATE` |   | X | Asks the user to register for [updates](https://developers.google.com/assistant/engagement/daily). | `actions_intent_REGISTER_UPDATE` |
| `actions.intent.CONFIGURE_UPDATES` | X |   | You receive this intent when the user tries to register for [updates](https://developers.google.com/assistant/engagement/daily) (i.e., a REGISTER_UPDATE intent should be sent). | `actions_intent_CONFIGURE_UPDATES` |

### Custom intents

You can create your own intents to define shortcuts into the conversation to
help users get things done more efficiently. These intents reside in your own
namespace; you define how users trigger the intents, and your Action package is
the only one that can support them.

For more information, read about [defining Actions in Dialogflow](https://developers.google.com/assistant/df-asdk/dialogflow/define-actions)
or [with the Actions SDK](https://developers.google.com/assistant/df-asdk/actions-sdk/define-actions). You can find more information on
Action packages in the [Action package reference](https://developers.google.com/assistant/df-asdk/reference/action-package/rest/Shared.Types/ActionPackage)
documentation.

## Smart home intents

If you're building a smart home Action, you define support for intents in a
slightly different way. See the [smart home intents](https://developers.google.com/assistant/smarthome/concepts/intents)
documentation for more information.