logologo
Empezar
Manual
Desarrollo
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
Empezar
Manual
Desarrollo
Plugins
API
logologo
Visión general

Canales de notificación

Mensaje interno
Correo electrónico
WeCom

Guía de desarrollo

Extender tipo de canal de notificación
Extender API de notificación
Previous PageExtender tipo de canal de notificación
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