# Build invocation models

<button value="builder" default="">Actions Builder</button> <button value="sdk">Actions SDK</button>

An invocation model specifies how users invoke the Actions in your project.
When users invoke an Action, they begin a conversation with it, which is
defined by your [conversation model](https://developers.google.com/assistant/conversational/build/conversation). You can define invocations
in the following ways:

- [**Main invocation**](https://developers.google.com/assistant/conversational/build/main-invocation) - This
  is the only required invocation for your Actions project. Users say a phrase
  similar to *"Ok Google, talk to \<display name\>"* to match this intent,
  which you typically handle by greeting the user with a welcome message.

- [**Deep link invocations**](https://developers.google.com/assistant/conversational/build/deep-link-invocations) -
  These are optional invocations that let you define training phrases in a
  custom intent, so users can deep link into a specific part of your
  conversation. Users can say a phrase similar to *"Ok Google, talk to
  \<display name\> to \<deep link phrase\>"* to match these types of
  intents (for example, *"Ok Google, talk to Facts about Google to get company
  facts"*)

- [**Built-in intents**](https://developers.google.com/assistant/conversational/build/built-in-intents) -
  These are optional invocations that let you take advantage of system-defined
  invocation models. By declaring support for a built-in intent, users can
  discover and invoke your Actions project without having to specify your
  display name. For example, users can say *"Ok Google, play a game"*, and
  Google Assistant can present your Action as an option for invocation.

![](https://developers.google.com/assistant/conversational/images/invocation-model.svg) **Figure 1.** An invocation model consists of all the intents that are eligible to start conversations with your Actions.

> [!NOTE]
> **Note:** Only intents that are defined in your invocation model are eligible for matching during invocation. User intents in your [conversation model](https://developers.google.com/assistant/conversational/build/invocation#conversation_model) aren't eligible for invocation.

## Create the main invocation

Every Actions project has a default, main invocation that acts as the default
entry point into your Actions project.The language model for this invocation
is associated with your project's display name, so users just need to say a
phrase similar to *"Ok Google, talk to \<display name\>"* to use this
invocation. When users invoke your Actions in this manner, the Assistant
runtime matches the `actions.intent.MAIN` system intent.

To create the main invocation:

## Create deep link invocations

To build deep link invocations, you create global user intents with training
phrases that define the user input that you want to set for the deep link.
Users say your display name in combination with the deep link phrase to carry
out a deep link invocation (for example, *"Ok Google, talk to \<display
name\> to \<deep link phrase\>"*)

> [!NOTE]
> **Note:** Intents that are associated with deep link invocations are also valid for matching during a conversation.

## Create implicit invocations

> [!NOTE]
> **Note:** Currently, only the `actions.intent.PLAY_GAME` system intent is supported. You must register for this intent in order to be eligible for implicit invocation if you built a game.

Implicit invocation lets users invoke your Action without using your project's
display name. To find matching Actions, Google uses signals such as users
telling Assistant to do something that's similar to an invocation phrase for one
of your configured intents, or when the user is in a context where your Actions
would be appropriate.

## Handle invocation events

When Assistant matches one of your global intents, it triggers an event that you
can process with a handler. The following sections describe what your handler
can carry out (you can choose one or any combination of the three).

### Trigger a webhook

Your intent handler can delegate to a web service by triggering a webhook event.
To trigger a webhook and have a web service handle the invocation:

> [!NOTE]
> **Note:** See the [webhooks](https://developers.google.com/assistant/conversational/webhooks) documentation for more information on what you can do in your fulfillment.

### Prompts

Your intent handler can respond with a static prompt. Typically, prompts for
invocation intents welcome the user, orient them on how to use the Action, or
respond with the information the user needs immediately (one-shot Actions).

To handle an invocation intent match with a prompt:

> [!NOTE]
> **Note:** See the [prompts](https://developers.google.com/assistant/conversational/prompts) documentation for more information on what you can do with prompts.

### Transition to a scene

Your intent handler can transition to a scene to process the matched invocation
intent. This gives you the most flexibility to carry out logic. To transition to
a scene:

> [!NOTE]
> **Note:** See the [scenes](https://developers.google.com/assistant/conversational/scenes) and [conversation models](https://developers.google.com/assistant/conversational/build/conversation) documentation for more information on how to build scenes.