8º NODESCHOOL

Campinas

Bem vindos ao

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

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

victorperin.ninja

me@victorperin.ninja

ChatBots e ChatOps com Hubot

  • ChatBots
  • DevOps
  • ChatOps
  • Hubot

Essa palestra vai de apresentar conceitos, por isso não iremos nos aprofundar muito.

Bots, Chat Bots, etc

O que é um Chat Bot?

Basic Workflow

Vantagens

  • Não precisa baixar
  • Mais intimidade com o usuário
  • Design de interface já existente
  • Divertido
  • Memes

Bons exemplos

AceBot.ai

SlackBot

Hubot

DevOps

Exemplo de DevOps

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

De onde veio isso ai?

Workflow básico

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

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

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

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