Slack (http://slack.com) se ha convertido en uno de los medios de comunicación más importante para organizaciones y empresas. Más allá de proveer una plataforma de mensajería instantánea, Slack ha abierto las puertas a su API para que así cualquier persona pueda extender su funcionalidad básica.
En este webinar estaremos hablando de como usar el API de Slack para hacer Bots. Comenzaremos ofreciendo un trasfondo de Bots en el Internet. Luego introducimos las funciones básicas del API de Slack. Y finalmente desarrollaremos cuatro diferentes Bots.
Código: https://github.com/Sparragus/slack-bots-chela-js
Richard Kaufman
Twitter: @sparragus https://twitter.com/sparragus
22. 1 var express = require('express');
2 var bodyParser = require('body-parser');
3
4 var app = express();
5 app.set('port', process.env.PORT || 3000);
6
7 // body parser middleware
8 app.use(bodyParser.urlencoded({ extended: true }));
9
10 // Slack nos va a enviar los mensajes aquí
11 app.post(‘/', function (req, res) {
12 // Paso 1: Recibir mensaje
13 // Paso 2: Contestar (o no) el mensaje
14 });
15
16 app.listen(app.get('port'), function () {
17 console.log('Background bot is listening on port ' + app.get('port'));
18 });
23.
24. 1 // Slack nos va a enviar los mensajes aquí
2 app.post(‘/', function (req, res) {
3 // Paso 1: Recibir mensaje
4 var username = req.body.user_name;
5 var message = req.body.text;
6
7 // Paso 2: Contestar (o no) el mensaje
8
9 // Virar el mensaje y construir la contestación
10 var reversedMessage = message.split('').reverse().join('');
11 var reply = {
12 text: reversedMessage
13 };
14
15 // Enviar la contestación.
16 res.json(reply);
17
18 // Si por alguna razón no queremos contestar, es importante
19 // res.end()
20 });
25.
26. 1 // Slack nos va a enviar los mensajes aqui
2 app.post('*', function (req, res) {
3 // Paso 1: Recibir mensaje
4 var username = req.body.user_name;
5 var message = req.body.text;
6
7 // Paso 1.5: verificar si el mensaje viene de slackbot
8 if (username === 'slackbot') {
9 res.end();
10 return;
11 }
12
13 // Paso 2: Contestar (o no) el mensaje
14
15 // Construir la contestacion
16 var reversedMessage = message.split('').reverse().join('');
17 var reply = {
18 text: reversedMessage
19 };
20
21 res.json(reply);
22
23 });
27.
28. Kanye West interrumpe tus conversaciones
imma-let-you-finish
http://ledhack.org/imma-let-you-finish/
35. 1 # Crear directorio donde vamos a trabajar
2 $ mkdir slack-bot
3 $ cd slack-bot
…
16 # Instalar dependencias
17 $ npm init
18 $ npm install --save slack-client
Nuestra única
dependencia
36. 1 var Slack = require('slack-client');
2
3 var token = 'xoxb-8392211527-6STZVyHnmuV33VKsmVt0wHKn';
4 var autoReconnect = true;
5 var autoMark = true;
6
7 var slack = new Slack(token, autoReconnect, autoMark);
8
9 slack.on('open', function() {
10 console.log('Bienvenido a Slack. Eres @' + slack.self.name + ' de ' + slack.team.name);
11 });
12
13 slack.on('message', function (message) {
14 // Ver de que canal llego el mensaje y responder a ese canal
15 var channel = slack.getChannelGroupOrDMByID(message.channel);
16 channel.send(‘Hello, World!’);
17 });
18
19 slack.on('error', function (error) {
20 console.error('Error:', error);
21 });
22
23 slack.login();
37. 1 richardkaufman @ kaufman in …/bot master
2 $ node index.js
3 [Wed Jul 29 2015 17:47:09 GMT-0500 (CDT)] INFO Connecting...
4 Bienvenido a Slack. Eres @grammar-nazi de richardbkaufman
38.
39. 1 var getSpellingSuggestions = require('./spellcheckerSuggestions');
2
3 slack.on('message', function (message) {
4 // Ver de que canal llego el mensaje y responder a ese canal
5 var channel = slack.getChannelGroupOrDMByID(message.channel);
6 var user = slack.getUserByID(message.user).name;
7
8 // Hacer spellcheck
9 var suggestions = getSpellingSuggestions(message.text);
10
11 // Si no hay correciones, return.
12 if (!suggestions.suggestion) {
13 return;
14 }
15
16 // Componer mensaje y enviar.
17 var suggestion = suggestions.suggestion;
18 var response = 'FTFY @' + user + ': ' + suggestion;
19 channel.send(response);
20 });