Communication — Tổng quan
Communication là phần lo việc đưa tin tới tay người dùng — email, push, SMS, và tin trong ứng dụng (in-app). Nó nhận "việc cần gửi" rồi render nội dung, chọn người nhận, gửi qua nhà cung cấp, và theo dõi trạng thái gửi.
Communication khác Platform thế nào?
Hai phần gắn bó nhưng chia vai rõ ràng:
- Platform quyết định "khi nào cần gửi gì" — nó sinh ra
NotificationJob(một việc cần gửi) từ event hoặc lệnh trực tiếp. - Communication lo "gửi như thế nào" — biến
NotificationJobthành email/push/in-app thật sự tới đúng người, theo đúng template, và biết được nó đã tới hay chưa.
Các kiểu gửi tin
| Kiểu | Là gì | Ví dụ |
|---|---|---|
| Transactional / manual | Một tin cho một sự việc cụ thể | Email chào mừng, xác nhận booking |
| Reminder (nhắc nhở) | Tin theo lịch/ngưỡng | Sắp hết hạn giấy tờ, hóa đơn đến hạn |
| Campaign (chiến dịch) | Gửi hàng loạt tới nhiều người | Thông báo nghỉ lễ tới toàn bộ phụ huynh |
| Report subscription | Báo cáo định kỳ | Báo cáo tuần gửi tự động |
| In-app (UserMessage) | Tin hiển thị trong ứng dụng | Hộp thư thông báo trong app |
Các "vật thể" chính
| Tên | Một câu |
|---|---|
| NotificationJob | Một việc cần gửi (đầu vào từ Platform). |
| OutgoingMessage | Một tin gửi ra cho mỗi người nhận, mỗi kênh; mang trạng thái gửi. |
| UserMessage | Một tin in-app cho mỗi người nhận (hộp thư trong app). |
| MessagingJob + Blob | Điều phối payload lớn của campaign/report. |
| Template | Mẫu nội dung có placeholder {{...}}. |
Bạn nên đọc theo thứ tự
- Góc nhìn end-user — người dùng nhận tin qua những kênh nào.
- Khái niệm cốt lõi — các artifact & nguyên tắc gửi-một-lần.
- Kiến trúc hệ thống — pipeline gửi & key policy.
- Automation & Reminders — nhắc nhở theo lịch/ngưỡng, AutomationScheduler.
- Report Subscription — báo cáo định kỳ tự động.
- Luồng xử lý trong code — worker & file.
- Dữ liệu & bảng đọc/ghi — artifact ở SQL/Table/Blob, bảng theo luồng.
- Case thường gặp — template, suppress, seed recipient.