Twilio Studio Flow表单编码请求体传值为空,Google Sheet新增空行求助
问题解决:Twilio Form URL Encoded请求无法写入Google Sheet字段且无日志
核心问题排查与修复步骤
1. 修正Web App部署的函数指定
Google Apps Script部署Web App时,默认执行函数是doPost,但你的处理函数是doPostAddRow。如果部署时未指定该函数,请求会无法触发代码执行,导致无日志、无数据写入:
- 重新部署Web App:
- 打开Apps Script编辑器,点击右上角「部署」→「新建部署」
- 在「执行函数」下拉框中选择
doPostAddRow - 设置权限为任何人,甚至匿名(Twilio的请求为匿名,权限不足会直接被拒绝)
- 复制新生成的部署URL,更新到Twilio Studio的HTTP Request Widget中
2. 修正Twilio请求体的变量名
你在JSON请求中使用的是{{widgets.max.inbound.From}},但Form URL Encoded请求中误写为{{widgets.min.inbound.From}}——需与Twilio Studio中实际的入站widget ID保持一致。修正后的请求体应为:
From={{widgets.max.inbound.From}}&Body={{widgets.max.inbound.Body}}
3. 升级Apps Script代码以捕获错误与日志
原代码无错误捕获机制,且未完整记录请求信息,导致无法定位问题。替换为以下代码,增加请求日志和错误捕获:
// Function to handle incoming HTTP POST requests function doPostAddRow(e) { try { // Log full request details for debugging Logger.log("Full request object: " + JSON.stringify(e)); // Extract form parameters var from = e.parameter.From; var body = e.parameter.Body; Logger.log("Extracted From: " + from); Logger.log("Extracted Body: " + body); // Append row to sheet var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var newRow = [from, body, new Date()]; sheet.appendRow(newRow); return ContentService.createTextOutput(JSON.stringify({status: "success", row: newRow})) .setMimeType(ContentService.MimeType.JSON); } catch (error) { Logger.log("Error during execution: " + error.message); return ContentService.createTextOutput(JSON.stringify({status: "error", message: error.message})) .setMimeType(ContentService.MimeType.JSON); } }
4. 验证Twilio Widget配置
- 确认HTTP Request Widget的CONTENT TYPE设置为
application/x-www-form-urlencoded - 确认请求方法为
POST - 测试发送一条WhatsApp消息后,前往Apps Script编辑器的「查看」→「日志」查看请求详情,确认参数是否正确提取
内容的提问来源于stack exchange,提问作者Pieter le Roux
相关产品推荐
相关产品推荐

