Zapier JavaScript代码步骤发送Webhook失败求助
解决Zapier JavaScript步骤发送Webhook失败的问题
我帮你排查下代码里的几个关键问题,以及对应的修复方案:
问题分析
你的代码主要有3个问题导致Webhook发送失败:
- 请求体格式不合法:你写的
'a=1, another: textfield'既不是标准的表单编码格式,也不是JSON格式,Zapier无法正确解析。 - 缺少Content-Type请求头:没有告诉Zapier你发送的是什么格式的数据,服务器无法正确处理请求体。
- Callback使用不正确:Zapier的JS步骤中,
callback需要按规范传递参数(成功时第一个参数为null,失败时传递错误对象)。
修复方案
根据你需要传递的可变信息类型,推荐两种常见的修复方式:
方式1:发送JSON格式数据(推荐)
JSON格式更适合传递复杂结构的可变数据,代码如下:
fetch('https://hooks.zapier.com/hooks/catch/974762/krbqch/', { method: 'POST', // 明确告诉服务器请求体是JSON格式 headers: { 'Content-Type': 'application/json', }, // 用JSON.stringify把对象转成JSON字符串 body: JSON.stringify({ a: 1, another: 'textfield' // 如果是Zapier前面步骤的变量,直接替换成inputData.xxx,比如inputData.myVariable }) }) .then(function(res) { return res.json(); }) .then(function(json) { console.log('Webhook响应:', json); // 成功时调用callback,第一个参数为null,第二个是返回结果 callback(null, json); }) .catch(function(error) { console.error('发送失败:', error); // 失败时把错误传递给callback callback(error); });
方式2:发送表单编码数据
如果你的数据是简单的键值对,也可以用表单格式:
fetch('https://hooks.zapier.com/hooks/catch/974762/krbqch/', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, // 用URLSearchParams生成标准的表单编码字符串 body: new URLSearchParams({ a: 1, another: 'textfield' }) }) .then(function(res) { return res.json(); }) .then(function(json) { console.log('Webhook响应:', json); callback(null, json); }) .catch(function(error) { console.error('发送失败:', error); callback(error); });
额外提示
如果需要使用Zapier前面步骤的动态数据,直接通过inputData对象获取即可,比如你前面步骤有一个名为userName的字段,就可以写成another: inputData.userName。
内容的提问来源于stack exchange,提问作者Anthony Trischitti
相关产品推荐
相关产品推荐

