Aviso de traducción por IA

Esta documentación ha sido traducida automáticamente por IA.

Referencia de la API

Lado del Servidor

BaseNotificationChannel

Esta clase abstracta sirve como base para los diferentes tipos de canales de notificación. Define las interfaces esenciales para la implementación de un canal. Para añadir un nuevo tipo de canal de notificación, debe extender esta clase e implementar sus métodos.

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

Este plugin del lado del servidor funciona como una herramienta de gestión de notificaciones, ofreciendo métodos para registrar tipos de canales de notificación y para enviar notificaciones.

registerChannelType()

Este método registra un nuevo tipo de canal en el lado del servidor. A continuación, le mostramos un ejemplo de uso.

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()

El método send se utiliza para enviar notificaciones a través de un canal específico.

// Mensaje en la aplicación
send({
  channelName: 'in-app-message',
  message: {
    title: 'Título de prueba de mensaje en la aplicación',
    content: 'Prueba de mensaje en la aplicación'
  },
  receivers: {
    type: 'userId',
    value: [1, 2, 3]
  },
  triggerFrom: 'workflow'
});

// Correo electrónico
send({
  channelName: 'email',
  message: {
    title: 'Título de prueba de correo electrónico',
    content: 'Prueba de correo electrónico'
  },
  receivers: {
    type: 'channel-self-defined',
    channelType: 'email',
    value: ['a@163.com', 'b@163.com']
  },
  triggerFrom: 'workflow'
});
Firma

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

Actualmente, el campo receivers (destinatarios) solo admite dos formatos: los ID de usuario de NocoBase (userId) o configuraciones de canal personalizadas (channel-self-defined).

type ReceiversType =
  | { value: number[]; type: 'userId' }
  | { value: any; type: 'channel-self-defined'; channelType: string };
Información detallada

sendConfig

PropiedadTipoDescripción
channelNamestringIdentificador del canal
messageobjectObjeto del mensaje
receiversReceiversTypeDestinatarios
triggerFromstringOrigen del disparador

Lado del Cliente

PluginNotificationManagerClient

channelTypes

La biblioteca de tipos de canales registrados.

Firma

channelTypes: Registry<registerTypeOptions>

registerChannelType()

Registra un tipo de canal del lado del cliente.

Firma

registerChannelType(params: registerTypeOptions)

Tipo
type registerTypeOptions = {
  title: string; // Título a mostrar para el canal
  type: string;  // Identificador del canal
  components: {
    ChannelConfigForm?: ComponentType // Componente del formulario de configuración del canal;
    MessageConfigForm?: ComponentType<{ variableOptions: any }> // Componente del formulario de configuración del mensaje;
    ContentConfigForm?: ComponentType<{ variableOptions: any }> // Componente del formulario de configuración del contenido (solo para el contenido del mensaje, sin incluir la configuración de destinatarios);
  };
  meta?: { // Metadatos para la configuración del canal
    createable?: boolean // Indica si se pueden añadir nuevos canales;
    editable?: boolean  // Indica si la configuración del canal es editable;
    deletable?: boolean // Indica si la configuración del canal es eliminable;
  };
};

type RegisterChannelType = (params: ChannelType) => void