You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram机器人webhook返回302临时重定向 Google插件测试问题

根因分析

你遇到的302重定向和重复请求问题和附加组件测试模式无关,本质是WebApp的部署配置不符合Telegram webhook的访问要求:

  • Telegram服务器以匿名身份访问WebApp地址时,Google Apps Script返回了302跳转登录页,没有返回预期的200状态码
  • Telegram webhook机制要求接收方必须在15秒内返回200/2XX状态码,否则会判定请求失败,按规则重试最多20次,间隔约1分钟,和你遇到的现象完全吻合
  • 你手动调用sendPost正常是因为请求发起方是你同账号的Apps Script环境,自带身份凭证,不需要登录就能访问测试部署的WebApp,不会触发重定向

解决方案

1. 重新部署WebApp为正式公开版本

打开项目1的Apps Script编辑器,按以下步骤操作:

  • 点击右上角「部署」→「新建部署」
  • 点击配置图标选择「Web应用」
  • 执行身份选择 我(你的Google账号邮箱)
  • 有权限的用户选择 任何人,甚至匿名用户(注意不要选仅「任何人」,该选项要求访问方登录Google账号,匿名访问会触发302)
  • 点击「部署」完成操作,复制生成的以/exec结尾的正式部署URL,不要使用以/dev结尾的测试部署URL
  • 将新的WebApp URL更新到Telegram机器人的webhook配置中

2. 优化WebApp返回配置

显式设置返回值的MIME类型,避免Telegram识别异常,修改doPost代码如下:

function doPost(e) {
  myLog('Received from Addon: ' + JSON.stringify(e));
  // 确保myLog方法不会抛出异常,否则会导致WebApp返回错误码
  return ContentService.createTextOutput(JSON.stringify(e))
    .setMimeType(ContentService.MimeType.JSON);
}

3. 附加组件测试适配

项目2的附加组件在测试模式下运行时,直接使用上面生成的正式部署WebApp地址即可,正式部署的地址不会随代码更新变动,不会出现地址失效问题。如果你之前用的是测试部署的WebApp地址,替换为正式地址即可正常调用。

4. 重复请求兜底

即使配置正确,Telegram也可能因为网络波动触发重试,你可以在WebApp中增加去重逻辑:将收到的Telegram请求的update_id存入电子表格,每次收到请求先校验该update_id是否已处理过,已处理的直接返回200状态码即可,避免重复执行业务逻辑。

内容的提问来源于stack exchange,提问作者Boris Baublys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:18:02