logologo
البدء
الدليل
التطوير
الإضافات
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
البدء
الدليل
التطوير
الإضافات
API
logologo
نظرة عامة

قنوات الإشعارات

رسائل داخلية
بريد إلكتروني
WeChat للشركات

دليل المطورين

توسيع أنواع قنوات الإشعارات
توسيع Notification API
Previous Pageتوسيع أنواع قنوات الإشعارات
إشعار الترجمة بالذكاء الاصطناعي

تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.

#مرجع الواجهة البرمجية (API)

#جانب الخادم

#BaseNotificationChannel

هذا صنف تجريدي يمثل أساسًا لأنواع قنوات الإشعارات المختلفة. يحدد الواجهات الأساسية لتطبيق القناة. لإضافة نوع قناة إشعارات جديد، يجب عليك وراثة هذا الصنف وتطبيق أساليبه.

export abstract class BaseNotificationChannel<Message = any> {
  constructor(protected app: Application) {}
  abstract send(params: {
    channel: ChannelOptions;
    message: Message;
  }): Promise<{ message: Message; status: 'success' | 'fail'; reason?: string }>;
}

#PluginNotificationManagerServer

هذه الإضافة (Plugin) لجانب الخادم تعمل كأداة لإدارة الإشعارات، حيث توفر أساليب لتسجيل أنواع قنوات الإشعارات وإرسال الإشعارات.

#registerChannelType()

يسجل هذا الأسلوب نوع قناة جديدًا على جانب الخادم. يتوفر مثال للاستخدام أدناه.

import PluginNotificationManagerServer from '@nocobase/plugin-notification-manager';
import { Plugin } from '@nocobase/server';
import { ExampleServer } from './example-server';
export class PluginNotificationExampleServer extends Plugin {
  async load() {
    const notificationServer = this.pm.get(PluginNotificationManagerServer) as PluginNotificationManagerServer;
    notificationServer.registerChannelType({ type: 'example-sms', Channel: ExampleServer });
  }
}

export default PluginNotificationExampleServer;
#التوقيع

registerChannelType({ type, Channel }: {type: string, Channel: BaseNotificationChannel })

#send()

يُستخدم أسلوب send لإرسال الإشعارات عبر قناة محددة.

// رسالة داخل التطبيق
send({
  channelName: 'in-app-message',
  message: {
    title: 'عنوان اختبار رسالة داخل التطبيق',
    content: 'اختبار رسالة داخل التطبيق'
  },
  receivers: {
    type: 'userId',
    value: [1, 2, 3]
  },
  triggerFrom: 'workflow'
});

// بريد إلكتروني
send({
  channelName: 'email',
  message: {
    title: 'عنوان اختبار البريد الإلكتروني',
    content: 'اختبار البريد الإلكتروني'
  },
  receivers: {
    type: 'channel-self-defined',
    channelType: 'email',
    value: ['a@example.com', 'b@example.com']
  },
  triggerFrom: 'workflow'
});
#التوقيع

send(sendConfig: {channelName: String, message: Object, receivers: ReceiversType, triggerFrom: String })

يدعم حقل receivers حاليًا صيغتين: معرفات مستخدمي NocoBase (userId) أو إعدادات القناة المخصصة (channel-self-defined).

type ReceiversType =
  | { value: number[]; type: 'userId' }
  | { value: any; type: 'channel-self-defined'; channelType: string };
#معلومات مفصلة

sendConfig

الخاصيةالنوعالوصف
channelNamestringمعرف القناة
messageobjectكائن الرسالة
receiversReceiversTypeالمستلمون
triggerFromstringمصدر التشغيل

#جانب العميل

#PluginNotificationManagerClient

#channelTypes

مكتبة أنواع القنوات المسجلة.

#التوقيع

channelTypes: Registry<registerTypeOptions>

#registerChannelType()

يسجل نوع قناة لجانب العميل.

#التوقيع

registerChannelType(params: registerTypeOptions)

#النوع
type registerTypeOptions = {
  title: string; // عنوان عرض القناة
  type: string;  // معرف القناة
  components: {
    ChannelConfigForm?: ComponentType; // مكون نموذج إعدادات القناة؛
    MessageConfigForm?: ComponentType<{ variableOptions: any }>; // مكون نموذج إعدادات الرسالة؛
    ContentConfigForm?: ComponentType<{ variableOptions: any }>; // مكون نموذج إعدادات المحتوى (لمحتوى الرسالة فقط، لا يشمل إعدادات المستلمين)؛
  };
  meta?: { // بيانات وصفية لإعدادات القناة
    createable?: boolean; // هل يمكن إضافة قنوات جديدة؛
    editable?: boolean;  // هل معلومات إعدادات القناة قابلة للتحرير؛
    deletable?: boolean; // هل معلومات إعدادات القناة قابلة للحذف؛
  };
};

type RegisterChannelType = (params: ChannelType) => void;