---
title: 模板系统 - 动态通知内容
sidebarTitle: 模板
description: 掌握 Echobell 的模板系统以创建动态、信息丰富的通知。包含变量替换、表达式、运算符、系统变量和通知模板最佳实践的完整指南。
---

# Echobell 模板

模板允许您通过在通知标题和正文中加入变量来创建动态、包含丰富上下文的通知。这个强大的功能使个性化和信息性告警能够根据触发数据进行调整，将泛泛的通知转化为可操作的情报。

Echobell 中的模板允许您通过在通知标题和内容中整合变量来创建动态通知。此功能可根据触发数据生成个性化和信息丰富的提醒。

## 基本模板语法

在 Echobell 模板中，您可以通过将变量包裹在双大括号中来使用它们：

```
{{变量名}}
```

当频道被触发时，这些变量将被通过触发器传递的实际值所替代。例如，如果您的标题模板是 `您已收到 ${{amount}}`，并且您用 `amount` 值为 100 触发了频道，结果通知将显示为 `您已收到 $100`。

## 高级模板表达式

Echobell 模板支持多种表达式，适用于更复杂的场景：

- 访问对象属性

```
{{user.name}}
{{user["name"]}}
```

- 访问数组元素

```
{{list[0]}}
```

- 使用比较运算符

```
{{status == "active"}}
{{age > 18}}
```

- 逻辑运算符

```
{{isSubscribed && !isPaused}}
{{isUrgent || isPriory}}
```

支持所有标准运算符：`==`、`!=`、`<`、`>`、`<=`、`>=`、`&&`、`||` 和 `!`。

## 来自不同触发器的模板变量

### Webhook 触发器

通过 webhook 触发时，您可以通过以下方式提供变量：

1. **查询字符串参数**：

   ```http
   GET https://hook.echobell.one/t/token?amount=100&status=active
   ```

2. **JSON 主体**（用于 POST 请求）：

   ```http
   POST https://hook.echobell.one/t/token
   Content-Type: application/json

   {
     "amount": 100,
     "status": "active",
     "user": {
       "name": "张三",
       "id": 12345
     }
   }
   ```

3. **特殊变量**：

   - `externalLink`：在通知记录中提供可点击链接
   - `bodyAsText`: 如果 `Content-Type` 是 `text/plain`，则为请求正文的纯文本内容
   - `header`：提供对 HTTP 请求头的访问（例如，`{{header["content-type"]}}`)

### 电子邮件触发器

当频道通过电子邮件触发时，以下变量将自动可用：

- `from`：发件人电子邮件地址
- `to`：收件人电子邮件地址
- `subject`：电子邮件主题行
- `text`：电子邮件的纯文本内容
- `html`：电子邮件的 HTML 内容

## 模板使用案例

### 条件内容

您可以使用模板基于条件显示不同内容：

```
已收到{{amount > 1000 ? "大额" : "标准"}}付款：${{amount}}
```

### 频道条件

除了在通知内容中使用模板外，您还可以在频道高级设置中设置**条件**，确定是否应发送通知。这些条件使用相同的表达式语法（不含大括号）。

例如，仅对超过阈值的金额发送通知：

```
金额 > 100
```

## 链接模板

在频道高级设置中配置自定义链接模板，以在通知记录中创建可点击链接：

```
https://dashboard.example.com/orders/{{orderId}}
```

如果未设置链接模板，将默认使用 `externalLink` 变量的值。

## 系统时间变量（UTC）

这些变量在模板（以及条件）中始终可用，且以 UTC 计算：

- `timezone`：恒为 `"UTC"`
- `now` / `iso`：ISO‑8601 时间戳（如 `2025-05-06T12:34:56.789Z`）
- `epochMs`、`epochSeconds`：自 Unix 纪元以来的当前时间（数字）
- `year`、`month`（1–12）、`monthName`
- `dayOfMonth`、`dayOfWeek`（0–6，周日 = 0）、`dayOfWeekName`
- `hour`（0–23）、`minute`、`second`
- `date`（`YYYY-MM-DD`）、`time`（`HH:mm:ss`）

示例：

```
发送时间 {{date}} {{time}} {{timezone}}
今天是 {{dayOfWeekName}}，{{monthName}} {{dayOfMonth}}，{{year}}
Epoch：{{epochSeconds}}
```

## 最佳实践

1. **默认值**：考虑为可选变量提供默认值：

   ```
   {{username || "匿名用户"}}
   ```

2. **信息丰富的模板**：在模板中包含关键信息，使通知具有可操作性：

   ```
   {{service}}：{{status}} - {{message}}
   ```

3. **保持模板简洁**：当标题和内容清晰简洁时，通知效果最佳。

4. **测试**：使用不同的变量组合测试您的模板，确保它们按预期显示。

模板是创建动态、信息丰富的通知的强大方式，能在用户需要时给他们提供恰到好处的信息。
