8º NODESCHOOL
Campinas
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3586810/pasted-from-clipboard.png)
Bem vindos ao
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3586959/pasted-from-clipboard.png)
Ou converse com a gente depois da talk
Slack: bit.ly/nodeschool-campinas
Palestrar: bit.ly/nodeschool-manda-talks
Seja mentor: bit.ly/nodeschool-seja-mentor
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3604314/superlogicalabs.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3604315/princiweb.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3604316/minhacampinas.jpg)
Patrocinadores
Programação
• 18:30 às 19:00 - Conversas iniciais e apresentação
• 19:00 às 20:00 - Talk: ChatOps e ChatBots com Hubot
• 20:00 às 20:30 - Coffee, troca de idéias e micos em público
• 20:30 às 22:00 - Workshops
Workshops
Para iniciantes
- Javascripting
- Learnyounode
Para quem quer se aprofundar
- Elementary-electron
- functional-javascript-workshop
- promise-it-wont-hurt
$ whoami
Victor Perin
- Co-Organizador NodeSchool
- Desenvolvedor NodeJS
(e outras tecnologias como PHP e C#) ¯\_(ツ)_/¯ - Apaixonado por tecnologia
- Comunidades > Empresas
- O cara do perfil que nem parece com ele
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3591249/pasted-from-clipboard.png)
victorperin.ninja
me@victorperin.ninja
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3601029/pasted-from-clipboard.png)
ChatBots e ChatOps com Hubot
- ChatBots
- DevOps
- ChatOps
- Hubot
Essa palestra vai de apresentar conceitos, por isso não iremos nos aprofundar muito.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3587056/bender.gif)
Bots, Chat Bots, etc
O que é um Chat Bot?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3587063/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3587069/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3587070/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3587072/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3587075/cinema_bot_1_.gif)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3587079/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3587083/pasted-from-clipboard.png)
Basic Workflow
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3591298/pasted-from-clipboard.png)
Vantagens
- Não precisa baixar
- Mais intimidade com o usuário
- Design de interface já existente
- Divertido
- Memes
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3587091/rs_634x411-150310104011-chuck-norris-approved.gif)
Bons exemplos
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3588269/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3588274/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3588280/pasted-from-clipboard.png)
AceBot.ai
SlackBot
Hubot
DevOps
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3597897/docker-swarm-circling-animation.gif)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3600768/jenkins.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3600937/Nope.gif)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3601290/1507452.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3601292/Kubernetes.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3597925/50eaef199ffff61e970b2e017218be21.gif)
Exemplo de DevOps
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3600946/devops_loop.png)
DevOps não é ferramenta,
é uma cultura!
- Não se instala
- Não se compra
- Não se certifica
ChatOps
Automação a partir do chat
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3600955/gifs_21.gif)
De onde veio isso ai?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3600960/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3600985/pasted-from-clipboard.png)
Workflow básico
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3601010/chatops_demo.gif)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3601022/642.gif)
Dicas rápidas para ChatOps
- Lembre-se, cultura é SEMPRE o mais importante
- Comece a automatizar tudo o que for possível
- Tornar o bot mais humano e engraçado ajuda muito na adoção
(cuidado para não abusar de mais) - Chama todo mundo pra começar a escreve-lo
- Comece a organizar seus canais/salas de conversa
Hubot
se fala NewBot
Resumo
- NodeJS
- JavaSctript ou CoffeeScript
- Multiplataforma
- Simples e rápido de configurar
- Modularizado por padrão
- Feito pelo GitHub
Estrutura básica
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3601139/Captura_de_tela_em_2017-03-17_01-11-55.png)
Adaptors
Multiplataforma!!
Oficiais
- Shell
- Campfire
Third-party
- Slack
- Rocket.Chat
- Messenger
- Telegram
- Skype
- Gtalk
- SMS
- etc...
PS: todos são pacotes do NPM
Scripts
module.exports = (robot) => {
robot.hear(/badger/i, res =>
res.send("Badgers? BADGERS? WE DON'T NEED NO STINKIN BADGERS")
);
robot.respond(/open the pod bay doors/i, res =>
res.reply("I'm afraid I can't let you do that.")
);
robot.hear(/I like pie/i, res =>
res.emote("makes a freshly baked pie")
);
robot.respond(/open the (.*) doors/i, res => {
doorType = res.match[1];
if(doorType == "pod bay")
res.reply("I'm afraid I can't let you do that.");
else
res.reply("Opening #{doorType} doors");
});
robot
.http("https://midnight-train")
.get( (err, res, body) => {
// sua lógica aqui
});
robot.router.post('/hubot/chatsecrets/:room', (req, res) => {
const room = req.params.room;
const data = req.body.payload ? JSON.parse(req.body.payload) : req.body;
const secret = data.secret;
robot.messageRoom(room, "I have a secret: #{secret}");
res.send 'OK';
});
};
- Dentro da pasta scripts
- Ordenados por nome
- Conseguem:
- ouvir
- responder
- fazer requests http
- receber requests http
- etc...
- NodeJS
Instalação
$ npm install -g yo generator-hubot
$ mkdir meuhubot
$ cd meuhubot
$ yo hubot
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3601115/pasted-from-clipboard.png)
Execução
$ npm install
$ export VARIAVEIS_DO_SEU_ADAPTOR=huehue
$ ./bin/hubot --adaptor={seu adaptor} --name={nome do seu bot, dentro do seu chat}
Exemplo
$ npm install
$ export HUBOT_SLACK_TOKEN=xoxb-YOUR-TOKEN-HERE
$ ./bin/hubot --adapter slack --name robo_tope
![](https://s3.amazonaws.com/media-p.slid.es/uploads/359304/images/3601274/giphy.gif)
Dúvidas?
Reclamações?
Sugestões?
me@victorperin.ninja
ou no slack do NodeSchool Campinas
ChatOps e ChatBots Multiplataforma com Hubot
By Victor Perin
ChatOps e ChatBots Multiplataforma com Hubot
- 762