2026-10-13 · 原文发布日
n8n演示模板:短信式野外工单汇总与查询
面向市政或外勤团队的n8n演示模板:现场人员用UPDATE、ALERT、STATUS、BRIEF四类指令发消息,流程先查重并比对已登记手机号,UPDATE和ALERT交给OpenAI提取活动、地点、进度、严重度等字段(缺的信息不编造),记录存入n8n Data Tables,STATUS和BRIEF则从已有记录里查询汇总;事件还能按路由规则匹配对应部门。回复只是模拟,不真发短信,适合用来理解结构化上报流程如何搭建。
原文要点
来源是n8n.io上的免费演示模板:面向市政外勤,用UPDATE、ALERT、STATUS、BRIEF四类短信式指令上报或查询。流程记录来信、查重、用登记手机号做基础识别;UPDATE/ALERT交给OpenAI抽取活动、地点、进度、严重度,缺信息不编造;记录进n8n Data Tables,STATUS/BRIEF只查已有记录;事件按路由规则匹配部门;回复只模拟发送,不真发SMS。
这次做成什么
搭一个可测试的野外工单汇总练习流:Webhook收到四类指令后,走「记录→查重→号码识别→按指令分支→UPDATE/ALERT抽取入库或STATUS/BRIEF查询汇总→路由部门→模拟回复」的闭环。目标是理解结构化上报,不作为生产短信系统。
准备什么
- 一个已启用Data Tables的n8n实例,可创建工作流、Webhook测试地址和Data Tables
- 一个OpenAI账号与凭据,仅用于解释UPDATE/ALERT;模型名以原模板节点为准,不擅自替换
- 能导入n8n模板并按原SETUP.md核对五张表结构;本页给的是本站最小练习字段,不是原表DDL
- 不使用真实居民、警员或司机手机号;样本号码全部用虚构号段如+15550001001
具体怎么做
准备五张Data Tables的最小练习字段
先按原模板SETUP.md建agents、activity_reports、incidents、routing_rules、messages五表;若只为练习,可用下方合成字段:agents存phone/name/team,activity_reports存report_id/agent_phone/activity/location/progress/raw_text/created_at,incidents存incident_id/agent_phone/category/location/severity/status/raw_text/created_at,routing_rules存keyword/department,messages存message_id/agent_phone/command/raw_text/reply_text/simulated_sent/created_at。字段最终以原模板为准。
导入模板并拆开SMS回复段
把模板导入n8n后,保持工作流停用。按来源说明,主流程和SMS响应在同一画布;把Send SMS相关段复制成独立子流程,再从主流程用Execute Workflow或模板原设计的方式连接。不要自行改成真实短信供应商节点。
接凭据和表映射
给OpenAI节点接自己的凭据;每个Data Table节点逐一指向刚建好的表。检查Webhook测试URL只接受POST JSON,字段建议固定为from、text、received_at;在最早节点把raw={{$json.body.text}}、from={{$json.body.from}}标准化,后续节点只引用这两个字段,避免深层路径漂移。
配置分支逻辑
在标准化后加Switch:command=UPDATE走活动上报;ALERT走事件上报;STATUS查该号码最近记录;BRIEF汇总该号码或全站近期活动。UPDATE/ALERT先调OpenAI抽取JSON,缺字段保持null再入库;STATUS/BRIEF不调用OpenAI,只查Data Tables。路由节点只对incidents按keyword匹配department。
用测试URL跑四类指令
保持inactive,用Webhook Test URL逐条发送下方合成JSON。UPDATE应新增activity_reports;ALERT应新增incidents并匹配department;STATUS只返回该虚构号码已有记录;BRIEF返回最近若干条摘要。messages表每次都写入reply_text且simulated_sent=true,不产生外部短信。
演练查重与未登记号码
重复发送同一条UPDATE,应被duplicate检查拦截或标记重复,不新增第二条report。把from换成未登记号码,应回复未注册且不入业务表,只留messages审计记录;这只是基础识别,不能当安全认证。
可直接复制的材料
UPDATE/ALERT信息抽取提示词
本站独立编写的练习提示词;节点表达式路径需按你的n8n实际字段调整,未核实的模板参数请在原工作流核对。
你是外勤上报解析器。输入是一条短信式中文或英文消息与发送者虚构号码。只输出严格JSON,不要输出解释。
要求:
- command为UPDATE时,填充activity、location、progress、note;无法确定的一律为null,不编造。
- command为ALERT时,填充category、location、severity、note;severity只能是low、medium、high、critical或null。
- 不要补全缺失地址,不要猜测身份,不要生成真实电话。
- 输出JSON键固定为:{"activity":null,"location":null,"progress":null,"category":null,"severity":null,"note":null}
消息:{{$json.raw_text}}
发送者:{{$json.from}}五表合成练习数据
全部为本站虚构样本;手机号使用保留/虚构风格号段,导入前删除任何真实个人信息。
agents.csv
phone,name,team
+15550001001,虚构巡查员甲,道路组
+15550001002,虚构巡查员乙,水务组
routing_rules.csv
keyword,department
积水,排水科
路灯,照明科
垃圾,环卫科
sample_webhook.json
{"from":"+15550001001","text":"UPDATE 北区渠桥清淤完成70%,还差东侧出口","received_at":"2026-10-13T08:00:00Z"}分支与路由配置示例
本站练习配置,不是可导入n8n工作流JSON;真实节点名、表达式、表结构以原模板和SETUP.md为准。
{"command_map":{"UPDATE":"activity_reports.insert","ALERT":"incidents.insert+route","STATUS":"activity_reports.query_by_agent","BRIEF":"activity_reports.recent_summary"},"dedupe_key":"from+raw_text+date_hour","unknown_sender_action":"reply_unregistered_audit_only","routing_rule":"incident.category或raw_text包含routing_rules.keyword时写入department,多个命中取第一并记matched_keywords","sms_mode":"simulated_only"}输入与输出示例
本站虚构演示,未调用真实OpenAI/短信;严重度若没有把握应输出null,符合缺信息不编造。
输入
POST到Webhook Test URL:{"from":"+15550001001","text":"ALERT 中央市场后门积水严重,行人绕行","received_at":"2026-10-13T08:05:00Z"},且agents已登记+15550001001,routing_rules含「积水→排水科」。对应输出
关键结果示意:incidents新增一行,category=积水,location=中央市场后门,severity=high或null视抽取置信,department=排水科;messages写入reply_text如「已登记虚构事件,路由到排水科;未发送短信」,simulated_sent=true。重复同条消息不新增incident,只在审计里标duplicate。做完检查这些
- UPDATE与ALERT必须写入不同表,且raw_text、agent_phone、created_at不丢;OpenAI缺失字段保持null而非编地名
- STATUS和BRIEF不触发OpenAI调用,返回内容能追溯到activity_reports或incidents已有行
- 未登记号码只得到未注册提示,业务表无新增,messages表仍有审计记录
- 同一from+raw_text在短时间内重复发送,第二次被duplicate逻辑拦截或标记
- 所有路径最终都写模拟回复,没有任何真实SMS供应商凭据或发送动作
容易卡住的地方
- 这不是安全认证系统;手机号比对只是基础识别,生产部署需要认证、访问控制、隐私保护和正式SMS供应商
- 回复段必须复制成单独子流程并回连,直接留在同一画布可能造成测试时重复响应或误触发
- 若把n8n设为active又暴露公网Webhook,虚构演示也有被滥发风险;练习期保持inactive并用Test URL
- OpenAI抽取JSON要校验schema,非法JSON应进修复或拒绝分支,不能直接入库
- 原模板字段以SETUP.md为准;本页最小字段只为理解流程,替换生产表前要核对原结构
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Track municipal SMS field reports with OpenAI and Data Tables
- 原作者
- Alassane
- 原始发布日期
- 2026-10-12T22:25:53.885Z
- 来源
- https://n8n.io/workflows/20827