← 返回博客

Webhook 还是 getUpdates:这真是一项 Bot 迁移吗?

按队列归属、确认状态、入口所有权和切换证据比较两种 Telegram 更新接收方式,再判断需求是迁移还是别的故障。

#Telegram Bot API#Webhook#getUpdates#Bot 迁移

重点监测信号

  • 当前接收方式与目标接收方式被明确说出
  • 待处理更新和 getUpdates offset 的处理方式已经决定
  • 切换、回滚、密钥校验和验收事件都有负责人

Telegram Bot 在 Webhook 与 getUpdates 之间切换时,迁移的是更新接收端及其交付状态,不是笼统地“把 Bot 搬走”。报价前应先确认当前接收方式、待处理队列、轮询 offset 或 Webhook 状态、更新类型、身份校验、切换时刻和回滚负责人。Bot API 指 Telegram 为 Bot 提供的应用程序编程接口;CRM 指客户关系管理系统。

这篇写给 Telegram Bot 托管与集成服务商的解决方案顾问。他在有权访问的开发者、SaaS 与电商群里寻找能明确说出当前和目标接收方式、并掌握切换窗口的需求。“Webhook 很慢,帮我们换轮询”只是一种猜测。把每次超时都当迁移,会直接报错项目范围。

先看谁负责发起接收

应用需要主动通过长轮询请求 Update(更新对象),并能管理 offset 检查点、工作进程生命周期和单一轮询实例时,可以选择 getUpdates。团队拥有可公开访问的 HTTPS 入口,愿意负责入口可用性、请求校验和安全重试处理时,可以选择 Webhook,让 Telegram 主动 POST Update。

没有证据支持其中一种方式永远更快、更便宜或更稳定。Telegram 的 Getting updates 文档明确说两者互斥。真正的问题是运行模型是否适合现有基础设施,以及当前故障到底发生在接收端还是更后面。

范围问题getUpdatesWebhook
谁发起交付Bot 应用发起长轮询请求Telegram 向 HTTPS 入口发送 POST
怎样确认进度后续 offset 大于某个 update_id成功 HTTP 响应,加上应用自身的持久处理记录
怎样确认当前方式getWebhookInfo.url 为空且能观察到轮询器getWebhookInfo.url 显示已配置入口
切换需保留什么状态offset 检查点和唯一活跃轮询器入口、证书或 IP 选择、secret token、响应方式
常见误判轮询进程停了、offset 错了或两个实例竞争入口健康,但处理器或下游动作失败

这张表比较的是状态归属,不是性能。实际流量、延迟目标和成本都要由需求方提供。

官方方法各自证明什么

getUpdates 使用长轮询并返回 Update 数组。Telegram 说明,后续调用的 offset 大于某个 Update 的 update_id 时,该更新才被确认。负 offset 可以从队列末尾取数据,并忘记之前的所有更新。因此,offset 是迁移资产:丢失或猜错可能导致重放,也可能跳过事件。

该方法的 timeout 默认是 0,即普通短轮询;Telegram 说明短轮询只应用于测试。这句话并不等于“使用长轮询的 getUpdates 只能开发环境使用”。

setWebhook 注册 HTTPS URL,Telegram 把 JSON 序列化的 Update POST 到该地址。若响应不是 2XY,官方说会重试,并在合理次数后放弃,但没有公布固定重试时间表。可选 secret_token 会进入 X-Telegram-Bot-Api-Secret-Token 请求头,帮助入口确认请求属于已配置的 Webhook。

deleteWebhook 用于移除 Webhook,以便回到 getUpdatesgetWebhookInfo 可返回当前 URL、待处理更新数、IP、最近错误、最大连接数和允许的更新类型。Telegram 说明,使用 getUpdates 时 URL 字段为空。

待处理队列需要业务负责人决定

Telegram 表示,进入队列的更新最多保留 24 小时。setWebhookdeleteWebhook 都提供 drop_pending_updates;传入 true 就会丢弃所有待处理更新。

这个参数不能藏在脚本默认值里。订单 Bot 丢掉队列可能漏掉用户操作;测试 Bot 重放陈旧事件又可能造成更大混乱。服务负责人必须决定哪些历史仍有业务价值,并说明怎样避免重复或过期动作。

切换前至少记录:

  • 脱敏后的 getWebhookInfo 输出;
  • 待处理更新数量与 allowed_updates
  • 当前使用 getUpdates 时最后确认的 offset;
  • 从哪个时间起,新 Update 归目标接收端处理;
  • 队列是排空、受控重放,还是由负责人明确批准丢弃;
  • 应用用什么键避免同一 Update 产生第二次业务动作。

这些事实一旦齐全,晚一天进入讨论,另一家服务商可能已经先定义切换方案;事实还没齐时,回复更快也补不上范围。

Webhook 重复事件修复文章讲的是幂等性,即重复处理仍只产生一次预期动作。它对迁移验收有用,却不能单独证明必须更换接收方式。

三句话其实描述了三类项目

“Webhook 返回 200,但 CRM 没有订单。” 这还不是 Webhook 转轮询。应先用四份回执链检查 Update、入口接收、应用持久状态和 CRM 动作。

“私有工作进程不能暴露 HTTPS 入口,下个维护窗口改成长轮询。” 这确实像接收方式迁移,但仍缺少队列决定、offset 负责人、单轮询器约束和回滚方案。

“getUpdates 每次部署后会停,重启进程又恢复。” 这可能是进程守护、网络超时或检查点处理故障。Webhook 可以作为架构选项,却不是唯一修复。

这些句子不是实际客户案例,也没有宣称某种方式更好。它们只是说明群消息中的对象会决定项目交给谁。

切换必须有可观察的完成条件

一项可验收的迁移可以写成六个检查点:

  1. **基线:**保存当前方式、更新类型、待处理数和应用检查点;
  2. **暂停:**避免切换期间两个实例同时产生业务动作;
  3. **队列决定:**由负责人批准排空、保留或丢弃;
  4. **切换:**删除或设置 Webhook,只启动目标接收端;
  5. **验收:**用自有测试事件覆盖每个所需类型,并确认每个只产生一次持久结果;
  6. **回滚:**说明怎样恢复旧方式和旧检查点,而不是临时猜数值。

“进程正在运行”不等于成功。完成条件应是:一个活跃接收端、队列去向符合决定、所需事件均已观察、重复不会产生第二次副作用,并保留回滚记录。

什么样的群消息值得立刻复核

更强的商业讨论会说明 Bot 环境、当前与目标方式、基础设施负责人、切换截止日期,以及与运行条件直接相关的原因;还能在不粘贴 Bot token 或客户数据的前提下提供证据。只复读“Webhook 不好”或“轮询很慢”的帖子,优先级应更低。

TOP Prospect 能把授权消息片段、来源、时间、重复限制和未知项放在一起,帮助解决方案顾问先查看像迁移的讨论。它不能检查 Bot、调用 Bot API、验证入口所有权、改基础设施或联系发言者。当前生产版新建匹配目标只保存配置,不会自动生成新候选。

Bot 高峰超时文章可帮助区分托管需求与应用症状;Bot API 与 MTProto 对比讨论的是另一层访问方式。产品选项见价格页

关键事实

  • Webhook 与 getUpdates 是互斥的接收方式。
  • getUpdates 用 offset 确认进度;长轮询不同于只适合测试的短轮询。
  • Webhook 需要公开 HTTPS 入口,并可携带配置的 secret-token 请求头。
  • getWebhookInfo 可提供方式与队列证据;URL 为空表示使用 getUpdates
  • drop_pending_updates 会有意丢弃队列中的更新。
  • 方法选择不能证明性能、根因或采购权。

常见问题

同一个 Bot 能同时跑两种方式吗?

不能。Telegram 把两种接收方式定义为互斥。

getUpdates 只能用于开发吗?

不是。官方只说短轮询用于测试;getUpdates 也支持长轮询。

drop_pending_updates 意味着什么?

它会丢弃待处理 Update。结果应由服务负责人批准,而不是继承脚本默认值。

怎样证明迁移完成?

只有一个接收端活跃,队列按决定处理,所有必需事件各产生一次持久结果,并且保留可执行的回滚记录。

编辑复核于 2026-08-26 完成,依据 Telegram 官方 getUpdates、setWebhook、deleteWebhook 与 getWebhookInfo 文档。

常见问题

同一个 Telegram Bot 能同时使用 Webhook 和 getUpdates 吗?

不能。Telegram 把它们定义为同一个 Bot 接收更新时互斥的两种方式。

getUpdates 只能用于开发吗?

不是。Telegram 说只有短轮询应限于测试;getUpdates 本身支持长轮询,是否适用取决于运行设计。

迁移时 drop_pending_updates 会做什么?

它会丢弃队列中的待处理更新。设置和删除 Webhook 都提供这个选项,因此必须由业务负责人明确决定。

迁移验收应该证明什么?

证明只有一个接收端、队列处理符合决定、所需更新类型已交付、重复处理安全,并且有明确回滚路径。

资料来源与延伸阅读

研究与定义

值得关注的潜在线索 Signal 是怎样被发现的

了解 Top商业线索怎样发现和整理值得核实的 Signal、保留 Telegram 原始上下文、去掉重复消息并安排查看顺序。是否跟进以及下一步做什么,仍由用户决定。

查看方法论与核心定义

START WITH ONE MONITORED GROUP / 从一个已选群开始

先免费试用 7 天。

进入产品,连接一个已授权的群,描述你想发现的 Signal。如果需要讨论处理范围,可以通过 Telegram 咨询。

返回官网首页