Zapier应用Rest Hook订阅调用传递Zap配置信息的技术问询
如何在Zapier Rest Hook调用中传递Zap动作应用及字段信息
我来帮你搞定这个需求!你猜的没错,bundle变量里确实包含了你需要的所有Zap相关信息,下面我给你拆解清楚,再帮你修改代码实现你的目标。
先搞懂bundle里的关键数据
你要的信息都藏在bundle的几个核心属性里:
bundle.inputData:这里存储了用户在Zap配置界面中映射的所有字段值,包括必填项和可选项,直接遍历就能拿到所有字段名和对应的值。bundle.meta:这个对象是Zap的元数据宝库,里面有你需要的动作应用和Zap基本信息:bundle.meta.zap:包含当前Zap的ID、名称等基础信息bundle.meta.action:包含当前动作的详细信息,比如动作名称、所属应用的ID和名称
bundle.targetUrl:就是你已经在使用的Webhook上报地址
修改后的subscribeHook代码示例
下面是更新后的代码,我已经把你需要的信息都附加到请求数据里了,并且加了详细注释:
const subscribeHook = (z, bundle) => { // 提取动作所属应用的信息(名称、ID) const actionApp = bundle.meta.action.app; // 提取当前动作的名称(比如"Create Record"这类) const actionTitle = bundle.meta.action.title; // 获取用户配置的所有映射字段 const allMappedFields = bundle.inputData; // 精准筛选必填字段:从动作的schema里获取标记为必填的字段 // 这种方式比判断字段值是否为空更准确,因为它直接基于你定义的动作字段规则 const requiredFieldKeys = bundle.meta.action.schema.fields .filter(field => field.required) .map(field => field.key); // 组装要发送的数据,新增zap_info字段包含所有需要的信息 const data = { url: bundle.targetUrl, event: ['new_conversation'], zap_info: { zap_id: bundle.meta.zap.id, zap_name: bundle.meta.zap.name, action_app_id: actionApp.id, action_app_name: actionApp.name, action_title: actionTitle, all_mapped_fields: allMappedFields, required_fields: requiredFieldKeys } }; const options = { url: `${_sharedBaseUrl}/api/v1/convbot/${bundle.inputData.chatbot}/resthook`, method: 'POST', json: data, }; return z.request(options) .then((response) => JSON.parse(response.content)); };
实用小技巧
如果你不确定bundle里的具体结构,在开发阶段可以临时加一行日志把整个bundle打印出来:
console.log(JSON.stringify(bundle, null, 2));
然后在Zapier的测试界面查看运行日志,就能直观看到所有可用的字段和数据,方便你调整获取逻辑。
内容的提问来源于stack exchange,提问作者vinit
相关产品推荐
相关产品推荐

