Giao diện
@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 |
|---|---|---|
| 1 | Registry kênh | registerChannelType() cho plugin khác đăng ký kênh (email, in-app, SMS...) |
| 2 | Dispatch thông báo | send() / sendToUsers() — chọn kênh, gửi nội dung, ghi log |
| 3 | Quản lý & giám sát | Settings 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 Type | Plugin cung cấp | Phương thức gửi |
|---|---|---|
email | plugin-notification-email | SMTP qua nodemailer |
in-app-message | plugin-notification-in-app-message | SSE real-time |
sms | Plugin bên thứ ba | SMS gateway API |
Database - 2 bảng chính
| Bảng | Chứa gì |
|---|---|
notificationChannels | Cấu hình kênh: tên, loại, options (SMTP host...), bật/tắt |
notificationSendLogs | Lị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 snippet | Quyền | Mô tả |
|---|---|---|
pm.notification.channels | Admin | Quản lý notification channels |
pm.notification.logs | Admin | Xem 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ần | Mô tả |
|---|---|
ChannelManager | Trang quản lý kênh thông báo (tạo, sửa, bật/tắt) |
LogManager | Trang xem lịch sử gửi (filter theo channel, status) |
NotificationManagerProvider | Context provider cho channel type registry phía client |
ChannelConfigForm | Form cấu hình kênh (dynamic theo channel type) |
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/server | Server framework — resource, action |
@digiforce-nc/database | Database ORM — collections |
@digiforce-nc/client | Client framework — Settings UI |