TL/DR : Hubot é legal e bem simples :-)

Bem simples o processo de criação de bots usando o hubot seguindo tutorial deles.

Requisitos

Passos

  • Instalar o yeoman (gerador de código) e generator-hubot: npm install -g yo generator-hubot

  • ir na pasta desejada, rodar yo nomeDoBot

Com isso o yeoman vai gerar os seguintes arquivos (ver resultado no github):

.editorconfig

Descreve formato dos outros arquivos (ex: identação, charset). Vários editores suportam esse formato (ver a página do editorConfig)

.gitignore

Descritor de arquivos a não ser incluídos no repositório

Procfile

Tem o comando que vai ser executado no heroku (se decidir fazer deploy lá)

Readme.md

Documentação básica. Pode ser removido

pasta bin

script para rodar o bot

external-scripts.json

Outros scripts a serem carregados pelo hubot

hubot-scripts.json

Antes os script do hubot deveriam ser colocados aqui, agora só precisam estar na pasta script

package.json

Descritor de projeto node (dependências, etc)

scripts/example.coffee

Exemplo de script para o bot em coffee script

Agora é só iniciar o redis (instale ele na máquina local ou docker run redis -p 6379).

E com o Redis rodando, executar o bot: bin/hubot.cmd.

Com isso já dá para interagir com o bot. Exemplo: digite nomeDoBot help para ver comandos disponíveis.

Criando o primeiro script

Criei um exemplo de script bem simples e zueiro para mostrar a sintaxe:

Gatilho Sintaxe Descrição

@nomeDoBot is it weekend?

robot.respond(/is it (weekend)\s?\?/i, msg ⇒ {

Retorna se é fim de semana

lima (em qq parte da frase)

robot.hear(/lima/i, res ⇒ {

Retorna para o user q mandou o texto uma frase fixa

uma música

robot.hear(/uma música/i, res ⇒{

Retorna para a sala uma música aleatória

ao entrar na sala

robot.enter(res ⇒ {

Retorna uma frase fixa

ao sair da sala

robot.leave(res ⇒ {

Retorna uma frase fixa

qq texto

robot.listen(message ⇒ {

Randomicamente 20% das vezes vai retornar uma frase fixa.

Para um teste completo

Para fazer o bot iteragir com um chat, criei um arquivo docker-compose com os containers:

Nome do container imagem descrição

cache

redis

cache (usado pelo bot)

db

mongo

banco (usado pelo rocketchat)

chat

rocket.chat

instancia do chat

bot

node (ver Dockerfile)

Usa a imagem base do node, copia o código e baixa as dependencias

Também no docker-compose estão as integrações entre containers, usando variáveis de ambiente.

Para rodar tudo

O resultado final está disponível no github. Só precisa:

  • Iniciar os containers: docker-compose up --build -d

  • acessar o rocket.chat: http://localhost:80

  • registre o primeiro usuário. Ele será o admin

  • crie um usuário para o bot, com username/name/pass = bot

  • e agora é só interagir com o bot

Próximos passos?

Agora é escrever script úteis para ajudar em troubleshoot e tarefas do dia dia.

E estudar node-red para integrar com outras plataformas.

Dúvidas? Sugestões? Deixe nos comentários.