#1641·OpenWA

[错误]: 一个提供者重试并轮换其传输 ID 会破坏入口去重,并重新发送消息

作者: rmyndharis创建于 2026年9月18日更新于 2026年9月18日
标签bugdesign

**用户如何看待此问题。** `supabase-otp-hook` 声明 `mode: async`,而 `ingress.service.ts` 在返回确认之前将发送队列中加入此请求(在 :211 处,确认在 :223 处返回)。如果第一次尝试的响应丢失或授权的 5 秒钟的钩子超时期限在网关已经加入队列之后到期,则授权会重试(在 :167 处,在网络超时或任何非最终尝试中),联系人将收到第二个 WhatsApp 信息,其中包含相同的代码。目前,网关中没有任何方法可以消除此情况。**现有的回退功能无法帮助。**`deriveDeliveryId` 在提供者不发送去重头时已经对 `pluginId + instanceId + route + rawBody` 进行了哈希,这将完全消除这些重试。它只在缺少头部时才被查询,因此,提供者如果发送一个旋转 ID,则可以信任与内容完全相同的内容。**这是为什么这不是一个明显的单行修复。**如果将此路由切换为基于内容的去重,则还将消除合法的第二次请求,该请求恰好包含相同的字节。对于此提供者,这意味着用户请求一个新的代码,而之前的代码仍然有效:gotrue 可以重复使用一个尚未过期的 OTP,在这种情况下,有效载荷将重复,用户请求的重新发送将被抑制。任何修复都需要将"相同的交付,重试"与"相同的内容,再次请求"分离开来,而时间窗口是一个明显但不完美的区分标记。

内容来源: rmyndharis/OpenWA