2026-08-28 22:24:32 +08:00

52 lines
1.8 KiB
Markdown

# Node.js 接入示例
示例仅依赖 Node.js 18 及以上版本自带的 `fetch` 和 `crypto`,可以复制到业务项目后端使用。
在通知中心仓库内可执行 `npm run test:example` 验证客户端签名和请求格式。
```js
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` 替换为:
```js
recipientAlias: '海棠'
```
`recipientUserId` 与 `recipientAlias` 只能传一个;未登记花名会返回 `RECIPIENT_ALIAS_NOT_FOUND`,不会发送通知。
注意:
- 这段代码只能运行在后端。
- 不要把三个环境变量使用 `NEXT_PUBLIC_`、`VITE_` 等前端公开前缀。
- 业务调用失败后重试时复用原幂等键,但每次 HTTP 请求会自动生成新的 nonce。
- 多人通知请逐人调用 `send`,并把收件人 `userId` 或已登记花名放入幂等键。