Desarrollo sobre Antimatter

Esta guía está dirigida a desarrolladores. Cubre scripts y bots que utilizan la API, integraciones basadas en webhooks y comandos con barra diagonal, aplicaciones (plugins) que añaden funciones al servidor y a la aplicación web, y la compilación de Antimatter desde el código fuente para contribuir a su desarrollo.

Formas de ampliar Antimatter

Elija la herramienta más ligera que cumpla el objetivo. Las cuatro primeras no requieren acceso al propio servidor; las aplicaciones se ejecutan dentro de él.

HerramientaQué haceAdecuada para
API RESTTodo lo que hacen las aplicaciones: mensajes, canales, personas, archivos y configuración. Un WebSocket envía eventos a medida que ocurren.Scripts, sincronización con otros sistemas, clientes personalizados.
Webhooks entrantesUna URL secreta que publica un mensaje en un canal cuando se le envía JSON.Alertas, resultados de CI, supervisión, notificaciones de otras herramientas.
Webhooks salientesAntimatter llama a tu URL cuando un mensaje en un canal público comienza con una palabra de activación, o cuando alguien selecciona tu acción en el menú de un mensaje, y publica tu respuesta.Automatizaciones simples basadas en el chat, que envían un mensaje a otra herramienta.
Comandos con barra diagonalLas personas escriben /something; Antimatter llama a tu URL y muestra tu respuesta a ellas o al canal.Consultas, acciones iniciadas desde el chat.
BotsCuentas creadas para programas, con sus propios tokens, una etiqueta BOT (AGENTE para agentes de IA) y mensajes e interactivos.Asistentes, notificadores, agentes de IA que ejecutes tú mismo, cualquier cosa que hable con las personas.
Aplicaciones (plugins)Código que se ejecuta dentro del servidor (Go) y en la aplicación web (React): ganchos en cada mensaje, nuevos menús, paneles, tipos de mensaje, páginas.Funciones: encuestas, notas, calendarios, integraciones que requieren la interfaz de usuario.

En la interfaz, las personas llaman a los plugins «aplicaciones». Esta guía dice «aplicaciones (plugins)» cuando ambas palabras ayudan, porque el código, la API y la configuración siguen diciendo «plugin».

Compatibilidad con Mattermost

Antimatter es una bifurcación de Mattermost. Lo que funciona con un servidor de Mattermost, en su mayoría, funciona con Antimatter.

Qué es lo mismo

  • La API REST bajo /api/v4, su autenticación, su WebSocket y su formato de errores. El servidor informa la versión 12.0.0, por lo que los clientes y las aplicaciones que comprueban la versión del servidor ven una versión reciente de Mattermost.
  • Webhooks y comandos con barra diagonal, incluidos sus payloads compatibles con Slack.
  • La API y los hooks del servidor: Antimatter los mantiene tal cual. El código del servidor se construye sobre el mismo módulo de Go, github.com/mattermost/mattermost/server/public. Antimatter solo añade métodos para su servicio de IA (ver El servicio de IA).
  • El registro de plugins de la aplicación web: todos los métodos register… del registro de Mattermost existen en ambas interfaces web de Antimatter.
  • Bibliotecas de cliente: el cliente de Go model.Client4 y el cliente de TypeScript @mattermost/client (ver Bibliotecas de cliente).
  • Paquetes de plugins: un .tar.gz con un manifiesto plugin.json. Se instalan los plugins firmados con la clave de Mattermost, al igual que los firmados con la de Antimatter.

Qué es diferente

  • Dos interfaces web. La nueva interfaz, Fusion, es la predeterminada; la interfaz clásica de Mattermost sigue disponible. Fusion renderiza la mayoría de los componentes de los plugins, pero coloca algunos de forma diferente y omite algunos. Una aplicación puede determinar qué interfaz está en ejecución. Ver Soporte para la interfaz Fusion.
  • API adicional. Antimatter añade puntos de conexión para sus propias funciones: atributos de la comunidad, tiempos de espera, mensajes en la parte superior, solicitudes de mensajes, sobrescrituras de canal y categoría, exportación de canal, movimiento de hilos, conexiones de modelos, acciones de mensaje y nuevos campos en las comunidades. Ver Lo que Antimatter añade a la API.
  • Funciones adicionales de mensajes. Los adjuntos de mensajes pueden mostrar etapas de una canalización y un gráfico pequeño; los mensajes pueden ser respuestas en línea o spoilers.
  • Hooks adicionales de la aplicación web para las aplicaciones: un elemento en el menú «+» del compositor, pestañas en el selector de emojis, un panel en la vista del canal, un pie de página bajo los canales de la barra lateral, una entrada en las páginas de integraciones, las vistas de añadir y gestionar del selector de emojis, y un panel lateral que se reabre donde estaba en una nueva ventana. Ver Hooks que solo tiene Antimatter.
  • Sin licencias. Todas las funciones están disponibles sin una clave de licencia. Los puntos de conexión de licencia, prueba y actualización empresarial han desaparecido; GET /api/v4/license/client permanece para los clientes que lo solicitan. Algunas aplicaciones creadas para las ediciones de pago de Mattermost verifican la licencia por sí mismas y se niegan a ejecutarse.
  • Nombres. Los equipos se llaman comunidades en la interfaz, pero la API y el código siguen diciendo team. Las variables de entorno usan el prefijo AM_, la herramienta de línea de comandos es amctl y el binario del servidor es antimatter.

Dónde se encuentra el código

Todo es de código abierto, en la organización AntimatterChat de GitHub. Cada repositorio funciona en su rama main.

RepositorioContenido
antimatterEl servidor (Go, en server/), ambas interfaces web (webapp/fusion y webapp/channels), el cliente de TypeScript y amctl.
antimatter-dockerLas imágenes de Docker, con las aplicaciones incluidas, y los archivos de compose.
antimatter-plugin-*Un repositorio por cada aplicación incluida: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents y metrics.
gifs-serverEl servicio de GIF y pegatinas autoalojado que utiliza la aplicación de GIFs.
desktop-app, mobile-app, push-proxyLas aplicaciones de escritorio y móviles, y el servicio que reenvía las notificaciones push a los teléfonos.
antimatter.chatEste sitio web y su documentación.
communityProblemas y discusiones para cada parte de Antimatter.

Antes de empezar

  • Obtén un servidor de prueba. La opción más rápida es la imagen de Docker: consulta Instalación de Antimatter. Para trabajar en el propio Antimatter, consulta Compilación desde el código fuente.
  • Comprueba qué permite el servidor. Varias funciones de integración están desactivadas de forma predeterminada y requieren un administrador del sistema: tokens de acceso personal, cuentas de bot, sobrescritura de nombres de usuario e iconos, y subida de aplicaciones. Cada página indica la configuración necesaria.
  • Conoce la URL de tu sitio. Los ejemplos utilizan https://chat.example.com. Sustitúyela por la dirección de tu servidor.

En esta guía

  • La API REST: autenticación, recursos principales, paginación, errores, límites de tasa, WebSocket, bibliotecas de cliente y las adiciones de Antimatter.
  • Webhooks: webhooks entrantes y salientes, cargas útiles, adjuntos y tarjetas.
  • Comandos con barra diagonal: comandos personalizados, su solicitud y respuesta, autocompletado.
  • Bots y mensajes interactivos: cuentas de bot, agentes externos, botones, menús y diálogos.
  • Escritura de aplicaciones: la estructura del plugin, los hooks del servidor, el registro de la aplicación web, Fusion, configuración, almacenamiento, traducciones y empaquetado.
  • Compilación desde el código fuente: el servidor, las interfaces web, la imagen de Docker y las aplicaciones.
  • Contribución: problemas, solicitudes de extracción, estilo, traducciones, seguridad y licencias.
Las preguntas son bienvenidas en las discusiones de la comunidad. Reporta errores en los problemas de la comunidad.