Webhook

变化发生的那一刻,你就知道。

审批和部署一发生,事件就送到你的端点。带签名、会重试、有顺序 —— 七种事件,现在就能用。

投递已经在跑了。 注册一个端点,从七种事件里挑,untactit 会把时间戳和正文一起用 HMAC-SHA256 签名。至少投递一次,失败就按指数退避重试,最长 24 小时;连续失败 48 小时自动停用。端点必须是 https,私有和回环地址在注册时和发送前各拦一次。

推还是拉

挑合适的那种就行。

需要按秒反应时,webhook 才是对的工具 —— 撤回一次部署、呼叫值班的人、发现漂移的那一刻开工单。

如果只是夜间合规同步或者刷新看板,定时拉审计日志完全够用。它支持按操作者、动作和时间段查询,和 webhook 一起用也没什么代价。

审计日志与导出

七种事件

asset.proposed
编辑者提交审批
asset.approved
审批人通过,资产上线
asset.rejected
已退回并附说明
deployment.completed
所有目标均已确认
deployment.failed
有一个或多个目标拒绝了它
drift.detected
本地副本偏离了已批准版本
member.role_changed
管理员授予或撤销了角色

既定设计

带签名,防重放。

每个请求都会携带 X-Untactit-Signature ——对原始请求体计算的 HMAC-SHA256——外加一个时间戳。两者都要校验:签名证明请求来自我们,时间戳防止旧请求被重放到你这里。

  • ✓时间戳早于 5 分钟的请求一律拒绝
  • ✓签名比较必须使用恒定时间算法,绝不要用 ==
  • ✓每个工作区最多 5 个端点
verify.py
import hmac, hashlib, time

def verify(body: bytes, sig: str, ts: str, secret: str) -> bool:
    if abs(time.time() - int(ts)) > 300:      # 5 min
        return False
    expected = hmac.new(
        secret.encode(), ts.encode() + b"." + body,
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, sig)

投递保证

至少一次投递

我们会持续重试,直到你返回 2xx,因此同一事件可能送达两次。请做好去重,去重键为 id。重试按指数退避,最长持续 24 小时。

按工作区有序

A sequence 字段单调递增。先收到 48215 再收到 48213,说明后者是迟到的重试,丢弃即可。

48 小时后停用

连续失败两天的端点会被停用,并邮件通知工作区管理员。单次尝试超时为 10 秒。

别再猜智能体在跑什么。

接入一个工作区,约十分钟内,团队在用的每个技能、规则与记忆一览无余。

免费开始→ 联系我们

无需信用卡。直接接入现有工具。