Node.js 接入示例

示例仅依赖 Node.js 18 及以上版本自带的 fetch 和 crypto,可以复制到业务项目后端使用。

在通知中心仓库内可执行 npm run test:example 验证客户端签名和请求格式。

import { YouYiDianNotificationClient } from './notification-client.mjs'

const client = new YouYiDianNotificationClient({
  baseUrl: process.env.YYD_NOTIFICATION_CENTER_URL,
  projectCode: process.env.YYD_NOTIFICATION_PROJECT_CODE,
  projectSecret: process.env.YYD_NOTIFICATION_PROJECT_SECRET,
})

const recipientUserId = '16408293139985728'
const delivery = await client.send({
  idempotencyKey: `asset_disposal:53:${recipientUserId}:v1`,
  recipientUserId,
  title: '资产报废待审批',
  content: [
    '**申请时间:** 2026年7月16日 14:30',
    '',
    '**资产:** 摄影灯 A-102',
    '',
    '**申请人:** 无邪',
  ].join('\n'),
  actionTitle: '立即审批',
  actionUrl: 'https://asset.jiansun.vip/workflows/disposals/53',
})

console.log('通知已受理:', delivery.id, delivery.status)

const latest = await client.getDelivery(delivery.id)
console.log('当前投递状态:', latest.status)

如果业务项目只能提供花名,先由通知中心维护人登记花名映射,然后将发送参数中的 recipientUserId 替换为:

recipientAlias: '海棠'

recipientUserId 与 recipientAlias 只能传一个;未登记花名会返回 RECIPIENT_ALIAS_NOT_FOUND,不会发送通知。

注意:

  • 这段代码只能运行在后端。
  • 不要把三个环境变量使用 NEXT_PUBLIC_、VITE_ 等前端公开前缀。
  • 业务调用失败后重试时复用原幂等键,但每次 HTTP 请求会自动生成新的 nonce。
  • 多人通知请逐人调用 send,并把收件人 userId 或已登记花名放入幂等键。