Webhook

SeaTable 支持使用 Webhook 来向一个外部程序发送提醒。

使用介绍

添加 Webhook

点击表格右侧按钮,在“高级”选项中可看到 Webhooks 选项。

设置 Webhook

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

修改/删除 Webhook

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

Webhook 触发时发送的内容

基本数据结构为

{
    "event": "update",  // 目前 event 只有 update
    "data": {}          // 相关数据
}

update 事件

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名字
}

X-SeaTable-Signature

设置 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

使用介绍
添加 Webhook
设置 Webhook
修改/删除 Webhook
Webhook 触发时发送的内容
update 事件
X-SeaTable-Signature