SeaTable 支持使用 Webhook 来向一个外部程序发送提醒。
点击表格右侧按钮,在“高级”选项中可看到 Webhooks 选项。

点击“增加 webhook”,输入 url 及 secret。

点击右侧按钮,可以对 Webhook 进行修改或删除。

基本数据结构为
{
"event": "update", // 目前 event 只有 update
"data": {} // 相关数据
}
update 事件即表格发生变化的事件。
data 数据结构为:
{
"dtable_uuid": dtable_uuid,
"row_id": row_id,
"op_user": username,
"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 // 如果是通过api-token操作的表格则op_app为app名字
}
设置 secret 后,你将在 Webhook POST 请求中收到 X-SeaTable-Signature 头,该头的值是对 secret 和 request.body 进行 SHA256 加密的结果。
请求头 X-SeaTable-Signature 字母的大小写会被 web 框架修改,请以 web 框架输出的值为准。
示例
X-SeaTable-Signature: sha256=533e4c6ca9840dd5604ab8129378bf3468c77d422a526060175130541c99697f
接收请求示例
import hmac
from flask import Flask, request
app = Flask(__name__)
@app.route('/receive-seatable-webhook', methods=['POST'])
def receive_seatable_webhook():
secret = 'secret'
seatable_signature = request.headers.get('X-Seatable-Signature', '').replace('sha256=', '')
signature = hmac.new(
secret.encode('utf-8'), request.data, digestmod='sha256').hexdigest()
signature_compare = hmac.compare_digest(signature, seatable_signature)
if signature_compare:
# do something
pass
return {'success': signature_compare}
Last modified by seatable, 2023-09-14