¿Qué es un Webhook?
Los Webhooks son una función muy potente que permite una comunicación fluida entre tu aplicación y los servicios o sistemas externos. Permiten el intercambio de datos en tiempo real, lo que los convierte en una valiosa herramienta para que los desarrolladores automaticen flujos de trabajo, desencadenen acciones y mejoren la funcionalidad de sus aplicaciones.
En este artículo, te guiaremos a través del proceso de uso de Webhooks para desarrolladores en Dataslayer, una nueva función que hemos añadido a nuestra plataforma. Al compartir un enlace de autenticación con sus clientes, te enviaremos automáticamente un correo electrónico de notificación para informarte de que alguien te ha concedido acceso a sus credenciales. Sin embargo, esta no es la única forma de recibir notificaciones al respecto. Usando los webhooks, enviaremos directamente a tu aplicación algunos parámetros para notificarte.
Esta es una funcionalidad avanzada que requiere algunos conocimientos de programación.
Uso de webhooks en Dataslayer
Siguiendo estos pasos, podrás configurar y utilizar webhooks de forma eficiente para mejorar las capacidades de tu aplicación.
1. Accede a la página de desarrolladores
Para empezar, ve a la sección Developers (Desarrolladores) de nuestra plataforma. Aquí es donde gestionarás y configurarás los webhooks para tu aplicación.
2. Añade un nuevo webhook
Una vez en la sección Developers, haz clic en el botón "+ Add Webhook" de la derecha. Esta acción iniciará el proceso de creación de un nuevo webhook. Tendrás que especificar la URL de tu endpoint donde quieres recibir los payloads del webhook. Esta URL debe ser la ubicación donde tu aplicación recibirá los datos entrantes y tiene que ser pública.
3. Copiar la clave secreta
Recomendamos copiar la clave secreta generada por nuestra plataforma durante el proceso de configuración del webhook. Esta clave secreta se utilizará para verificar la autenticidad de los payloads de los webhooks entrantes.
4. Variable de entorno para la clave secreta
Para una mayor seguridad, considera la posibilidad de crear una variable de entorno en tu servidor para almacenar la clave secreta (copiada en el paso 3). Esta práctica garantiza que tu clave secreta permanezca protegida.
5. Instalación del paquete Fernet (NPM)
Para descifrar el contenido de los payloads de los webhooks, necesitarás instalar el paquete Fernet usando npm. Este paquete le permite descifrar de forma segura los datos recibidos del webhook. A continuación explicamos cómo instalar el paquete:
npm i fernet
SOLO permitimos conexiones webhook desde este paquete.
6. Creación de una función o clase
Necesitarás crear una función o clase en tu lenguaje de programación que haga referencia a tu endpoint (URL especificada en el Paso 2).
7. Implementar el manejo del Webhook
En el controlador (o equivalente) de tu aplicación, implementa uno de los siguientes códigos (o el lenguaje de tu elección) para gestionar la petición POST:
Ejemplo de código PHP
use Fernet\Fernet;
// ...
$secret = env("DATASLAYER_WEBHOOK_SECRET");
$fernet = new Fernet(base64_encode($secret));
$payload = @file_get_contents('php://input');
$parsePayload = json_decode($payload, true);
$decryptedData = $fernet->decode($parsePayload["encrypted_data"]);
$decodeData = json_decode($decryptedData, true);
// ... Your custom logic here
Ejemplo de código PYTHON
import base64
import json
from cryptography.fernet import Fernet
from os import getenv
# ...
secret = getenv('DATASLAYER_WEBHOOK_SECRET')
fernet = Fernet(base64.b64encode(secret.encode()))
# payload is the parameter passed in the POST request, this is what we want to decrypt
decrypted_data = fernet.decrypt(payload.encrypted_data)
decode_data = json.loads(decrypted_data.decode())
# ... Your custom logic here
Entendiendo los códigos anteriores:
- secret: recuperamos la clave secreta obtenida en el Paso 3 y establecida en el Paso 4.
- fernet: inicializamos una variable usando la librería Fernet con la clave secreta obtenida anteriormente.
- payload: obtenemos los datos encriptados recibidos del webhook.
- parsePayload: analizamos el contenido de la carga del webhook.
- decryptedData: decodificamos el contenido usando la librería Fernet.
- DecodeData: decodificamos el contenido en un formato JSON con el que podamos trabajar. Después de esto, puedes añadir cualquier procesamiento o lógica adicional que necesites.
8. Manejo de los datos descodificados
Una vez decodificados los datos, puedes acceder al payload, que contendrá información valiosa para tu aplicación. Esta es la información que te enviaremos una vez que un usuario haya iniciado sesión con éxito con el enlace compartible que le enviaste:
Ejemplo de código PHP
$params = [
'type' => 'shared_connection',
'datasource' => $datasource,
'email' => $email,
'created' => time(),
];
Ejemplo de código PYTHON
params = {
type: 'shared_connection',
datasource: datasource,
email: email,
created: time()
}
- La función time() devuelve la fecha en UNIX TIMESTAMP.
Siguiendo estos pasos, podrás configurar y utilizar con éxito los webhooks para desarrolladores. Esta función permitirá que tu aplicación reciba actualizaciones de datos en tiempo real, mejorando su funcionalidad y sus capacidades de automatización. No dudes en personalizar los datos descodificados para satisfacer tus requisitos específicos y liberar todo el potencial de los webhooks en tu aplicación.
Si sigues teniendo dudas o preguntas no dudes en ponerte en contacto con nosotros a través del chat en directo de nuestro sitio web o por correo electrónico. ¡Estaremos encantados de ayudarte!