Botpress集成Google Apps Script调用API返回404错误排查
Botpress调用Google Apps Script Web App返回404错误(未处理302重定向)
问题场景
我正在把Botpress和Google Apps Script(GAS)集成,GAS是个从Google Classroom拉取作业并返回JSON数据的Web应用。直接在浏览器里访问GAS的URL能正常拿到预期数据,但用Botpress的Call API节点调用时,却一直返回404 Not Found错误。
GAS配置情况
- GAS Web App已经设置为「任何人都可访问」
- 浏览器访问URL完全正常,能返回正确的JSON数据
已尝试的排查操作
- 移除了URL末尾的斜杠
- 反复确认Web App的访问权限确实是「任何人都可访问」
- 调整过查询参数,没有任何效果
关键测试发现
用curl命令测试时发现,GAS的URL会返回302重定向响应,加上-L参数(让curl跟随重定向)后就能正常获取JSON数据。由此推测问题出在Botpress这边——它默认没有处理302重定向,导致最终请求到了错误的地址,返回404。
解决方法
方法1:开启Call API节点的重定向跟随
Botpress的Call API节点默认可能没开重定向跟随,按以下步骤设置:
- 打开Call API节点的配置界面
- 找到「高级设置」(Advanced Settings)板块
- 勾选「跟随重定向」(Follow Redirects)选项
- 保存配置后重新测试调用
方法2:用自定义代码节点替代Call API
如果Call API节点没有重定向配置选项,就用自定义代码节点,用支持重定向的HTTP库(比如axios)发起请求:
const axios = require('axios'); async function run() { try { // 替换成你的GAS Web App URL const response = await axios.get('https://script.google.com/macros/s/你的部署ID/exec', { maxRedirects: 5, // 设置允许的最大重定向次数 followRedirect: true // 开启跟随重定向 }); // 把返回的数据传递给后续节点 bp.events.reply(event, { type: 'custom', data: response.data }); } catch (error) { console.error('请求出错:', error); bp.events.reply(event, { type: 'custom', error: error.message }); } } run();
额外验证项
- 确认GAS Web App是最新部署的:修改GAS代码后必须重新部署,否则旧版本的URL可能失效
- 检查Botpress的网络环境:确保Botpress服务器能访问
script.google.com,没有被防火墙或代理拦截
内容的提问来源于stack exchange,提问作者shilford furau
相关产品推荐
相关产品推荐

