[PARTE 1] Stealth: Crie chatbots incríveis com ferramentas que você conhece e adora ❤

O que é Stealth?

Stealth é um framework escrito em Ruby para criação de Chatbots. Ele é inspirado no padrão Model-View-Controller (MVC), só que, ao invés de views, o Stealth utiliza replies, o que faz mais sentido, já que estamos falando de interfaces conversacionais.

Esse framework, também, se inspira muito no, já conhecido e adorado, Ruby on Rails, então não estranhe ao se deparar com o ActiveRecord para definição de seus models, juntamente com concerns, helpers, initializers, etc…

Além do MVC podemos destacar algumas outras coisas que merecem destaque nesse framework fantástico:

  • Serviços plug-n-play. Todo os serviços que podem ser integrados ao Stealth são gems do Ruby, isso deixa o framework bem flexível a suportar múltiplos serviços de mensagens (como Facebook Messenger, SMS, Alexa e mais) e múltiplos serviços de NLP/NLU.
  • Hospedagem fácil. Stealth é uma aplicação Rack. Isso significa que seus bots podem ser implantados usando serviços familiares usando Docker ou no Heroku, por exemplo.
  • Processos em segundo plano. Ele utiliza Sidekiq para enfileirar toda mensagem recebida e processá-la em segundo plano, tornando seu bot muito mais eficiente e escalável.

Instalando e configurando

Instalar o Stealth é tão simples quanto qualquer outra gem, basta executar:

gem install stealth

E para criar um projeto:

stealth new <bot_name>

Desenvolvimento

Pra começar, como o Stealth utiliza Sidekiq para execução dos processos, você precisa ter o redis rodando em sua máquina. Então, se não tiver baixe e instale.

Instale as dependências do projeto utilizando:

bundle install

E para iniciar os serviços execute

stealth server

Você também pode utilizar stealth s como atalho. Isso fará com que o foreman inicialize o servidor web e os processos do Sidekiq (redis deve estar rodando para isso).

E prontinho, seu Stealth já está rodando =D.

Acessando serviços localmente

Quanto estamos desenvolvendo nosso bot e o rodamos localmente, os serviços de mensagens como o Facebook Messenger não enxergam nosso endereço localhost e não tem como se comunicar com nosso serviço. Para resolver isso, você pode utilizar o ngrok para tunelar as requisições para seu servidor local criando um endereço visível em toda internet.

Existe várias formas de instala-lo:

Baixando o executável diretamente, como explica o próprio site:

https://ngrok.com/download

Caso você tenha o snap em sua máquia pode usar ele

sudo snap install --edge ngrok

E ainda, utilizar o npm do node caso prefira

npm i -g ngrok

Execute ele apontando para a porta do servidor web, que por padrão é 5000, assim:

ngrok http 5000

Pronto, ele deve estar rodando no endereço http://localhost:4040

Bom, com tudo rodando agora precisamos informar para nosso serviço de mensagens a url que ele deve enviar as requisições. O Stealth utiliza o seguinte padrão para compor esses endereços <endereco_ngrok>/incoming/<service>. Por exemplo:

A documentação detalhada de cada serviço deve ser encontrada na página do Github respectiva.

Prontinho, o setup básico de como configurar e rodar o Stealth é esse. No próximo post vamos criar um bot funcional. Até lá.

Outros posts da serie