logologo
Inizio
Guida
Sviluppo
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
Inizio
Guida
Sviluppo
Plugin
API
logologo
Panoramica

Canali di Notifica

Messaggi Interni
Email
WeChat Work

Guida per Sviluppatori

Estendi Tipi Canale di Notifica
Estendi API di Notifica
Previous PageEstendi Tipi Canale di Notifica
Avviso di traduzione IA

Questa documentazione è stata tradotta automaticamente dall'IA.

#Riferimento API

#Lato Server

#BaseNotificationChannel

Questa classe astratta funge da base per i diversi tipi di canali di notifica. Definisce le interfacce essenziali per l'implementazione di un canale. Per aggiungere un nuovo tipo di canale di notifica, è necessario estendere questa classe e implementarne i metodi.

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

Questo plugin lato server è uno strumento per la gestione delle notifiche, che fornisce metodi per la registrazione dei tipi di canali di notifica e per l'invio delle notifiche.

#registerChannelType()

Questo metodo registra un nuovo tipo di canale lato server. Di seguito è riportato un esempio di utilizzo.

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

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

#send()

Il metodo send viene utilizzato per inviare notifiche tramite un canale specificato.

send('in-app-message',
  message:[
    receivers: [1,2,3],
    receiverType: 'userId',
    content: '站内信测试',
    title: '站内信测试标题'
  ],
  triggerFrom: 'workflow')

  send('email',
  message:[
    receivers: ['a@163.com', 'b@163.com'],
    receiverType: 'email',
    content: '邮箱测试',
    title: '邮箱测试标题'
  ],
  triggerFrom: 'workflow')
#Firma

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

Il campo receivers attualmente supporta due formati: gli ID utente NocoBase (userId) o le configurazioni personalizzate del canale (channel-self-defined).

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

sendConfig

ProprietàTipoDescrizione
channelNamestringIdentificatore del canale
messageobjectOggetto messaggio
receiversReceiversTypeDestinatari
triggerFromstringOrigine del trigger

#Lato Client

#PluginNotificationManagerClient

#channelTypes

La libreria dei tipi di canale registrati.

#Firma

channelTypes: Registry<registerTypeOptions>

#registerChannelType()

Registra un tipo di canale lato client.

#Firma

registerChannelType(params: registerTypeOptions)

#Tipo
type registerTypeOptions = {
  title: string; // Titolo visualizzato per il canale
  type: string;  // Identificatore del canale
  components: {
    ChannelConfigForm?: ComponentType // Componente del modulo di configurazione del canale;
    MessageConfigForm?: ComponentType<{ variableOptions: any }> // Componente del modulo di configurazione del messaggio;
    ContentConfigForm?: ComponentType<{ variableOptions: any }> // Componente del modulo di configurazione del contenuto (solo per il contenuto del messaggio, esclusa la configurazione dei destinatari);
  };
  meta?: { // Metadati per la configurazione del canale
    createable?: boolean // Indica se è possibile aggiungere nuovi canali;
    editable?: boolean  // Indica se la configurazione del canale è modificabile;
    deletable?: boolean // Indica se la configurazione del canale è eliminabile;
  };
};

type RegisterChannelType = (params: ChannelType) => void