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

Saluran Notifikasi

Pesan Internal
Email
WeChat Work

Panduan Pengembang

Perluas Tipe Saluran Notifikasi
Perluas API Notifikasi
Previous PagePerluas Tipe Saluran Notifikasi
TIP

Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris

#Referensi API

#Sisi Server

#BaseNotificationChannel

BaseNotificationChannel adalah kelas abstrak yang menjadi dasar bagi berbagai jenis saluran notifikasi. Kelas ini mendefinisikan antarmuka penting yang diperlukan untuk implementasi saluran. Jika Anda ingin menambahkan jenis saluran notifikasi baru, Anda harus mewarisi kelas ini dan mengimplementasikan metode-metode di dalamnya.

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

PluginNotificationManagerServer adalah plugin sisi server yang berfungsi sebagai alat manajemen notifikasi. Plugin ini menyediakan metode untuk mendaftarkan jenis saluran notifikasi dan mengirimkan notifikasi.

#registerChannelType()

Metode ini mendaftarkan jenis saluran baru di sisi server. Contoh penggunaan disediakan di bawah ini.

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

export default PluginNotificationExampleServer;
#Tanda Tangan

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

#send()

Metode send digunakan untuk mengirimkan notifikasi melalui saluran yang ditentukan.

// Pesan dalam aplikasi
send({
  channelName: 'in-app-message',
  message: {
    title: 'Judul tes pesan dalam aplikasi',
    content: 'Tes pesan dalam aplikasi'
  },
  receivers: {
    type: 'userId',
    value: [1, 2, 3]
  },
  triggerFrom: 'alur kerja'
});

// Email
send({
  channelName: 'email',
  message: {
    title: 'Judul tes email',
    content: 'Tes email'
  },
  receivers: {
    type: 'channel-self-defined',
    channelType: 'email',
    value: ['a@example.com', 'b@example.com']
  },
  triggerFrom: 'alur kerja'
});
#Tanda Tangan

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

Bidang receivers saat ini hanya mendukung dua format: ID pengguna NocoBase userId atau konfigurasi saluran kustom channel-self-defined.

type ReceiversType =
  | { value: number[]; type: 'userId' }
  | { value: any; type: 'channel-self-defined'; channelType: string };
#Informasi Detail

sendConfig

PropertiTipeDeskripsi
channelNamestringPengidentifikasi saluran
messageobjectObjek pesan
receiversReceiversTypePenerima
triggerFromstringSumber pemicu

#Sisi Klien

#PluginNotificationManagerClient

#channelTypes

Pustaka jenis saluran yang terdaftar.

#Tanda Tangan

channelTypes: Registry<registerTypeOptions>

#registerChannelType()

Mendaftarkan jenis saluran sisi klien.

#Tanda Tangan

registerChannelType(params: registerTypeOptions)

#Tipe
type registerTypeOptions = {
  title: string; // Judul tampilan untuk saluran
  type: string; // Pengidentifikasi saluran
  components: {
    ChannelConfigForm?: ComponentType; // Komponen formulir konfigurasi saluran;
    MessageConfigForm?: ComponentType<{ variableOptions: any }>; // Komponen formulir konfigurasi pesan;
    ContentConfigForm?: ComponentType<{ variableOptions: any }>; // Komponen formulir konfigurasi konten (hanya untuk konten pesan, tidak termasuk konfigurasi penerima);
  };
  meta?: {
    // Metadata untuk konfigurasi saluran
    createable?: boolean; // Apakah saluran baru dapat ditambahkan;
    editable?: boolean; // Apakah konfigurasi saluran dapat diedit;
    deletable?: boolean; // Apakah konfigurasi saluran dapat dihapus;
  };
};

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