fbpx
Get In Touch
1201 3rd Avenue Seattle, WA 98101, US
(HQ) Av. Punto Sur 31, Tlajomulco de Zúñiga, Jal 45050, MX
Carrera 11B # 99 - 25, Btá, 110221, CO
Let's talk
hello@inmediatum.com
Ph: +1 (650) 603 0883
Sales attention M - F 9am - 5pm (CT)
Get support
Careers
Endless inspiration and meaningful work
See open positions
Back

Gestión de tiempo con un botón

La situación actual nos ha llevado a buscar la forma de automatizar procesos que antes no consideramos necesarios o que nos pueden simplemente hacer la vida más sencilla y hay una cantidad infinita de herramientas a nuestro alcance para lograrlo. Hoy usaremos algunas de estas herramientas para realizar un ejercicio que espero sea útil al menos como inspiración de lo que podemos lograr, la gestión de tiempo con un botón programable de https://bt.tn y el servicio de https://toggl.com acompañado de un poco de node.js.

Configurar el botón

Lo primero que debemos hacer es configurar el botón, tenemos que entrar al sitio de configuración de bt.tn https://my.bt.tn y seguir los pasos que ahí muestra para dar de alta el botón en nuestras cuenta.

Una vez que aparece en la parte inferior presionamos en Acción y elegimos un evento de tipo HTTP:

En el campo HTTP URL debemos especificar la URL donde se ejecutará el API, por ejemplo un servidor de pruebas. Ej: https://bttn-toggl.inmediatum.dev:9090

El MÉTODO HTTP puede ser GET ya que para este ejemplo no necesitamos ningún dato.

En ENCABEZADOS HTTP vamos agregar un header para un apikey, esto servirá para agregarle una capa de seguridad a nuestra aplicación:

apikey:1c89c0f71ac97754ffc5…

El resto de campos no son necesarios, terminamos la configuración y la guardamos.

Esto es todo lo que necesitamos hacer con el botón, podemos probar precionandolo y en el log del mismo veremos que hay un error ya que aun no esta corriendo el API en el dominio y puerto que especificamos en HTTP URL.

Obtener acceso a toggl.

Lo siguiente para gestionar el tiempo será crear una cuenta gratuita en toggl una vez que estemos dentro del panel de nuestra cuenta, daremos click en la parte inferior izquierda donde dice nuestro nombre y correo electrónico y en la opción Profile Settings. En la parte del final de nuestro perfil esta la sección API Token donde podemos obtener nuestro token para hacer llamadas a toggle. Necesitaremos ese token enseguida.

API en node.js

Ahora para generar el API que obtendrá la llamada al presionar el botón y enviará la información necesaria a toggl, vamos a nuestra carpeta de desarrollo y creamos un nuevo proyecto de node:

$ mkdir bttn-toggl
$ cd bttn-toggl
$ npm init

Respondemos las preguntas de inicialización de NPM, y enseguida instalamos nuestras dependencias:

$ npm install –save express toggl-api

Al terminar creamos el archivo index.js y agregamos el siguiente código:

const PORT = 9090; // Puerto en donde se ejecutará nuestra API.
const APIKEY = ‘1c8…’; // El apikey que pusimos en el header del botón.
const TOGGL_APIKEY = // El API Token que obtenemos de toggl.

Inicializamos la aplicación:

const express = require(‘express’);
const toggl = new (require(‘toggl-api’))({ apiToken : TOGGL_APIKEY });
const app = express();

Agregamos un middleware que revise el apikey que especificamos en los headers del botón para asegurarnos que esa es la fuente de la llamada:

app.use(function(req, res, next){
if(req.headers.apikey != APIKEY)
return res.status(403).end();
next();
});

Agregamos las llamadas necesarias a la API de Toggl:

app.get(‘/’, (req, res) => {
toggl.getCurrentTimeEntry((err, currentEntry) => {
if(err)
return res.status(500).json({ error : err });
if(currentEntry == null){
let entry = { description : “blue bttn” }
toggl.startTimeEntry(entry, function(err, timeEntry) {
if(err)
return res.status(500).json({ error : err });
res.json(timeEntry.id);
});
}
else {
toggl.stopTimeEntry(currentEntry.id, function(err) {
if(err)
return res.status(500).json({ error : err });
res.end();
});
}
});
});

Y terminamos con ejecutar nuestra API de node:

app.listen(PORT, () => { console.log(`listening at http://localhost:${PORT}`) })

Como el botón que estamos usando solo tiene un tipo de evento, estaremos usando el mismo método para comenzar y detener los cronómetros, hay botones que tienen más eventos (presionado, doble presionado, presionado largo, etc) y se podrían usar cada uno por separado, solo se tendría que cambiar ligeramente el código.

Si publicamos esta pequeña API en el dominio que configuramos en la acción del botón tendremos completo nuestro sistema y al presionar el botón una vez deberá comenzar un cronómetro en toggle (se pueden ver los cronómetros activos en el panel web), al volver a presionarlo se detendrá.

Así de sencillo logramos la gestión de tiempo con un botón, espero que sirva de inspiración para la automatización de algún proceso o proyecto interesante, podríamos hacer lo mismo con nuestro móvil con envios de SMS y llamadas automatizadas y etiquetas NFC, con Beacons, usando reconocimiento facial en nuestra laptop para contar las horas que trabajamos frente a ella, etc… las posibilidades son infinitas.

Carla Serrato
Carla Serrato
Especialista en ciencias sociales y de comportamiento. Carla no solo asesora a nuestro departamento de UX en INMEDIATUM sino que su investigación permite optimizar nuestros algoritmos de inteligencia artificial como para la prevención de riesgo crediticio, genera mejor adherencia a tratamientos médicos, reconocimiento facial para identificar rasgos de la personalidad entre otros.

We use cookies to give you the best experience. Cookie Policy