2026-09-26 · 原文发布日
家长投诉表单自动分级:Gemini看图+Sheets+Slack
家长通过n8n表单提交联系方式、学生ID、事件描述和可选照片;系统生成工单号并在学生信息表里查ID,查不到就改按家长手机号查并通过WhatsApp请对方核对;查到则校验附件格式(缺失时用空白图替代),把事件文字和图片发给Gemini分类出类目、严重度(P0~P3)、合规风险、摘要和附件发现;工单写入问题表并在Slack发详细告警,提交者看到的确认页会显示工单号和AI定的优先级。模板免费。
原文要点
这是iamvaar发布的免费n8n模板:家长经n8n表单提交联系方式、学生ID、事件描述和可选照片;流程生成唯一工单号,先到Google Sheets的student_info表按学生ID查,查不到改按家长手机号查并通过WhatsApp请家长核对ID;查到则校验附件是否为JPG/PNG(缺失或非法时用空白图替代),再把事件文字与图片发给Google Gemini(模板写明的模型为models/gemini-3.1-flash-lite)分类出类目/子类目、严重度P0–P3、合规风险、摘要和附件发现;工单写入tickets-issues表,Slack频道收到详细告警,提交者确认页显示工单号与AI定的优先级。需要Google服务账号、Gemini API、Slack OAuth和WhatsApp Business Cloud四类凭据。
这次做成什么
复刻这条“家长投诉表单→查学生→Gemini看图分级→Sheets存档→Slack告警”流程。本站未随原文获得模板JSON,故给出独立设计的Sheet列结构、分类提示词和一条完整测试数据;若你能导入原模板,界面与参数以实际导入的模板为准。
准备什么
- n8n实例,可发布n8n表单
- Google服务账号,能访问student_info和tickets-issues两张表
- Google Gemini API凭据(确认gemini-3.1-flash-lite在你的项目可用)
- Slack OAuth凭据及目标频道
- WhatsApp Business Cloud凭据(Phone Number ID与测试收件号)
具体怎么做
准备两张Sheet
student_info表建列:studentid、student_name、parent_mobile、class。tickets-issues表建列:ticket_id、studentid、category、subcategory、severity、regulatory_risk、summary、attachment_findings、status、created_at。把两张表共享给服务账号邮箱。
发表单并生成工单号
n8n Form字段:parent_name、parent_mobile、student_id、incident_text(多行)、photo(文件,可选)。触发后第一个Code节点生成工单号,如"T"+时间戳+4位随机数,并记录提交时间。
两级查找学生
Google Sheets节点先按student_id查student_info;用If判断无结果时,改按parent_mobile再查一次。仍无结果则走WhatsApp分支:向parent_mobile发消息请家长核对学生ID,流程结束。
校验附件并调Gemini
查到学生后,检查photo:MIME必须是image/jpeg或image/png,否则用一张预置的1×1空白PNG替代。把incident_text和图片(base64)发给Gemini节点,system用下方提示词,要求返回严格JSON。
写表、告警、回确认页
解析Gemini返回的JSON,Append到tickets-issues;Slack节点发告警,包含工单号、学生、类目、严重度、摘要、附件发现和表单链接;表单结束页显示“已受理,工单号X,优先级Px,子类目Y”。
可直接复制的材料
Gemini投诉分类提示词(system)
本站独立编写;枚举值和定级标准可按学校制度调整,输出字段名需与写表步骤的列一致。
你是学校家校工单分类员。输入为家长提交的事件描述(可能附一张现场照片)。只输出一个JSON对象,不要任何额外文字。字段:
category:从["校园安全","饮食卫生","师资行为","同学冲突","设施问题","收费争议","其他"]中选一个。
subcategory:用不超过8个字概括具体子类。
severity:按标准定级——P0涉及人身伤害或违法犯罪风险;P1涉及健康(伤病、食物中毒疑似)或欺凌;P2涉及服务态度、设施、一般纠纷;P3为咨询建议类。
regulatory_risk:true或false,涉及未成年人人身安全、食品安全、师德师风时为true。
summary:一句话概述,不超过40字。
attachment_findings:若有图片,描述图中与事件相关的可见内容;无图或无相关内容时写"无有效附件信息"。
拿不准时severity就高不就低。tickets-issues写入字段映射
本站设计的映射示例,路径名按你实际节点输出调整;写入前确认Gemini返回已被JSON解析。
{
"ticket_id": "={{$json.ticket_id}}",
"studentid": "={{$json.student_id}}",
"student_name": "={{$json.lookup.student_name}}",
"category": "={{$json.gemini.category}}",
"subcategory": "={{$json.gemini.subcategory}}",
"severity": "={{$json.gemini.severity}}",
"regulatory_risk": "={{$json.gemini.regulatory_risk}}",
"summary": "={{$json.gemini.summary}}",
"attachment_findings": "={{$json.gemini.attachment_findings}}",
"status": "待处理",
"created_at": "={{$json.submitted_at}}"
}输入与输出示例
本站虚构演示,展示的是ID输错时的兜底分支;正常分支应产出如severity=P1、category="饮食卫生"的工单并告警Slack,非原作者运行结果。
输入
parent_name="王先生",parent_mobile="13900001111",student_id="S20240市31"(正确值S2024031),incident_text="孩子午饭吃食堂后下午呕吐两次,校医说是肠胃炎,请学校调查食堂卫生。",附一张呕吐物纸巾照片。对应输出
第一趟按student_id查student_info无结果→改按13900001111查到家长记录→WhatsApp发出:"王先生您好,您提交的工单中学生ID未查到,请核对后重新提交正确的学生ID。"流程结束,不产生工单、不调用Gemini。做完检查这些
- student_info中故意不存在的ID提交后,家长手机号能收到WhatsApp核对消息且不写工单
- 提交一个.txt伪装附件,流程用空白图替代且不崩溃,attachment_findings显示无有效附件信息
- Gemini返回能解析出category/severity等全部字段并成功写入tickets-issues一整行
- Slack告警消息里的工单号与家长确认页显示的工单号完全一致
容易卡住的地方
- 两张Sheet必须共享给服务账号邮箱,文档ID和标签页名写错会直接报权限或找不到
- gemini-3.1-flash-lite在原文中写明,但你的项目未必开通,调用前先确认模型可用
- 严重度由AI判定,P0/P1类事件必须有人值守Slack跟进,不能只看确认页
- WhatsApp分支要求号码带国际区号格式,否则发送会失败
- 照片中的学生影像属敏感信息,表格与Slack频道的访问权限要最小化
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Triage parent incident reports with Google Gemini, Sheets, Slack and WhatsApp
- 原作者
- iamvaar
- 原始发布日期
- 2026-09-26T13:39:46.657Z
- 来源
- https://n8n.io/workflows/19963