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

Notificatiekanalen

Interne berichten
E-mail
WeChat Work

Ontwikkelaarsgids

Notificatiekanalen uitbreiden
Notificatie-API uitbreiden
Previous PageNotificatiekanalen uitbreiden
TIP

Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie

#API-referentie

#Serverzijde

#BaseNotificationChannel

Dit is een abstracte klasse die dient als basis voor verschillende typen notificatiekanalen. Het definieert de essentiële interfaces die nodig zijn voor de implementatie van een kanaal. Om een nieuw notificatiekanaal toe te voegen, moet u deze klasse uitbreiden en de methoden ervan implementeren.

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

Deze server-side plugin functioneert als een tool voor notificatiebeheer. Het biedt methoden voor het registreren van notificatiekanaaltypen en het verzenden van notificaties.

#registerChannelType()

Deze methode registreert een nieuw kanaaltype aan de serverzijde. Hieronder vindt u een voorbeeld van het gebruik.

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;
#Handtekening

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

#send()

De send-methode wordt gebruikt om notificaties via een gespecificeerd kanaal te verzenden.

// In-app bericht
send({
  channelName: 'in-app-message',
  message: {
    title: 'Titel in-app bericht test',
    content: 'In-app bericht test'
  },
  receivers: {
    type: 'userId',
    value: [1, 2, 3]
  },
  triggerFrom: 'workflow'
});

// E-mail
send({
  channelName: 'email',
  message: {
    title: 'Titel e-mail test',
    content: 'E-mail test'
  },
  receivers: {
    type: 'channel-self-defined',
    channelType: 'email',
    value: ['a@example.com', 'b@example.com']
  },
  triggerFrom: 'workflow'
});
#Handtekening

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

Het veld receivers ondersteunt momenteel twee formaten: NocoBase gebruikers-ID's (userId) of aangepaste kanaalconfiguraties (channel-self-defined).

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

sendConfig

EigenschapTypeBeschrijving
channelNamestringKanaal-ID
messageobjectBerichtobject
receiversReceiversTypeOntvangers
triggerFromstringBron van trigger

#Clientzijde

#PluginNotificationManagerClient

#channelTypes

De bibliotheek met geregistreerde kanaaltypen.

#Handtekening

channelTypes: Registry<registerTypeOptions>

#registerChannelType()

Registreert een client-side kanaaltype.

#Handtekening

registerChannelType(params: registerTypeOptions)

#Type
type registerTypeOptions = {
  title: string; // Weergavetitel voor het kanaal
  type: string; // Kanaal-ID
  components: {
    ChannelConfigForm?: ComponentType; // Component voor het kanaalconfiguratieformulier;
    MessageConfigForm?: ComponentType<{ variableOptions: any }>; // Component voor het berichtconfiguratieformulier;
    ContentConfigForm?: ComponentType<{ variableOptions: any }>; // Component voor het inhoudsconfiguratieformulier (alleen voor berichtinhoud, exclusief ontvangerconfiguratie);
  };
  meta?: {
    // Metadata voor kanaalconfiguratie
    createable?: boolean; // Geeft aan of nieuwe kanalen kunnen worden toegevoegd;
    editable?: boolean; // Geeft aan of de kanaalconfiguratie bewerkbaar is;
    deletable?: boolean; // Geeft aan of de kanaalconfiguratie verwijderbaar is;
  };
};

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