Slack como sistema de notificações
Popular ferramenta de colaboração é útil para gerenciar avisos
Há alguns dias, precisei de uma solução para notificações que atendesse a alguns requisitos específicos: as mensagens poderiam ser originadas de um ou mais sistemas, devendo ser separadas em categorias e entregues aos aparelhos Android e iOS dos usuários autorizados.
Como nem todos os usuários teriam autorização para receber todas as notificações, também era extremamente importante poder restringir a quem elas seriam entregues com base na categoria em que se enquadrassem.
Considerei diversas possibilidades, incluindo a de desenvolver um sistema próprio, mas os custos seriam elevados: a implementação de push notifications em um app para iOS, por exemplo, requer participação no Apple Developer Program, a uma taxa de US$99/ano — preço pouco atrativo quando o objetivo é simplesmente permitir que algumas pessoas recebam notificações.
Por fim, optei por utilizar o Slack, uma conhecida ferramenta de comunicação para equipes. Embora possa não parecer uma escolha óbvia a princípio, notei que era a maneira mais eficiente de resolver a questão.
Slack
Para compreender como a plataforma atende aos requisitos apresentados, é preciso conhecer o básico sobre o seu funcionamento, especialmente no que diz respeito aos workspaces e suas subdivisões, os canais.
Cada workspace é um espaço onde um grupo de pessoas — que podem ser, por exemplo, os funcionários de uma empresa, os estudantes de uma universidade ou os membros de um makerspace — se comunica, e o seu acesso é restrito de acordo com as configurações e convites enviados pelos administradores.
Além disso, cada canal em um workspace pode ser aberto a todos os membros do espaço, ou apenas para convidados.
O Slack conta com apps para as mais diversas plataformas, incluindo Android e iOS. Por meio deles, os usuários podem ser notificados quando mensagens são enviadas aos canais dos quais eles participam.
Também é possível alterar configurações de notificação de acordo com o canal — de maneira que um usuário pode, por exemplo, silenciar as notificações de mensagens do canal #a, mas continuar recebendo as do #b.
API
A API do Slack permite a publicação nos diversos canais de um workspace, de forma que as notificações de um sistema A podem ser enviadas ao canal #a, e as de um sistema B, ao canal #b. Desta forma, satisfazem-se as necessidades de separação em categorias e controle de acesso.
O recurso que permite a publicação de mensagens por meio da API é chamado de Incoming Webhooks, e os passos para utilizá-lo são, em resumo, criar um Slack app, ativar a função e, em seguida, as URLs através das quais as publicações serão feitas.
Autorizando a publicação via Incoming Webhooks no canal #general
O uso dos Incoming Webhooks é extremamente simples, bastando o envio de uma solicitação POST às URLs geradas. Assim, é possível inclusive efetuar publicações através da ferramenta de linha de comando curl, conforme exemplificado a seguir.
curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' <Webhook URL criada pelo Slack aqui>
Custos
O Slack oferece um plano gratuito que, embora com limitações — como a restrição de visualização além das últimas 10 mil mensagens enviadas ao espaço — , provou atender perfeitamente ao meu caso de uso. Além disso, não há necessidade de investir na manutenção de servidores da aplicação, uma vez que se trata de solução hospedada.
Alternativa: Mattermost
Quando comentei em um pequeno canal privado do Telegram sobre o uso do Slack para notificações, fui lembrado da existência do Mattermost. Menciono-o aqui pois pode ser uma opção mais adequada para casos de uso distintos, ainda que similares ao descrito.
O Mattermost é uma alternativa ao Slack que pode ser obtida e instalada pelo usuário em servidor próprio. Funciona, portanto, como um produto, e não como um serviço hospedado. Há uma versão gratuita e open source, licenciada sob os termos da licença MIT.
Tal como o Slack, o Mattermost suporta Incoming Webhooks, sendo assim uma outra opção viável para uso como sistema de notificações.
Conclusão
O Slack, embora apresentado como ferramenta de comunicação para equipes, funciona também como uma excelente plataforma para entrega e gestão de notificações, oferecida a um custo bastante reduzido — e muitas vezes gratuita.
Conhecer esta possibilidade de utilização do serviço pode ser particularmente interessante para pessoas e pequenos grupos que se identificam com a cultura maker e desenvolvem projetos envolvendo o envio de notificações para aparelhos como smartphones e tablets.
Há ainda o Mattermost, alternativa ao Slack, que, apesar de requerer hospedagem e manutenção, a depender do caso de uso, pode representar uma melhor opção.