Disponible en SeaTable Free, Plus y Enterprise
SeaTable ofrece la posibilidad de configurar uno o más webhooks para una base. Una vez que se ha configurado un webhook, cualquier cambio en el contenido de una base desencadena un impulso en forma de solicitud de publicación HTTP.
Simplificando, puedes pensar en un webhook como un sistema de notificación. Cada vez que algo cambia en una base, se envía un registro a una URL que usted define.
- Usted añade una nueva fila: SeaTable le envía un mensaje.
- Si pones una marca en una casilla de verificación, eso también es un mensaje.
Cualquier cambio, por pequeño que sea, en el contenido de una base provocará el envío de un webhook. Importante: no se envía ningún webhook si se modifica la estructura de la base.
Posibles usos de los webhooks #
Junto con las API de REST, los webhooks son un método popular para permitir que los sistemas de TI se comuniquen entre sí. En cierto modo, un webhook es una especie de solicitud de API invertida. Con la API, SeaTable espera a que llegue una solicitud, que es respondida por la API. En cambio, con un webhook se envía automáticamente una notificación cuando ocurre algo.
Por lo tanto, los webhooks básicamente sólo funcionan en una dirección. SeaTable informa a otra aplicación de que ha ocurrido algo. Por lo tanto, es responsabilidad de la aplicación de destino decidir si este cambio es relevante y qué actividades de seguimiento deben ponerse en marcha. Los usos más populares de los webhooks son, por ejemplo:
- Notificación por correo electrónico o por chat en cuanto se crea una nueva fila en una base
- Publicación automática de un artículo en cuanto se cambie el estado, por ejemplo, a "publicar ahora".
- Actualización de una suscripción en cuanto se registra un pago
Por lo tanto, en términos de automatización, los webhooks son siempre los desencadenantes que conducen a una actividad de seguimiento deseada.
Configurar un webhook #
En la página de inicio de cloud.seatable.io, pasa el ratón por encima de una base para la que quieras configurar un webhook. En el menú contextual bajo Avanzado encontrará el elemento Webhooks. Para crear un nuevo webhook, basta con introducir cualquier URL. La clave secreta también puede permanecer vacía, pero si su URL de destino está disponible públicamente, debe establecer este valor y validarlo al procesar los webhooks. En cuanto guardes el webhook, cualquier cambio en el contenido de tu base se enviará a esta URL.

Formulario para crear un webhook en SeaTable
Los siguientes cambios activan un webhook:
- se añade o duplica una nueva línea
- La línea se borra
- Se modifica el contenido de la línea
Los cambios estructurales en una base, como la adición de una nueva columna, un comentario de columna, la creación de una nueva vista o el bloqueo de una fila , no activan un webhook.
Ejemplos de webhooks enviados por SeaTable #
Ejemplo 1: se ha añadido una nueva fila (por ejemplo, en la interfaz web de SeaTable, a través de un formulario web o mediante una llamada a la API)
{ "event": "update", "data": { "dtable_uuid": "fae0a3a42ba94df88e8303fd385e37de", "row_id": "Fk-i7xZGS5iA5aSvaG5HAA", "op_user": "4bc9a7c79c5942c5b6238413f2132bea@auth.local", "op_type": "insert_row", "op_time": 1649922777.279, "table_id": "9g8f", "table_name": "Opportunities", "row_name": "", "row_data": [] } }
Ejemplo 2: se ha seleccionado un valor de selección única
{ "event": "update", "data": { "dtable_uuid": "fae0a3a42ba94df88e8303fd385e37de", "row_id": "QoNno3QiTF26sxmG1sl3_g", "op_user": "4bc9a7c79c5942c5b6238413f2132bea@auth.local", "op_type": "modify_row", "op_time": 1649929622.589, "table_id": "9g8f", "table_name": "Opportunities", "row_name": "", "row_data": [{ "column_key": "589r", "column_name": "Prio", "column_type": "single-select", "column_data": { "options": [{ "name": "++", "color": "#F4667C", "textColor": "#FFFFFF", "id": "381992" }, { "name": "+", "color": "#FBD44A", "textColor": "#FFFFFF", "id": "830278" } ]}, "value": "381992", "old_value": "" }] } }
Ejemplo 3: se ha borrado una línea
{ "event": "update", "data": { "dtable_uuid": "fae0a3a42ba94df88e8303fd385e37de", "row_id": "QoNno3QiTF26sxmG1sl3_g", "op_user": "4bc9a7c79c5942c5b6238413f2132bea@auth.local", "op_type": "delete_row", "op_time": 1649929650.668, "table_id": "9g8f", "table_name": "Opportunities", "row_name": "", "row_data": [] } }
Posibles valores que puede tomar un webhook #
Actualmente, el valor "evento" es siempre "actualización".
El valor "datos" siempre tiene la siguiente estructura:
{ "dtable_uuid": base_uuid, "row_id": row_id, "op_user": username (or user_id), "op_type": op_type, // insert_row, delete_row, delete_rows, modify_row, modify_rows "op_time": op_time, "table_id": table_id, "table_name": table_name, "row_name": row_name, "row_data": row_data, "op_app": appName // If the base has been updated via API Token, then the op_app will be the app's name of that API }
Ejemplo de procesamiento simple de un webhook con PHP #
El procesamiento de un webhook se realiza de forma diferente según el lenguaje de programación. El siguiente código PHP sólo sirve como ilustración de cómo reaccionar ante un determinado evento como una línea borrada, por ejemplo.
$raw_payload = file_get_contents('php://input', true); $payload = json_decode($raw_payload, true); if($payload['event'] === "update"){ // check for a deleted row if($payload['data']['op_type'] === "delete_row"){ // ... } // check if a checkbox was checked in the column with the name "checkbox" if($payload['data']['row_data'][0]['column_name'] === "checkbox" AND $payload['data']['row_data'][0]['value'] === true){ // ... } // save content to file (for debugging $file = 'webhook_payload.txt'; $current = file_get_contents($file); $current .= $raw_payload; $output = file_put_contents($file, $current); }