# 触发器结构

> Understand the structure of a trigger configuration that defines what to invoke when an event fires.

触发器配置可以定义触发事件时应调用的内容。

可能如下所示：

```json
{
  "name" : "example-trigger",
  "eventType" : "com.unity.services.{{SERVICE_NAME}}.{{EVENT_NAME}}.v{{EVENT_VERSION}}",
  "actionUrn" : "urn:ugs:cloud-code:{{SCRIPT}}",
  "actionType" : "cloud-code",
  "filter": "data['parameter'] == 'value'"
}
```

* `name`：触发器的名称。对于每个项目，此名称必须具有唯一性。
* `eventType`：用于将触发器与事件匹配。由 `eventName` 和 `eventVersion` 字段组成，这两个字段分别对应于事件配置中的 `eventName` 和 `payloadVersion` 字段。
* `actionUrn`：定义触发器触发时应调用的内容。例如，`urn:ugs:cloud-code:TestScript` 调用 `TestScript` Cloud Code 脚本，或者 `urn:ugs:cloud-code:TestModule/TestFunction` 调用 `TestModule` Cloud Code 模块中的 `TestFunction` 函数。
* `actionType`：触发器触发时要执行的操作的类型。目前仅支持 `cloud-code`。
* `filter`：可选字段，定义触发器触发所必须满足的条件。如果条件不满足，触发器就不会触发。如需了解更多信息，请参阅[过滤器](./filters.md)。

> **Note:**
>
> **注意：** 您不能通过 CLI 创建带有过滤器的触发器。请使用 [Triggers API](/triggers/tutorials/define-triggers/rest-api.md) 或 [Unity Dashboard](/triggers/tutorials/define-triggers/unity-dashboard.md)。

## 与事件重叠##overlap-with-events

触发器与事件相关联。触发事件时将调用关联的触发器。事件和触发器必须共享相同的 `eventName` 和 `payloadVersion` 配置。

> **Note:**
>
> **注意：**`eventType` 将事件映射到触发器。

### 计划性事件##scheduled-events

假设计划配置如下：

```json
{
  "name" : "recurring-schedule",
  "eventName": "example-event",
  "type": "recurring",
  "schedule": "0 0 * * *",
  "payloadVersion": 1,
  "payload": "{\"someBoolean\": true, \"someString\": \"something\"}"
}
```

触发器配置如下：

```json
{
  "name" : "example-trigger",
  "eventType" : "com.unity.services.scheduler.example-event.v1",
  "actionUrn" : "urn:ugs:cloud-code:my-script",
  "actionType" : "cloud-code"
}
```

通过将触发器配置中的 `eventType` 字段设置为计划配置中的 `eventName` 和 `payloadVersion` 字段，可以将触发器与事件类型相关联。

部署计划配置后，在指定时间会触发计划，向 Triggers 服务发送一个事件，进而调用关联的 Cloud Code 资源。

### UGS 事件##ugs-events

假设您希望将触发器与 UGS 中的事件类型相关联，您需要在触发器配置中指定事件类型。

例如，如果您希望在发生 [Authentication：注册](/triggers/manage-events/supported-ugs-events.md#signed-up)事件时触发一个触发器，您可以创建以下触发器配置：

```json
{
  "name" : "example-trigger",
  "eventType" : "com.unity.services.player-auth.signed-up.v1",
  "actionUrn" : "urn:ugs:cloud-code:my-script",
  "actionType" : "cloud-code"
}
```

每次用户注册时，都会触发此触发器，从而调用 `my-script` Cloud Code 脚本。

### 每个触发器对应多个事件##multiple-events-per-trigger

您可以将同一事件与多个触发器关联。

> **Note:**
>
> **注意：** 每个事件类型的触发器数量当前限制为 32 个。

例如，您可以创建两个在用户注册时调用的触发器。

第一个触发器调用 `add-cloud-save-data` 脚本为经过身份验证的用户添加 Cloud Save 数据条目：

```json
{
  "name" : "auth-cloud-save",
  "eventType" : "com.unity.services.player-auth.signed-up.v1",
  "actionUrn" : "urn:ugs:cloud-code:add-cloud-save-data",
  "actionType" : "cloud-code"
}
```

第二个触发器从 `Economy` 模块调用 `add-economy-items` 终端，向经过身份验证的用户添加虚拟物品：

```json
{
  "name" : "auth-economy",
  "eventType" : "com.unity.services.player-auth.signed-up.v1",
  "actionUrn" : "urn:ugs:cloud-code:Economy/add-economy-items",
  "actionType" : "cloud-code"
}
```

每次有用户注册时，两个触发器都会被触发并调用相关的 Cloud Code 资源。
