# Build projects

<button value="builder" default="">Actions Builder</button> <button value="sdk">Actions SDK</button> [Video](https://www.youtube.com/watch?v=BbT5Q9QxpiI)

An Actions project packages all of your Actions into a single container. You
publish this project to Actions on Google so Google Assistant knows how to discover
and invoke your conversational experiences.
![actions project components](https://developers.google.com/assistant/conversational/images/actions-project.svg) **Figure 1**. Actions project structure

You use the following low-level components to build your Actions project:

- [**Settings and resources**](https://developers.google.com/assistant/conversational/build/projects#define_project_information) define project metadata
  and resources like project icons. Google uses this information to publish
  your Actions to the Assistant directory, so that users can discover and invoke
  them.

- [**Intents**](https://developers.google.com/assistant/conversational/intents) represent a task to be carried out, such as some
  user input or a system event that needs processing. The most common type of
  intent you'll use are user intents. These intents let you declare training
  phrases that are naturally expanded by the NLU (natural language understanding)
  engine to include many more, similar phrases. The NLU uses the aggregation of
  these phrases to train a language model that the Assistant uses to match user
  input. During a conversation, if some user input matches the intent's language
  model, the Assistant runtime sends the intent to your Action, so that it can
  process it and respond to the user.

- [**Types**](https://developers.google.com/assistant/conversational/types) let you extract structured data from user input. By
  annotating training phrases with types, the NLU can extract relevant, structured
  data for you, so you don't have to parse open-ended input.

- [**Scenes**](https://developers.google.com/assistant/conversational/scenes) process intents and are the main logic executors for
  your Actions. They can do slot-filling, evaluate conditional logic, return
  prompts to the user, and even call on external web services to carry out
  business logic. In combination with intents, scenes give you a powerful way to
  detect specific user input or system events and to carry out corresponding
  logic.

- [**Prompts**](https://developers.google.com/assistant/conversational/prompts) define static or dynamic responses that you use to
  respond back to users.

- [**Webhooks**](https://developers.google.com/assistant/conversational/webhooks) let you delegate extra work to web services
  (fulfillment), such as validating data or generating prompts. Your Actions
  communicate with your fulfillment through a JSON-based, webhook protocol.

- [**Interactive Canvas**](https://developers.google.com/assistant/interactivecanvas) lets you create rich
  and immersive experiences with web apps that utilize HTML, CSS, and JavaScript.

## Create a project

You must create a project in the Actions console before you can develop for
Google Assistant. To create a project:

1. Go to the [Actions console](https://console.actions.google.com/).
2. Click **New project**.
3. Enter a name for your project and click **Create Project** . ![](https://developers.google.com/static/assistant/images/create-project.png)
4. In the **What kind of Action do you want to build?** screen, select a category that best represents your project and click **Next**.
5. In the **How do you want to build it** screen, select a way to build and click **Start building**. For example, you can start with an empty project or with a sample.

> [!IMPORTANT]
> **Key Point:** If you are building for Interactive Canvas, follow these additional steps:
>
> 1. If you did not select the **Game** card on the **What type of Action
>    do you want to build?** screen, click **Deploy** in the top navigation. Under **Additional Information** , select the **Games \& fun** category. Click **Save**.
> 2. Click **Develop** in the top navigation of the Actions console.
> 3. Click **Interactive Canvas** in the left navigation.
> 4. Under **Does your Action use Interactive Canvas?** , select **Yes**.
> 5. **Optional** : Enter your web app URL into the **Set your default web app URL** field. This action adds a default `Canvas` response with the URL field to your Main invocation.
> 6. Click **Save**.

<br />

## Define project information

> [!NOTE]
> **Note:** See the [Directory information](https://developers.google.com/assistant/console/directory-information) documentation for more details on how to manage project information.

Your project's settings and resources define information about your project like
feature and surface support, supported locales, display name, description,
logos, and more. The following table describes the main settings and resources
you provide. Actions on Google uses this
information to deploy and publish your project to the [Assistant
directory](https://assistant.google.com/explore).

| Name | Description |
|---|---|
| Directory information | Provides information so that Actions on Google can publish your project to the Assistant directory. Includes metadata and desecriptions about your project and image resources for logos and banner images. |
| Location targeting | Configures the locales that your Actions are available in. |
| Surface capabilities | Configures the surfaces that your Actions are available on. |
| Company details | Specifies contact information for your company. |
| Brand verification | Connect a website or Android app that you own to gain extra benefits such as reserved invocation names and website linking within your Actions. |
| Release | Configures different testing and production releases for your Action for testing and production. |
| Assistant links | Let users invoke your Actions from your web properties. |

To define project information:

## Test projects in the simulator

> [!NOTE]
> **Note:** See the [Actions simulator](https://developers.google.com/assistant/console/simulator) documentation for complete information about testing your projects.

The Actions console provides a simulator to preview your Actions in. The
simulator lets you see debug information, set device capabilities, simulate
locale, and more.
![](https://developers.google.com/static/assistant/console/images/simulator/simulator-overview.png) **Figure 3.** The main areas of the simulator: (1) user input, (2) device view, (3) options and settings, and (4) conversation log.

To test a project: