2026-09-08 · 原文发布日
发票争议邮件自动分级建Jira工单
每分钟监听Gmail争议邮件,自动从n8n Data Tables拉出相关付款记录、发票头、计价规则、用量日志和明细行,合并去重后重算应收金额与已付欠付汇总,交给OpenAI判定争议类型、账单是否成立并给出建议动作;账单不成立、置信度低于0.8或需人工复核的标记为升级,建最高优先级Jira工单并邮件通知财务,普通争议建常规工单。
原文要点
原模板(n8n工作流19363,WeblineIndia发布,免费)由Gmail Trigger每分钟监听争议邮件,从n8n Data Tables读取付款记录、发票头、计价规则、用量日志、发票明细行五类数据,合并去重后汇总总用量、重算应收金额、统计已付与欠付;把规范化后的争议上下文发给OpenAI,要求输出结构化JSON:争议分类、账单是否成立、置信度、建议下一步。解析校验JSON后,凡账单不成立、置信度低于0.8或需人工复核者标记升级,在Jira建Highest优先级工单并向财务发升级邮件;普通争议建常规优先级工单。需配置Gmail、OpenAI、Jira三组凭据,建好五张Data Table并按需替换表ID。
这次做成什么
在n8n搭好这条“收件箱→五表取证→AI判定→分级建Jira工单”的流程,并用本站设计的五张合成测试表与一封虚构争议邮件,验证升级与常规两条路径各自产生正确的Jira优先级和邮件行为。
准备什么
- n8n 1.x账号,已开通Data Tables功能(1.x较新版本内置)
- Gmail凭据:一个用于Trigger监听,一个用于发送升级通知
- OpenAI API凭据,并在分类节点选择模型
- Jira账号与API凭据,确认目标项目Key、Issue类型及优先级名(如Highest)
- 一个可发测试邮件的邮箱,用于向被监听收件箱投递虚构争议邮件
具体怎么做
创建五张Data Table并灌入合成数据
在n8n的Data Tables里建payments、invoice_data、pricing_rules、usage_logs、invoice_items五张表,字段参照下方材料中的合成CSV示例。导入模板19363后,逐个打开Data Table读取节点,把表ID指向你新建的表(节点里下拉选择即可,不必手填ID)。
绑定凭据并设定通知收件人
Gmail Trigger节点绑定监听邮箱凭据并设定标签/发件人过滤条件;发送升级邮件的Gmail节点绑定发信凭据,把收件人设为财务邮箱;OpenAI节点绑定API凭据并选定模型;Jira节点选择项目与Issue类型,确认优先级映射Highest与常规两档。
核对OpenAI分类提示词的结构化输出要求
打开OpenAI节点,提示词应要求模型基于注入的争议上下文(发票头、重算金额、已付欠付、计价规则、用量)输出JSON,字段含dispute_type、billing_valid、confidence、recommended_action、requires_human_review。下方材料给出本站独立编写的完整提示词,可直接替换或对照修改。
用升级场景跑通整链
向被监听邮箱发一封测试争议邮件,主题含“发票争议”,正文引用发票号INV-2026-041,声称被重复计费。合成数据中该发票的用量重算应收为800元而实际开票1600元,账单应被判不成立。等待最多一个轮询周期,流程应:拉取五表数据→重算→OpenAI判定→因billing_valid=false升级→Jira建Highest工单→财务收到升级邮件。
用常规场景验证分支差异
再发一封引用INV-2026-042的争议邮件,客户质疑单价但账单金额重算后成立、置信度0.92。流程应建常规优先级Jira工单,且不发送财务升级邮件。对比两次执行记录,确认升级判定只看billing_valid、confidence<0.8、requires_human_review三个条件。
可直接复制的材料
争议分类OpenAI提示词(本站独立编写,可直接粘贴)
本站按原模板描述独立撰写;注入字段名需与你合并节点实际输出的字段名对齐,模型与温度在OpenAI节点里设置。
你是发票争议审核员。以下是系统从账单数据库取出的争议上下文(JSON):
{{ $json.disputeContext }}
其中expected_charge为按计价规则与用量日志重算的应收金额,invoice_amount为实际开票金额,paid_amount为已付,pending_amount为欠付。
请只输出一个JSON对象,不要输出其他文字:
{"dispute_type":"重复计费|单价异议|用量异议|服务未交付|其他","billing_valid":true或false,"confidence":0到1的小数,"recommended_action":"退款|部分退款|维持账单并解释|转人工核查","requires_human_review":true或false,"reason":"不超过80字的依据"}
判定规则:expected_charge与invoice_amount偏差超过5%视为账单不成立;证据不足或双方说法矛盾时requires_human_review设为true。五张合成测试表数据(CSV,逗号分隔,可直接导入Data Tables)
本站虚构合成数据:INV-2026-041用量200千次×4元=应收800元却开票1600元,用于触发升级;INV-2026-042应收1200元与开票一致,用于常规路径。金额单位为元。
invoice_data.csv:
invoice_id,customer_email,invoice_amount,issue_date
INV-2026-041,client-a@example.com,1600,2026-09-01
INV-2026-042,client-b@example.com,1200,2026-09-01
payments.csv:
invoice_id,paid_amount,payment_date
INV-2026-041,1600,2026-09-05
INV-2026-042,0,
pricing_rules.csv:
service,unit,unit_price
API调用,千次,4
usage_logs.csv:
invoice_id,service,quantity
INV-2026-041,API调用,200
INV-2026-042,API调用,300
invoice_items.csv:
invoice_id,item,quantity,line_amount
INV-2026-041,API调用费,200,1600
INV-2026-042,API调用费,300,1200输入与输出示例
本站虚构演示,非实际运行结果;JSON与工单字段为示意格式。
输入
测试邮件:主题“发票争议 INV-2026-041”,正文“我们9月账单INV-2026-041被收了1600元,但后台显示用量只有20万次,按每千次4元应是800元,疑似重复计费。”对应输出
OpenAI输出{"dispute_type":"重复计费","billing_valid":false,"confidence":0.95,"recommended_action":"退款","requires_human_review":false,"reason":"重算应收800元与开票1600元偏差50%"};升级条件命中,Jira建优先级Highest工单“发票争议 INV-2026-041”,Gmail向财务邮箱发出升级通知。做完检查这些
- 五张Data Table均建好且读取节点全部指向新表,执行时无“表不存在”报错
- 合并重算节点输出的expected_charge=800、invoice_amount=1600,与合成数据手工核算一致
- INV-2026-041案例产生Highest优先级Jira工单且财务收到升级邮件
- INV-2026-042案例产生常规优先级工单且不触发升级邮件
- OpenAI节点输出能被JSON解析节点成功解析,confidence字段为0到1之间数值
容易卡住的地方
- Gmail Trigger按轮询工作,新邮件最长可能等一个周期才触发,测试时别反复重发造成多条工单
- Data Tables是n8n较新版本功能,老版本自托管实例需升级后才能使用
- Jira优先级名称区分大小写且随项目配置而异,Highest在你的项目里可能叫别的名字,需在建单节点核对
- 升级阈值的置信度0.8与三条件是原模板设定,若改提示词字段名,解析与升级判断节点要同步改
- 争议邮件正文需含能在表中匹配到的发票号,否则五表查询为空,AI只能凭空判断
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Triage invoice disputes from Gmail with OpenAI and Jira
- 原作者
- WeblineIndia
- 原始发布日期
- 2026-09-08T05:35:05.266Z
- 来源
- https://n8n.io/workflows/19363