跟踪每一次 Webhook 交付

对于异步请求,webhook 会通知您的后端有关已完成的 AI 响应。时间线会跟踪每一次交付尝试——包括成功、失败以及重试。

概览

对于异步(async)请求和事件驱动(event-driven)的工作流,ModelRiver 会通过 webhooks 将已完成的 AI 响应通知给您的后端。时间线(Timeline)捕获了每一次交付尝试,包括发送出去的 payload、您服务端点的响应、交付状态以及重试信息。这让您能完全了解您的后端是否确实接收到了 AI 的响应。


Webhook 交付如何显示

在时间线(Timeline)中

  • 位置:在主请求之后
  • 徽章颜色
    • 灰色 (Gray) – 已计划 (Planned,已排队,尚未发送)
    • 蓝色 (Blue) – 交付中 (Delivering,HTTP 请求进行中)
    • 绿色 (Green) – 成功 (Success,已成功送达)
    • 红色 (Red) – 错误 (Error,交付失败)
  • 徽章内容:Webhook URL 与状态

点击后显示内容

点击 webhook 交付会展示:

状态信息

  • 交付状态 (Delivery status) – 交付的当前状态 (Planned, Delivering, Success, Error)
  • 回调状态 (Callback status) (仅限事件驱动工作流):
    • Progress (进行中) – 期待收到回调,当前尚未收到
    • Success (成功) – 已收到回调
    • Error (错误) – 回调指示为错误状态或已超时
  • 重试按钮 (Retry button) – 在交付失败且允许重试时可用

交付元数据 (Delivery metadata)

字段描述
Webhook URL接收(或应当接收)webhook 的目标端点
交付时间 (Delivery time)webhook 何时被发送(相对时间)
时长 (Duration)HTTP 请求花费的时间
HTTP 状态码 (HTTP status code)来自您端点的响应状态码
错误消息 (Error message)交付失败时的具体错误详情

Request Data 选项卡 (webhook payload)

展示确切发送给您的 webhook 端点的 payload 内容:

  • 原始 JSON 视图 – 完整的 webhook payload
  • 预览模式(树状视图) – 交互式的 JSON 树
  • 复制按钮 – 复制 payload 代码以供后续测试或调试

Response 选项卡 (webhook response)

展示从您的 webhook 端点返回的响应:

  • 原始视图 – 完整的 HTTP 响应体
  • 预览模式(树状视图) – 如果响应内容是 JSON 格式的话
  • 复制按钮 – 复制响应以供分析

Webhook 交付生命周期

状态进展

(Planned) (Delivering) (Success)
(Error) (/Retry) (Delivering) (Success)
(Error)

状态详解

  1. Planned (已计划) – Webhook 在队列中并已被安排进行交付。这是 AI 响应准备就绪即将发往您的后端时的初始状态。

  2. Delivering (交付中) – 指向您端点的 HTTP 请求正在进行中。ModelRiver 正试图发送 webhook payload。

  3. Success (成功) – 您的端点返回了一个 2xx 状态码。这意味着交付完成,您的后端已经成功接收了 AI 响应。

  4. Error (错误) – 交付失败。常见的原因包括:

    • 连接被拒 (Connection refused) – 您的端点宕机或是连接不可达
    • 超时 (Timeout) – 您的端点响应过慢
    • 非 2xx 响应 (Non-2xx response) – 您的端点返回了报错标识 (比如 4xx, 5xx)
    • 网络错误 (Network error) – DNS 解析失败,SSL 安全问题等

重试功能

自动重试

ModelRiver 默认会使用指数退避(exponential backoff)算法自动重试失败的 webhook 交付。

手动重试

您可以在“请求日志”详情视图中进行手动重试,需满足以下条件:

  • can_retrytrue
  • 上次交付状态为失败 (success 状态为 false)
  • 距离上次交付尝试发出已至少经过了 30 秒

重试规则

规则详情
最大尝试次数总共 3 次(最初请求 + 2 轮重试)
时间效期窗口从第一次交付尝试计算的 5 分钟之内
最小延迟每次尝试之间至少间隔 30 秒
无重复重试一旦某个交付记录被触发过重试,它自身便不能再被视作下一次的重试源头

为什么会有这些规则

  • 最大 3 次限制 – 预防水龙头无限循环带来的机器资源过载耗尽
  • 五分钟窗口 – 保障在重试时该数据依然具有时效与业务相关性;积压发出的陈旧数据极可能带来混乱
  • 30 秒停顿 – 遏止那种能在瞬间将你服务端击垮的重试风暴
  • 防重复处理 – 每次重试均会衍生出新的专属交付记录条目,避免造成查漏补缺时的追踪泥潭

如何进行手动重试

  1. 导航至请求日志 (Request Log) 详情界面
  2. 单击时间线结构中的那一项 webhook 交付
  3. 如果 Retry (重试) 按钮显示为可用,点击它
  4. 会新建出一次全新的交付投递并把它列入队列
  5. 刷新该详情页面即可察看新创建的投递实况进度

故障排查 (Troubleshooting) Webhook 交付

连接被拒 (Connection refused)

症状:报错消息出现 "connection refused" 或者 "ECONNREFUSED"

原因:您的 webhook 端点根本没有在运行,或它屏蔽了 ModelRiver 服务器集群对它的造访访问。

解决策略

  • 请首要确认您的业务节点真跑起来了并在网络层面允许访客连入
  • 核对安全防火墙的设置(放行 ModelRiver IP)
  • 若您正在使用自建的极客局域网来调试服务,请确保它配置了内网穿透而能被公网寻址发现 (善用 ModelRiver CLI 本地化调试神器)

超时 (Timeout)

症状:提示为 "timeout" 或是记录显示的执行时间长得离谱

原因:您的端点吞入这笔 webhook 后运算花去的时间超额了。

解决策略

  • 尽可能重构您的 webhook 控制器层以便能尽速抢占式给出应答 (最迟 < 5 秒内)
  • 把那些吃性能或需要花时间的计算移至后端后台系统任务表,先行强制给 webhook 回掷一个 200 代码
  • 若本身并发量大受制于机器抗压能力太小,请提升节点算力规模配置

非 2xx 响应 (Non-2xx response)

症状:返回了诸如 4xx 或是 5xx 的 HTTP 状态码

原因:您的节点发脾气了,它拒绝接受这单请求。

解决策略

  • 调取您端点服务端内部机器日志以详探它的具体报错堆栈
  • 核实该 Webhook 的 Payload 数据外形(形如 JSON 的树结构)合乎你们系统的胃口期盼
  • 确保其认证体系(比如 token header 这块如果你们有加的话)未把咱们拦截掉
  • 使用工具软件(例: curl 或是 Postman)手提复制来的原始 Payload 直接叩门,测看回响

SSL/TLS 问题错误

症状:附带 SSL、TLS 或证书一类关键词的连线警告

原因:主要就是您的端点机器上面的证书链出了状况。

解决策略

  • 核审该域名上绑覆的证书还没到过期失效的时候
  • 确定端点的证书确系正规大型可信颁布局 (CA) 下发,而非随便糊弄一张
  • 有没有丢掉配写某些必要的居间商补充证书?务必全数正确串接

检查 Webhook Payloads(负载有效载荷)

为什么审查 Payload 很重要

彻底参透了 webhook 的 payload 构造,会极大帮助您:

  • 佐证格式 – 确认您的处理器代码逻辑确实是按照标准协议框架来写
  • 捕捉暗藏缺陷 – 准确定位发货 payload 与接货处理程序之间的认知错位
  • 终端自治实测 – 全量拷贝一份带有现场案发数据的 payload 以助在地端无缝模拟复刻
  • 统御业务流水脉络 – 深察哪些字面信息真真实实流往了你的库房数据库

关键的 Payload 核心字段

以标准规格的异步 (async) Webhook 形式为例:

  • type – 该事件所属事件类型的称呼 (e.g., "task.completed", "task.ai_generated")
  • data – 生成出的属于 AI 得出智囊数据主核
  • channel_id – 分发到具体这一桩异步事务生命周期里的唯一认证烙印码符

如果这属于事件驱动架构特化的流程 (Event-driven workflows):

  • callback_url – 指令要求您的业务后端干完活必须归还复命时所需的那个 API 特配终点 URL 地址
  • 附加带有专属事件流程所需定制的多道数据参数

下一步