SlideShare a Scribd company logo
1 of 47
Download to read offline
Cómo construir un bot
para Slack
@davsket
https://github.com/davsket/slack-bot-
experiment
David
Avellaneda
@davsket
Co-organizador de:
BogotáJS
JSConf.co
Char.la
ColombiaDev
Co-fundador de:
Monoku
• Soy Tauro
• Me gusta correr en la playa
• Tengo un hijo (el de la foto)
• En serio me gusta mucho
correr
• Me gusta compartir lo que se
Cómo construir un
Servidor y Bot de Memes
para Slack
@davsket
Agenda
Agenda
• ¿Qué vamos a hacer? v2
• ¿Qué necesitamos? v2
• JUST DO IT!!! step++ v2
• Momento philosoraptor v2
¿Qué vamos a hacer?
¿Qué necesitamos?
¿Qué necesitamos?
• promesas (yup, de nuevo)
• como funciona slack (APIs)
• CommonJS (require)
• variables de entorno
• node / express (básico) *
• request *
• heroku o now o ngrok *
• servicio de memes !!!!
Promises
• Solo se puede resolver o rechazar una vez
• De ahí en adelante puedes preguntar cuantas veces
sea el resultado
• Si una función retorna un valor, el siguiente then
obtiene el valor de esta
• para request y otros asyncs…
var p = new Promise((resolve, reject) => { resolve(5) })
p.then(num => console.log(num)) // 5
p.then(num => num * 5)
.then(num => console.log(num)) // 25
Slack Apps
• ya existen muchas apps
• si creas una propia puedes:
• recibir comandos por medio de texto
• `/elcomando argumento`
• `@botname argumentos`
• mandar respuestas (sync & async)
• de texto plano
• con attachments
Slack Bot
• App propia (para escuchar comandos slash con
permisos)
• Incoming WebHooks (para mandar mensajes)
Crear App Propia
https://api.slack.com/apps?new_app=1
Esta app va a ser privada hasta que no
la distribuyan
Crear App Propia
https://api.slack.com/apps?new_app=1
Esta app va a ser privada hasta que no
la distribuyan
App Propia + Slash Cmds
App Propia + Slash Cmd
Slash Command
App Propia + Add to Team
App Propia / Incoming Webhook
vs
Incoming Webhook App
App Propia + Oauth
App Propia + Oauth
Guardala!!
App Propia + Permisos
Incoming Webhook
https://team.slack.com/apps
Incoming Webhook: add
config
Incoming Webhook:
addconfig
Incoming Webhook: URL
Guardala!!
KEYS: 2
CommonJS
module.exports = 'Hello World'
hi.js
var hi = require('./hi')
console.log(hi)
index.js
Variables de Entorno
var url = process.env.SLACK_WEBHOOK_URL
console.log(url)
Servicio Memes
https://memegen.link
https://github.com/jacebrowning/memegen
https://memegen.link/api
1. Hacer módulo de
Memes
2. Imprimir lista y
meme de la lista
3. Exponer Pagina
Web
4. Exponer Pagina
Web pero Bien
5. Exponer Pagina
Web pero Cool
6. Exponer Servicio
tipo Bot
Slash Command
POST application/x-www-form-urlencoded
POST Body =
Test con ngrok
Hasta el momento…
7. Exponer Servicio tipo
Bot Como Debe Ser
7. Exponer Servicio tipo Bot
Como Debe Ser
• Obtener info del usuario usando la llave del Oauth
• Enviar meme a Slack usando el Incoming Webhook
Preguntas?
Gracias!
@davsket
https://github.com/davsket/
slack-bot-experiment

More Related Content

Viewers also liked

Principios-de-torneado
Principios-de-torneadoPrincipios-de-torneado
Principios-de-torneadoleokdio
 
Actividad 1 perfiles
Actividad 1 perfilesActividad 1 perfiles
Actividad 1 perfilesCarlos Garcia
 
Tutorial veloci botcb rv.4
Tutorial veloci botcb rv.4Tutorial veloci botcb rv.4
Tutorial veloci botcb rv.4Jandres73
 
Properties of logs
Properties of logsProperties of logs
Properties of logsL PreCalc
 
Food and macronutrients lecture
Food and macronutrients lectureFood and macronutrients lecture
Food and macronutrients lectureAmoc22
 
Guia - Como atender a imprensa - Parte1 - Acidentes
Guia - Como atender a imprensa - Parte1 - AcidentesGuia - Como atender a imprensa - Parte1 - Acidentes
Guia - Como atender a imprensa - Parte1 - AcidentesFernando César Oliveira
 
Análisis económico-graficas
Análisis económico-graficasAnálisis económico-graficas
Análisis económico-graficasAlfonso Jimenez
 
Baño del recien nacido
Baño del recien nacidoBaño del recien nacido
Baño del recien nacidojheriv
 
Nbr 12214 nb 590 projeto de sistema de bombeamento de agua para abastecimen...
Nbr 12214 nb 590   projeto de sistema de bombeamento de agua para abastecimen...Nbr 12214 nb 590   projeto de sistema de bombeamento de agua para abastecimen...
Nbr 12214 nb 590 projeto de sistema de bombeamento de agua para abastecimen...Laise Bastos
 
Cartilha previdência-seu-direito-está-em-risco-cut
Cartilha previdência-seu-direito-está-em-risco-cutCartilha previdência-seu-direito-está-em-risco-cut
Cartilha previdência-seu-direito-está-em-risco-cutSINTE Regional
 
Pptexamples
PptexamplesPptexamples
PptexamplesLi
 
Agência do Trabalho oferece 313 vagas nesta terça-feira (21)
 Agência do Trabalho oferece 313 vagas nesta terça-feira (21) Agência do Trabalho oferece 313 vagas nesta terça-feira (21)
Agência do Trabalho oferece 313 vagas nesta terça-feira (21)TVJornal
 

Viewers also liked (16)

Reggio emilia
Reggio emiliaReggio emilia
Reggio emilia
 
Principios-de-torneado
Principios-de-torneadoPrincipios-de-torneado
Principios-de-torneado
 
Actividad 1 perfiles
Actividad 1 perfilesActividad 1 perfiles
Actividad 1 perfiles
 
Informe final
Informe finalInforme final
Informe final
 
Tutorial veloci botcb rv.4
Tutorial veloci botcb rv.4Tutorial veloci botcb rv.4
Tutorial veloci botcb rv.4
 
Properties of logs
Properties of logsProperties of logs
Properties of logs
 
Food and macronutrients lecture
Food and macronutrients lectureFood and macronutrients lecture
Food and macronutrients lecture
 
Guia - Como atender a imprensa - Parte1 - Acidentes
Guia - Como atender a imprensa - Parte1 - AcidentesGuia - Como atender a imprensa - Parte1 - Acidentes
Guia - Como atender a imprensa - Parte1 - Acidentes
 
Análisis económico-graficas
Análisis económico-graficasAnálisis económico-graficas
Análisis económico-graficas
 
Baño del recien nacido
Baño del recien nacidoBaño del recien nacido
Baño del recien nacido
 
Nbr 12214 nb 590 projeto de sistema de bombeamento de agua para abastecimen...
Nbr 12214 nb 590   projeto de sistema de bombeamento de agua para abastecimen...Nbr 12214 nb 590   projeto de sistema de bombeamento de agua para abastecimen...
Nbr 12214 nb 590 projeto de sistema de bombeamento de agua para abastecimen...
 
Cartilha previdência-seu-direito-está-em-risco-cut
Cartilha previdência-seu-direito-está-em-risco-cutCartilha previdência-seu-direito-está-em-risco-cut
Cartilha previdência-seu-direito-está-em-risco-cut
 
histology
histologyhistology
histology
 
Pptexamples
PptexamplesPptexamples
Pptexamples
 
Agência do Trabalho oferece 313 vagas nesta terça-feira (21)
 Agência do Trabalho oferece 313 vagas nesta terça-feira (21) Agência do Trabalho oferece 313 vagas nesta terça-feira (21)
Agência do Trabalho oferece 313 vagas nesta terça-feira (21)
 
Margorie astudillo
Margorie astudilloMargorie astudillo
Margorie astudillo
 

Similar to Cómo construir un Servidor Web y Bot de Memes para Slack

Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoAprende Git
 
Todas las APIs de Google
Todas las APIs de GoogleTodas las APIs de Google
Todas las APIs de GoogleCarlos Toxtli
 
Php sevilla 014: Presentación de SymfonyZero
Php sevilla 014: Presentación de SymfonyZeroPhp sevilla 014: Presentación de SymfonyZero
Php sevilla 014: Presentación de SymfonyZeroJose Antonio Dorado
 
Conociendo las APis de Google
Conociendo las APis de GoogleConociendo las APis de Google
Conociendo las APis de GoogleBotones Creativos
 
Drupal 8 más rápido que nunca con Apache Solr
Drupal 8 más rápido que nunca con Apache SolrDrupal 8 más rápido que nunca con Apache Solr
Drupal 8 más rápido que nunca con Apache SolrKarim Boudjema Schombourg
 
Google y la revolucion Web - Julian Amaya - Dia IT
Google y la revolucion Web - Julian Amaya  - Dia ITGoogle y la revolucion Web - Julian Amaya  - Dia IT
Google y la revolucion Web - Julian Amaya - Dia ITjdmal2001
 
Flujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendFlujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendLeonidas Esteban González
 
Desarrollo responsivo con CakePHP y Foundation
Desarrollo responsivo con CakePHP y FoundationDesarrollo responsivo con CakePHP y Foundation
Desarrollo responsivo con CakePHP y FoundationLenin Alevski Huerta Arias
 
Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"Alonso Caballero
 
DeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyDeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyPablo Godel
 
Herramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteHerramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteCarlos Toxtli
 
¡Que lo haga otro! Automatizaciones SEO para vivir mejor
¡Que lo haga otro! Automatizaciones SEO para vivir mejor¡Que lo haga otro! Automatizaciones SEO para vivir mejor
¡Que lo haga otro! Automatizaciones SEO para vivir mejorIñaki Huerta (ikhuerta)
 
Aplicaciones Web con Spring Boot
Aplicaciones Web con Spring BootAplicaciones Web con Spring Boot
Aplicaciones Web con Spring BootCarlos E. Salazar
 
Madrid GUG - Cómo hacer que te aprueben un plugin de grails en dos horas... y...
Madrid GUG - Cómo hacer que te aprueben un plugin de grails en dos horas... y...Madrid GUG - Cómo hacer que te aprueben un plugin de grails en dos horas... y...
Madrid GUG - Cómo hacer que te aprueben un plugin de grails en dos horas... y...Iván López Martín
 
5 Integraciones y aplicaciones útiles de Slack para líderes de TI
5 Integraciones y aplicaciones útiles de Slack para líderes de TI5 Integraciones y aplicaciones útiles de Slack para líderes de TI
5 Integraciones y aplicaciones útiles de Slack para líderes de TIpreyproject
 

Similar to Cómo construir un Servidor Web y Bot de Memes para Slack (20)

Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativo
 
Todas las APIs de Google
Todas las APIs de GoogleTodas las APIs de Google
Todas las APIs de Google
 
Php sevilla 014: Presentación de SymfonyZero
Php sevilla 014: Presentación de SymfonyZeroPhp sevilla 014: Presentación de SymfonyZero
Php sevilla 014: Presentación de SymfonyZero
 
Google APIs
Google APIsGoogle APIs
Google APIs
 
Conociendo las APis de Google
Conociendo las APis de GoogleConociendo las APis de Google
Conociendo las APis de Google
 
Go
GoGo
Go
 
Drupal 8 más rápido que nunca con Apache Solr
Drupal 8 más rápido que nunca con Apache SolrDrupal 8 más rápido que nunca con Apache Solr
Drupal 8 más rápido que nunca con Apache Solr
 
Google y la revolucion Web - Julian Amaya - Dia IT
Google y la revolucion Web - Julian Amaya  - Dia ITGoogle y la revolucion Web - Julian Amaya  - Dia IT
Google y la revolucion Web - Julian Amaya - Dia IT
 
Flujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendFlujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontend
 
Desarrollo responsivo con CakePHP y Foundation
Desarrollo responsivo con CakePHP y FoundationDesarrollo responsivo con CakePHP y Foundation
Desarrollo responsivo con CakePHP y Foundation
 
Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"
 
DeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyDeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSky
 
Herramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteHerramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamente
 
Mulesoft meetup_vlc_cicd
Mulesoft meetup_vlc_cicdMulesoft meetup_vlc_cicd
Mulesoft meetup_vlc_cicd
 
¡Que lo haga otro! Automatizaciones SEO para vivir mejor
¡Que lo haga otro! Automatizaciones SEO para vivir mejor¡Que lo haga otro! Automatizaciones SEO para vivir mejor
¡Que lo haga otro! Automatizaciones SEO para vivir mejor
 
Aplicaciones Web con Spring Boot
Aplicaciones Web con Spring BootAplicaciones Web con Spring Boot
Aplicaciones Web con Spring Boot
 
Mejorando en Git
Mejorando en GitMejorando en Git
Mejorando en Git
 
Madrid GUG - Cómo hacer que te aprueben un plugin de grails en dos horas... y...
Madrid GUG - Cómo hacer que te aprueben un plugin de grails en dos horas... y...Madrid GUG - Cómo hacer que te aprueben un plugin de grails en dos horas... y...
Madrid GUG - Cómo hacer que te aprueben un plugin de grails en dos horas... y...
 
5 Integraciones y aplicaciones útiles de Slack para líderes de TI
5 Integraciones y aplicaciones útiles de Slack para líderes de TI5 Integraciones y aplicaciones útiles de Slack para líderes de TI
5 Integraciones y aplicaciones útiles de Slack para líderes de TI
 
Web20
Web20Web20
Web20
 

More from David Ballén

Ocho cosas que debes saber de JavaScript
Ocho cosas que debes saber de JavaScriptOcho cosas que debes saber de JavaScript
Ocho cosas que debes saber de JavaScriptDavid Ballén
 
BogotaJS Bday 2016: Taller de SumobotJr
BogotaJS Bday 2016: Taller de SumobotJrBogotaJS Bday 2016: Taller de SumobotJr
BogotaJS Bday 2016: Taller de SumobotJrDavid Ballén
 
Wrold Bot Domination: Sumobot jr
Wrold Bot Domination: Sumobot jrWrold Bot Domination: Sumobot jr
Wrold Bot Domination: Sumobot jrDavid Ballén
 
Frontend Tools | Herramientas para Frontends
Frontend Tools | Herramientas para FrontendsFrontend Tools | Herramientas para Frontends
Frontend Tools | Herramientas para FrontendsDavid Ballén
 
Manipulación de Video de la Webcam con JavaScript
Manipulación de Video de la Webcam con JavaScriptManipulación de Video de la Webcam con JavaScript
Manipulación de Video de la Webcam con JavaScriptDavid Ballén
 
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript David Ballén
 

More from David Ballén (6)

Ocho cosas que debes saber de JavaScript
Ocho cosas que debes saber de JavaScriptOcho cosas que debes saber de JavaScript
Ocho cosas que debes saber de JavaScript
 
BogotaJS Bday 2016: Taller de SumobotJr
BogotaJS Bday 2016: Taller de SumobotJrBogotaJS Bday 2016: Taller de SumobotJr
BogotaJS Bday 2016: Taller de SumobotJr
 
Wrold Bot Domination: Sumobot jr
Wrold Bot Domination: Sumobot jrWrold Bot Domination: Sumobot jr
Wrold Bot Domination: Sumobot jr
 
Frontend Tools | Herramientas para Frontends
Frontend Tools | Herramientas para FrontendsFrontend Tools | Herramientas para Frontends
Frontend Tools | Herramientas para Frontends
 
Manipulación de Video de la Webcam con JavaScript
Manipulación de Video de la Webcam con JavaScriptManipulación de Video de la Webcam con JavaScript
Manipulación de Video de la Webcam con JavaScript
 
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
 

Cómo construir un Servidor Web y Bot de Memes para Slack