Skip to content

发送任务 ​

发送任务是 Message Nest 的基础功能,用于配置消息发送的渠道和参数,通过 V1 API 发送消息。

💡 推荐使用模板

对于新项目,我们推荐使用 消息模板 功能,它提供更好的内容管理和维护体验。发送任务主要用于兼容历史数据。

功能概述 ​

发送任务允许您:

  • ✅ 创建发送任务
  • ✅ 为任务添加推送渠道实例
  • ✅ 配置每个实例的参数
  • ✅ 获取 API Token 用于发送消息
  • ✅ 查看任务的发送日志

创建任务 ​

步骤 ​

  1. 进入"发送任务"页面
  2. 点击"新增任务"按钮
  3. 输入任务名称
  4. 点击"保存"

配置项 ​

字段说明必填
任务名称任务的唯一标识名称是

提示

任务创建后,需要添加推送实例才能发送消息。

添加推送实例 ​

为任务添加一个或多个推送渠道实例。

步骤 ​

  1. 在任务列表中点击"编辑"按钮
  2. 在搜索框中输入渠道名称
  3. 从下拉列表中选择已创建的推送渠道
  4. 配置实例参数(根据渠道类型不同)
  5. 选择消息格式(Text/HTML/Markdown)
  6. 点击"添加"保存实例

实例配置说明 ​

不同渠道需要配置不同的参数:

邮件渠道 ​

  • 固定模式:
    • 收件人邮箱 - 接收邮件的邮箱地址
    • 消息格式 - Text 或 HTML
  • 动态接收者模式(群发) 🆕:
    • 勾选"动态接收者模式"
    • 无需配置固定收件人
    • 发送时通过 API 的 recipients 参数指定多个收件人
    • 适用于邮件群发场景

钉钉/企业微信 ​

  • 消息格式 - Text 或 Markdown
  • @提醒 - 可选配置@手机号或@所有人

微信公众号 ​

  • 固定模式:
    • 用户 OpenID - 接收消息的用户标识
  • 动态接收者模式(群发) 🆕:
    • 勾选"动态接收者模式"
    • 无需配置固定 OpenID
    • 发送时通过 API 的 recipients 参数指定多个 OpenID
    • 适用于公众号群发场景

自定义 Webhook ​

  • 根据 Webhook 要求配置相应参数

自托管消息 ​

  • 无需额外配置
  • 消息格式 - Text、HTML 或 Markdown

动态接收者模式限制

  1. 一个任务只能配置一个动态接收实例
  2. 动态接收实例不能与固定接收实例混合使用
  3. 如果配置了动态接收实例,API 调用时 recipients 参数为必填
  4. 建议控制接收者数量,避免触发渠道限流

管理任务 ​

查看任务列表 ​

在"发送任务"页面可以看到所有任务:

列说明
ID任务的唯一标识
发信任务名称任务名称
创建时间任务创建时间
更新时间任务最后修改时间
操作/状态操作按钮

任务操作 ​

查看接口 ​

  1. 点击任务的"接口"按钮
  2. 查看 API Token 和调用示例
  3. 复制 Token 用于 V1 API 调用

查看日志 ​

  1. 点击任务的"日志"按钮
  2. 查看该任务的发送记录
  3. 可以筛选和搜索日志

编辑任务 ​

  1. 点击任务的"编辑"按钮
  2. 在弹出的对话框中管理推送实例
  3. 可以添加、删除、启用/禁用实例

删除任务 ​

  1. 点击任务的"删除"按钮
  2. 确认删除操作
  3. 任务及其所有实例将被删除

注意

删除任务后,该任务的 Token 将失效,无法再使用 V1 API 发送消息。

管理推送实例 ​

在编辑任务对话框中可以管理推送实例:

查看实例列表 ​

列说明
渠道名称推送渠道的名称
渠道类型渠道类型(邮件、钉钉等)
消息格式Text/HTML/Markdown
状态启用/禁用开关
操作删除按钮

启用/禁用实例 ​

  • 点击实例行的开关按钮
  • 禁用的实例不会参与消息发送
  • 可以随时重新启用

删除实例 ​

  • 点击实例行的"删除"按钮
  • 确认删除操作
  • 实例将从任务中移除

搜索任务 ​

在任务列表页面的搜索框中输入任务名称,可以快速筛选任务。

使用任务发送消息 ​

通过 API 调用 ​

使用 V1 API 发送消息,详见 V1 API 文档。

基本示例:

bash
curl -X POST http://your-domain/api/v1/message/send \
  -H "Content-Type: application/json" \
  -d '{
    "token": "your_task_token",
    "title": "消息标题",
    "text": "消息内容"
  }'

多格式发送 ​

可以同时提供多种格式,系统会根据实例配置自动选择:

json
{
  "token": "your_task_token",
  "title": "订单通知",
  "text": "您的订单已发货",
  "html": "<h2>订单通知</h2><p>您的订单已发货</p>",
  "markdown": "## 订单通知\n\n您的订单已发货"
}

@提醒功能 ​

对于支持的渠道(钉钉、企业微信),可以使用@提醒:

json
{
  "token": "your_task_token",
  "title": "系统告警",
  "text": "服务器CPU使用率过高",
  "at_mobiles": ["13800138000"],
  "at_all": false
}

动态接收者功能(群发)🆕 ​

对于支持的渠道(邮件、微信公众号),可以使用动态接收者实现群发:

json
{
  "token": "your_task_token",
  "title": "系统维护通知",
  "text": "系统将于今晚22:00进行维护",
  "html": "<h2>系统维护通知</h2><p>系统将于今晚<strong>22:00</strong>进行维护</p>",
  "recipients": [
    "user1@example.com",
    "user2@example.com",
    "user3@example.com"
  ]
}

使用场景:

  • 邮件群发通知
  • 微信公众号批量推送
  • 营销活动通知
  • 系统公告发布

注意事项:

  • 任务必须配置为动态接收者模式
  • 一个任务只能有一个动态接收实例
  • 建议控制接收者数量,避免触发限流

工作流程 ​

mermaid
graph LR
    A[创建任务] --> B[添加推送实例]
    B --> C[配置实例参数]
    C --> D[获取 Token]
    D --> E[调用 API]
    E --> F[系统遍历实例]
    F --> G[发送到各渠道]
    G --> H[记录日志]

使用场景 ​

场景 1:多渠道通知 ​

创建一个任务,配置多个推送实例(邮件 + 钉钉 + 企业微信),一次 API 调用同时推送到所有渠道。

适用于:

  • 重要系统告警
  • 关键业务通知
  • 需要多渠道触达的消息

场景 2:不同环境隔离 ​

为开发、测试、生产环境创建不同的任务,使用不同的渠道配置。

适用于:

  • 环境隔离
  • 测试验证
  • 灰度发布

场景 3:按用途分类 ​

为不同用途创建不同的任务(如:用户通知、系统告警、营销推广),便于管理和统计。

适用于:

  • 消息分类管理
  • 统计分析
  • 权限控制

最佳实践 ​

1. 任务命名 ​

使用清晰的命名规范:

  • ✅ 生产-用户通知-邮件钉钉
  • ✅ 测试-系统告警-企业微信
  • ❌ 任务1、test

2. 实例配置 ​

  • 合理选择渠道 - 根据消息重要性和紧急程度选择合适的渠道
  • 配置备用渠道 - 为重要消息配置多个渠道,提高送达率
  • 格式适配 - 为不同渠道提供合适的消息格式

3. Token 管理 ​

  • 安全存储 - 不要在代码中硬编码 Token,使用环境变量或配置文件
  • 定期轮换 - 定期更新 Token,提高安全性
  • 权限控制 - 不同环境使用不同的 Token

4. 日志监控 ​

  • 定期查看 - 定期检查发送日志,及时发现问题
  • 失败处理 - 对发送失败的消息进行重试或告警
  • 统计分析 - 分析发送数据,优化渠道配置

5. 性能优化 ​

  • 异步调用 - 使用异步方式调用 API,避免阻塞主流程
  • 批量发送 - 对于大量消息,考虑批量发送或限流
  • 错误重试 - 实现合理的重试机制

常见问题 ​

Q: 任务和模板有什么区别? ​

A:

  • 任务(V1 API):内容在 API 调用时传递,适合完全动态的内容
  • 模板(V2 API):内容预定义在模板中,通过占位符替换,推荐使用

详见 V1 API 文档 中的对比说明。

Q: 可以为一个任务配置多个实例吗? ​

A: 可以。一个任务可以配置多个推送实例,API 调用时会自动遍历所有启用的实例进行发送。

Q: 如何知道消息是否发送成功? ​

A:

  1. API 响应会返回发送状态
  2. 在任务的日志页面查看详细的发送记录
  3. 可以配置自托管消息渠道,在后台查看消息

Q: Token 泄露了怎么办? ​

A:

  1. 立即删除该任务(Token 将失效)
  2. 创建新的任务获取新的 Token
  3. 更新使用该 Token 的所有代码

Q: 发送失败如何处理? ​

A:

  1. 查看日志中的错误信息
  2. 检查渠道配置是否正确
  3. 确认渠道服务是否正常
  4. 检查消息内容是否符合渠道要求
  5. 实现重试机制

迁移到模板 ​

如果您正在使用发送任务,我们建议迁移到消息模板:

迁移步骤 ​

  1. 创建模板

    • 根据现有任务的消息内容创建模板
    • 定义占位符替换动态内容
  2. 配置实例

    • 将任务的推送实例配置复制到模板
  3. 更新代码

    • 将 V1 API 调用改为 V2 API
    • 使用模板 Token 和占位符参数
  4. 测试验证

    • 测试新的模板发送是否正常
    • 对比新旧方式的效果
  5. 切换上线

    • 逐步切换到模板方式
    • 保留旧任务一段时间作为备用

迁移优势 ​

  • ✅ 内容统一管理,便于维护
  • ✅ 修改内容无需改代码
  • ✅ 支持版本控制和灰度发布
  • ✅ 更好的团队协作体验

下一步 ​

Released under the MIT License.