Desenvolvendo no Antimatter

Este guia é para desenvolvedores. Ele cobre scripts e bots que usam a API, integrações construídas com base em webhooks e comandos de barra, aplicativos (plugins) que adicionam recursos ao servidor e ao aplicativo web, e a compilação do Antimatter a partir do código-fonte para contribuir com o projeto.

Formas de estender o Antimatter

Escolha a ferramenta mais leve que realize a tarefa. As quatro primeiras não exigem acesso ao próprio servidor; os aplicativos são executados dentro dele.

FerramentaO que fazIndicada para
API RESTTudo o que os aplicativos fazem: mensagens, canais, pessoas, arquivos, configurações. Um WebSocket envia eventos conforme eles ocorrem.Scripts, sincronização com outros sistemas, clientes personalizados.
Webhooks de entradaUma URL secreta que publica uma mensagem em um canal quando algo envia JSON para ela.Alertas, resultados de CI, monitoramento, notificações de outras ferramentas.
Webhooks de saídaO Antimatter chama sua URL quando uma mensagem em um Canal Público começa com uma palavra de gatilho, ou quando alguém seleciona sua ação no menu de uma mensagem, e publica sua resposta.Automações simples orientadas por chat, enviando uma mensagem para outra ferramenta.
Comandos de barraAs pessoas digitam /something; o Antimatter chama sua URL e mostra sua resposta a elas ou ao canal.Consultas, ações iniciadas a partir do chat.
BotsContas criadas para programas, com seus próprios tokens, uma etiqueta BOT e mensagens e diálogos interativos.Assistentes, notificadoras, qualquer coisa que converse com pessoas.
Aplicativos (plugins)Código que é executado dentro do servidor (Go) e no aplicativo web (React): ganchos em cada mensagem, novos menus, painéis, tipos de mensagem, páginas.Recursos: enquetes, notas, calendários, integrações que precisam da interface do usuário.

Na interface, as pessoas chamam os plugins de "aplicativos". Este guia diz "aplicativos (plugins)" onde ambas as palavras ajudam, porque o código, a API e a configuração ainda dizem "plugin".

Compatibilidade com o Mattermost

O Antimatter é um fork do Mattermost. A maioria do que funciona com um servidor Mattermost funciona com o Antimatter.

O que é igual

  • A API REST sob /api/v4, sua autenticação, seu WebSocket e seu formato de erro. O servidor relata a versão 12.0.0, então clientes e aplicativos que verificam a versão do servidor veem um Mattermost recente.
  • Webhooks e comandos de barra, incluindo seus payloads compatíveis com o Slack.
  • A API e os hooks do plugin do servidor: O Antimatter os mantém como estão. O código do servidor é construído com base no mesmo módulo Go, github.com/mattermost/mattermost/server/public. O Antimatter apenas adiciona métodos, para seu serviço de IA (veja O serviço de IA).
  • O registro de plugins do aplicativo web: todos os métodos register… do registro do Mattermost existem em ambas as interfaces web do Antimatter.
  • Bibliotecas de cliente: o cliente Go model.Client4 e o cliente TypeScript @mattermost/client (veja Bibliotecas de cliente).
  • Empacotamentos de plugins: um .tar.gz com um manifesto plugin.json. Plugins assinados com a chave do Mattermost são instalados, assim como aqueles assinados com a chave do Antimatter.

O que é diferente

  • Duas interfaces web. A nova interface, Fusion, é o padrão; a interface clássica do Mattermost ainda está disponível. A Fusion renderiza a maioria dos componentes dos plugins, mas posiciona alguns de forma diferente e omite alguns. Um aplicativo pode determinar qual interface está em execução. Veja Suporte à interface Fusion.
  • API extra. O Antimatter adiciona endpoints para seus próprios recursos: atributos da comunidade, timeouts, mensagens no topo, solicitações de mensagens, substituições de canal e categoria, exportação de canal, movimentação de tópicos, conexões de modelo, ações de mensagem e novos campos em comunidades. Veja O que o Antimatter adiciona à API.
  • Recursos extras de mensagem. Anexos de mensagem podem exibir estágios de pipeline e um pequeno gráfico; publicações podem ser respostas inline ou spoilers.
  • Hooks extras do aplicativo web para aplicativos: um item de menu "+" no compositor, abas no seletor de emojis, um painel na visualização do canal, um rodapé abaixo dos canais na barra lateral, uma entrada nas páginas de integrações, as vistas de adição e gerenciamento do seletor de emojis, e um painel lateral que reabre onde estava em uma nova janela. Veja Hooks que apenas o Antimatter possui.
  • Sem licenças. Todos os recursos estão disponíveis sem uma chave de licença. Os endpoints de licença, teste e upgrade para empresas foram removidos; GET /api/v4/license/client permanece para clientes que solicitam. Alguns aplicativos criados para as edições pagas do Mattermost verificam a licença por conta própria e se recusam a executar.
  • Nomes. As equipes são chamadas de comunidades na interface, mas a API e o código ainda usam team. As variáveis de ambiente usam o prefixo AM_, a ferramenta de linha de comando é amctl e o binário do servidor é antimatter.

Onde o código está

Tudo é código aberto, na organização AntimatterChat no GitHub. Cada repositório funciona em sua branch main.

RepositórioConteúdo
antimatterO servidor (Go, em server/), as duas interfaces web (webapp/fusion e webapp/channels), o cliente TypeScript e o amctl.
antimatter-dockerAs imagens Docker, com os aplicativos incluídos, e os arquivos de compose.
antimatter-plugin-*Um repositório para cada aplicativo incluído: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents e metrics.
gifs-serverO serviço auto-hospedado de GIFs e figurinhas usado pelo aplicativo GIFs.
desktop-app, mobile-app, push-proxyOs aplicativos para desktop e mobile, e o serviço que retransmite notificações push para os celulares.
antimatter.chatEste site e sua documentação.
communityProblemas e discussões para todas as partes do Antimatter.

Antes de começar

  • Obtenha um servidor de teste. A opção mais rápida é a imagem do Docker: consulte Instalando o Antimatter. Para trabalhar no próprio Antimatter, consulte Compilando a partir do código-fonte.
  • Verifique o que o servidor permite. Várias funcionalidades de integração estão desativadas por padrão e exigem um administrador do sistema: tokens de acesso pessoal, contas de bot, substituição de nome de usuário e ícone, e envio de aplicativos. Cada página indica qual configuração é necessária.
  • Conheça a URL do seu site. Os exemplos usam https://chat.example.com. Substitua-a pelo endereço do seu servidor.

Neste guia

  • A API REST: autenticação, recursos principais, paginação, erros, limites de taxa, WebSocket, bibliotecas de cliente e as adições do Antimatter.
  • Webhooks: webhooks de entrada e saída, cargas úteis, anexos e cartões.
  • Comandos de barra: comandos personalizados, suas requisições e respostas, preenchimento automático.
  • Bots e mensagens interativas: contas de bot, botões, menus e diálogos.
  • Criando aplicativos: a estrutura do plugin, ganchos do servidor, o registro do aplicativo web, Fusion, configurações, armazenamento, traduções e empacotamento.
  • Compilando a partir do código-fonte: o servidor, as interfaces web, a imagem do Docker e os aplicativos.
  • Contribuindo: problemas, solicitações de pull, estilo, traduções, segurança e licenças.
As perguntas são bem-vindas nas discussões da comunidade. Relate bugs nos problemas da comunidade.