Rocket.Chat App: Adicione funcionalidades ao seu chat

Rocket.Chat App: Adicione funcionalidades ao seu chat

O Rocket Chat é uma solução open source de comunicação. Nele está a sua disposição funcionalidades que vão muito além de um simples chat. Com ele você pode realizar vídeo conferência, adicionar convidados, ter confirmação de leitura, realizar atendimento a clientes através de live chat e muito mais. Um dos recursos mais interessantes é a possibilidade de integração com diversas plataformas e ferramentas de terceiros. Além disso, você pode criar suas próprias integrações e adicionar funcionalidades ao seu Rocket.

 

Rocket.Chat App

 

Isso é algo que não vejo muito sendo falado, nem há destaque merecido a esse recurso no site, talvez porque os usuários não vejam tanta vantagem nisso. Mas a real é que quando você entender melhor o que é e o que se pode fazer, surgirão ideias para resolver problemas do dia a dia.

Com este recurso, você pode desenvolver aplicativos (ou chame de plugin se preferir) para o Rocket, com muitas possibilidades que geram funcionalidades interessantes.

Se quiser, você pode dar uma olhadinha nos aplicativos públicos no marketplace do rocket. Mas por agora, vamos entender melhor como começar a desenvolver nosso próprio aplicativo.

 

O que podemos fazer com os aplicativos?

Eu disse que podemos fazer muitas coisas com os aplicativos e realizar nossas próprias integrações. Mas na real, até onde podemos ir?

Oficialmente, é listado algumas possibilidades:

  • Ouvir eventos de mensagens;
  • Ouvir eventos de salas;
  • Enviar mensagens para usuários.
  • Adicionar comandos;
  • Adicionar endpoints (API Rest).

Até ai podemos imaginar muitas coisas que podem ser feitas. Mas vou adicionar aqui mais algumas funcionalidades que estão disponíveis nativamente:

  • Configurações: O seu aplicativo pode ter configurações e serem ajustadas em tempo real via interface;
  • Realizar requisições HTTP;
  • Armazenar dados no banco do Rocket;
  • Acessar configurações do Rocket;
  • Armazenar logs;
  • Manipular mensagens;
  • Enviar alertas para os usuários;
  • Agendar tarefas (semelhante a um cron);
  • Criar recursos visuais (em modals e mensagens).

Tudo isso não se limita apenas aos chats internos do rocket, mas também para livechats utilizando o Omnichannel.

E lembre-se: Você está programando em node. O que isso significa? Além de tudo que é fornecido para personalização do Rocket, você pode adicionar os seus pacotes utilizando o npm e ir muito além.

 

Entendendo o ambiente

O Rocket.Chat é desenvolvido em Node.js, logo os aplicativos também devem ser desenvolvidos na mesma linguagem. Não há na documentação nada explícito em relação a versão, apena o código deve ser escrito em TypeScript. Além disso, é fornecido duas ferramentas para nos auxiliar nesses desenvolvimento: Engine e CLI.

A Engine basicamente é um framework responsável por disponibilizar os recursos para o desenvolvimento da aplicação, fornecendo uma API para interagirmos com o Rocket (https://github.com/RocketChat/Rocket.Chat.Apps-engine).

A CLI fornece alguns comandos para facilitar o desenvolvimento do aplicativo. Por meio dela conseguimos criar um aplicativo, realizar deploy, publicar no marketplace e até mesmo gerar código (https://github.com/RocketChat/Rocket.Chat.Apps-cli).

Vale a pena lembrar, que assim como o Rocket é open source, as ferramentas de desenvolvimento também são. É sempre interessante dar uma olhada no código fonte de ambos, e quem sabe fazer algumas sugestões e até mesmo adicionar funcionalidades.

 

Preparando o ambiente: Rocket

Antes de iniciar o desenvolvimento, é necessário algo importante: Ter um Rocket rodando, não é mesmo?! Para não perder tempo instalando as dependências e baixando o código, utilizo o Docker para auxiliar com isso.

Criei um docker-compose de exemplo para que isso fique mais fácil ainda. Você pode visualizar ele aqui. Ele já sobe o ambiente com tudo que precisa, e já cria um usuário administrador (Login rocket e senha PZxs7wsHWEJLP98z). Basta fazer login e realizar a configuração inicial.

Com o Rocket rodando, precisamos realizar uma configuração. Por padrão, não vem habilitado o recurso de aplicativos, então vamos ajustar isso!

Na tela de administração, dentro das configurações, no menu Geral procure pela categoria Apps. Dentro dela, basta marcar a opção Ativar o App Framework e salvar.

Uma outra configuração interessante deve estar logo abaixo, com o nome Habilitar modo de desenvolvimento. Por padrão os aplicativos só podem ser instalados a partir do marketplace do Rocket. Ao marcar essa opção poderemos realizar instalação manual via interface web e/ou pela CLI. É interessante deixar isso marcada para facilitar os testes.

Com isso temos o Rocket prontinho para receber o nosso aplicativo.

 

Preparando o ambiente: Desenvolvedor

Como eu já citei, para começar a desenvolver é necessário que tenha instalado o Node, de preferência a mesma versão que é utilizada pelo Rocket onde pretende utilizar o aplicativo. É possível consultar a versão no Node utilizada pela tela de administração, na aba Informações.

Confirme a versão do Node na máquina onde vai desenvolver utilizando o comando:

node --version

Se tudo estiver certo, vai ser retornado a versão do Node instalado. Agora, é necessário instalar a CLI. Para isso basta executar o seguinte comando:

npm install -g @rocket.chat/apps-cli

Com isso você já tem o que é necessário para começar a desenvolver! E claro, você precisa de uma IDE para escrever o código. Até onde sei, não existe um plugin/extensão para IDE que possa facilitar o desenvolvimento, então você pode utilizar qualquer uma que te ajude com o código em Node. Eu costumo utilizar o VS Code.

Acessando a documentação

Existe uma documentação para desenvolvedores que pode te dar uma boa base inicial sobre como iniciar um projeto e fornece alguns exemplos de uso mais comum e simples. É uma ótima ideia começar lendo ela, visto que são poucos exemplos mas que fornecem uma boa base de possibilidades.

Nela você encontra explicações sobre o ciclo de vida de uma aplicativo, as interfaces de eventos e o agendador de tarefas. E também há alguns exemplos de aplicativos, como:

Quando quiser consultar todos os recursos disponíveis, será necessário acessar a página: Rocket.Chat Apps TypeScript Definition. Nele há definição de todas as interfaces disponíveis para uso na sua aplicação.

E isso é um ponto importante quando falamos de aplicações para o Rocket: para qualquer ação de integração com o Rocket, você criará classes que implementem a interface responsável pela funcionalidade que deseja. São poucas as classes concretas fornecidas pela Engine.

O ponto de entrada da sua aplicação deverá ser uma classe que herda a classe App. Ela vai te fornecer métodos de eventos do ciclo de vida do aplicativo, um método definir as configurações do aplicativo e alguns métodos para acessar informações do aplicativo.

A partir desse ponto, você pode começar a desenvolver como deseja. Podendo implementar as interfaces para ações que deseja nessa classe inicial, ou criar classes especializadas para cada ação desejada e instância-las no ponto de entrada.

 

E agora?

No próximo post vamos botar a mão na massa e desenvolver um aplicativo do zero, passo a passo.  Assim entenderemos melhor como funciona tudo isso que foi explicado.

 

 

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior Gerenciamento de disco do 0 ao hero
Próxima Lógica de Programação

About author

Você pode gostar também

DevOps

Git: Adicione ciclos de vida aos seus arquivos

Git é um versionador de código fonte fácil de usar, isso quase todos sabem, entretanto sua experiência de uso pode ser bem confusa em alguns casos. Convido-os a uma breve

Desenvolvimento

Melhor Curso de HTML5 e CSS3: Por que aprender HTML5 e CSS3?

HTML é um acrônimo para Hyper Text Markup Language. E, HTML5 é uma linguagem de marcação para estruturar e exibir conteúdo para a World Wide Web (WWW). É uma versão aprimorada do padrão

Infraestrutura TI

Lógica de Programação

Quando começamos a aprender a programar, nos deparamos com muitas coisas que, para muitos, são novas. Conceitos como variáveis, memória, escopo, interfaces, entre outros. Também nos deparamos com conceitos que