Bỏ qua, đến nội dung

@digiforce-nc/plugin-notification-manager

Plugin quản lý thông báo trung tâm — đăng ký kênh thông báo (email, in-app, SMS...), gửi thông báo qua nhiều kênh, theo dõi trạng thái gửi.

Plugin này làm gì?

Đây là hub trung tâm cho mọi loại thông báo. Thay vì mỗi plugin tự viết logic gửi riêng, tất cả đăng ký channel type vào NotificationManager. Khi cần gửi thông báo, chỉ cần gọi send() — manager tự dispatch đến kênh phù hợp.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Registry kênhregisterChannelType() cho plugin khác đăng ký kênh (email, in-app, SMS...)
2Dispatch thông báosend() / sendToUsers() — chọn kênh, gửi nội dung, ghi log
3Quản lý & giám sátSettings UI quản lý channels, xem send logs với trạng thái

Kiến trúc

Luồng gửi thông báo

Channel Type Registry

Channel TypePlugin cung cấpPhương thức gửi
emailplugin-notification-emailSMTP qua nodemailer
in-app-messageplugin-notification-in-app-messageSSE real-time
smsPlugin bên thứ baSMS gateway API

Database - 2 bảng chính

BảngChứa gì
notificationChannelsCấu hình kênh: tên, loại, options (SMTP host...), bật/tắt
notificationSendLogsLịch sử gửi: kênh, người nhận, trạng thái, lỗi

Vòng đời plugin

ACL - Phân quyền

ACL snippetQuyềnMô tả
pm.notification.channelsAdminQuản lý notification channels
pm.notification.logsAdminXem notification send logs

Ví dụ sử dụng API

Gửi thông báo qua API

typescript
await agent.resource('messages').send({
  values: {
    channelName: 'default-email',
    to: ['user@example.com'],
    subject: 'Thong bao',
    content: 'Noi dung...',
  },
});

Đăng ký channel type (dành cho plugin developer)

typescript
class MyPlugin extends Plugin {
  async load() {
    const nm = this.app.pm.get('notification-manager');
    nm.registerChannelType('sms', {
      Channel: MySMSChannel,
      ConfigForm: SMSConfigForm,
    });
  }
}

Xem send logs

typescript
const response = await agent.resource('notificationSendLogs').list({
  filter: { status: 'failed' },
  sort: ['-createdAt'],
});

Thành phần client

Thành phầnMô tả
ChannelManagerTrang quản lý kênh thông báo (tạo, sửa, bật/tắt)
LogManagerTrang xem lịch sử gửi (filter theo channel, status)
NotificationManagerProviderContext provider cho channel type registry phía client
ChannelConfigFormForm cấu hình kênh (dynamic theo channel type)

Dependencies

PackageVai trò
@digiforce-nc/serverServer framework — resource, action
@digiforce-nc/databaseDatabase ORM — collections
@digiforce-nc/clientClient framework — Settings UI

Mục lục chi tiết