AI PLAY玩法更新持续收录
← 回到更新流

2026-09-25 · 原文发布日

客服邮件自动分流:Gmail+Airtable+OpenRouter

每分钟轮询Gmail收件箱,先把HTML正文转纯文本并跳过订阅邮件、自动回复和群发件;用Gmail Message ID在Airtable查重后建档,再交给OpenRouter聊天模型(失败时回退OpenAI)输出分类、置信度、摘要和回复草稿的JSON。草稿只存进Gmail原线程不发送;置信度低于阈值或AI要求人工时发提醒邮件,卡住或报错的记录另有定时检查兜底标记Error并告警。模板免费。

原文要点

原模板每分钟由Gmail触发器轮询收件箱,另有每15分钟的定时分支检查卡住的Airtable记录。流程先把HTML正文转纯文本,跳过订阅邮件、自动回复、群发件和配置的发件人模式;用Gmail Message ID在Airtable查重,无记录则以Processing状态建档,再调OpenRouter聊天模型(失败回退OpenAI)返回含分类、置信度、摘要、草稿的JSON。验证后更新记录并在原线程建Gmail草稿但不发送;置信度低于阈值、分类需复核或AI要求人工时给提醒邮箱发邮件并标记已告警;失败则把记录标Error并邮件通知。模板免费,需Gmail OAuth2、Airtable个人访问令牌、OpenRouter与OpenAI凭证。

这次做成什么

照本站方案搭一条客服邮件自动分流练习流:新邮件进Airtable建档、AI出分类与回复草稿、低置信度自动告警、卡死记录有兜底,全程只建草稿不自动发送,避免误回客户。

准备什么

  • 一个有OAuth2授权权限的Gmail测试邮箱(不要用生产客服邮箱)
  • Airtable账号及个人访问令牌,可新建Base和表
  • OpenRouter API Key,以及作为回退的OpenAI API Key
  • n8n实例(自托管或云)能导入该免费模板并可配凭证

具体怎么做

  1. 建Airtable表

    新建一个Base和表,逐个添加字段:Message ID(单行文本)、Thread ID、From、Subject、Message(长文本)、Status(单选:Processing/Done/Error)、Category、Confidence(数字)、Needs Review(勾选)、AI Summary(长文本)、Draft Response(长文本)、Error Message、Alert Sent(勾选)、Received At(日期)、Execution ID。字段名与模板节点里的映射保持一致,否则查重和更新会落空。

  2. 配置凭证与Settings

    在n8n里分别新建Gmail OAuth2、Airtable个人访问令牌、OpenRouter、OpenAI四类凭证并绑到对应节点。打开模板里的Settings值节点,填入alertEmail(提醒邮箱)、airtableBaseId、airtableTableId,并按需调整categories、confidenceThreshold(例如0.75)、skipSenderPatterns、skipBulkEmail、stuckAfterMinutes(例如30)。

  3. 改Gmail触发器过滤条件

    打开Gmail Trigger的搜索过滤,保留并核对排除提醒邮箱的 -to:你的提醒邮箱 部分,防止告警邮件被再次抓取形成自循环。可先加 -label:已处理 之类的条件做隔离测试。

  4. 手动跑一封测试邮件

    从另一邮箱给测试Gmail发一封纯文本咨询邮件,手动执行工作流。依次确认:HTML转文本节点输出正文、Airtable按Message ID搜索返回空、新建记录Status=Processing、OpenRouter节点返回JSON、Airtable更新出分类和草稿、Gmail原线程出现未发送草稿。

  5. 验证告警与兜底分支

    再发一封措辞含糊的邮件让置信度低于阈值,确认提醒邮箱收到复核邮件且Alert Sent被勾选。把某条记录Status手工改回Processing并把Received At改到stuckAfterMinutes之前,等定时分支运行,确认它被标Error并触发告警邮件。

可直接复制的材料

客服邮件分类提示词(本站独立编写,供OpenRouter/OpenAI聊天节点使用)

本站编写的示例提示词,分类列表和字数限制可按业务改;模板实际提示词以原工作流为准。

你是一名客服邮件分流助手。阅读下面的邮件正文,只输出一个JSON对象,不要输出任何其他文字或代码块标记。

字段要求:
- category:从 ["订单查询","退款售后","技术支持","商务合作","其他"] 中选一个
- confidence:0到1之间的小数,表示你对分类的把握
- summary:用不超过60字的中文概括用户诉求
- draft_reply:一段礼貌的中文回复草稿,不超过150字;信息不足时先向用户确认关键信息,不要编造订单状态
- needs_human:布尔值,涉及法律、投诉升级、情绪激动或你无法判断时设为true

邮件主题:{{$json.subject}}
邮件正文:{{$json.body}}

输出示例格式:{"category":"订单查询","confidence":0.9,"summary":"...","draft_reply":"...","needs_human":false}

测试用邮件数据(合成)

本站虚构的合成测试数据,message id为编造格式,仅用于走通流程。

{"subject":"订单A1024迟迟未发货","from":"test-customer@example.com","body":"你好,我上周三下的订单A1024到现在还没发货,页面一直显示待处理,麻烦帮我查一下什么时候能发,谢谢。","gmail_message_id":"18d3f2a1b9c4e001","thread_id":"18d3f2a1b9c4e000"}

输入与输出示例

本站虚构演示,未实际运行,数字仅为示意,非原作者结果。

输入

一封测试邮件:主题"订单A1024迟迟未发货",正文"你好,我上周三下的订单A1024到现在还没发货,页面一直显示待处理,麻烦帮我查一下什么时候能发,谢谢。"

对应输出

AI节点返回示意:{"category":"订单查询","confidence":0.92,"summary":"客户询问订单A1024为何一周未发货,希望确认发货时间。","draft_reply":"您好,很抱歉让您久等。我们已收到您关于订单A1024的查询,正在为您核实仓库发货进度,确认后会第一时间回复您具体发货时间。","needs_human":false};Airtable记录Status更新为Done,Gmail原线程出现该草稿,未触发告警。

做完检查这些

  • 同一封邮件重复触发时,Airtable按Message ID查到已有记录并跳过,不产生重复行
  • 低置信度或needs_human为true的邮件会触发提醒邮件且Alert Sent字段被勾选
  • 所有AI回复只生成Gmail草稿,测试期间没有任何一封邮件被真正发出
  • 手工伪造的卡住记录被定时分支标记为Error并发出告警邮件

容易卡住的地方

  • Gmail触发器过滤里若漏掉排除提醒邮箱的 -to: 条件,告警邮件会被重新抓取形成循环
  • Airtable字段名与节点映射不一致时查重永远返回空,会重复建档
  • OpenRouter模型若不支持稳定JSON输出,验证节点会频繁失败并走Error分支
  • 模板免费但OpenRouter、OpenAI调用各自计费,轮询频率高时费用需自行估算
  • OAuth2授权范围不足会导致建草稿或发告警邮件节点报权限错误

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Triage support emails and draft AI replies with Gmail, Airtable and OpenRouter
原作者
Reynaldo Binay-an
原始发布日期
2026-09-25T13:45:01.413Z
来源
https://n8n.io/workflows/19935