> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 操作和规则快速入门

> 使用触发器、条件和操作构建你的第一个 PlayStream 规则，以实时响应玩家事件并推动自动化的 LiveOps 响应。

# 操作和规则快速入门

PlayStream 规则允许你实时响应一种类型的 PlayStream 事件的子集。

## 要求

* [Game Manager 快速入门](/services/playfab/live-service-management/gamemanager/quickstart)
* [使用玩家统计信息](/services/playfab/community/leaderboards/tournaments-leaderboards/using-player-statistics)（包含可帮助你完成本教程中示例的信息）。

相关术语的快速词汇表：

* **PlayStream**：构成 PlayFab 事件管道的功能组。
  * **PlayStream 事件** 是描述有关玩家或游戏的事件的 JSON 格式字符串。
  * **PlayStream 事件** 具有基于你的自动化功能层的最大大小。

* **规则**：实时响应一种类型的 PlayStream 事件执行额外的逻辑。
  * 由以下部分组成：一个 **事件触发器**，一个可选的 **条件** 列表，以及一个可选的 **操作** 列表。

* **触发器**：激活此规则的事件的名称。

* **条件**：规则和其他 PlayStream 功能的内容筛选器。
  * 对 PlayStream 事件 JSON 对象执行非常轻量的评估，并跳过不符合要求的事件。

* **操作**：要在适当的实体上执行的上下文相关的工作。

规则由恰好一个触发器、一个可选的条件列表以及通常至少一个操作组成（不是必需的，但没有操作则毫无用处）。

触发器、条件和操作也是其他系统的一部分：[批量操作](/services/playfab/data-analytics/acting-data/action-rules-bulk-actions-for-an-entire-player-segment) 和 [锦标赛排行榜（已弃用）](/services/playfab/community/leaderboards/tournaments-leaderboards/using-resettable-statistics-and-leaderboards)。

## 示例案例：计算来自客户端的自定义事件

在下面显示的示例中，我们从客户端发布以下自定义事件。

```csharp theme={null}
public void WriteEvent() {
    PlayFabClientAPI.WritePlayerEvent(new WriteClientPlayerEventRequest {
        EventName = "ForumPostEvent",
        Body = new Dictionary<string, object> {
            { "Subject", "My First Post" },
            { "Body", "My awesome Post." }
        }
    }, LogSuccess, LogFailure);
}
```

在这种情况下，客户端手动报告一个自定义 `ForumPostEvent`（这目前不对应于 PlayFab 或受支持的合作伙伴中的任何自动事件）

我们将使用 PlayStream 规则来计算玩家以此方式报告论坛帖子的次数。

**要求**：在 Game Manager GUI 允许你创建触发它的规则之前，你的游戏必须*已经*发布过此类型的事件。

前往你的 **Game Manager**：

* 导航到你的 **Title**。
* 选择 **Automation**。
* 前往 **Rules**。
* 选择 **New Rule**。

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-automation-new-rule.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=bd467d6b0caea0e4a258bf1c6b2a7cd8" alt="Game Manager - automation - new rule" width="897" height="1036" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-automation-new-rule.png" />

让我们在此示例中逐块评估 **New Rule**：

* **`title.6195.ForumPostEvent`**
  * `6195` 是本教程中使用的 title。你的 titleId 将与你自己的 Title 匹配。
  * `ForumPostEvent` 是此示例案例代码中使用的事件名称。
  * 此行仅在你最近在你的 Title 中至少发布过一个 `ForumPostEvent` 时才可用。
* 此示例中专门使用的 **Conditions** 用途最少。
  * 但是，它*确实*演示了如果我们的 **Body** 字典中 **Body** 键映射到 **Invalid string** 时筛选我们的自定义事件。
  * 筛选器是可选的，应从你的规则中移除不相关的玩家。
* 在这种情况下，选择的 **Actions** 将统计信息计数器递增一。
  * **要求**：**Forum Posts** 统计信息必须在 Game Manager 的排行榜下定义。

在 Game Manager **PlayStream Debugger**（如下所示）中，你可以观察触发器生效。

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-playstream-debugger-event-trigger.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=7fbbc21d4c1f53db11e54c647d9610fa" alt="Game Manager - PlayStream - debugger - event trigger" width="452" height="213" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-playstream-debugger-event-trigger.png" />

如你所见，自定义 `ForumPostEvent` 自动触发我们为新规则在 **Actions** 下设置的统计信息。

## 高级：CloudScript 操作

**PlayFab** 中的许多内置操作相当简单，可能无法提供你所需的全部功能。这就是为什么我们允许你使用 CloudScript 完全自定义操作逻辑。

让我们编辑 **Rule**。

* 删除 **Condition**。
* 将 **Action** 设置为 **Execute CloudScript**。
* 选择 **Save Action** 按钮。

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-automation-edit-rule.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=b69ba07416a1d485dc29b4e69637dfe0" alt="Game Manager - automation - edit rule" width="914" height="802" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-automation-edit-rule.png" />

现在，如果我们发布一个新的 **ForumPostEvent**，我们将看到一次 CloudScript 执行。

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-playstream-debugger-cloudscript-execution.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=f0cdab71d528049e20c131b846a84eb5" alt="Game Manager - PlayStream - debugger - CloudScript execution" width="462" height="167" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-playstream-debugger-cloudscript-execution.png" />

编写响应 PlayStream 规则的 CloudScript 是一个高级主题，将在我们的教程中介绍：[将 CloudScript 操作与 PlayStream 结合使用](/services/playfab/data-analytics/acting-data/action-rules-using-cloudscript-actions-with-playstream)。


## Related topics

- [操作和规则](/zh-CN/services/playfab/data-analytics/acting-data/action-rules-overview.md)
- [PlayFab 数据与分析文档](/zh-CN/services/playfab/data-analytics/index.md)
- [使用 Azure Functions 的 PlayFab CloudScript 快速入门指南](/zh-CN/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/quickstart.md)
- [事件采样快速入门](/zh-CN/services/playfab/data-analytics/export-data/event-sampling-quickstart.md)
- [Linux 快速入门](/zh-CN/services/playfab/multiplayer/networking/linux-specific-requirements.md)
