跳到主要内容

内置通知渠道(系统消息 / 系统待办 / 邮件 / 短信)

消息模板的内置通知渠道指平台直接投递的四个渠道:系统消息(站内信)、系统待办、邮件、短信,无需任何插件即可启用。

概述​

内置通知渠道(系统通知 / 站内信 / 邮件模板 / 短信模板 / Email / Sms)是消息模板 Properties 中的四组配置。每个渠道包含一个启用开关与消息内容;邮件、系统消息、系统待办有「主题」,短信只有「内容」。

各渠道投递目标:

渠道投递方式接收人依据
系统消息平台站内信,登录后在消息中心查看接收人用户 ID
系统待办平台待办中心接收人用户 ID
邮件SMTP 邮件服务接收人用户账号信息中的邮箱
短信平台对接的短信服务商接收人用户账号信息中的手机号

邮件内容支持富文本(HTML),可在编辑器中排版;短信内容为纯文本。

配置项​

在消息模板设置推屏中,每个渠道对应一张配置卡片:

配置项说明
启用系统消息开关,控制该模板是否投递系统消息
系统消息主题必填(启用后),支持占位符
系统消息内容必填(启用后),支持占位符
启用系统待办开关,控制是否生成待办事项
系统待办主题必填(启用后),支持占位符
系统待办内容必填(启用后),支持占位符
启用邮件开关,控制是否发送邮件
邮件主题必填(启用后),支持占位符
邮件内容必填(启用后),富文本,支持占位符
启用短信开关,控制是否发送短信
短信内容必填(启用后),纯文本,支持占位符
提示

占位符写法与变量来源统一见 消息模板总览 - 占位符。

使用场景​

  • 审批通过后同时发系统消息和邮件:开启两个渠道并分别配置内容
  • 关键业务只做站内提醒:仅启用系统消息
  • 对外客户通知:启用邮件或短信,内容中使用 {对象编码.字段编码} 取业务数据

下一步​

属性明细​

以下内容面向技术实现与 AI 检索。

内置渠道属性表​

存储于 MetaMessageTemplate.Properties(MessageTemplateProperties),均存储为字符串形式:

属性名类型含义取值/存储值
SystemMessageEnablestring(bool)系统消息开关"true" / "false",缺省 "false"
SystemMessageSubjectstring系统消息主题启用时必填,支持占位符
SystemMessageContentstring系统消息内容启用时必填,支持占位符
SystemTodoEnablestring(bool)系统待办开关"true" / "false",缺省 "false"
SystemTodoSubjectstring系统待办主题启用时必填,支持占位符
SystemTodoContentstring系统待办内容启用时必填,支持占位符
EmailEnablestring(bool)邮件开关"true" / "false",缺省 "false"
EmailSubjectstring邮件主题启用时必填,支持占位符
EmailContentstring邮件内容(HTML)启用时必填,支持占位符
SmsEnablestring(bool)短信开关"true" / "false",缺省 "false"
SmsContentstring短信内容(纯文本)启用时必填,支持占位符;无主题字段
信息

界面中的开关(布尔值)保存时会被序列化为字符串 "true" / "false" 存入 Properties。

存储示例​

存储位置:消息模板 Properties(system_metamessagetemplate.Properties)。

{
"SystemMessageEnable": "true",
"SystemMessageSubject": "订单 {OrderNo} 已发货",
"SystemMessageContent": "您的订单 {Order.OrderNo} 已发货",
"SystemTodoEnable": "false",
"EmailEnable": "true",
"EmailSubject": "发货通知",
"EmailContent": "<p>您的订单 {Order.OrderNo} 已发货</p>",
"SmsEnable": "false"
}

服务端执行逻辑​

消息触发时,NotificationService.NotifyAsync(server/Chameleon.Domain/NotificationService.cs)按 Properties 顺序分发:

  1. 系统消息 / 系统待办:对 Subject / Content 执行占位符替换后,调用平台消息服务(SendMessageAsync / SendTodoAsync)投递给接收人。
  2. 邮件:占位符替换后逐个接收人发送,邮件地址取接收人 UserAccount.Email;地址为空时跳过并记录 Warning 日志。邮件为异步发送,不阻塞主流程。
  3. 短信:占位符替换后逐个接收人发送,手机号取接收人 UserAccount.Phone;号码为空时跳过并记录 Warning 日志。短信为异步发送。

异常与校验​

场景行为
渠道开关为 false / 未配置不投递该渠道
启用渠道但主题 / 内容为空前端保存时校验必填,不允许保存
接收人缺少邮箱 / 手机号跳过该接收人,记录 Warning 日志
邮件 / 短信发送失败记录 Error 日志,不影响其他渠道

相关实现​

  • 实体与属性键:server/Chameleon.Model/Entities/MetaMessageTemplate.cs
  • 消息调度:server/Chameleon.Domain/NotificationService.cs
  • 渠道配置界面:web/src/pages/Development/MetaMessageTemplate/MetaMessageTemplateSetting.tsx