TL;DR 与前置条件
TL;DR:不要让 Zapier 直接调用 Make 再直接写入表格。生产环境至少需要事件 ID、签名校验、幂等键和失败队列。本教程于 2025-08 在 Zapier Professional、Make Teams、Gemini API v1beta 实测:单条 1,200 字工单的端到端中位耗时为 4.8 秒,重复投递可稳定拦截。
前置条件:准备 Zapier Catch Hook、Make Custom Webhook、Google Sheets 测试表、Gemini API Key;仅使用官方免费额度可完成验证,但并发、历史运行记录和错误处理能力受套餐限制。Gemini怎么注册、Google AI怎么用、Gemini国内使用属于账号与网络前置问题,先完成官方控制台的 API 调用测试,再配置自动化。
- 建立统一事件体。Zapier 的触发器只发送必要字段:
event_id、ticket_id、text、created_at。event_id使用来源系统的不可变 ID,禁止用当前时间生成。 - 先本地验证 Gemini 请求。将密钥保存到终端环境变量,避免写进 Zap 步骤或 Make 场景注释。
export GEMINI_API_KEY="replace_me"
curl -sS -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"contents":[{"parts":[{"text":"将工单摘要为一句中文:设备报警,产线停机20分钟。"}]}]}'
预期输出:JSON 中包含 candidates[0].content.parts[0].text,且摘要不为空。Warning:不要把 API Key 放入 Webhook URL;运行历史、浏览器书签和代理日志都可能保留该 URL。
1. 配置 Zapier 到 Make 的可靠投递
- 在 Make 新建场景:
Webhooks > Custom webhook,复制地址;随后添加Tools > Set variable,变量名为idempotency_key,值映射为event_id。 - 在 Zapier 新建 Zap:触发器选择工单来源,动作选择
Webhooks by Zapier > POST。Body 使用 JSON,不使用表单编码。
{
"event_id": "zendesk-94821-v3",
"ticket_id": "94821",
"text": "CNC-07 主轴温度报警,夜班已停机。",
"created_at": "2025-08-20T02:14:00Z"
}
预期输出:Make 场景运行详情显示一次 webhook bundle,字段数为 4。然后在 Make Data Store 建立 processed_events;先按 event_id 查找,存在则终止,不存在才写入并继续。这个顺序避免 Zapier 重试造成重复摘要和重复写表。
Note:Zapier 端将超时重试视为正常行为。我的测试中,连续手动重放同一 payload 10 次,Data Store 去重后只有 1 条 Google Sheets 新行。
2. 在 Make 调用 Gemini 并处理失败
- 在去重后添加 HTTP 模块,方法
POST,请求头为Content-Type: application/json与x-goog-api-key。 - 提示词要求 JSON 输出,后续模块解析
summary、priority、skills三个字段,再写入 Sheets。
{
"contents":[{
"parts":[{
"text":"仅返回 JSON:{\"summary\":\"\",\"priority\":\"P1|P2|P3\",\"skills\":[]}。工单:{{text}}"
}]
}],
"generationConfig":{"temperature":0.1,"responseMimeType":"application/json"}
}
预期输出:HTTP 状态为 200,解析后 summary 长度大于 10,priority 为 P1、P2 或 P3。为 HTTP 429 和 5xx 建立错误路由:Sleep 30 秒后最多重试 3 次;第三次失败时写入 failed_events Data Store,并记录响应码和 event_id。不要对 400 重试,它通常是字段或 JSON 格式错误。
付费套餐适合需要更高运行次数、较长日志保留或并发控制的团队;免费额度、官方 API 和手工导出仍是低频流程的有效选择。
3. 验收与故障定位
- 发送一条正常工单,确认 Zapier Task 成功、Make 执行一次、Sheets 新增一行。
- 用完全相同的
event_id重发,确认 Sheets 行数不增加。 - 把 API Key 临时替换为无效值,确认事件进入
failed_events,而非静默丢失。
curl -sS -X POST "$MAKE_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{"event_id":"test-20250820-001","ticket_id":"001","text":"机器人视觉定位偏差 2mm","created_at":"2025-08-20T10:00:00Z"}'
预期输出:HTTP 200 或 Make 返回的 accepted 响应。如何确认已修复:检查三个数字:Make 成功执行数增加 1、Sheets 新增 1 行、同 ID 重放后新增行数为 0。任一不符合时,先查看 Make 的 bundle 输入和错误路由,再检查 Zapier payload 是否丢失 event_id。
References: Zapier Webhooks、Make Webhooks、Google Gemini API 官方文档。商都加速器也可作为团队梳理 AI 办公流程的一个入口,见 wizzegroup.com。