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.
| Herramienta | Qué hace | Adecuada para |
|---|---|---|
| API REST | Todo 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 entrantes | Una 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 salientes | Antimatter 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 diagonal | Las personas escriben /something; Antimatter llama a tu URL y muestra tu respuesta a ellas o al canal. | Consultas, acciones iniciadas desde el chat. |
| Bots | Cuentas 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ón12.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.Client4y el cliente de TypeScript@mattermost/client(ver Bibliotecas de cliente). - Paquetes de plugins: un
.tar.gzcon un manifiestoplugin.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/clientpermanece 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 prefijoAM_, la herramienta de línea de comandos esamctly el binario del servidor esantimatter.
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.
| Repositorio | Contenido |
|---|---|
| antimatter | El servidor (Go, en server/), ambas interfaces web (webapp/fusion y webapp/channels), el cliente de TypeScript y amctl. |
| antimatter-docker | Las 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-server | El servicio de GIF y pegatinas autoalojado que utiliza la aplicación de GIFs. |
| desktop-app, mobile-app, push-proxy | Las aplicaciones de escritorio y móviles, y el servicio que reenvía las notificaciones push a los teléfonos. |
| antimatter.chat | Este sitio web y su documentación. |
| community | Problemas 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.