Giới thiệu: Thử thách về việc công nhận tại SaaS

Những sản phẩm hiện đại SaaS dựa vào thông báo đúng thời điểm, cá nhân để lôi kéo người dùng, lưu ý, và giao tiếp các sự kiện hệ thống quan trọng. người dùng mong đợi nhận được thông báo thông báo thông qua kênh yêu thích của họ - email, tin nhắn, tin nhắn trong thẻ, hoặc thậm chí các móc nối mạng đến dịch vụ bên thứ ba. khi sản phẩm tiến hóa, số kênh phát triển, và quản lý chúng thông qua các phương pháp logic phân tán trở thành một cơn ác mộng.

Chỉ đạo, một nền tảng mã nguồn mở và hậu phương không đầu, cung cấp một nền tảng linh hoạt cho việc xây dựng các ứng dụng Saas. mô hình dữ liệu của nó, lưu động cơ chế, và các móc mở rộng làm cho nó trở thành một môi trường lý tưởng để thực hiện một hệ thống thông báo mạnh mẽ. Bằng cách áp dụng một mô hình thiết kế cổ điển - mẫu cấu trúc nguyên tử - bạn có thể thu thập các kênh sáng tạo cụ thể logic, giải mã cơ bản từ chi tiết sản phẩm, và cố gắng thêm các kênh mới khi sản phẩm trưởng thành.

Hiểu gương mẫu về sự nhân đức

Mẫu nhà máy là một mẫu thiết kế tạo ra giao diện để tạo ra các đối tượng trong tầng siêu văn bản, nhưng cho phép các hạng phụ thay đổi loại vật sẽ được tạo ra. Nó khuyến khích sự kết nối lỏng lẻo và theo sát những lời tuyên bố [FLT: 0] mở ra / giảm [FLT: 1]:]: các thực thể phần mềm nên mở rộng nhưng đóng lại để sửa đổi. Thay vì rải rác ứng dụng của bạn với [FL: 0] hoặc [FL: 1] [F: 1] thông báo nào đó phản đối ngay lập tức, bạn sẽ giao phó một nhà máy trách nhiệm.

Mẫu này sẽ chiếu sáng khi bạn có một gia đình có các đối tượng liên quan và loại chính xác để lập tức được xác định vào thời điểm chạy dựa trên đầu vào năng động, chẳng hạn như sở thích thông báo của người dùng hoặc sự kiện đang được kích hoạt.

Kênh thông báo trong một sản phẩm SaaS

Các kênh thông báo thông báo thông thường bao gồm:

  • email – email giao dịch và marketing thông qua dịch vụ như SendGrid hoặc Mailgun.
  • SMS – tin nhắn ngắn qua Twilio hoặc Vonage.
  • Thông báo mật ) – đẩy mạng, di động bằng Fire base Cloud Messing hay OneSignal.
  • Trong Thông báo Áp dụng ) – ibms or boards.
  • Weks ) – HTTP yêu cầu kết thúc bên ngoài cho sự hợp nhất.
  • (Slack / Discord ) – nhóm tin nhắn tập trung.

Không có mẫu mã, mã của bạn có thể trông như thế này:

function sendNotification(channel, message, recipient) {
 if (channel === 'email') {
 // Email logic here
 } else if (channel === 'sms') {
 // SMS logic here
 } else if (channel === 'push') {
 // Push logic here
 } else {
 throw new Error('Unknown channel');
 }
}

Cách tiếp cận này hiệu quả với một vài kênh, nhưng mỗi kênh mới buộc bạn phải thay đổi chức năng gửi và kiểm tra lại tất cả các logic hiện có.

Làm gương tốt cho các nhà chức trách

Bên dưới chúng ta đi qua một máy luyện tập loại có thể thích nghi với một chiếc SaaS dựa trên Directus.

1. Xác định giao diện thông báo

interface Notification {
 send(message: string, recipient: string): Promise<void>
}

Lớp thông báo đặc biệt

class EmailNotification implements Notification {
 async send(message: string, recipient: string): Promise<void> {
 // Use Directus’s internal mailer or an external SDK
 console.log(`Sending email to ${recipient}: ${message}`);
 }
}

class SMSNotification implements Notification {
 async send(message: string, recipient: string): Promise<void> {
 // Call Twilio API
 console.log(`Sending SMS to ${recipient}: ${message}`);
 }
}

class PushNotification implements Notification {
 async send(message: string, recipient: string): Promise<void> {
 // Use Firebase or OneSignal SDK
 console.log(`Sending push to ${recipient}: ${message}`);
 }
}

3. Hệ số thông báo

type ChannelType = 'email' | 'sms' | 'push';

class NotificationFactory {
 static createNotification(channel: ChannelType): Notification {
 switch (channel) {
 case 'email':
 return new EmailNotification();
 case 'sms':
 return new SMSNotification();
 case 'push':
 return new PushNotification();
 default:
 throw new Error(`Unknown notification channel: ${channel}`);
 }
 }
}

4 Dùng kỹ năng trong ứng dụng

async function notifyUser(event: string, userId: string, channel: ChannelType) {
 const notification = NotificationFactory.createNotification(channel);
 await notification.send(event, userId);
}

Mã trình khách không bao giờ cần biết kiểu bê tông. Nó chỉ phụ thuộc vào giao diện . Việc tách rời này làm cho đơn vị thử nghiệm đơn giản- bạn có thể chế nhạo các đối tượng thông báo mà không chạm vào các lớp học cụ thể.

Kết hợp gương mẫu về nhà máy với lời chỉ dẫn

Chỉ thị cung cấp nhiều điểm nhập để kích hoạt thông báo:

  • Các trang ) – tự động hóa có thể gọi các thao tác tự động hoặc các móc mạng cá nhân.
  • ) — hoặc những cái móc chạy trên các sự kiện CRID.
  • Custom Endpoints ) – Đường cao tốc được tiêm vào trình phục vụ Directus.
  • Wekos ) – Outcoming stick comkers – Outcoming vers web-kokers.

Trong một dự án Chỉ thị, bạn có thể cài đặt nhà máy thông báo bên trong một mô- đun tùy chọn hay phần mở rộng. Chẳng hạn, bên trong một [FLT: 0] [FLT: 1] [FLT: 1] để gọi một chỉ mục bên trong là « ADI » và gửi một email, thông báo về ứng dụng.

Vì nhà máy sống ở một nơi, bạn có thể cập nhật bản đồ mà không chạm vào mỗi lưỡi câu hay dòng chảy. và vì Directus Fears có thể vượt qua các dữ liệu tùy ý JSON, bạn có thể dễ dàng cung cấp thức ăn cho nhà máy với các kênh nhận dạng từ cơ sở dữ liệu của bạn.

Lợi ích của việc đến gần với các nhà máy sinh thái

Khả năng cấu hình

Thêm một kênh mới có nghĩa là viết một lớp mới để thực hiện và thêm một dòng vào tuyên bố đổi của nhà máy.

Duy trì được

Thông báo giao dịch logic được tách ra khỏi logic kinh doanh. Mỗi hạng bê tông có thể được bảo tồn độc lập. Nếu nhà cung cấp tin thay đổi hệ thống API, bạn chỉ sửa đổi nhà máy và mọi người tiêu dùng không thay đổi.

Khả năng thử ra

Bạn có thể thử nghiệm mỗi lớp thông báo trong sự cô lập, và bạn có thể chế nhạo giao diện khi thử nghiệm chức năng cấp cao hơn. Chính nhà máy có thể được kiểm tra bằng một kiểm tra đơn giản để kiểm tra xem nó sẽ trả lại các trường hợp chính xác cho mỗi kênh.

Khả năng sinh tồn

Có thể mở rộng nhà máy để tạo các vật thể phức tạp. Chẳng hạn, bạn có thể thông qua cấu hình (các phím API, chính sách thử lại) vào thời điểm tạo. Bạn có thể quá tải phương pháp nhà máy [FLT: 0] cấu hình [FLT: 0] bên trong nhà máy để lắp đặt các đối tượng thông báo đầy đủ. Các biến môi trường của nó (v. d. một bảng [FL:14] lý tưởng để cấu hình như vậy.

Có thể phản ứng và suy nghĩ

Trong khi mô hình nhà máy là một công cụ mạnh mẽ, nó không phải là một viên đạn bạc:

  • Vượt qua Công nghệ thông tin:) Nếu bạn chỉ có hai kênh và không có kế hoạch thêm, một điều kiện đơn giản có thể được. Các mẫu giới thiệu tập tin thêm và trừu tượng.
  • Mô hình xác định [FLT:] [FLT: 1] nơi các kênh tự dịch, hoặc dùng mẫu [FL:4) ) để trao đổi các thuật toán thay vì đối tượng.
  • mũi tiêm giảm độ phân giải:) Nếu lớp thông báo của bạn phụ thuộc vào dịch vụ bên ngoài (v. d., một khách hàng HTTP hoặc một trình ghi lưu), bạn cần phải tiêm những quan hệ phụ thuộc đó. Nhà máy phải chấp nhận một container DI hoặc nhận quan hệ phụ thuộc như một số tham số cần lập trình sớm.

Trong phần mở rộng của tờ Directus, bạn có thể tận dụng cách tiêm và dịch vụ của nền tảng để truyền những trường hợp như máy ghi nhật ký hoặc cơ sở dữ liệu cho nhà máy.

Ví dụ thật sự trên thế giới: Thông báo đa kênh đa phương tiện ở một cửa hàng B2B SaaS

Hãy xem xét một công cụ quản lý dự án xây dựng trên Directus. Khi một nhiệm vụ được giao, hệ thống phải thông báo:

  • địa chỉ bằng email (nếu họ thích)
  • người được ủy nhiệm qua bánh mì nướng
  • kênh dự án trên Slack

Sử dụng nhà máy, mã dưới một chỉ đạo móc trở thành:

import { NotificationFactory } from './services/NotificationFactory';

async function onTaskCreate(payload, { accountability }) {
 const { assigneeId } = payload;
 const userPreferences = await getUserNotificationPreferences(assigneeId);
 for (const channel of userPreferences.channels) {
 const notifier = NotificationFactory.createNotification(channel);
 await notifier.send(`You have a new task!`, assigneeId);
 }
}

Mỗi lớp thông báo xử lý việc phân phối ngữ pháp riêng của mình, nhà máy vẫn là nguồn tin duy nhất của sự thật cho việc lập bản đồ kênh.

Để thấy hệ thống như thế hoàn toàn thực hiện, hãy nhắc đến tài liệu chính thức [FLT:] [FLT: 1] của Giáo sư [FLT:] để tạo ra các móc và dịch vụ riêng lẻ. Để hiểu rõ hơn về mẫu máy, , [T: trang Hiến pháp [FLT:] là một tài nguyên tuyệt vời. Bạn cũng có thể quan tâm đến cách các nền tảng khác xử lý sự dàn xếp thông báo [FL4] T: ize [T] [T]

Kết luận

Khi kết hợp với những lưỡi câu và những nhánh linh hoạt của Directus, bạn sẽ thu thập được một cấu trúc thông báo thông báo với sự tăng trưởng của sản phẩm.

Dù bạn đang xây dựng một thông báo email đơn giản hay một động cơ đa kênh phức tạp, bắt đầu với mô hình nhà máy sớm được trả lương khi tính năng của bạn được mở rộng. Đầu tư trong một lượng nhỏ trừu tượng ngày hôm nay tiết kiệm được ngày phục hồi.