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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:34:55