Disponível em SeaTable Free, Plus e Enterprise
A SeaTable oferece a possibilidade de montar um ou mais ganchos para uma base. Uma vez criado um gancho da web, qualquer alteração ao conteúdo de uma base desencadeia um impulso sob a forma de um pedido de correio HTTP.
Simplificado, pode pensar num gancho da web como um sistema de notificação. Sempre que algo muda numa base, um registo é enviado para um URL que se define.
- Adiciona uma nova fila: SeaTable envia-lhe uma mensagem.
- Coloca-se uma marca numa caixa de verificação, que é também uma mensagem.
Qualquer alteração, por menor que seja, ao conteúdo de uma base, resultará no envio de um gancho da web. Importante: não é enviado nenhum gancho da web se a estrutura da base for alterada.
Possíveis usos dos ganchos web #
Juntamente com as APIs REST, os "webhooks" são um método popular de permitir que os sistemas informáticos falem uns com os outros. De certa forma, um gancho da web é uma espécie de pedido API invertido. Com o API, a SeaTable espera por um pedido para entrar, que é respondido pelo API. Com um gancho, por outro lado, uma notificação é automaticamente enviada quando algo acontece.
Portanto, os ganchos da Web funcionam basicamente apenas numa direcção. O SeaTable informa outra aplicação que algo aconteceu. Por conseguinte, é da responsabilidade da aplicação alvo decidir se esta mudança é relevante e que actividades de seguimento devem ser desencadeadas. Os usos populares dos ganchos da web são, por exemplo:
- Notificação por e-mail ou chat assim que uma nova fila é criada numa base
- Publicação automática de um artigo assim que o estado é alterado, por exemplo, para "publicar agora".
- Actualização de uma subscrição assim que um pagamento é registado
Em termos de automatização, os ganchos da web são sempre os gatilhos iniciadores que conduzem a uma actividade de seguimento desejada.
Criar um gancho para a web #
Na página inicial do cloud.seatable.io, pairar sobre uma base para a qual se pretende criar um gancho para a web. No menu de contexto em Avançado encontrará o item Webhooks. Para criar um novo gancho da web, basta introduzir qualquer URL. A chave secreta pode também permanecer vazia, mas se o seu URL alvo estiver publicamente disponível, deve definir este valor e validá-lo ao processar os ganchos da web. Assim que salvar o gancho da web, qualquer alteração ao conteúdo da sua base será enviada para este URL.

Formulário para criar um gancho no SeaTable
As seguintes alterações desencadeiam um gancho da web:
- nova linha é adicionada ou duplicada
- A linha é apagada
- O conteúdo da linha é alterado
Alterações estruturais a uma base como a adição de uma nova coluna, um comentário de coluna, a criação de uma nova vista ou um bloqueio de linha não acciona um gancho da web.
Exemplos de anzóis enviados pela SeaTable #
Exemplo 1: uma nova linha foi adicionada (por exemplo, na interface web SeaTable, via formulário web ou via chamada 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": [] } }
Exemplo 2: foi seleccionado um valor de selecção ú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": "" }] } }
Exemplo 3: uma linha foi eliminada
{ "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": [] } }
Possíveis valores que um gancho da web pode tomar #
O valor "evento" é actualmente sempre "actualização".
O valor "dados" tem sempre a seguinte estrutura:
{ "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 }
Exemplo de processamento simples de um webhook com PHP #
O processamento de um gancho da web é feito de forma diferente, dependendo da linguagem de programação. O seguinte código PHP serve apenas como ilustração de como reagir a um determinado evento, como uma linha eliminada, por exemplo.
$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); }