5.0 KiB
Raw Permalink Blame History

消息规范

本文面向外部业务项目负责人和开发人员。通知使用钉钉原生消息模板,不是 HTML/CSS 网页;卡片外框、宽度、颜色和按钮外观由钉钉客户端渲染。

通知中心固定展示项目来源和业务标题;业务项目决定正文排版、按钮文字及跳转目标。

1. 卡片类型和跳转

外部项目提交内容 通知中心使用的模板 收件人看到的效果
actionUrl 非空 sampleActionCard 原生 ActionCard,底部显示一个跳转按钮
actionUrl 未传或为空 sampleMarkdown 普通 Markdown 消息,没有底部按钮,外框和宽度可能与 ActionCard 不同

要实现“固定资产待审批”那种带按钮的卡片,提供 Markdown 正文和非空 actionUrl 即可;actionTitle 建议写明确动作,例如“立即审批”,未填写时默认“查看详情”。只填按钮文字但不填地址,不会生成按钮。

业务项目仍调用通知中心的 POST /v1/notifications,无需提交 msgKey、msgParam、singleTitle 或 singleURL,也无需直接调用钉钉 API。通知中心会把 actionTitle 映射为钉钉的 singleTitle,把实际发送的跳转地址映射为 singleURL。

按钮目标由业务项目的 actionUrl 决定。HTTP、HTTPS、内网 IP/域名和端口均可使用,无需为普通通知登记域名白名单;接收人的设备仍须能够访问该业务地址。只有启用钉钉 H5 免登且目标满足既有 HTTPS 登录规则时,通知中心才会包装到免登入口,最终仍回到指定业务页面。

2. 固定项目抬头

业务项目的 title 只填写业务主题,不要自行拼接项目名称。通知中心从当前鉴权项目的配置中取得名称,生成:

【项目名称】业务标题

发送给钉钉时,不只设置独立的 title 字段,还会在可见正文顶部加入 Markdown 标题,两种消息模板都如此:

### 【项目名称】业务标题

业务项目提交的 content

请勿在 content 中再重复同一条项目抬头或业务标题,以免出现双标题。除此之外,通知中心不添加固定时间、业务字段顺序或其它正文模板。

3. 完整 ActionCard 请求示例

以下为发送接口的 JSON 正文示例。花名、业务记录和地址均为示例值,接入时替换为本项目实际内容;接口鉴权与签名见接入指南。

{
  "idempotencyKey": "asset_disposal:53:海棠:v1",
  "recipientAlias": "海棠",
  "title": "资产报废待审批",
  "content": "**申请时间:** 2026年8月31日 15:58\n\n**资产:** 电脑桌(JS-CPU-0704)\n\n**申请人:** 示例员工\n\n**报废原因:** 资产损坏,申请报废。\n\n> 请核对资产及配件明细后处理。",
  "actionTitle": "立即审批",
  "actionUrl": "http://asset.example.com/workflows/disposals/53"
}

假设管理面板中的项目名称是“固定资产”,卡片正文为:

### 【固定资产】资产报废待审批

**申请时间:** 2026年8月31日 15:58

**资产:** 电脑桌(JS-CPU-0704)

**申请人:** 示例员工

**报废原因:** 资产损坏,申请报废。

> 请核对资产及配件明细后处理。

底部按钮显示“立即审批”,点击进入 http://asset.example.com/workflows/disposals/53。**字段名:** 表示加粗,空行用于分段,> 用于引用提示;这些只是可复用的示例排版,不要求所有业务项目都使用相同字段。

4. 字段与长度

字段 规则
title 必填,最长 100 字符;拼接项目名称后的最终标题最长 120 字符
content 必填,输入最长 4800 字符;纯文本或 Markdown 均可,显示在固定项目抬头之后
actionTitle 可选,最长 20 字符;有跳转地址但未填写时默认“查看详情”
actionUrl 可选;按业务项目提交值使用,不限制协议、公网/内网地址或项目域名白名单

当前发送实现会将“### + 最终标题 + 两个换行 + content”组成的钉钉 text 截取前 4800 字符。因此抬头也占显示额度,超长正文尾部可能被截断;业务详情宜放在跳转页面。业务项目仍对自己提交的原始 JSON 签名,无需预先插入抬头,保存的业务正文也不会因此改写。

5. 样式验收

  • 确认钉钉聊天中的可见正文顶部有正确的 【项目名称】业务标题,不是只看消息摘要或接口返回值。
  • 如需 ActionCard,使用非空 actionUrl 发送,确认正文格式、底部按钮和实际点击目标。
  • 如果选择不提供跳转地址,应预期收到没有按钮的普通 Markdown 消息,而非相同外框的 ActionCard。
  • 已发出的旧消息不会随代码、项目配置或测试页变化而自动更新。测试新的样式时创建一条新的测试事件并使用新幂等键;重试同一业务事件时仍复用原幂等键,不能借此绕过防重。