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.
| Ferramenta | O que faz | Indicada para |
|---|---|---|
| API REST | Tudo 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 entrada | Uma 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ída | O 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 barra | As 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. |
| Bots | Contas 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ão12.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.Client4e o cliente TypeScript@mattermost/client(veja Bibliotecas de cliente). - Empacotamentos de plugins: um
.tar.gzcom um manifestoplugin.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/clientpermanece 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 prefixoAM_, a ferramenta de linha de comando éamctle 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ório | Conteúdo |
|---|---|
| antimatter | O servidor (Go, em server/), as duas interfaces web (webapp/fusion e webapp/channels), o cliente TypeScript e o amctl. |
| antimatter-docker | As 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-server | O serviço auto-hospedado de GIFs e figurinhas usado pelo aplicativo GIFs. |
| desktop-app, mobile-app, push-proxy | Os aplicativos para desktop e mobile, e o serviço que retransmite notificações push para os celulares. |
| antimatter.chat | Este site e sua documentação. |
| community | Problemas 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.