# 消息模板 消息模板功能允许您创建可复用的消息模板,通过占位符实现动态内容替换,提高消息发送的灵活性和效率。 ::: tip ⭐ 作者推荐 消息模板是 Message Nest 的核心功能,也是我们**强烈推荐**的使用方式。相比传统的任务发送(V1 API),模板方式具有以下显著优势: **为什么推荐使用模板?** 1. **开发效率提升 3 倍** - 一次定义模板,所有项目复用,无需重复编写消息内容 2. **维护成本降低 80%** - 修改消息格式只需在后台更新模板,无需修改代码、重新部署 3. **团队协作更顺畅** - 开发负责 API 集成,运营负责内容维护,职责清晰 4. **灰度发布更安全** - 支持模板启用/禁用,可以随时回滚,降低风险 5. **内容管理更规范** - 所有消息模板集中管理,便于审核和统一风格 **适用场景:** - ✅ 用户通知(注册、登录、密码重置等) - ✅ 订单消息(下单、支付、发货、退款等) - ✅ 系统告警(服务异常、资源不足等) - ✅ 营销推广(活动通知、优惠券等) - ✅ 完全动态的内容(通过占位符实现,如 `{{content}}`) - ✅ **所有消息发送场景** ::: info 关于完全动态内容 即使消息内容完全动态,也推荐使用模板方式。你可以创建一个只包含一个占位符的模板,如: **模板内容:** `{{content}}` **API 调用:** ```json { "placeholders": { "content": "这里是完全动态的内容" } } ``` 这样做的好处是: 1. 后期如果需要添加固定格式(如标题、签名),只需修改模板,无需改代码 2. 所有消息统一管理,便于审计和监控 3. 可以随时启用/禁用,便于灰度发布 **V1 API(任务)的定位:** - 仅为兼容历史数据而保留 - 不推荐在任何新项目中使用 - 后续维护重点在模板功能上 ::: ## 功能特性 - ✅ **多格式支持** - 支持 Text、HTML、Markdown 三种格式 - ✅ **占位符替换** - 使用 `{{key}}` 语法定义动态内容 - ✅ **实例配置** - 为模板配置多个发送实例(渠道) - ✅ **@提醒功能** - 支持钉钉、企业微信的@提醒 - ✅ **状态管理** - 启用/禁用模板控制 - ✅ **API调用** - 通过 V2 API 使用模板发送消息 ## 创建模板 ### 1. 基本信息 在管理后台的"消息模板"页面,点击"新建模板"按钮: - **模板名称** - 模板的唯一标识名称 - **模板描述** - 模板的用途说明(可选) - **状态** - 启用/禁用 ### 2. 定义占位符 占位符用于在发送消息时动态替换内容。 **添加占位符:** | 字段 | 说明 | 示例 | |------|------|------| | Key | 占位符键名 | `username` | | Label | 显示标签 | `用户名` | | Default | 默认值(可选) | `Guest` | **使用示例:** ```json [ { "key": "username", "label": "用户名", "default": "Guest" }, { "key": "email", "label": "邮箱地址", "default": "user@example.com" }, { "key": "action", "label": "操作类型", "default": "登录" } ] ``` ### 3. 编写模板内容 支持三种格式,可以根据需要填写一种或多种: #### Text 模板 纯文本格式,适用于所有渠道: ```text 您好,{{username}}! 您的账号 {{email}} 刚刚进行了 {{action}} 操作。 如果这不是您本人的操作,请立即联系我们。 ``` #### HTML 模板 HTML 格式,适用于邮件等支持富文本的渠道: ```html

您好,{{username}}!

您的账号 {{email}} 刚刚进行了 {{action}} 操作。

如果这不是您本人的操作,请立即联系我们。

``` #### Markdown 模板 Markdown 格式,适用于钉钉、企业微信等支持 Markdown 的渠道: ```markdown ## 您好,{{username}}! 您的账号 **{{email}}** 刚刚进行了 `{{action}}` 操作。 > ⚠️ 如果这不是您本人的操作,请立即联系我们。 ``` ### 4. 配置 @提醒(可选) 针对钉钉、企业微信等渠道,可以配置@提醒: - **@手机号** - 多个手机号用逗号分隔,如:`13800138000,13900139000` - **@用户ID** - 多个用户ID用逗号分隔 - **@所有人** - 勾选后会@所有群成员 ::: warning 注意 @提醒功能仅在支持的渠道(钉钉、企业微信)中生效。 ::: ## 配置发送实例 创建模板后,需要为模板配置发送实例(渠道)。 ### 1. 添加实例 在模板列表中,点击"实例"按钮: 1. 选择发送渠道(从已创建的渠道中选择) 2. 配置实例参数(如邮箱收件人地址) 3. 选择消息格式(Text/HTML/Markdown) 4. 保存实例 ### 2. 实例配置说明 不同渠道需要配置不同的参数: **邮件渠道:** - **固定模式**: - 收件人邮箱地址 - 消息格式:Text 或 HTML - **动态接收者模式(群发)** 🆕: - 勾选"动态接收者模式" - 无需配置固定收件人 - 发送时通过 API 的 `recipients` 参数指定多个收件人 - 适用于邮件群发场景 **钉钉/企业微信:** - 消息格式:Text 或 Markdown **微信公众号:** - **固定模式**: - 用户 OpenID - **动态接收者模式(群发)** 🆕: - 勾选"动态接收者模式" - 无需配置固定 OpenID - 发送时通过 API 的 `recipients` 参数指定多个 OpenID **自定义 Webhook:** - 根据 Webhook 要求配置 ::: warning 动态接收者模式限制 1. 一个模板只能配置一个动态接收实例 2. 动态接收实例不能与固定接收实例混合使用 3. 如果配置了动态接收实例,API 调用时 `recipients` 参数为必填 4. 建议控制接收者数量,避免触发渠道限流 ::: ### 3. 管理实例 - **启用/禁用** - 控制实例是否参与发送 - **编辑** - 修改实例配置 - **删除** - 删除不需要的实例 ## 预览模板 在编辑模板时,可以使用"预览"功能查看替换占位符后的效果: 1. 点击"预览"按钮 2. 填写占位符的测试值 3. 查看 Text/HTML/Markdown 三种格式的渲染效果 ## 使用模板发送消息 ### 通过 API 调用 使用 V2 API 发送模板消息,详见 [V2 API 文档](/api/v2)。 **基本流程:** 1. 获取模板 Token(在模板详情页查看) 2. 准备占位符数据 3. 调用 V2 API 发送 **示例:** ```bash curl -X POST http://your-domain/api/v2/message/send \ -H "Content-Type: application/json" \ -d '{ "token": "encrypted_template_token", "title": "账号安全提醒", "placeholders": { "username": "张三", "email": "zhangsan@example.com", "action": "登录" } }' ``` **动态接收者示例(群发)** 🆕: ```bash curl -X POST http://your-domain/api/v2/message/send \ -H "Content-Type: application/json" \ -d '{ "token": "encrypted_template_token", "title": "活动通知", "placeholders": { "activity_name": "双十二大促", "discount": "全场8折" }, "recipients": [ "user1@example.com", "user2@example.com", "user3@example.com" ] }' ``` ## 最佳实践 ### 1. 占位符命名 - 使用有意义的英文名称,如 `username`、`order_id` - 避免使用特殊字符,建议使用下划线分隔 - 保持命名一致性 ### 2. 模板设计 - **简洁明了** - 模板内容应简洁清晰 - **格式适配** - 根据渠道特性选择合适的格式 - **默认值** - 为占位符设置合理的默认值 - **测试验证** - 使用预览功能验证模板效果 ### 3. 实例管理 - **合理分组** - 为不同用途创建不同的模板 - **渠道选择** - 根据消息类型选择合适的渠道 - **定期检查** - 定期检查实例配置的有效性 ### 4. 安全性 - **Token 保护** - 妥善保管模板 Token - **权限控制** - 合理设置模板的启用/禁用状态 - **内容审查** - 注意模板内容的合规性 ## 常见问题 ### Q: 占位符没有被替换? **A:** 检查以下几点: - 占位符格式是否正确(`{{key}}`) - API 调用时是否传递了对应的 placeholders 参数 - Key 名称是否匹配 ### Q: 如何选择消息格式? **A:** 根据渠道特性选择: - **邮件** - 推荐使用 HTML 格式,视觉效果更好 - **钉钉/企业微信** - 推荐使用 Markdown 格式,支持富文本 - **其他渠道** - 使用 Text 格式,兼容性最好 ### Q: 可以为一个模板配置多个实例吗? **A:** 可以。一个模板可以配置多个发送实例,调用 API 时会自动遍历所有启用的实例进行发送。 ### Q: @提醒不生效? **A:** 确认以下几点: - 渠道是否支持@提醒(仅钉钉、企业微信支持) - 手机号或用户ID格式是否正确 - 机器人是否有@权限 ## 下一步 - 查看 [V2 API 文档](/api/v2) 了解如何通过 API 使用模板 - 查看 [API 示例](/api/examples) 了解各语言的调用方式